
function openHelpWindow(varType, varFile, varBookmark)
    {
    switch (varType)
        {
            
        case "Help":
            
            varLeft = 20;
            varTop = 20;
            varWidth = 600;
            varHeight = 440;
            varFile = varFile + '#' + varBookmark;
            varTitle = 'openHelp';
            
            break;
                
        }

    varWin = window.open(varFile, varTitle, 'scrollbars,resizable=no,toolbar=no,width=' + varWidth + ',height=' + varHeight + ',left=' + varLeft + ',top=' + varTop + ',status=no');
    varWin.focus()
    }

function openWin(url, name){
	window.open(url, name);
}

function unframeMe(){
	if (top.frames.length!=0){
		top.location = self.document.location;
	}
}

function closeWindow(){
	window.opener=null;
	window.close();
	return false;
}

function printWindow(){
	bV = parseInt(navigator.appVersion)
	if (bV >= 4) window.print()
}

function placeFocus()
    {
    if (document.forms.length > 0)
        {
        var field = document.forms[0];
        for (i = 0; i < field.length; i++)
            {
            if (field.elements[i].type != undefined)
                {
                if ((field.elements[i].type == "text") || 
                    (field.elements[i].type == "password") || 
                    (field.elements[i].type == "textarea") || 
                    (field.elements[i].type == "select-one") || 
                    (field.elements[i].type == "select-multiple"))
                    {
                    document.forms[0].elements[i].focus();
                    break;
                    }
                }
            }
        }
    }
	
function selectAll(e){
	e.select();
}

function formCheck(formobj){
		var fieldValidateDateDDField;
		var fieldValidateDateMMField;
		var fieldValidateDateYYYYField;		
		// dialog message
		var alertMsg = "Please complete the following fields:\n";
		
		var objFocus;
		
		var l_Msg = alertMsg.length;
		
		for (var i = 0; i < fieldRequired.length; i++){
			var obj = formobj.elements[fieldRequired[i]];
			if (obj&&obj.disabled==false){			
				//alert(obj.type);
				if (fieldNotRequired[i]==""){
					switch(obj.type){
					case "select-one":
						if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].value == "" || obj.options[obj.selectedIndex].value == "NULL"){
							alertMsg += " - " + fieldDescription[i] + "\n";
							if (objFocus == null){
								objFocus = obj;
							}
						}
						break;
					case "select-multiple":
						if (obj.selectedIndex == -1){
							alertMsg += " - " + fieldDescription[i] + "\n";
							if (objFocus == null){
								objFocus = obj;
							}
						}
						break;
					case "text":
					case "password":
					case "textarea":
						if (obj.value == "" || obj.value == null || obj.value == fieldDefaultValue[i]){
							alertMsg += " - " + fieldDescription[i] + "\n";
							if (objFocus == null){
								objFocus = obj;
							}
						}
						break;
					default:
					}
					if (obj.type == undefined){
						var blnchecked = false;
						for (var j = 0; j < obj.length; j++){
							if (obj[j].checked){
								blnchecked = true;
							}
						}
						if (!blnchecked){
							alertMsg += " - " + fieldDescription[i] + "\n";
							if (objFocus == null){
								objFocus = obj;
							}
						}
					}
				}
				
				if (alertMsg.length == l_Msg){
					if (fieldValidate[i].length > 0){
						switch(fieldValidate[i]){
							case "email":
								if (!validateEmail(obj, fieldValidateDescription[i])){
									return false;
								}
							break;
							case "email-admin":
								if (obj.value.toLowerCase()!='admin')
								{
									if (!validateEmail(obj, fieldValidateDescription[i])){
										return false;
									}
								}
								
							break;
							case "dd":
								if (!validateDD(obj, fieldValidateDescription[i])){
									return false;
								}
							break;
							case "yyyy":
								if (!validateYYYY(obj, fieldValidateDescription[i])){
									return false;
								}
							break;
							case "regexp":
								if (!validateRegExp(obj, fieldValidateRegExp[i], fieldDescription[i], fieldValidateRegExpDesc[i])){
									return false;
								}
							break;
						}
					}
					if (fieldValidateDate[i] == "yes"){
						fieldValidateDateDDField = formobj.elements[fieldValidateDateDDFieldName[i]];
						fieldValidateDateMMField = formobj.elements[fieldValidateDateMMFieldName[i]];
						fieldValidateDateYYYYField = formobj.elements[fieldValidateDateYYYYFieldName[i]];
						
						if (!validateDate(fieldValidateDateDDField, fieldValidateDateMMField, fieldValidateDateYYYYField, fieldValidateDateMessage[i])){
							return false;
						}
					}
					if(window["fieldCompareValue"]&&window["fieldCompareDesc"])
					   if(fieldCompareValue[i]!="")	
					        if(!eval(obj.value+fieldCompareValue[i])){
					            alert(fieldDescription[i]+" is invalid! It must be "+fieldCompareDesc[i]+".");
					            return  false;					         
					        }
				}
			}
		}

		if (alertMsg.length == l_Msg){
			return true;
		}else{
			alert(alertMsg);
			objFocus.focus();
			return false;
		}
	}
	
