 /******************************
NOTE: abbarant behavior can be caused by lack of a properly named id in the label.
if the js tries to set the property for the label to red and this label doesn't exist
the function quits and error checking is lost.

NOTE: This is the second time I've come to this file to note this behavior 6/16/08.
This needs to be fixed. The simple fix is to do if(document.getElementById(label)) or some other such
integrity check.

******************************/

var monthArray = new Array('-','January','Febuary','March','April','May','June','July','August','September','October','November','December');



function isValidStartDate(startDate,goodStartDate,label_id,message){
/***************
* function: isValidStartDate
* arguments: htmlObject startDate, string goodStartDate, string label_id, string message
* purpose: Check if the value of the startDate is less than the value of the goodStartDate
* return value: bool
* notes: goodStartDate must be formatted thusly 'October, 15 2005'
*****************/


	var dateArray = startDate.value.split('/');
	var astartDate = monthArray[parseInt(dateArray[0],10)]+", "+dateArray[1]+" "+dateArray[2];

	var realStartDate = new Date();
	realStartDate.setTime(Date.parse(astartDate));

	var acceptableStartDate = new Date();
	acceptableStartDate.setTime(Date.parse(goodStartDate));

	var dif= realStartDate - acceptableStartDate;

	if(dif < 0){
		error += message;
		var Oevent_tag = document.getElementById(label_id);
		Oevent_tag.style.color = "red";
		return 0;
	}else{
		var Oevent_tag = document.getElementById(label_id);
		Oevent_tag.style.color = "black";
		return 1;
	}
}



function isValidDateSpan(startDate, endDate,label_id,message){
/***************************************************
* Function: validDateSpan
* Arguments htmlObject startDate, string endDate, label_id
* return value: bool
* purpose: check that value of endDate is greater then value of startDate
* notes: none
****************************************************/


	var dateArray = startDate.value.split('/');
	var astartDate = monthArray[parseInt(dateArray[0],10)]+", "+dateArray[1]+" "+dateArray[2];
	var realStartDate = new Date();
	realStartDate.setTime(Date.parse(astartDate));


	var dateArray = endDate.value.split('/');
	var astopDate = monthArray[parseInt(dateArray[0],10)]+", "+dateArray[1]+" "+dateArray[2];
	var realStopDate = new Date();
	realStopDate.setTime(Date.parse(astopDate));

	var dif = realStopDate - realStartDate;

	if(dif < 0){
		error += message;
		var Oevent_tag = document.getElementById(label_id);
		Oevent_tag.style.color = "red";
		return 0;
	}else{
		var Oevent_tag = document.getElementById(label_id);
		Oevent_tag.style.color = "black";
		return 1;
	}



}

function isValidDateTimeSpan(startDate,startTime, endDate, stopTime,label_id,message){
		/***************************************************
		* Function: validDateSpan
		* Arguments htmlObject startDate, string endDate, label_id
		* return value: bool
		* purpose: check that value of endDate is greater then value of startDate
		* notes: none
		****************************************************/


			var dateArray = startDate.value.split('/');
			var astartDate = monthArray[parseInt(dateArray[0],10)]+", "+dateArray[1]+" "+dateArray[2];
			var realStartDate = new Date();
			realStartDate.setTime(Date.parse(astartDate));

			var startHour = startTime.substr(0,2);
			var startMin = startTime.substr(2,2);
			var startSeconds = parseInt(((startHour*3600) + (startMin*60))*1000,10);

			realStartDate.setTime(realStartDate.getTime() + startSeconds);


			var dateArray = endDate.value.split('/');
			var astopDate = monthArray[parseInt(dateArray[0],10)]+", "+dateArray[1]+" "+dateArray[2];
			var realStopDate = new Date();
			realStopDate.setTime(Date.parse(astopDate));

			var stopHour = stopTime.substr(0,2);
			var stopMin = stopTime.substr(2,2);
			var stopSeconds = ((stopHour*3600) + (stopMin*60))*1000;

			realStopDate.setTime(realStopDate.getTime() + stopSeconds);

			var dif = realStopDate - realStartDate;

			if(dif < 0){
				error += message;
				var Oevent_tag = document.getElementById(label_id);
				Oevent_tag.style.color = "red";
				return 0;
			}else{
				var Oevent_tag = document.getElementById(label_id);
				Oevent_tag.style.color = "black";
				return 1;
			}



		}


