//browser detection
var strUserAgent = navigator.userAgent.toLowerCase();
var isIE = strUserAgent.indexOf("msie") > -1;
var isNS6 = strUserAgent.indexOf("netscape6") > -1;

//regular expressions
var reValidDigit = /\d/;
var reValidDigitString = /^\d*$/;
var reKeyboardChars = /[\x00\x03\x08\x0D\x16\x18\x1A]/;
var reClipboardChars = /[cvxz]/i;
var reValidChar = /[a-zA-Z]/;
var reValidCharString = /^[a-zA-Z]*$/;

//Validate MachineID
function javafunc_ValidateMachID(objEvent) {
 	var sMachineID1, iLength;	
	
	sMachineID1 = objEvent.srcElement.value;
	
    iLength = javaTrim(sMachineID1).length;
    
    if (iLength == 0) {        
        return true;
    }
        
    if (iLength < 6 || iLength > 7  ) {
        alert("Please enter valid Machine ID");
        objEvent.srcElement.focus();
        return false;
    }
  
    if (iLength == 6 ) {
        sPart1 = sMachineID1.substring(0,3);
        sPart2 = "-";
        sPart3 = sMachineID1.substring(3,6);
    }
    else {
        sPart1 = sMachineID1.substring(0,3);
        sPart2 = sMachineID1.substring(3,4);
        sPart3 = sMachineID1.substring(4,7);
    }
    
    //if (reValidCharString.test(sPart1) == false) {
	//	  alert("Please enter valid Machine ID");
    //    objEvent.srcElement.focus();
    //    return false;
	//}
	
	if (javaTrim(sPart2) != "-") {			
		alert("Please enter valid Machine ID");
        objEvent.srcElement.focus();
        return false;
	}
	
	//if (reValidDigitString.test(sPart3) == false) {
	//	  alert("Please enter valid Machine ID");
    //    objEvent.srcElement.focus();
    //    return false;
	//}
	
	objEvent.srcElement.value = (sPart1 + sPart2 + sPart3).toUpperCase();
	return true;
  
}

//Limit key stroke to number
function javafunc_LimitKeyToNumer(objEvent) {
	var iKeyCode, strKey, objInput;  
	
	if (isIE) {
		iKeyCode = objEvent.keyCode;
		objInput = objEvent.srcElement;
	} else {
		iKeyCode = objEvent.which;
		objInput = objEvent.target;
	}
	
	strKey = String.fromCharCode(iKeyCode);
	
	if (reValidDigitString.test(objInput.value) || strValue.length == 0) {
		objInput.validValue = objInput.value;
		if (!reValidDigit.test(strKey) && !reKeyboardChars.test(strKey) && !(objEvent.ctrlKey && reClipboardChars.test(strKey))) {
			return false;
		}
	} else {
		objInput.value = objInput.validValue;
		return false;
	}
}

//Limit key stroke to character and convert to uppercase
function javafunc_LimitKeyToChar(objEvent) {
	var iKeyCode, strKey, objInput;  
	
	if (isIE) {
		iKeyCode = objEvent.keyCode;
		objInput = objEvent.srcElement;
	} else {
		iKeyCode = objEvent.which;
		objInput = objEvent.target;
	}
	
	strKey = String.fromCharCode(iKeyCode);
	
	if (reValidCharString.test(objInput.value) || strValue.length == 0) {
		objInput.validValue = objInput.value;
		if (!reValidChar.test(strKey) && !reKeyboardChars.test(strKey) && !(objEvent.ctrlKey && reClipboardChars.test(strKey))) {
			return false;
		}
	} else {
		objInput.value = objInput.validValue;
		return false;
	}
	
    if ((strKey >= 'a') && (strKey <= 'z')) {
		if (isIE) {
			objEvent.keyCode = strKey.toUpperCase().charCodeAt();
		}
		else {
			var newEvent = document.createEvent("KeyEvents");
			newEvent.initKeyEvent("keypress", true, true, document.defaultView, 
									objEvent.ctrlKey, objEvent.altKey, objEvent.shiftKey, 
									objEvent.metaKey, 0, strKey.toUpperCase().charCodeAt(0));
			objEvent.preventDefault();
			objEvent.target.dispatchEvent(newEvent);
		}
    }

}

function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}
 
function changeImages() {
	if (document.images && (preloadFlag == true)) {
		for (var i=0; i<changeImages.arguments.length; i+=2) {
			document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
		}
	}
}