function validateEmail ( emailField, errorMsg ) {
	emailpat = /^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$/;
	if (!emailpat.test(emailField.value)){
		alert('Please enter a valid ' + errorMsg + '.');
		emailField.focus();
		emailField.select();
		return false;
	}
	return true;
}

function validateRegExp ( textField, RegExpat, FieldDesc, FieldReq ) {
	if (!RegExpat.test(textField.value)){
		alert(FieldDesc + ' is invalid! It must be ' + FieldReq + '.');
		textField.focus();
		textField.select();
		return false;
	}
	return true;
}

function validateDate ( ddField, monthField, yyyyField, errorMsg ) {
	var dd = ddField.value
	var mm = getMM(monthField.value);
	var yyyy = yyyyField.value
	
	if (dd == 31 && (mm == 4 || mm == 6 || mm == 9 || mm == 11)){
		//31st of month with 30 days
		alert('Please enter a valid ' + errorMsg + '. ' + monthField.value + ' only has 30 days.');
		ddField.focus();
		ddField.select();
		return false;
	}
	else if (dd >= 30 && mm == 2){
		//February 30th or 31st
		alert('Please enter a valid ' + errorMsg + '. ' + monthField.value + ' can not have ' + dd + ' days.');
		ddField.focus();
		ddField.select();
		return false;	
	}
	else if (mm == 2 && dd == 29 && !(yyyy % 4 == 0 && (yyyy % 100 != 0 || yyyy % 400 == 0))){
		//February 29th outside a leap year
		alert('Please enter a valid ' + errorMsg + '. ' + monthField.value + ' ' + yyyy + ' only has 28 days.');
		ddField.focus();
		ddField.select();
		return false;	
	}
	else {
		return true;
	}
}

function validateDD ( ddField, errorMsg ) {
	ddpat = /^(0[1-9]|[1-9]|[12][0-9]|3[01])$/;
	//With leading zero ddpat = /^(0[1-9]|[12][0-9]|3[01])$/;
	if (!ddpat.test(ddField.value)){
		alert('Please enter a valid ' + errorMsg + '.');
		ddField.focus();
		ddField.select();
		return false;
	}
	return true;
}

function validateYYYY ( yyyyField, errorMsg ) {
	yyyypat = /^(19|20)\d\d$/;
	if (!yyyypat.test(yyyyField.value)){
		alert('Please enter a valid ' + errorMsg + '.');
		yyyyField.focus();
		yyyyField.select();
		return false;
	}
	return true;
}

function getMM(Month){
	monthpat = /^(0[1-9]|[1-9]|[1][0-2])$/;
	if (monthpat.test(Month)){
		return Month;
	}
	switch(Month){
		case "January":
			return 1;
		break;
		case "February":
			return 2;
		break;
		case "March":
			return 3;
		break;
		case "April":
			return 4;
		break;
		case "May":
			return 5;
		break;
		case "June":
			return 6;
		break;
		case "July":
			return 7;
		break;
		case "August":
			return 8;
		break;
		case "September":
			return 9;
		break;
		case "October":
			return 10;
		break;
		case "November":
			return 11;
		break;
		case "December":
			return 12;
		break;
	}
}

