<!-- Hide Javascript
//menu functions
	var sidemenu_active_class = "active";
	var sidemenu_leaf_class = "leaf";
	var sidemenu_open_class = "open";
	var sidemenu_closed_class = "closed";

	var menu_default_page = "index.asp";
	var menu_url;


function sidemenu_SameUrl(url, href) {
	var a = url.split(/[?\/]/i);
	var b = href.split(/[?\/]/i);
	var i = a.length - 1;
	var j = b.length - 1;
	while ((i >= 0) && (j >= 0)) {
		if (b[j] == "..") { j-=2; continue; }
		if (a[i] == "..") { i-=2; continue; }
		if ((b[j] == ".") || (b[j] == "")) { j--; continue; }
		if ((a[i] == ".") || (a[i] == "")) { i--; continue; }
		if (! (a[i] == b[j])) return false;
		i--;
		j--;
	}
	return true;
}
  
function side_menu(menu_id) {
	var url = location.href;
	if (url.lastIndexOf("/") == (url.length-1)) {
		url = url+menu_default_page;
	}
	if (url.lastIndexOf("#") >= 0) {
		url = url.substring(0, url.lastIndexOf("#"));
	}
	menu_url = url;

	var main = document.getElementById(menu_id);
	if (!main) alert("No element with id '"+ menu_id +"' found");
		sidemenu_movement(main);
	}

function sidemenu_movement(element) {
	var props  = 0;
	for (var i=0; i<element.childNodes.length; i++) {
		var child = element.childNodes[i];
		props |= sidemenu_movement(child); // aggregate bits
	}
	switch (element.tagName) {
		case "UL":
			props |= 1;
			break;
        
		case "LI":
			var c1 = (props & 1) ? 
				((props & (2|4)) ? sidemenu_open_class : sidemenu_closed_class)
				: sidemenu_leaf_class; 
        element.className = element.className ? element.className+" "+c1 : c1;
        if (props & 4) {
			if (!(props & 2)) element.className += " "+sidemenu_active_class;
				props |= 2;
				props &= 1 | 2; // reset bit 4
        }
        break;
        
		case "A":
	  		if (props & 2) break; // once is enough
			var href = element.getAttribute("href");
			if (sidemenu_SameUrl(menu_url, href)) props |= 4;
		break;
    }
	return props;
}

// function to display an alert message
function DisplayAlert(formfield, msg) {
	alert(msg);
	formfield.focus();
	return false;
}
// Form validation functions

// checks for a Valid Email Address
function ChkEmail(formfield, msg, required) {
	if (!formfield) {return true;}
	if (formfield.type == 'hidden') {return true;}
	if ((formfield.value == "") && (required == 'N')) { return true; }
	if (formfield.value == "" && required == 'P') {
		formfield.focus();
		return confirm(msg);
	}
	if ((required == 'Y') && (formfield.value == "")) { return DisplayAlert(formfield, msg); }	

	invalidChars = ' \/:,;><'
	for (i=0; i<invalidChars.length; i++) {
		badChar = invalidChars.charAt(i)
		if (formfield.value.indexOf(badChar,0) != -1) { return DisplayAlert(formfield, msg); }
	}
	if (formfield.value.indexOf('.@',0) != -1) { 
		msg = msg + '\n\n(Email may not contain character combination: \'.@\')';
		return DisplayAlert(formfield, msg); 
	}

	atPos = formfield.value.indexOf("@",1)
	if (atPos == -1) { return DisplayAlert(formfield, msg);	}
	 
	if (formfield.value.indexOf("@",atPos+1) != -1) { return DisplayAlert(formfield, msg); }

	periodPos = formfield.value.indexOf(".",atPos)
	if (periodPos == -1) { return DisplayAlert(formfield, msg); }
	if (periodPos+3 > formfield.value.length) { return DisplayAlert(formfield, msg); }
	return true;
}

// function to validate a text form field
function ValidateText(formfield, DisplayMsg, required) {
	if (formfield) {
		if (formfield.disabled == true) { return true; }
		if (formfield.value == "" && required == 'N') { return true; }
		if (formfield.type != 'text') {return true;}
		if (formfield.value == "" && required == 'Y') {
			alert(DisplayMsg);
			formfield.focus();
			return false;
		}
		if (formfield.value == "" && required == 'P') {
			formfield.focus();
			return confirm(DisplayMsg);
		}
	}
	return true;
}

