// JavaScript Document

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } 
  document.my_errors += errors;
}

function validate_name(somename) { //username or password
	var valid_characters;
	for (var i = 1; i < somename.value.length; i++)
	{
		valid_characters = new RegExp ("[a-zA-Z0-9_.!%&@\-]", "g");
		part_user_name = somename.value.charAt (i);
		if (!valid_characters.test (part_user_name))
		{
			document.my_errors+='- Special characters like ' + part_user_name + ' are not allowed in Username / Password\n';
			return;
		}
		valid_characters = null;
	}
}

function validate_stub(mystub) { 
	var valid_characters;
	for (var i = 1; i < mystub.value.length; i++)
	{
		valid_characters = new RegExp ("[a-zA-Z0-9]", "g");
		part_user_name = mystub.value.charAt (i);
		if (!valid_characters.test (part_user_name))
		{
			document.my_errors+='- Special characters and spaces are not allowed in Company Stub\n';
			return;
		}
		valid_characters = null;
	}
}

function trim(str) {
	return str.replace(/^\s+|\s+$/g, '') ;
}

function isInteger(s) {
	return (s.toString().search(/^[0-9]+$/) == 0);
}

function isMultipleOfHundred(s) {
	if (!isInteger(s))
		return false;
	else 
		return ((s % 100) == 0);	
}

function toggleRepairs(itemNum) {
	if (document.getElementById('Item '+itemNum+' Additional Repairs').checked) {
		document.getElementById('Item '+itemNum+' Material Cost').disabled=false;
		document.getElementById('Item '+itemNum+' Labor Hours').disabled=false;
	}
	else{
		document.getElementById('Item '+itemNum+' Material Cost').disabled=true;
		document.getElementById('Item '+itemNum+' Labor Hours').disabled=true;	
	}
}

function gatherComments() {
	//gather all comments for each section and display them together in the summary
	var comments='';
	for (var i=1; i<= document.getElementById('Num Subsections').value; i++) {
		if (document.getElementById('Drainage Num').value != i && document.getElementById('Item '+i+' Comments').value !='')		
			comments += 'Item '+i+' ('+document.getElementById('Subsection Name '+i).value+'): '+document.getElementById('Item '+i+' Comments').value+'<br />';
	}
	document.getElementById('Comments Summary').innerHTML = comments;
}

function gatherEmergency() {
	//gather all emergency conditions display them together in the summary
	var sections='';
	for (var i=1; i<= document.getElementById('Num Subsections').value; i++) {
		if (document.getElementById('Drainage Num').value != i) {
			if (document.getElementById('Item '+i+' Emergency Condition').checked)	{	
				sections += 'Item '+i+' ('+document.getElementById('Subsection Name '+i).value+')<br />';
			}
		}
		else {
			if (document.getElementById('Item '+i+' Clogged').checked)		
				sections += 'Item '+i+' ('+document.getElementById('Subsection Name '+i).value+')<br />';		
		}	
	}
	document.getElementById('Emergency Conditions').innerHTML = sections;
}