function confirmFields(formObj, field1, desc1, field2, desc2){
	var obj1 = formObj.elements[field1];
	var obj2 = formObj.elements[field2];
	if (obj1.value != obj2.value)
	{
		alert(desc1 + ' and ' + desc2 + ' does not match. Please ensure that they do and try again.');
		obj1.focus();
		return false;
	}
	return true;
}

function confirmOrFields(formObj, field1, desc1, regexp1, regexpdesc1, field2, desc2, regexp2, regexpdesc2){
	var obj1 = formObj.elements[field1];
	var obj2 = formObj.elements[field2];
	if ((obj1.value == "" || obj1.value == null)&&(obj2.value == "" || obj2.value == null)){
		var sAorAN;
		var desc1sub = desc1.substr(0,1);
		desc1sub = desc1sub.toLowerCase();
		var str1 = "AEIOUaeiou";
		if (str1.indexOf(desc1sub) != -1){
			sAorAN = "an";
		}
		else {
			sAorAN = "a";
		}
		alert('Please enter ' + sAorAN + ' ' + desc1 + ' or ' + desc2 + ' and try again.');
		obj1.focus();
		return false;
	}
	
	if (regexpdesc1.length > 0 && !(obj1.value == "" || obj1.value == null)){
		if (!validateRegExp(obj1, regexp1, desc1, regexpdesc1)){
			return false;
		}
	}

	if (regexpdesc2.length > 0 && !(obj2.value == "" || obj2.value == null)){
		if (!validateRegExp(obj2, regexp2, desc2, regexpdesc2)){
			return false;
		}
	}
	return true;
}

function confirmDelete(desc, url){
	if (confirm('Are you sure you want to delete this ' + desc + '?'))
	{
		window.open(url,"_self");
	}
}

function confirmAction(desc, url, actiondesc){
	if (confirm('Are you sure you want to ' + actiondesc + ' this ' + desc + '?'))
	{
		window.open(url,"_self");
	}
}

function submitOnce(theform){
	//if IE 4+ or NS 6+
	if (document.all||document.getElementById){
		//screen thru every element in the form, and hunt down "submit" and "reset"
		for (i=0;i<theform.length;i++){
			var tempobj=theform.elements[i]
			if(tempobj.type.toLowerCase()=="submit"||tempobj.type.toLowerCase()=="reset")
			//disable em
			tempobj.disabled=true
		}
	}
}

function ShowElement(formObj, field, setFocus){
	//var obj = formObj.all[field];	
	var obj;		
	for(var i=0;i<formObj.elements.length;i++)
	    if(formObj.elements[i].name==field)
	        obj=formObj.elements[i];
	if(!obj)
	    obj=document.getElementById(field);
	if (obj){	    
		obj.style.display = "";
		if (setFocus){
			if (obj.children){
				obj.children(0).focus();
			}
			else{
				obj.focus();
			}
		}
	}
}

function HideElement(formObj, field){
	//var obj = formObj.all[field];
	var obj;
	for(var i=0;i<formObj.elements.length;i++)
	    if(formObj.elements[i].name==field)
	        obj=formObj.elements[i];
	if(!obj)
	    obj=document.getElementById(field);
	if (obj){
		obj.style.display = "none";
	}
}

function ClearElement(formObj, field){
	var obj = formObj.all[field];
	if (obj){
		obj.value = "";
		//obj.focus();
	}
}

function CheckOtherSelection(formObj, selectField, specifyField, requiredValue, setFocus){
	var obj = formObj.elements[selectField];
	if (obj){
		if (obj.options[obj.selectedIndex].value == requiredValue){
			ShowElement(formObj, specifyField, setFocus);
		}
		else {
			HideElement(formObj, specifyField);
		}
	}
}

