
// <!--
//Created by Jimmy Mercado
//11/14/2006


function ValidateRadioButton(fld){
	var val = "";
	var counter;
	
	for (counter = 0; counter < fld.length; counter++){
		if (fld[counter].checked) val = fld[counter].value; 
	}
	
	if (val!="") return true;
	else return false;
}

function getCheckedValue(radioObj) {
	var i;
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function setCheckedValue(radioObj, newValue) {
	var i;
	if(!radioObj)
		return;
	var radioLength = radioObj.length;
	if(radioLength == undefined) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}
	for(i = 0; i < radioLength; i++) {
		radioObj[i].checked = false;
		if(radioObj[i].value == newValue.toString()) {
			radioObj[i].checked = true;
		}
	}
}


function ValidateRadioButtonArray(qFld, aFld, cnt){
	var f = document.form1;
	var errCount = 0;
	var i;
	
	for(i=1; i<=cnt; i++){
		
		if(!ValidateRadioButton(f.elements[aFld + "_" + i])) {
			document.getElementById(qFld + "_" + i).style.color = errTrue;
			errCount++;
		}else document.getElementById(qFld + "_" + i).style.color = errFalse;
	}
	
	if(errCount==0) return true;
	else return false;
}

function ValidateChkArray(strField, cnt){
	var f = document.form1;
	var val = 0;
	var errCount = 0;
	var i;
	
	for(i=0; i<=cnt; i++){
		fldName = (document.getElementById(strField + "_" + i).name);
		if(f.elements[fldName].checked) {
			val = val + 1;
		}
	}
	
	if (val>=1) return true;
	else return false;
}

function ClearCheckBoxes(fld){
	var val = "";
	for (counter = 0; counter < fld.length -1; counter++){
		//if(fld[counter].value.toUpperCase() != "NONE"){
			fld[counter].checked = false; 
		//}
	}
}

function ValidateSelect(fld){
	var val = true;
	if (fld.selectedIndex == 0) val = false;
	if (fld.options[fld.selectedIndex].value == "") val = false;
	return val;
}

function ValidateTextBox(fld, datatype){
	var txtbox = fld;
	var val = false;
	
	if(txtbox.value=="" || txtbox.value==null){
		val = false;
	}else{
		val = true;
		if(datatype!=null){
			switch (datatype){
				case "INT":
					if (isNaN(txtbox.value)){
						val = false;
					}
					break;
					
				case "EMAIL":
					if (!emailCheck(txtbox.value)){
						val = false;
					}
					break;
				
				case "DATE":
					if (!isDate(txtbox.value)){
						val = false;
					}
					break;
			}
		}else{
			val = true;
		}
	}
	//alert(fld + ": " + val);
	return val;
}

function textCounter(field, countfield, maxlimit) {
	if (field.value.length > maxlimit) // if too long...trim it!
		field.value = field.value.substring(0, maxlimit);
		
	else // otherwise, update 'characters left' counter
	countfield.value = maxlimit - field.value.length;
}


function emailCheck (emailStr) {
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {
		alert("Email address seems incorrect (check @ and .'s)")
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	
	if (user.match(userPat)==null) {
	    // user is not valid
	    //alert("The username doesn't seem to be valid.")
	    return false;
	}
	
	/* if the e-mail address is at an IP address (as opposed to a symbolic
	   host name) make sure the IP address is valid. */
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
	    // this is an IP address
		  for (var i=1;i<=4;i++) {
		    if (IPArray[i]>255) {
		        alert("Destination IP address is invalid!")
			return false;
		    }
	    }
	    return true;
	}
	// Domain is symbolic name
	var domainArray=domain.match(domainPat);
	if (domainArray==null) {
		alert("The domain name doesn't seem to be valid.")
	    return false;
	}
	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;
	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>4) {
	   // the address must end in a two-letter to four letter-word.
	   alert("The address must end in a two-letter to four letter-word domain extension")
	   return false;
	}
	// Make sure there's a host name preceding the domain.
	if (len<2) {
	   var errStr="This address is missing a hostname!"
	   alert(errStr)
	   return false;
	}
	// If we've gotten this far, everything's valid!
	return true;
}