//function to validate a text area
function ValidateTextArea(formfield, DisplayMsg, required, maxlength) {
	if (formfield) {
		if ((formfield.value == "") && required == 'N') { return true; }
		if (formfield.type == 'hidden') {return true;}
		if (formfield.value == "" && required == 'Y') {
			alert(DisplayMsg);
			formfield.focus();
			return false;
		}
		if (formfield.value == "" && required == 'P') {
			formfield.focus();
			return confirm(DisplayMsg);
		}
		if (maxlength) {
			if (formfield.value.length > maxlength) {
				if (required != 'P') { 
					alert(DisplayMsg + '\n\n' + ' This has too many characters entered.  It may only be ' + maxlength + ' characters.');
				} else { 
					alert('This has too many characters entered.  It may only be ' + maxlength + ' characters.');
				}
				formfield.focus();
				return false;
			}
		}
	}
	return true;
}

//function to validate a select box
function ValidateSelect(FormField, DisplayMsg, required) {
	if (FormField) {
		if (FormField.type == 'hidden') { return true; }
		if (FormField.disabled == true) { return true; }
		if (FormField.type != 'select-one') {
			//This needed to be made more flexible to handle circumstances where formfield is not a select box
			return true;
			//alert('Error in Validators.js! - ' + FormField.name + ' is not a select box.');
			//return false;
		}
		if (FormField[0].selected && required == 'N') { return true; }
		if (FormField[0].selected && required == 'Y') {
			alert(DisplayMsg);
			FormField.focus();
			return false;
		}
		if (FormField[0].selected && required == 'P') {
			FormField.focus();
			return confirm(DisplayMsg);
		}
	}
	return true;
}


function ValidatePhone(formfield, DisplayMsg, required) {
	if (formfield) {
		if (formfield.value == "" && required == 'N') { return true; }
		if (formfield.type == 'hidden') {return true;}
		if (formfield.disabled == true) { return true; }
		if (formfield.value == "" && required == 'Y') {
			alert(DisplayMsg);
			formfield.focus();
			return false;
		}
		if (formfield.value == "" && required == 'P') {
			formfield.focus();
			return confirm(DisplayMsg);
		}
		var count = 0
		for (i=0; i<formfield.value.length; i++){
			if (!isNaN(formfield.value.charAt(i))){	
				count = count + 1;
			}
		}
		 if (count <= 9){
		 	alert('You must enter a complete phone number.');
			formfield.focus();
			return false;
		}
		 if (count >= 16){
		 	alert('You must enter a real phone number.');
			formfield.focus();
			return false;
		} 
	}
	return true;
}


// checks to see if one of several radio buttons is selected
function ValidateRadio(FormField, DispMsg,required) {
	if (FormField && FormField.type != 'hidden') {
		if (required == 'N') { return true; }

		if (required == 'P') { 
			formfield.focus();
			return confirm(DispMsg);
		}
		
		if (required == 'Y') { 
			if (FormField.length > 0) {
				for (i = 0; i < FormField.length; i++) {
					if (FormField[i].checked) { return true; } 
				}
				alert(DispMsg);
				return false;
			} else { 
				if (!FormField.checked) { 
				alert(DispMsg);
				return false;
				}
			}
		}
	}
	return true;
}


function ValidateMultiCheck(FormField, DisplayMsg, required) {
	if (FormField && FormField.type != 'hidden') {
		if (required == 'N') { return true; }
		if (required == 'Y') {
			if (FormField.length > 1) {
				for (i=0; i<FormField.length; i++) {
					if (FormField[i].checked) { return true; }
				}
				alert(DisplayMsg);
				return false;
			} else {
				if (!FormField.checked) {
					alert(DisplayMsg);
					return false;
				}
			}
		}
		if (required == 'P') {
			var fieldname =  FormField[0].name;
			var len = eval('document.forms[0].' + fieldname + '.length');
			if (len > 0) {
				for (i=0; i<len; i++) {
					if (FormField[i].checked) { return true; }
				}
				//FormField.focus();
				return confirm(DisplayMsg);
			} else {
				if (!FormField.checked) {
					//FormField.focus();
					return confirm(DisplayMsg);
				}
			}
		}
	}
	return true;
}