function ValidateCheckBoxArray(formobj, field, desc){
	var obj = formobj.elements[field];
	if (obj){
		if (obj.length){
			for (var i = 0; i < obj.length; i++){		
				if (obj[i].checked){
					return true;
				}	
			}
		}
		else {
			if (obj.checked){
				return true;
			}
		}
	}
	alert('Please select at least one ' + desc + ' and try again.');
	return false;
}

function openPopUpWindow(theURL, winName, myWidth, myHeight){
	var myFeatures = 'scrollbars=no,resizable=no,width=' + myWidth + ',height=' + myHeight + ',top=' + (screen.height-myHeight)/2 + ',left=' + (screen.width-myWidth)/2;
	window.open(theURL,winName,myFeatures);
}

function validateField(formObj, fieldName, fieldDesc){
	var obj = formObj.elements[fieldName];	
	
	var alertMsg = "Please complete the following fields:\n";
	var l_Msg = alertMsg.length;

	if (obj){
		switch(obj.type){
		case "select-one":
			if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].value == "" || obj.options[obj.selectedIndex].value == "NULL"){
				alertMsg += " - " + fieldDesc + "\n";
			}
			break;
		case "select-multiple":
			if (obj.selectedIndex == -1){
				alertMsg += " - " + fieldDesc + "\n";
			}
			break;
		case "text":
		case "password":
		case "textarea":
			if (obj.value == "" || obj.value == null){
				alertMsg += " - " + fieldDesc + "\n";
			}
			break;
		default:
		}
		if (alertMsg.length == l_Msg){
			return true;
		}else{
			alert(alertMsg);
			obj.focus();
			return false;
		}
	}
}

function CheckIfRequired(formObj, checkField, checkValue, reqField, reqDesc, reqRegExp, reqRegExpDesc){
	var obj = formObj.elements[checkField];
	var objReq = formObj.elements[reqField];
	if (obj){
		var objValue;
		switch(obj.type){
			case "select-one":
				objValue = obj.options[obj.selectedIndex].value;
				break;
			case "text":
				objValue = obj.value;
				break;
			default:
		}
		if (objValue == checkValue){
			//Check if a value is entered
			if (!validateField(formObj, reqField, reqDesc)){
				return false;
			}
			if (reqRegExpDesc.length > 0){
				if (!validateRegExp(objReq, reqRegExp, reqDesc, reqRegExpDesc)){
					return false;
				}
			}
		}
		else {
			return true;
		}
	}
	return true;
}

function DisableFieldArray(formObj, fieldArray){
	for (var i = 0; i < fieldArray.length; i++){
		var obj = formObj.elements[fieldArray[i]];
		if (obj){
			obj.disabled=true;
		}
	}
}

function EnableFieldArray(formObj, fieldArray){
	for (var i = 0; i < fieldArray.length; i++){
		var obj = formObj.elements[fieldArray[i]];
		if (obj){
			obj.disabled=false;
		}
	}
}

function CheckForValueToDisable(formObj, fieldArray, checkField, checkValue){
	//CheckField must be Radio Array
	var objN = formObj.elements[checkField];
	for (var i = 0; i < objN.length; i++){
		var obj = objN[i];
		if (obj){
			if (obj.checked==true){			
				if (obj.value==checkValue){
					DisableFieldArray(formObj, fieldArray);
				}
				else {
					EnableFieldArray(formObj, fieldArray);
				}
			}
		}
	}
}

function validateFinalMark ( percField, errorMsg ) {
	if (percField.value.length > 0)
	{
		percpat = /^([0-9]|[1-9][0-9]|100)$/;
		if (!percpat.test(percField.value)){
			alert('Please enter a valid ' + errorMsg + '.');
			percField.focus();
			percField.select();
			return false;
		}
	}
	return true;
}

function validateYear ( yyyyField, errorMsg ) {
	if (yyyyField.value.length > 0)
	{
		yyyypat = /^(19|20)\d\d$/;
		if (!yyyypat.test(yyyyField.value)){
			alert('Please enter a valid ' + errorMsg + '.');
			yyyyField.focus();
			yyyyField.select();
			return false;
		}
	}
	return true;
}
