 /******************************************************************************
 DESCRIPTION: Validates that a string contains only valid numbers.
 PARAMETERS: strValue - String to be tested for validity
    RETURNS: True if valid, otherwise false.
 ******************************************************************************/

//window.onerror = function(){return true;}
 
var new_fieldname = ""
var form_name = ""
var form_color = "ffffff"
var error_color = "ffffff"

function check(form,ele_count,fr_location) {
 if(typeof(form)== "Object")
 	{
	form = form.name;
	}
 form = (form.charAt(form.length - 1) != '.')? form+'.':form;
 var x = eval(form+"elements.length");
 script_name = "Form Validator ver 2.0"
 var message = ""
 var more_message = ""
 var fr_location = "Display"
 var showmsg = "no"
 x = x - 1;
  for (var i = 0; i <= x; i++) {
   var messenger = eval(form+"elements[i].name");
   messenger = messenger.substring(0, 8);
   var fieldname = eval(form+"elements[i].name");
   fieldname = fieldname.substring(8); 
   if (messenger.substring(0,6) == "valid_") {
    changeColorBack(fieldname,fr_location);
   } else if (messenger.substring(0,5) == "v_two") {
    var fieldname = eval(form+"elements[i].value");
	var fieldname1 = fieldname.substring(0,fieldname.indexOf("|")); 
	var fieldname2 = fieldname.substring(fieldname.indexOf("|")+1,fieldname.lastIndexOf("|")); 
	var fieldoperator = fieldname.substring(fieldname.lastIndexOf("|")+1,fieldname.length); 
	var fieldvalue1 = eval(form+fieldname1+'.value');
	var fieldvalue2 = eval(form+fieldname2+'.value');
   	changeColorBack(fieldname1,fr_location);
   	changeColorBack(fieldname2,fr_location);
	if (fieldvalue1 != fieldvalue2) {
    	changeColor(fieldname1,fr_location);
    	changeColor(fieldname2,fr_location);
		err_msg = fieldname1 + " must be equal to " + fieldname2;
		err_msg = err_msg.replace(/_/g,' ');
    	alert(err_msg)
   		return false;
	}
  }
 }
  for (var i = 0; i <= x; i++) {
     var messenger = eval(form+"elements[i].name");
    messenger = messenger.substring(0, 8);
    var fieldname = eval(form+"elements[i].name");
    fieldname = fieldname.substring(8); {
      if (messenger == "valid_r_") {
        more_message = ValidateRequired(form,x,fieldname,i,fr_location);
      } else if (messenger == "valid_q_") {
        more_message = ValidateDependent(form,x,fieldname,i,fr_location);
      } else if (messenger == "valid_n_") {
        more_message = ValidateNumeric(form,x,fieldname,i,fr_location);
      } else if (messenger == "valid_c_") {
        more_message = ValidateCurrency(form,x,fieldname,i,fr_location);
      } else if (messenger == "valid_d_") {
        more_message = ValidateDate(form,x,fieldname,i,fr_location);
      } else if (messenger == "valid_e_") {
        more_message = ValidateEmail(form,x,fieldname,i,fr_location);
      } 
      if (more_message != "") {
        if (message == "") {
         message = more_message;
         more_message="";
        } else {
               message = message + "\n" + more_message;
         more_message="";
        }
            }
      if (message > "") {
       showmsg = "yes"
       }             
      } 
    }
  
  if (showmsg == "yes") {
   alert("The following form field(s) were incomplete or incorrect:\n\n" + message + "\n\n Please complete or correct the form and submit again.")
   return false;
  } //else {
   //eval(form+"submit()");
   //}
   return true;
} 
 
function ValidateCurrency(form,x,fieldname,i,fr_location) {
 var form_field_value = eval(form+fieldname+'.value');
 var msg_addition = "";
 var objRegExp = /(^\$\d{1,3}(,\d{3})*\.\d{2}$)|(^\(\$\d{1,3}(,\d{3})*\.\d{2}\)$)/;
    if (form_field_value != "") {
    if (!objRegExp.test(form_field_value)) {
      msg_addition = eval(form+"elements[i].value");
   changeColor(fieldname,fr_location);
   }
 }
 return(msg_addition);
}
 
function ValidateState(form,x,fieldname,i,fr_location) {
 var form_field_value = eval(form+fieldname+'.value');
 var msg_addition = "";
 var objRegExp = /^(AK|AL|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL|IN|KS|KY|LA|MA|MD|ME|MI|MN|MO|MS|MT|NB|NC|ND|NH|NJ|NM|NV|NY|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VA|VT|WA|WI|WV|WY)$/i; 
    if (form_field_value != "") {
    if (!objRegExp.test(form_field_value)) {
      msg_addition = eval(form+"elements[i].value");
   changeColor(fieldname,fr_location);
   }
 }
 return(msg_addition);
}
 
