function ChkInt(ObjRef,Value){
	
	if(Value!=""){
		if (isNaN(Value)==true){
			alert("This information needs to be a number.\nPlease exclude any other characters.");
			ObjRef.focus();
		}
	}
}
function JSExt(Extention,Value)
{
 if (document.layers)
 {return eval(Extention+Value);}
 else
 {return eval(Value);}
}

function JSExtStr(Extention)
{
 if (document.layers)
 {return Extention;}
 else
 {return '';}
}

function DateCheck_Valid(DateString)
{
 ReturnNum = 1;
 DateArray = DateString.split("/")
 EvalDate = new Date(DateArray[2],DateArray[1]-1,DateArray[0]);
 if((EvalDate.getDate() == DateArray[0])&&(EvalDate.getMonth() == (DateArray[1]-1))&&(EvalDate.getFullYear() == DateArray[2])&&(EvalDate.getFullYear() < 10000))
 {ReturnNum = 0;}
 return ReturnNum;
}

function DateCheck_Valid_Msg(DateString,DateName)
{
 if(DateCheck_Valid(DateString)==1){alert('The date field ['+ DateName +'] is invalid. Please Re-enter the date.')}
}

function DateCheck_Mandatory(DateString)
{
 ReturnNum = 1;
 DateArray = DateString.split("/")
 if((DateArray[0] != "0")&&(DateArray[1] != "0")&&(DateArray[2] != "0"))
 {ReturnNum = 0;}
 return ReturnNum;
}

function DateCheck_Comp(DateString1,DateString2)
{
 DateArray1 = DateString1.split("/");
 DateArray2 = DateString2.split("/");
 EvalDate1 = new Date(DateArray1[2],DateArray1[1]-1,DateArray1[0]);
 EvalDate2 = new Date(DateArray2[2],DateArray2[1]-1,DateArray2[0]);
 if(EvalDate1>=EvalDate2) {ReturnNum = 0}
 else {ReturnNum = 1}
 return ReturnNum;
}

function DateCheck_Comp_Msg(DateString1,DateString2,DateName1,DateName2)
{
 ReturnNum = 0;
 if(DateCheck_Comp(DateString1,DateString2)==1){alert('The date field ['+ DateName1 +'] is less than the date field ['+ DateName2 +']. Please correct this error.')}
 else{ReturnNum = 1}
 return ReturnNum;
}

function isEmail(string)
{
	var realreg = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	//var realreg = /^(\w+\.)*?(\w+\-)*?(\w+\_)*?\w+\@\w+(\-\w+)*?\.\w+(\.\w+)*?(\w+\_)*?$/;
	//var realreg = /^(\w+\.)?(\w+\-)?(\w+\_)?\w+\@\w+(\-\w+)*?\.\w+(\.\w+)?$/;
	if (realreg.test(string)!=true){return false;}else{return true;}
	
	
}

function Form_Submit(FormName)
{
	eval('document.' + FormName + '.submit()');;
}