function trimAll(strForm) {
// THIS FUNCTION WILL TRIM WHITESPACE FROM ALL TEXT AND PASSWORD FIELDS
  var obj_form = document.forms[strForm];

  for (j=0; j<obj_form.length; j++) {
    var obj_element = obj_form.elements[j];
    var str_value = "";

    if ((obj_element.type.toLowerCase() == "text") || (obj_element.type.toLowerCase() == "password")  || (obj_element.type.toLowerCase() == "textarea")) {
      str_value = obj_element.value;
      str_value = str_value.replace("’", "'");
      str_value = str_value.replace("“", "\"");
      str_value = str_value.replace("”", "\"");
      obj_element.value = jsChop(str_value);
    }
  }
}


function isBlank(field) {
// THIS FUNCTION CHECKS FOR BLANK FIELDS AND RETURNS TRUE IF BLANK
  if ((field == "") || (field == " ") || (field == null)) {
    return true;
  }
  else {
    for (i=0; i<field.length; i++) {
      if (field.charAt(i) != " ") return false;
    }
  }

  return true;
}



function isValidDate(str_month, str_day, str_year, boolCheckExpired) {
  if ((str_month == "00") || (str_day == "00") || (str_year == "0000")) {
    alert("The date you entered is incomplete.");
    return false;
  }

  // Chop leading zero off of 2-digit values...
  if (str_day.length == 2) str_day = (str_day.indexOf("0") == 0) ? str_day.charAt(1) : str_day;
  if (str_month.length == 2) str_month = (str_month.indexOf("0") == 0) ? str_month.charAt(1) : str_month;

  // Format as type integer...
  var day   = parseInt(str_day);
  var month = parseInt(str_month);
  var year  = parseInt(str_year);

  // Check for valid dates...
  if ((month == 2) && (day > 29) && ((year % 4) == 0)) {
    alert("The date you entered is incorrect.\nFebruary, " + year + " has only 29 days");
    return false;
  }
  else if ((month == 2) && (day > 28) && ((year % 4) != 0)) {
    alert("The date you entered is incorrect.\nFebruary, " + year + " has only 28 days");
    return false;
  }
  else if (((month == 4) || (month == 6) || (month == 9) || (month == 11)) && (day > 30)) {
    switch (month) {
      case 4: month = "April"; break;
      case 6: month = "June"; break;
      case 9: month = "September"; break;
      case 11: month = "November"; break;
    }
    alert("The date you entered is incorrect.\n" + month + " has only 30 days.");
    return false;
  }

  // Check for expired dates...
  if (boolCheckExpired == 1) {
    var today = new Date();
    js_month  = today.getMonth()+1;
    js_day    = today.getDate();
    js_year   = today.getFullYear();

    if ((year < js_year) || ((month < js_month) && (year <= js_year)) || ((day < js_day) && (month <= js_month) && (year <= js_year))) {
      alert("The date you entered has already passed.");
      return false;
    }
  }

  return true;
}

function stripNonNumeric(strInput) {
// THIS FUNCTION WILL REMOVE ALL NON-NUMERIC CHARACTERS FROM A STRING
  var strResult = "";
  
  for (var i=0; i<strInput.length; i++) {
    var testchar = strInput.charAt(i);

    if ((testchar >= "0") && (testchar <= "9") || (testchar == '.')) {
      strResult += testchar;
    }
  }

  return strResult;
}

function confirmEmailAddress(formfield, email, msg, required) {
//THIS FUNCTION WILL CHECK EMAIL FIELD 1 WITH EMAIL FIELD 2 MATCHES
	if ((required == 'Y') && (formfield.value == "")) { return DisplayAlert(formfield, msg); }
	if (formfield.value != email.value) { return DisplayAlert(formfield, msg); }
	return true;
}


//  Stop Hiding Javascript -->