function checkConditions(itemNum, boxName) {
	if (document.getElementById('Drainage Num').value != itemNum) {
		switch (boxName) {
			case 'OK' : 
				if (document.getElementById('Item '+itemNum+' '+boxName).checked) {
					document.getElementById('Item '+itemNum+' Emergency Condition').disabled=true;
					document.getElementById('Item '+itemNum+' Additional Repairs').disabled=true;
					document.getElementById('Item '+itemNum+' NA').checked=false;		
				}
				else {
					document.getElementById('Item '+itemNum+' Emergency Condition').disabled=false;
					document.getElementById('Item '+itemNum+' Additional Repairs').disabled=false;
				}
				break;
			case 'Preventive Maintenance':		
				if (document.getElementById('Item '+itemNum+' '+boxName).checked) {
					document.getElementById('Item '+itemNum+' NA').checked=false;		
				}
				break;
			case 'Emergency Condition':		
				if (document.getElementById('Item '+itemNum+' '+boxName).checked) {
					document.getElementById('Item '+itemNum+' OK').disabled = true;
					document.getElementById('Item '+itemNum+' NA').checked=false;		
				}
				else {
					document.getElementById('Item '+itemNum+' OK').disabled = false;				
				}
				break;
			case 'Additional Repairs':		
				if (document.getElementById('Item '+itemNum+' '+boxName).checked) {
					document.getElementById('Item '+itemNum+' OK').disabled = true;
					document.getElementById('Item '+itemNum+' NA').checked=false;		
					document.getElementById('Item '+itemNum+' Material Cost').disabled=false;
					document.getElementById('Item '+itemNum+' Labor Hours').disabled=false;
				}
				else {
					document.getElementById('Item '+itemNum+' OK').disabled = false;				
					document.getElementById('Item '+itemNum+' Material Cost').disabled=true;
					document.getElementById('Item '+itemNum+' Labor Hours').disabled=true;
					document.getElementById('Item '+itemNum+' Material Cost').value='';
					document.getElementById('Item '+itemNum+' Labor Hours').value='';
				}
				break;
			case 'NA':	
				if (document.getElementById('Item '+itemNum+' '+boxName).checked) {
					document.getElementById('Item '+itemNum+' OK').disabled = true;
					document.getElementById('Item '+itemNum+' Preventive Maintenance').disabled = true;
					document.getElementById('Item '+itemNum+' Emergency Condition').disabled = true;
					document.getElementById('Item '+itemNum+' Additional Repairs').disabled = true;
					document.getElementById('Item '+itemNum+' Material Cost').disabled=true;
					document.getElementById('Item '+itemNum+' Labor Hours').disabled=true;
					document.getElementById('Item '+itemNum+' Material Cost').value='';
					document.getElementById('Item '+itemNum+' Labor Hours').value='';
		
					document.getElementById('Item '+itemNum+' OK').checked = false;
					document.getElementById('Item '+itemNum+' Preventive Maintenance').checked = false;
					document.getElementById('Item '+itemNum+' Emergency Condition').checked = false;
					document.getElementById('Item '+itemNum+' Additional Repairs').checked = false;
					if (document.getElementById('Interior Roof Ladder Num').value == itemNum || 
						document.getElementById('Roof Hatch Num').value == itemNum ) 
					{
						document.getElementById('Item '+itemNum+' Rating').disabled=true;
						document.getElementById('Item '+itemNum+' Rating')[0].selected='selected';						
					}
				}
				else {
					document.getElementById('Item '+itemNum+' OK').disabled = false;
					document.getElementById('Item '+itemNum+' Preventive Maintenance').disabled = false;
					document.getElementById('Item '+itemNum+' Emergency Condition').disabled = false;
					document.getElementById('Item '+itemNum+' Additional Repairs').disabled = false;				
					if (document.getElementById('Interior Roof Ladder Num').value == itemNum || 
						document.getElementById('Roof Hatch Num').value == itemNum ) 
					{
						document.getElementById('Item '+itemNum+' Rating').disabled=false;	
						
					}

				}
		}
	}
	else { //special case
		if (boxName=='NA') {
			if (document.getElementById('Item '+itemNum+' '+boxName).checked) {
				document.getElementById('Item '+itemNum+' OK').disabled = true;
				document.getElementById('Item '+itemNum+' Clogged').disabled = true;
				document.getElementById('Item '+itemNum+' Cleared').disabled = true;
				document.getElementById('Item '+itemNum+' OK').checked = false;
				document.getElementById('Item '+itemNum+' Clogged').checked = false;
				document.getElementById('Item '+itemNum+' Cleared').checked = false;
			}
			else {
				document.getElementById('Item '+itemNum+' OK').disabled = false;
				document.getElementById('Item '+itemNum+' Clogged').disabled = false;
				document.getElementById('Item '+itemNum+' Cleared').disabled = false;				
			}				
		}		
	}
}

function totalRepairs() {
	//add up total repairs dynamically
	var total=0;
	var labor_rate=parseInt(document.getElementById('labor_rate').value);
	for (var i=1; i<= document.getElementById('Num Subsections').value; i++) {
		if (document.getElementById('Drainage Num').value != i) {
			if (isInteger(document.getElementById('Item '+i+' Material Cost').value) &&
				isInteger(document.getElementById('Item '+i+' Labor Hours').value)) {
				total = total + parseInt(document.getElementById('Item '+i+' Material Cost').value) + parseInt(document.getElementById('Item '+i+' Labor Hours').value) * labor_rate;
			}
		}
	}
	if (total > 0 && total < 950) total=950;
	document.getElementById('Additional Repairs').innerHTML='$ '+total;
}

function checkItemBoxes() {
	//make sure atleast one checkbox is clicked for each item
	for (var i=1; i<= document.getElementById('Num Subsections').value; i++) {
		var conditions1 = new Array('NA', 'OK', 'Preventive Maintenance','Emergency Condition', 'Additional Repairs');
		var conditions2 = new Array('NA', 'OK', 'Clogged','Cleared');
		var conditions3 = new Array('NA', 'Preventive Maintenance','Emergency Condition', 'Additional Repairs');

		found=false;
		if (document.getElementById('Drainage Num').value == i) {
			for (var j=0; j < conditions2.length; j++) { 
				if (document.getElementById('Item '+i+' '+conditions2[j]).checked)
					found=true;			
			}		
		}
		else if (document.getElementById('Interior Roof Ladder Num').value == i || 
				document.getElementById('Roof Hatch Num').value == i) {
			found = true;
			/*
			for (var j=0; j < conditions2.length; j++) { 
				if (document.getElementById('Item '+i+' '+conditions3[j]).checked)
					found=true;			
			}		
			if (!found && document.getElementById('Item '+i+' Rating').value!='') found=true;							
			*/
		}
		else {
			for (var j=0; j < conditions1.length; j++) { 
				if (document.getElementById('Item '+i+' '+conditions1[j]).checked) 
					found=true;				
			}		
		}
		if (!found) document.my_errors += '- No Checkboxes have been selected for Item '+i+'\n';
	}			
}