function Check_and_Prompt(FormName,FieldString,NameString)
{
 //tests to see if there is only one field in the string and if there is puts in a delimeter for it 
 FieldAlertIntro="Please Check the following field/s for blanks:";
 FieldAlert="";
 FieldAlertNum="The following field/s are to be numeric: ";
 FieldNum="";
 FieldAlertCombo="The following combo box/s need to be selected: ";
 FieldCombo="";
 FieldAlertDate="The following field/s are to be valid dates: ";
 FieldDate="";
 FieldAlertEmail="The following field/s are to be Email addresses: ";
 FieldNotSame="";
 FieldAlertNotSame="The following field/s can not be the same: ";
 FieldAlertTermsConditions ="You need to accept our terms and conditions to proceed ";
 FieldEmail="";
 FieldAlertPass="";
 FieldAlertDateComp="";
 FieldTermsConditions="";
 FieldArray=FieldString.split(":");

 NameArray=NameString.split(":");

 for (x=0; x<FieldArray.length;)
 {
//Tests for unchecked check boxes or radio buttons ['**' delimeter]
  if (FieldArray[x].slice(0,2)=="**")
  {
    obj=eval('document.' + FormName + '.' + FieldArray[x].slice(2)) ;
    if(!obj.length){
		if(!obj.checked){FieldArray[x]="";}
    }
    else
    { for (var j=0;j<obj.length;j++) {
        if (obj[j].checked) { j = obj.length+5; }
    }
		if (j == obj.length) { FieldArray[x]=""; }
    }
   
  }
 //Tests for numeric Data ['##' delimeter]
  else if (FieldArray[x].slice(0,2)=="##")
  {
   FieldArray[x]=FieldArray[x].slice(2);
   if (isNaN(FieldArray[x])==true){FieldNum=FieldNum + String.fromCharCode(10) + String.fromCharCode(187) + ' ' + NameArray[x];}
  }
  //Tests to make sure combo box is selected - i.e. does not equal zero(0) ['^^' delimeter]
  else if (FieldArray[x].slice(0,2)=="^^")
  {

   FieldArray[x]=FieldArray[x].slice(2);
   if (FieldArray[x]==0){
		FieldCombo=FieldCombo + String.fromCharCode(10) + String.fromCharCode(187) + ' ' + NameArray[x];
	}
  }

 //Tests for date Data ['¶¶' delimeter]
  else if (FieldArray[x].slice(0,2)=="¶¶")
  {
   FieldArray[x]=FieldArray[x].slice(2);
   if (DateCheck_Valid(FieldArray[x])==1)
   {FieldDate=FieldDate + String.fromCharCode(10) + String.fromCharCode(187) + ' ' + NameArray[x];}
  }

 //Tests for mandatory date Data ['$#' delimeter]
  else if (FieldArray[x].slice(0,2)=="$#")
  {
   FieldArray[x]=FieldArray[x].slice(2);
   if (DateCheck_Mandatory(FieldArray[x])==1)
   {FieldAlert=FieldAlert + String.fromCharCode(10) + String.fromCharCode(187) + ' ' + NameArray[x];}
  } 

 //Tests for date Data Comparison ['¶¤' delimeter]
  else if (FieldArray[x].slice(0,2)=="¶¤")
  {
   FieldArray[x]=FieldArray[x].slice(2);
   FieldDateCompArray=FieldArray[x].split("¤");
   if (DateCheck_Comp(FieldDateCompArray[0],FieldDateCompArray[1])==1){FieldAlertDateComp = String.fromCharCode(10) + "The ending date field is less than the starting date field";}
  }
 //Tests for Data Duplication Between Two Items ['#¤' delimeter]
  else if (FieldArray[x].slice(0,2)=="#¤")
  {
   FieldArray[x]=FieldArray[x].slice(2);
   FieldNotSameArray=FieldArray[x].split("¤");
   if (FieldNotSameArray[0]==FieldNotSameArray[1])
   {FieldNotSame=FieldNotSame + String.fromCharCode(10) + String.fromCharCode(187) + ' ' + NameArray[x];}
  }
 //Tests for Email Data ['@@' delimeter]
  else if (FieldArray[x].slice(0,2)=="@@")
  {
   FieldArray[x]=FieldArray[x].slice(2);
   //if (((FieldArray[x].replace('@').search('.')==-1)||(FieldArray[x].replace('.').search('@')==-1))&&(FieldArray[x].length!=0)){FieldEmail=FieldEmail + String.fromCharCode(10) + String.fromCharCode(187) + ' ' + NameArray[x];}
	if(isEmail(FieldArray[x])!=true){FieldEmail=FieldEmail + String.fromCharCode(10) + String.fromCharCode(187) + ' ' + NameArray[x];}
  }
 //Tests for password check Data ['¤¤' delimeter]
  else if (FieldArray[x].slice(0,2)=="¤¤")
  {
   FieldArray[x]=FieldArray[x].slice(2);
   FieldPasswordArray=FieldArray[x].split("¤");
   if (FieldPasswordArray[0]!=FieldPasswordArray[1]){FieldAlertPass = String.fromCharCode(10) + "The password and its confirmation do not match.";}
  }
//Tests for same check Data ['$$' delimeter]
  else if (FieldArray[x].slice(0,2)=="$$")
  {
   FieldArray[x]=FieldArray[x].slice(2);
   FieldPasswordArray=FieldArray[x].split("$");
   if (FieldPasswordArray[0]!=FieldPasswordArray[1]){FieldAlertPass = String.fromCharCode(10) + "The telephone number and its confirmation do not match.";}
  }
  //Tests for same check Data ['%%' delimeter]
  else if (FieldArray[x].slice(0,2)=="%%")
  {
   FieldArray[x]=FieldArray[x].slice(2);
   FieldPasswordArray=FieldArray[x].split("%");
   if (FieldPasswordArray[0]!=FieldPasswordArray[1]){FieldAlertPass = String.fromCharCode(10) + "The email address and its confirmation do not match.";}
  }
 
 //Makes sure that the terms and conditions is selected['TC' delimeter]
  else if (FieldArray[x].slice(0,2)=="TC")
  {
	obj=eval('document.' + FormName + '.' + FieldArray[x].slice(2)) ;
	if(!obj.checked){FieldTermsConditions = String.fromCharCode(10) + String.fromCharCode(10) + FieldAlertTermsConditions}
    
  }
 
  x++;
 }

 //searches field array for blanks and marks them in a new string "ErrString"
 for (x=0; x<FieldArray.length;)
 {
  if (FieldArray[x].length==0){FieldAlert=FieldAlert + String.fromCharCode(10) + String.fromCharCode(187) + ' ' + NameArray[x];}
  x++;
 }
 
 if ((FieldAlert.length==0)&&(FieldNum.length==0)&&(FieldCombo.length==0)&&(FieldNotSame.length==0)&&(FieldEmail.length==0)&&(FieldDate.length==0)&&(FieldAlertPass.length==0)&&(FieldAlertDateComp.length==0)&&(FieldTermsConditions.length==0))
 {eval('document.' + FormName + '.submit()');}
 else
 {
 //Not Same
  if (FieldNotSame.length != 0)
   {FieldAlertNotSame = String.fromCharCode(10) + FieldAlertNotSame + FieldNotSame;}
  else
   {FieldAlertNotSame ="";}

 //Email
  if (FieldEmail.length != 0)
   {FieldAlertEmail = String.fromCharCode(10) + FieldAlertEmail + FieldEmail;}
  else
   {FieldAlertEmail ="";}

 //Numeric
  if (FieldNum.length != 0)
   {FieldAlertNum = String.fromCharCode(10) + FieldAlertNum + FieldNum;}
  else
   {FieldAlertNum ="";}
//Combo Box
  if (FieldCombo.length != 0)
   {FieldAlertCombo = String.fromCharCode(10) + FieldAlertCombo + FieldCombo;}
  else
   {FieldAlertCombo ="";}

 //Date
  if (FieldDate.length != 0)
   {FieldAlertDate = String.fromCharCode(10) + FieldAlertDate + FieldDate;}
  else
   {FieldAlertDate ="";}
   
 //Terms and Conditions
  if (FieldTermsConditions.length != 0)
   {FieldTermsConditions = String.fromCharCode(10) + String.fromCharCode(10) + FieldAlertTermsConditions;}
  else
   {FieldAlertTermConditions ="";}

  //Blank Fileds
  if (FieldAlert.length != 0)
   {FieldAlertIntro = String.fromCharCode(10) + FieldAlertIntro + FieldAlert;}
  else
  {FieldAlertIntro = "";}
  //Assembles and alerts total Error string
  alert('There has been an error with your form.' + FieldAlertIntro + FieldAlertNum + FieldAlertCombo + FieldAlertNotSame + FieldAlertDate + FieldAlertEmail + FieldAlertPass + FieldAlertDateComp + FieldTermsConditions);
 }
}