function ValidateSSN(form,x,fieldname,i,fr_location) {
 var form_field_value = eval(form+fieldname+'.value');
 var msg_addition = "";
 var objRegExp  = /^\d{3}\-\d{2}\-\d{4}$/;
    if (form_field_value != "") {
    if (!objRegExp.test(form_field_value)) {
      msg_addition = eval(form+"elements[i].value");
   changeColor(fieldname,fr_location);
   }
 }
 return(msg_addition);
}
 
function ValidateEmail(form,x,fieldname,i,fr_location) {
 var form_field_value = eval(form+fieldname+'.value');
 var msg_addition = "";
 var objRegExp  = /^[a-z0-9]([a-z0-9_\/\-\.\']*)@([a-z0-9_\-\.]*)(\.[a-z]{2,6}(\.[a-z]{2}){0,2})$/i;
    if (form_field_value != "") {
    if (!objRegExp.test(form_field_value)) {
      msg_addition = eval(form+"elements[i].value");
   changeColor(fieldname,fr_location);
   }
 }
 return(msg_addition);
}
 
function ValidateUSPhone(form,x,fieldname,i,fr_location) {
 var form_field_value = eval(form+fieldname+'.value');
 var msg_addition = "";
 var objRegExp  = /^\([1-9]\d{2}\)\s?\d{3}\-\d{4}$/;
    if (form_field_value != "") {
    if (!objRegExp.test(form_field_value)) {
      msg_addition = eval(form+"elements[i].value");
   changeColor(fieldname,fr_location);
   }
 }
 return(msg_addition);
}
 
function  ValidateNumeric(form,x,fieldname,i,fr_location) {
 var form_field_value = eval(form+fieldname+'.value');
 var form_field = eval(form+fieldname);
 var strValue = form_field_value;
 form_field.value=removeCurrency(form_field_value);
 form_field_value = form_field.value;
 var msg_addition = "";
 var objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/; 
    if (form_field_value != "") {
    if (!objRegExp.test(form_field_value)) {
      msg_addition = eval(form+"elements[i].value");
   changeColor(fieldname,fr_location);
   }
 }
 return(msg_addition);
}
 
function ValidateInteger(form,x,fieldname,i,fr_location) {
 var form_field_value = eval(form+fieldname+'.value');
 var msg_addition = "";
 var objRegExp  = /(^-?\d\d*$)/;
    if (form_field_value != "") {
    if (!objRegExp.test(form_field_value)) {
      msg_addition = eval(form+"elements[i].value");
   changeColor(fieldname,fr_location);
   }
 }
 return(msg_addition);
}
 
function ValidateDate(form,x,fieldname,i,fr_location) {
 var form_field_value = eval(form+fieldname+'.value');
 var msg_addition = "";
 var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
 
    if (form_field_value != "") {
    if(!objRegExp.test(form_field_value)) {
      msg_addition = eval(form+"elements[i].value");
   changeColor(fieldname,fr_location);
  } else{
      var arrayDate = form_field_value.split(RegExp.$1); //split date into month, day, year
   var intDay = parseInt(arrayDate[1],10); 
   var intYear = parseInt(arrayDate[2],10);
      var intMonth = parseInt(arrayDate[0],10);
 
   //check for valid month
   if(intMonth > 12 || intMonth < 1) {
      msg_addition = eval(form+"elements[i].value");
    changeColor(fieldname,fr_location);
   }
 
      //create a lookup for months not equal to Feb.
      var arrayLookup = { '01' : 31,'03' : 31, '04' : 30,'05' : 31,'06' : 30,'07' : 31,
                         '08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31}
  
       //check if month value and day value agree
       if(arrayLookup[arrayDate[0]] != null) {
       if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0)
    msg_addition = "";
          //return true; //found in lookup table, good date
      }
  
      //check for February
   var booLeapYear = (intYear % 4 == 0 && (intYear % 100 != 0 || intYear % 400 == 0));
      if( ((booLeapYear && intDay <= 29) || (!booLeapYear && intDay <=28)) && intDay !=0)
    msg_addition = "";
        //return true; //Feb. had valid number of days
     }
  }
  return(msg_addition);
}
 
function ValidateTime (form,x,fieldname,i,fr_location) {
 var form_field_value = eval(form+fieldname+'.value');
 var msg_addition = "";
 var objRegExp = /^([1-9]|1[0-2]):[0-5]\d(:[0-5]\d(\.\d{1,3})?)?$/;
    if (!objRegExp.test(form_field_value)) {
      msg_addition = eval(form+"elements[i].value");
   changeColor(fieldname,fr_location);
   }
  return(msg_addition);
}
 
function ValidateRequired(form,x,fieldname,i,fr_location) {
 var form_field_type = eval(form+fieldname+'.type');
 var form_field_value = "";
 if (form_field_type == 'select-one') {
  var l = eval(form+fieldname+'.selectedIndex');
  var form_field_value = eval(form+fieldname+'.options[l].value');
 } else if (form_field_type == 'select-multiple') {
  var l = eval(form+fieldname+'.selectedIndex');
  if (l < 0) 
  	var form_field_value = "";
  else
  	var form_field_value = "selected";  	
 } else if (form_field_type == "text" || form_field_type == "password" || form_field_type == "textarea" || form_field_type == "hidden" || form_field_type == "file") {
  var form_field_value = eval(form+fieldname+'.value');
 } else {
  new_fieldname = fieldname;
  for (var y = 0; y <= x; y++) {
   var form_element_type = eval(form+"elements[y].type");
   if ((form_element_type == "radio" || form_element_type == "checkbox") && eval(form+"elements[y].name") == new_fieldname && eval(form+"elements[y].checked") == true) {
    form_field_value = eval(form+"elements[i].value");
    msg_addition = "";
    break;
   } else if ((form_element_type == "radio" || form_element_type == "checkbox") && eval(form+"elements[y].name") == new_fieldname && eval(form+"elements[y].checked") == false) {
      msg_addition = eval(form+"elements[i].value");
   }
  }
 }
 var msg_addition = "";
   var strTemp = form_field_value;
 strTemp = trimAll(strTemp);
    if(strTemp.length == 0){
      msg_addition = eval(form+"elements[i].value");
  changeColor(fieldname,fr_location);
    }  
 return(msg_addition);
}
 
function changeColor(fieldname,fr_location,new_color) {
/*
 if (document.all) {
  var el_win = eval(fr_location);
  var el_style = (el_win.document.all[fieldname])? el_win.document.all[fieldname].style:'';
  if (el_style != '') { 
   el_style.backgroundColor = error_color;
  }  
 }
 */
  //RL begin
  if (!new_color) new_color = error_color;
  var el_win = eval(fr_location);
  if (document.all) {
  	if(el_win.document.all[fieldname].type)	{		
	  var el_style = (el_win.document.all[fieldname])? el_win.document.all[fieldname].style:'';
	  if (el_style != '')   el_style.backgroundColor = new_color;
	}
  }  
   //RL end
}
 
function changeColorBack(fieldname,fr_location) {
/*
 if (document.all) {
  var el_win = eval(fr_location);
  var el_style = (el_win.document.all[fieldname])? el_win.document.all[fieldname].style:'';
  if (el_style != '') { 
   el_style.backgroundColor = form_color;
  }  
 }
 */
  //RL begin
  var el_win = eval(fr_location);  
  if (document.all) {
  	if(el_win.document.all[fieldname].type)	{	
	  var el_style = (el_win.document.all[fieldname])? el_win.document.all[fieldname].style:'';
	  if (el_style != '')  el_style.backgroundColor = form_color;
	}
  }
  //RL end
}
//RL begin 
function whichRequired(prefix,formobj,fr_location,gcolor1,gcolor2) {
	if (gcolor1) form_color=gcolor1;
	if (gcolor2) error_color=gcolor2;
 	if (!prefix) prefix = "valid_";
	if (!fr_location) fr_location = "display";
	//alert(formobj)
	//if(formobj == "document.forms[0].") formobj = "document.forms[0]";
	var _elements = eval( (fr_location+"."+formobj+".elements").replace(/[\.\.]/g,'\.'));
  	if (document.all)  
		for (x=0; x < _elements.length; x++) 
	  		if (_elements[x].name.indexOf(prefix) == 0) {
	    		changeColor(_elements[x].name.substring(8), fr_location, gcolor1 );
	   			//if(focus_fieldname == "") focus_fieldname = fieldname;
      		}		
	return 0;
 }	
 //RL end
 

function removeCurrency( strValue ) {
  var objRegExp = /\(/;
  var strMinus = '';
  var strValue = removeCommas(strValue);
  objRegExp = /\)|\(|[,]/g;
  strValue = strValue.replace(objRegExp,'');
  if(strValue.indexOf('$') >= 0){
    strValue = strValue.substring(1, strValue.length);
  }
  return strValue;
}

function removeCommas( strValue ) {
  var objRegExp = /,/g; //search for commas globally
  //replace all matches with empty strings
  return strValue.replace(objRegExp,'');
}

function trimAll( strValue ) {
  var objRegExp = /^(\s*)$/;
    //check for all spaces
    if(objRegExp.test(strValue)) {
       strValue = strValue.replace(objRegExp, '');
       if( strValue.length == 0)
          return strValue;
    }
   //check for leading & trailing spaces
   objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
   if(objRegExp.test(strValue)) {
       //remove leading and trailing whitespace characters
       strValue = strValue.replace(objRegExp, '$2');
    }
  return strValue;
}

function openNewWindow(theURL,winName,features) { 
  if(typeof(openWin) != "undefined")
  	{
		if(openWin.closed == true)
		{ openWin = window.open(theURL,winName,features); }
		else
		{ 
		openWin.document.location.href = theURL;
		openWin.focus();
		}
	}
  else
  	{ openWin = window.open(theURL,winName,features); }
}
 