function isDate(dateStr) {
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	var matchArray = dateStr.match(datePat);
	if (matchArray == null) {
		alert("Please enter date as either mm/dd/yyyy or mm-dd-yyyy.");
		return false;
	}
	month = matchArray[1];
	day = matchArray[3];
	year = matchArray[5];
	if (month < 1 || month > 12) {
		alert("Month must be between 1 and 12.");
		return false;
	}
	if (day < 1 || day > 31) {
		//alert("Day must be between 1 and 31.");
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		//alert("Month "+month+" doesn't have 31 days!")
		return false;
	}
	if (month == 2) {
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day==29 && !isleap)) {
			//alert("February " + year + " doesn't have " + day + " days!");
			return false;
		}
	}
	return true;
} 

function MarkUp(fld, isValid){
	var errColor = "#FFFFCC";
	var errBorder = "#000000";
	var clrColor = "#FFFFFF";
	var clrBorder = "#999999";
	if(!isValid){
		fld.style.background = errColor;
		fld.style.borderColor = errBorder;
	}else{
		fld.style.background = clrColor;
		fld.style.borderColor = clrBorder;
	}
	//alert(txtbox.style.background);
}

function MarkUpChkArray(txtbox, isValid){
	var errColor = "#FFFFCC";
	var errBorder = "#000000";
	var clrColor = "transparent";
	var clrBorder = "#999999";
	if(!isValid){
		txtbox.style.backgroundColor = errColor;
		txtbox.style.borderColor = errBorder;
	}else{
		txtbox.style.backgroundColor = clrColor;
		txtbox.style.borderColor = clrBorder;
	}
}


function isFieldValid(fld, fldType){

	var val = true;
	if(fldType==null) fldType = "TEXT"; //check if fldType is present
	
	switch (fldType){
		case "TEXT":
			val = ValidateTextBox(fld, "TEXT")
			
			break;
			
		case "INTEGER":
			val = ValidateTextBox(fld, "INT")
			break;
		
		case "EMAIL":
			val = ValidateTextBox(fld, "EMAIL")
			break;
			
		case "DATE":
			val = ValidateTextBox(fld, "DATE")
			break;
			
		case "SELECT":
			val = ValidateSelect(fld);
			
			break;
	}
	//alert(fld + ": " + val);
	MarkUp(fld, val);
	
	return val;
}



function isCheckListValid(strField, cnt){
	var f = document.form1;
	var val = 0;
	var i;
	
	for(i=0; i<=cnt; i++){
		fldName = (document.getElementById(strField + "_" + i).name);
		
		if(f.elements[fldName].checked) {
			val = val + 1;
		}
	}
	//alert(document.getElementById(strField).style.borderWidth);
	MarkUpChkArray(document.getElementById(strField), val);
	if (val>=1) return true;
	else return false;
}

function isRadioListValid_OLD(strField, cnt){
	var f = document.form1;
	var isValid = false;
	var val = 0;
	var i;
	
	for(i=0; i<=cnt; i++){	
		if(f.elements[strField + "_" + i].checked) {
			isValid = true;
		}		
	}
	
	
	MarkUpChkArray(document.getElementById(strField), isValid);
	return isValid;
}


function isRadioListValid(strField, cnt){
	var f = document.form1;
	var isValid = false;
	var val = 0;
	var i;
	
	for(i=0; i<=cnt; i++){
		//var fldName = (document.getElementById(strField + "_" + i).name);		
		//alert(document.getElementById(strField + "_" + i).checked);
		if(document.getElementById(strField + "_" + i).checked) isValid = true;
		//alert(strField + "_" + i + ": " + isValid);
	}
	
	//alert(document.getElementById(strField).style);
	MarkUpChkArray(document.getElementById(strField), isValid);
	return isValid;
}


function GetRadioListValue(strField, cnt){
	var f = document.form1;
	var val = "";
	var i;
	
	for(i=0; i<=cnt; i++){	
		if(f.elements[strField + "_" + i].checked) {
			val = f.elements[strField + "_" + i].value;
		}		
	}
	
	return val;
}

function isCheckBoxSingleValid(chk, container){
    var chkVal = chk.checked;
    var val = false;
    var objContainer;
    if(container != "" || container != null) objContainer = document.getElementById(container);
    else objContainer = chk;
	
	if(chkVal)val = true;
	MarkUp(objContainer, chkVal);
	return val;
}