/************************************************************
*Function Name: isBlank
*Arguments: value of form field, id of the lable, name of field
*Purpose: check if a field value is empty. If it is, set the lable red,
*		  and build an error message.
*Notes: The "lable_id" is the id of the lable for the form field.
*		example First Name:  ______________
*************************************************************/
function isBlank(value, lable_id, name){
    if(value == ""){

		error += "Please enter "+ name +"\n";

		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "red";
		return 1;
	}else{
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "black";
		return 0;
	}
}

/************************************************************
*Function Name: isRadioChecked
*Arguments: 	name of form field, id of the form field, message
*Purpose: 		check if a radio button has been selected.
*				If it isn't, build an error message based on message.
*************************************************************/

function isRadioChecked(fieldname, lable_id, message) {
	myOption = -1;

	for (i=fieldname.length-1; i > -1; i--) {

		if (fieldname[i].checked) {
		validatorRadioValue = fieldname[i].value;//added in 07 as a little helper
		myOption = i;
		}
	}
		if (myOption == -1) {
			error += "Please answer "+ message +" yes or no\n";
			var Oevent_tag = document.getElementById(lable_id);
			Oevent_tag.style.color = "red";
			return 1;
		}
			else {
				var Oevent_tag = document.getElementById(lable_id);
				Oevent_tag.style.color = "black";
				return 0;
			}
}

/************************************************************
*Function Name: isDropDownSelected
*Arguments: 	name of form field, id of form field, message
*Purpose: 		check if a value of drop-down other than default '#' has been selected.
*				If it isn't, build an error message based on message.
*************************************************************/

function isDropDownSelected(fieldname, lable_id, message) {

	if (fieldname.value == '#') {

		error += "Please select a" + message + ".\n";
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "red";
		return 1;
	}else {
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "black";
		return 0;
	}
}

/************************************************************
*Function Name: isChecked
*Arguments: value of form field, id of the lable, name of field
*Purpose: check if a field value is empty. If it is, set the lable red,
*		  and build an error message.
*Notes: The "lable_id" is the id of the lable for the form field.
*		example First Name:  ______________
*************************************************************/
function isChecked(value, lable_id, name){
    if(!value.checked == 1){

		error += "You must check "+ name +" \n";

		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "red";
		return 1;
	}else{
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "black";
		return 0;
	}
}

/************************************************************
*Function Name: isZip
*Arguments: value of form field, id of the lable, name of field
*Purpose: check if a field value is a valid zip code
*Notes: The "lable_id" is the id of the lable for the form field.
*		example First Name:  ______________
*************************************************************/
function isZip(value, lable_id, name){

 	strng = new String(value);
 	var value = strng.replace(/ /g, '');
     // Check for correct zip code
     reZip = new RegExp(/(^\d{5}$)|(^\d{5}-\d{4}$)/);

     //value = stripAlphaChars(value);
     if (!reZip.test(value)) {
		error += "Please enter a valid "+ name +"\n";
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "red";
		return 0;
     }else{
	var Oevent_tag = document.getElementById(lable_id);
	Oevent_tag.style.color = "black";
	return 1;
	}
}