var preloadFlag = false;
function preloadImages() {
	if (document.images) {
		btn_1_over = newImage("images/btn_1-over.gif");
		btn_2_over = newImage("images/btn_2-over.gif");
		btn_3_over = newImage("images/btn_3-over.gif");
		btn_4_over = newImage("images/btn_4-over.gif");
		btn_5_over = newImage("images/btn_5-over.gif");
		btn_6_over = newImage("images/btn_6-over.gif");
		btn_service_request_over = newImage("images/btn_service_request-over.gif");
		preloadFlag = true;
	}
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

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_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


function javafunc_cboMachineType_onChange() {

	var oHddnProblemCode = document.getElementById('cboHddnProblemCode');
	var oProblemCode = document.getElementById('cboProblemCode');
	var oMachineType = document.getElementById('cboMachineType');
	var sMachineType;
	var i;
	var oOption;
	
	while (oProblemCode.length > 1) {
		oProblemCode.remove(1);
	}

	if (oMachineType.selectedIndex == -1) {
		sMachineType = '';
	}
	else {
		sMachineType = oMachineType[oMachineType.selectedIndex].text;
	}

	for (i = 0; i < oHddnProblemCode.length; i++) {
		if (oHddnProblemCode[i].value == sMachineType) {
			oOption = document.createElement("OPTION");
			oOption.text = oHddnProblemCode[i].text;
			oOption.value = oHddnProblemCode[i].text;
			
			oProblemCode.options.add(oOption);
		}
	}

	oOption = null;

}

function javafunc_cmdSubmit_OnClick() {

    if (javaTrim(document.getElementById('txtFirstName').value).length == 0) {
        alert("Please enter your first name");
        document.getElementById('txtFirstName').focus();
        return false;
    }

    if (javaTrim(document.getElementById('txtLastName').value).length == 0) {
        alert("Please enter your last name");
        document.getElementById('txtLastName').focus();
        return false;
    }
    
    if (javaTrim(document.getElementById('txtLocationName').value).length == 0) {
        if (document.getElementById('chkUnivMode').checked == true) {
            alert("Please enter school name");
        }
        else {
            alert("Please enter property name");
        }
        document.getElementById('txtLocationName').focus();
        return false;
    }
    
    if (document.getElementById('chkUnivMode').checked == true) {
        if (javaTrim(document.getElementById('txtLocationName').value).length <= 4) {
            alert("Please do not use abbreviations in school name");
            document.getElementById('txtLocationName').focus();
            return false;
        }
    }

    if (document.getElementById('txtLocationAddressNbr') != null) {
        if (javaTrim(document.getElementById('txtLocationAddressNbr').value).length == 0) {
            alert("Please enter property address street number");
            document.getElementById('txtLocationAddressNbr').focus();
            return false;
        }
    }

    if (document.getElementById('txtLocationAddress') != null) {
        if (javaTrim(document.getElementById('txtLocationAddress').value).length == 0) {
            alert("Please enter property address street name");
            document.getElementById('txtLocationAddress').focus();
            return false;
        }
    }
    
    if (javaTrim(document.getElementById('txtCity').value).length == 0) {
        alert("Please enter your city");
        document.getElementById('txtCity').focus();
        return false;
    }

    if (document.getElementById('cboState').selectedIndex <= 0) {
        alert("Please select your state");
        document.getElementById('cboState').focus();
        return false;
    }

    if (document.getElementById('chkUnivMode').checked == false) {
        if (javaTrim(document.getElementById('txtZip').value).length == 0) {
            alert("Please enter your zip code");
            document.getElementById('txtZip').focus();
            return false;
        }
    }

    if (javaTrim(document.getElementById('txtZip').value).length > 0) {
        if (javaTrim(document.getElementById('txtZip').value).length < 5) {
            alert("Your zip code is invalid");
            document.getElementById('txtZip').focus();
            return false;
        }
    }

    if (document.getElementById('chkUnivMode').checked == true) {
        if (javaTrim(document.getElementById('txtLaundryRoom').value).length == 0) {
            alert("Please enter your residence hall or address");
            document.getElementById('txtLaundryRoom').focus();
            return false;
        }
    }

    if (document.getElementById('cboMachineType').selectedIndex <= 0) {
        alert("Please select your machine type");
        document.getElementById('cboMachineType').focus();
        return false;
    }

    if (document.getElementById('cboProblemCode').selectedIndex <= 0) {
        alert("Please select an appropriate problem code for machine 1");
        document.getElementById('cboProblemCode').focus();
        return false;
    }
    
    if (document.getElementById('cboMachineType2').selectedIndex > 0) {
        if (document.getElementById('cboProblemCode2').disabled != true) {
            if (document.getElementById('cboProblemCode2').selectedIndex <= 0) {
                alert("Please select an appropriate problem code for machine 2");
                document.getElementById('cboProblemCode2').focus();
                return false;
            }
        }
    }
    
    if (document.getElementById('cboMachineType3').selectedIndex > 0) {
        if (document.getElementById('cboProblemCode3').disabled != true) {
            if (document.getElementById('cboProblemCode3').selectedIndex <= 0) {
                alert("Please select an appropriate problem code for machine 3");
                document.getElementById('cboProblemCode3').focus();
                return false;
            }
        }
    }

    if (document.getElementById('cboMachineType4').selectedIndex > 0) {
        if (document.getElementById('cboProblemCode4').disabled != true) {
            if (document.getElementById('cboProblemCode4').selectedIndex <= 0) {
                alert("Please select an appropriate problem code for machine 4");
                document.getElementById('cboProblemCode4').focus();
                return false;
            }
        }
    }

    if (document.getElementById('cboMachineType5').selectedIndex > 0) {
        if (document.getElementById('cboProblemCode5').disabled != true) {
            if (document.getElementById('cboProblemCode5').selectedIndex <= 0) {
                alert("Please select an appropriate problem code for machine 5");
                document.getElementById('cboProblemCode5').focus();
                return false;
            }
        }
    }

    if (document.getElementById('cboMachineType6').selectedIndex > 0) {
        if (document.getElementById('cboProblemCode6').disabled != true) {
            if (document.getElementById('cboProblemCode6').selectedIndex <= 0) {
                alert("Please select an appropriate problem code for machine 6");
                document.getElementById('cboProblemCode6').focus();
                return false;
            }
        }
    }
    
    var iMaxCommentLength = javafunc_GetMaxCommentLength();
    if (javaTrim(document.getElementById('txtComments').value).length > iMaxCommentLength) {
        alert("Please limit your notes to " + iMaxCommentLength + " characters.");
        document.getElementById('txtComments').focus();
        return false;
    }

    //Allow only one click
    oSubmit = document.getElementById('cmdSubmit');
    if (oSubmit.value.toLowerCase() == 'submit') {
        oSubmit.value = 'Saving';
        oSubmit.style.cursor = 'wait';
        return true;
    }
    else {
        return false;
    }

}

function javafunc_cmdLocate_OnClick()
    {
        if (javaTrim(document.getElementById('txtMachineID').value).length == 0) {
            alert("Please enter a Machine ID");
            document.getElementById('txtMachineID').focus();
            return false;
        }
        
        //Allow only one click
        oSubmit = document.getElementById('cmdLocate');
        if (oSubmit.value.toLowerCase() == 'locate') {
            oSubmit.value = 'Processing';
            oSubmit.style.cursor = 'wait';
            return true;
        }
        else {
            return false;
        }
    
    }

function javafunc_GetMaxCommentLength() {
    var oMachineType2;
    var sMachineType2 = '';
    var iMachineType2 = 0;
    var oMachineType3;
    var sMachineType3 = '';
    var iMachineType3 = 0;
    var oMachineType4;
    var sMachineType4 = '';
    var iMachineType4 = 0;
    var oMachineType5;
    var sMachineType5 = '';
    var iMachineType5 = 0;
    var oMachineType6;
    var sMachineType6 = '';
    var iMachineType6 = 0;

    var oProblemCode2;
    var iProblemCode2 = 0;
    var oProblemCode3;
    var iProblemCode3 = 0;
    var oProblemCode4;
    var iProblemCode4 = 0;
    var oProblemCode5;
    var iProblemCode5 = 0;
    var oProblemCode6;
    var iProblemCode6 = 0;
    
    var iMachineID2 = 0;
    var iMachineID3 = 0;
    var iMachineID4 = 0;
    var iMachineID5 = 0;
    var iMachineID6 = 0;
    
    var iUsed = 0;
    var iRtn = 0;
    
    //Determine length of Machine Type 2
    oMachineType2 = document.getElementById('cboMachineType2');
    if (oMachineType2.selectedIndex > 0) {
        sMachineType2 = oMachineType2[oMachineType2.selectedIndex].text;
    }
    if (sMachineType2 != '') {
        sMachineType2 = sMachineType2.toLowerCase();
        sMachineType2 = sMachineType2.replace('cm ', '');
        sMachineType2 = javaTrim(sMachineType2);
        if (sMachineType2 == 'washer') {
            sMachineType2 = 'w';
        }
        else if (sMachineType2 == 'dryer') {
            sMachineType2 = 'd';
        }
        iMachineType2 = sMachineType2.length;
    }
    
    //Determine length of Machine Type 3
    oMachineType3 = document.getElementById('cboMachineType3');
    if (oMachineType3.selectedIndex > 0) {
        sMachineType3 = oMachineType3[oMachineType3.selectedIndex].text;
    }
    if (sMachineType3 != '') {
        sMachineType3 = sMachineType3.toLowerCase();
        sMachineType3 = sMachineType3.replace('cm ', '');
        sMachineType3 = javaTrim(sMachineType3);
        if (sMachineType3 == 'washer') {
            sMachineType3 = 'w';
        }
        else if (sMachineType3 == 'dryer') {
            sMachineType3 = 'd';
        }
        iMachineType3 = sMachineType3.length;
    }
    
    //Determine length of Machine Type 4
    oMachineType4 = document.getElementById('cboMachineType4');
    if (oMachineType4.selectedIndex > 0) {
        sMachineType4 = oMachineType4[oMachineType4.selectedIndex].text;
    }
    if (sMachineType4 != '') {
        sMachineType4 = sMachineType4.toLowerCase();
        sMachineType4 = sMachineType4.replace('cm ', '');
        sMachineType4 = javaTrim(sMachineType4);
        if (sMachineType4 == 'washer') {
            sMachineType4 = 'w';
        }
        else if (sMachineType4 == 'dryer') {
            sMachineType4 = 'd';
        }
        iMachineType4 = sMachineType4.length;
    }

    //Determine length of Machine Type 5
    oMachineType5 = document.getElementById('cboMachineType5');
    if (oMachineType5.selectedIndex > 0) {
        sMachineType5 = oMachineType5[oMachineType5.selectedIndex].text;
    }
    if (sMachineType5 != '') {
        sMachineType5 = sMachineType5.toLowerCase();
        sMachineType5 = sMachineType5.replace('cm ', '');
        sMachineType5 = javaTrim(sMachineType5);
        if (sMachineType5 == 'washer') {
            sMachineType5 = 'w';
        }
        else if (sMachineType5 == 'dryer') {
            sMachineType5 = 'd';
        }
        iMachineType5 = sMachineType5.length;
    }

    //Determine length of Machine Type 6
    oMachineType6 = document.getElementById('cboMachineType6');
    if (oMachineType6.selectedIndex > 0) {
        sMachineType6 = oMachineType6[oMachineType6.selectedIndex].text;
    }
    if (sMachineType6 != '') {
        sMachineType6 = sMachineType6.toLowerCase();
        sMachineType6 = sMachineType6.replace('cm ', '');
        sMachineType6 = javaTrim(sMachineType6);
        if (sMachineType6 == 'washer') {
            sMachineType6 = 'w';
        }
        else if (sMachineType6 == 'dryer') {
            sMachineType6 = 'd';
        }
        iMachineType6 = sMachineType6.length;
    }
    
    //Determine length of Problem Code 2
    oProblemCode2 = document.getElementById('cboProblemCode2');
    if (oProblemCode2.selectedIndex > 0) {
        iProblemCode2 = oProblemCode2[oProblemCode2.selectedIndex].text.length;
    }
    
    //Determine length of Problem Code 3
    oProblemCode3 = document.getElementById('cboProblemCode3');
    if (oProblemCode3.selectedIndex > 0) {
        iProblemCode3 = oProblemCode3[oProblemCode3.selectedIndex].text.length;
    }

    //Determine length of Problem Code 4
    oProblemCode4 = document.getElementById('cboProblemCode4');
    if (oProblemCode4.selectedIndex > 0) {
        iProblemCode4 = oProblemCode4[oProblemCode4.selectedIndex].text.length;
    }
    
    //Determine length of Problem Code 5
    oProblemCode5 = document.getElementById('cboProblemCode5');
    if (oProblemCode5.selectedIndex > 0) {
        iProblemCode5 = oProblemCode5[oProblemCode5.selectedIndex].text.length;
    }
    
    //Determine length of Problem Code 6
    oProblemCode6 = document.getElementById('cboProblemCode6');
    if (oProblemCode6.selectedIndex > 0) {
        iProblemCode6 = oProblemCode6[oProblemCode6.selectedIndex].text.length;
    }
    
    //Determine length of Machine ID 2
    iMachineID2 = javaTrim(document.getElementById('txtMachineID2').value).length;
    if (iMachineType2 > 0 && iMachineID2 == 0) {
        //Add ?
        iMachineID2 = 1;
    }
    
    //Determine length of Machine ID 3
    iMachineID3 = javaTrim(document.getElementById('txtMachineID3').value).length;
    if (iMachineType3 > 0 && iMachineID3 == 0) {
        //Add ?
        iMachineID3 = 1;
    }

    //Determine length of Machine ID 4
    iMachineID4 = javaTrim(document.getElementById('txtMachineID4').value).length;
    if (iMachineType4 > 0 && iMachineID4 == 0) {
        //Add ?
        iMachineID4 = 1;
    }

    //Determine length of Machine ID 5
    iMachineID5 = javaTrim(document.getElementById('txtMachineID5').value).length;
    if (iMachineType5 > 0 && iMachineID5 == 0) {
        //Add ?
        iMachineID5 = 1;
    }

    //Determine length of Machine ID 6
    iMachineID6 = javaTrim(document.getElementById('txtMachineID6').value).length;
    if (iMachineType6 > 0 && iMachineID6 == 0) {
        //Add ?
        iMachineID6 = 1;
    }
    
    //Calculate the total used length
    if (iMachineType2 > 0) {
        iUsed = iUsed + iMachineType2 + 1;
    }
    
    if (iMachineType3 > 0) {
        iUsed = iUsed + iMachineType3 + 1;
    }
    
    if (iMachineType4 > 0) {
        iUsed = iUsed + iMachineType4 + 1;
    }
    
    if (iMachineType5 > 0) {
        iUsed = iUsed + iMachineType5 + 1;
    }

    if (iMachineType6 > 0) {
        iUsed = iUsed + iMachineType6 + 1;
    }
    
    if (iProblemCode2 > 0) {
        iUsed = iUsed + iProblemCode2 + 1;
    }
    
    if (iProblemCode3 > 0) {
        iUsed = iUsed + iProblemCode3 + 1;
    }
    
    if (iProblemCode4 > 0) {
        iUsed = iUsed + iProblemCode4 + 1;
    }
    
    if (iProblemCode5 > 0) {
        iUsed = iUsed + iProblemCode5 + 1;
    }

    if (iProblemCode6 > 0) {
        iUsed = iUsed + iProblemCode6 + 1;
    }
    
    if (iMachineID2 > 0) {
        iUsed = iUsed + iMachineID2 + 1;
    }
    
    if (iMachineID3 > 0) {
        iUsed = iUsed + iMachineID3 + 1;
    }
    
    if (iMachineID4 > 0) {
        iUsed = iUsed + iMachineID4 + 1;
    }
    
    if (iMachineID5 > 0) {
        iUsed = iUsed + iMachineID5 + 1;
    }

    if (iMachineID6 > 0) {
        iUsed = iUsed + iMachineID6 + 1;
    }
    
    if (iUsed > 0) {
        //Add a space
        iUsed = iUsed + 1;
    }
    
    iRtn = 1000 - iUsed;
    
    if (iRtn < 0) {
        iRtn = 0;
    }
  
    return iRtn;

}

function javafunc_txtComments_onfocus() {

    var iMaxCommentLength = javafunc_GetMaxCommentLength();
    
    var iRemain = 0;
    
    iRemain = iMaxCommentLength - document.getElementById('txtComments').value.length;
    
    if (iRemain < 0) {
        iRemain = 0;
    }
    
    document.getElementById('divMaxCommentLength').innerHTML = 'Number of characters left: ' + iRemain;
}

function javafunc_txtComments_onblur() {

    document.getElementById('divMaxCommentLength').innerHTML = '';
}

function javaTrim(psInput) {
	while (psInput.length > 0) {
		if (psInput.substr(psInput.length - 1, 1) == ' ') {
			psInput = psInput.substr(0, psInput.length - 1);
		}
		else {
			break;
		} 
	}
		
	while (psInput.length > 0) {
		if (psInput.substr(0, 1) == ' ') {
			psInput = psInput.substr(1, psInput.length - 1);
		}
		else {
			break;
		} 
	}
	
	return psInput;
}

function javafunc_cmdSubmitQuick_OnClick() {

    //Allow only one click
    oSubmit = document.getElementById('cmdSubmit');
    if (oSubmit.value.toLowerCase() == 'submit request') {
        oSubmit.value = 'Saving';
        oSubmit.style.cursor = 'wait';
        return true;
    }
    else {
        return false;
    }

}