function isCheckListSpecifyValid(strField, cnt, searchString, txtField){
	var f = document.form1;
	var val = 0;
	var val1 = 0;
	var val2 = 0;
	var i;
	
	
	for(i=0; i<=cnt; i++){
		fldName = (document.getElementById(strField + "_" + i).name);
		
		if(f.elements[fldName].checked) {
			val1 = val1 + 1;
		}
	}
	//check if the "Other" is selected
	//fldName2 = (document.getElementById(strField + "_" + cnt).name);
	var chkO = document.getElementById(strField + "_" + cnt);
	var txtO = document.getElementById(txtField);
	//alert(txtO);
	if(chkO.checked){		
		if(txtO.value!="") val2 = 1;					
		MarkUp(txtO, val2);
	}else MarkUp(txtO, 1);
	
	MarkUpChkArray(document.getElementById(strField), val1);
	
	val = val1 + val2;	
	if (val>=1) return true;
	else return false;
}

function isCheckListSpecifyValidMultiple(strField, cnt, searchStrings, txtFields){
	var f = document.form1;
	var val = false;
	var val1 = 0;
	var val2 = 0;
	var total = 1;
	var i;
	
	var checked = 0;
	var txtbox = 0;
	
	var searchString = searchStrings.split(',');
	var txtField = txtFields.split(',');
	
	for(i=0; i<=cnt; i++){
		val1 = 0;
		val2 = 0;
		fldName = (document.getElementById(strField + "_" + i).name);
		
		if(f.elements[fldName].checked) {
			checked++;
			val1 = 1;
			if(document.getElementById(txtField[i]).value!=""){
				txtbox++;
				val2 = 1											
			}
			MarkUp(document.getElementById(txtField[i]), val2);
		}else{
			MarkUp(document.getElementById(txtField[i]), true);
		}
	}
	
	var fldCount = checked + txtbox;
	if(fldCount>=1){
		total = fldCount % 2;
		if (total==0) val = true;
	}
	MarkUpChkArray(document.getElementById(strField), fldCount);
	return val;

}

function isRadioListSpecifyValid_ORIG(strField, cnt, searchString, txtField){
	var f = document.form1;
	var isValid = false;
	var val = 0;
	var val1 = 0;
	var val2 = 0;
	var i;
	
	for(i=0; i<=cnt; i++){	
		if(f.elements[strField + "_" + i].checked) {
			val1 = val1 + 1;
		}		
	}

	//check if the "Other" is selected
	var radO = document.getElementById(strField + "_" + cnt);
	var txtO = document.getElementById(txtField);
	if(radO.checked){
		if(txtO.value!=""){
			val2 = 1;
		}
		MarkUp(txtO, val2);
	}else MarkUp(txtO, 1);
	
	MarkUpChkArray(document.getElementById(strField), val1);
	
	val = val1 + val2;	
	if (val>=1) return true;
	else return false;
	
	/*
	if (val>=1) isValid = true;
	else isValid = false;
	
	MarkUpChkArray(document.getElementById(strField), isValid);
	return isValid;
	*/
	
	
}

function isRadioListSpecifyValid(strField, cnt, searchString, txtField){
	var f = document.form1;
	var isValid = false;
	var val = 0;
	var val1 = 0;
	var val2 = 0;
	var i;
	
	for(i=0; i<=cnt; i++){	
		if(f.elements[strField + "_" + i].checked) {
			isValid = true;
		}		
	}
	MarkUpChkArray(document.getElementById(strField), isValid);
	//check if the "Other" is selected
	var radO = document.getElementById(strField + "_" + cnt);
	var txtO = document.getElementById(txtField);
	if(radO.checked){
		isValid = false;
		if(txtO.value!=""){
			isValid = true;
		}
		MarkUp(txtO, isValid);
	}else MarkUp(txtO, isValid);
	
	
	//alert(radO.checked + "val=" + txtO.value + "- " + val1 + " " + val2);
	//val = val1 + val2;	
	//if (val>=1) return true;
	//else return false;
	return isValid;
	
}


function toggleChkList(strField, cnt){
   	var f = document.form1;
	var i;
	
	if(f.elements[strField + "_" + cnt].checked){
		for(i=0; i<=cnt-1; i++){
			fldName = (document.getElementById(strField + "_" + i).name);
			
			f.elements[fldName].checked = false;
			f.elements[fldName].disabled = true;
		}
	}else{
		for(i=0; i<=cnt-1; i++){
			fldName = (document.getElementById(strField + "_" + i).name);
			f.elements[fldName].disabled = false;
		}													
	}												
}


function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

//-->