/*************************************************************
*Function Name: isNumber_NotBlank
*Arguments:value of form field, id of the lable, name of field
*Purpose: check if a field value is a number and not blank.
*Notes:
*
*************************************************************/
function isNumber_NotBlank(value, lable_id, name){

	if(value == ""){

			error += "Please enter a value in "+ name +".\n";
			var Ophone_tag = document.getElementById(lable_id);
			Ophone_tag.style.color = "red";
			return 0;
	}

		//parseInt(stripped)
		//strip out acceptable non-numeric characters
		if (isNaN(value)) {
			error +=""+ name + " must be a numeric value.\n";
			var Oevent_tag = document.getElementById(lable_id);
			Oevent_tag.style.color = "red";
			return 0;
		}else{
			var Oevent_tag = document.getElementById(lable_id);
			Oevent_tag.style.color = "black";
			return 1;
		}

}

/*************************************************************
*Function Name: isNumber
*Arguments:value of form field, id of the lable, name of field
*Purpose: check if a field value is a number and not blank.
*Notes:
*
*************************************************************/
function isNumber(value, lable_id, name){

	if(value == ""){

		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "black";
		return 1;
	}

	//parseInt(stripped)
	//strip out acceptable non-numeric characters
	if (isNaN(value)) {
		error +=""+ name + " must be a numeric value.\n";
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "red";
		return 0;
	}else{
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "black";
		return 1;
		}
}

/*************************************************************
*Function Name: isPhoneNumber_NotBlank
*Arguments:value of form field, id of the lable, name of field
*Purpose: check if a field value is a phone number and not blank.
*Notes:
*
*************************************************************/
function isPhoneNumber_NotBlank(value, lable_id, name){

	if(value == ""){

			error += "Please enter "+ name +".\n";
			var Ophone_tag = document.getElementById(lable_id);
			Ophone_tag.style.color = "red";
			return 0;
	}
		var stripped = value.replace(/[\(\)\.\-\ ]/g, '');
		//parseInt(stripped)
		//strip out acceptable non-numeric characters
		if (isNaN(stripped)) {
			error += "The phone number contains illegal characters.\n";
			var Oevent_tag = document.getElementById(lable_id);
			Oevent_tag.style.color = "red";
			return 0;
		}else if (!(stripped.length == 10)) {
			error += "The phone number is the wrong length. Be sure to included an area code.\n";
			var Oevent_tag = document.getElementById(lable_id);
			Oevent_tag.style.color = "red";
			return 0;
		}else{
			var Oevent_tag = document.getElementById(lable_id);
			Oevent_tag.style.color = "black";
			return 1;
		}

}

/*************************************************************
*Function Name: isPhoneNumber
*Arguments: value of form phone field.
*Purpose: check if a field value is a phone number.
*Notes:
*
*************************************************************/
function isPhoneNumber(value, lable_id, name){

	var stripped = value.replace(/[\(\)\.\-\ ]/g, '');

	//strip out acceptable non-numeric characters
	if(value == ""){
			var Oevent_tag = document.getElementById(lable_id);
			Oevent_tag.style.color = "black";
			return 1;
	}
	if (isNaN(parseInt(stripped))) {
		error += "The phone number contains illegal characters.\n";
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "red";
		return 0;
	}else if (!(stripped.length == 10)) {
		error += "The phone number is the wrong length.Make sure you included an area code.\n";
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "red";
		return 0;
	}else{
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "black";
		return 1;
	}
}

/*************************************************************
*Function Name: isPhoneDSN
*Arguments: value of form phone DSN field.
*Purpose: check if a field value is a phone DSN.
*Notes:
*
*************************************************************/
function isPhoneDSN(value, lable_id, name){

	var stripped = value.replace(/[\(\)\.\-\ ]/g, '');

	//strip out acceptable non-numeric characters
	if(value == ""){
			var Oevent_tag = document.getElementById(lable_id);
			Oevent_tag.style.color = "black";
			return 1;
	}
	if (isNaN(parseInt(stripped))) {
		error += "The phone number contains illegal characters.\n";
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "red";
		return 0;
	}else if (!(stripped.length == 7)) {
		error += "The phone number is the wrong length it must be 7 characters.\n";
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "red";
		return 0;
	}else{
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "black";
		return 1;
	}
}

/*************************************************************
*Function Name: isEmail_NotBlank
*Arguments:value of form field, id of the lable, name of field
*Purpose: check if a field value is a email.
*Notes:
*
*************************************************************/
function isEmail_NotBlank(value,lable_id, name){

	var emailFilter=/^.+@.+\..{2,3}$/;

	if(value == ""){
		error += "Please enter an "+ name +".\n";
		var Oemail1_tag = document.getElementById(lable_id);
		Oemail1_tag.style.color = "red";
		return 0;
	}
	if (!(emailFilter.test(value))) {
		error += "Please enter a valid "+ name +".\n";
		var Oemail1_tag = document.getElementById(lable_id);
		Oemail1_tag.style.color = "red";
		return 0;
	}

	var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/; // These are illegal  ( ) < > [ ] , ; : \ / "

	if (value.match(illegalChars)) {
		error += "The "+ name +" contains illegal characters.\n";
		var Oemail1_tag = document.getElementById(lable_id);
		Oemail1_tag.style.color = "red";
		return 0;
	}
		var Oemail1_tag = document.getElementById(lable_id);
		Oemail1_tag.style.color = "black";
	return 1;

}
/*************************************************************
*Function Name: isEmail
*Arguments:value of form field, id of the lable, name of field
*Purpose: check if a field value is a email.
*Notes:
*
*************************************************************/
function isEmail(value, lable_id, name){

	var emailFilter=/^.+@.+\..{2,3}$/;

	if(value == ""){
		var Oemail_tag = document.getElementById(lable_id);
		Oemail_tag.style.color = "black";
		return 1;
	}
	if (!(emailFilter.test(value))) {
		error += "Please enter a valid "+ name +".\n";
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "red";
		return 0;
	}

	var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/; // These are illegal  ( ) < > [ ] , ; : \ / "

	if (value.match(illegalChars)) {
		error += "The email address contains illegal characters.\n";
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "red";
		return 0;
	}
		var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "black";
	return 1;

}

/*************************************************************
*Function Name: fieldsMatch
*Arguments:value of form field, id of the lable, name of field and field2
*Purpose: check if the values of two fields match
*Notes:
*
*************************************************************/
function fieldsMatch(value1,value2,lable_id1,lable_id2, name1,name2){

	if(value1 == value2){
		var Oevent_tag1 = document.getElementById(lable_id1);
		Oevent_tag1.style.color = "black";

		var Oevent_tag2 = document.getElementById(lable_id2);
		Oevent_tag2.style.color = "black";


		return 1;

	}else{
		var Oevent_tag1 = document.getElementById(lable_id1);
		Oevent_tag1.style.color = "red";

		var Oevent_tag2 = document.getElementById(lable_id2);
		Oevent_tag2.style.color = "red";

		error += name1+" and "+name2+" do not match.\n";

		return 0;
	}
}

/*****************************************************************
THIS FUNCTION IS COMMENTED OUT FOR LACK OF TESTING

function checkPassword (strng,lable_id, name) {
var error = "";
if (strng == "") {
   error = "You didn't enter a password.\n";
}

    var illegalChars = /[\W_]/; // allow only letters and numbers

    if ((strng.length < 6) || (strng.length > 8)) {
       	error = "The password is the wrong length.\n";
    	var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "red";

    }
    else if (illegalChars.test(strng)) {
      	error = "The password contains illegal characters.\n";
    	var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "red";
    }
    else if (!((strng.search(/(a-z)+/)) && (strng.search(/(A-Z)+/)) && (strng.search(/(0-9)+/)))) {
       	error = "The password must contain at least one uppercase letter, one lowercase letter, and one numeral.\n";
    	var Oevent_tag = document.getElementById(lable_id);
		Oevent_tag.style.color = "red";
    }
var Oevent_tag = document.getElementById(lable_id);
Oevent_tag.style.color = "black";
return error;
}

***************************************************************************/