﻿
function validateRequiredFields(MsgIncorrectDataType,MsgRequiredFields,MsgRequiredFieldEnterValue,MsgDateFormat,MsgDecimalNumber,MsgHour,MsgIntegerNumber,MsgMinute,MsgTime,MsgTooBig,MsgEmail,DisplayValidationMessage)
{if(validateFieldDataTypes(MsgDecimalNumber,MsgIntegerNumber,MsgDateFormat,MsgTime,MsgMinute,MsgHour,MsgTooBig,MsgEmail,DisplayValidationMessage))
{if(validateRequiredFieldsGeneric(MsgRequiredFieldEnterValue))
{if(DisplayValidationMessage)
alert(MsgRequiredFields);else
if(confirm("Some of the fields are left blank.  Do you wish to continue?"))
return true;return false;}
else
{return true;}}
else
{alert(MsgIncorrectDataType);return false;}}
function validateDataTypesEx(MsgIncorrectDataType,MsgRequiredFields,MsgRequiredFieldEnterValue,MsgDateFormat,MsgDecimalNumber,MsgHour,MsgIntegerNumber,MsgMinute,MsgTime,MsgTooBig,MsgEmail)
{if(validateFieldDataTypes(MsgDecimalNumber,MsgIntegerNumber,MsgDateFormat,MsgTime,MsgMinute,MsgHour,MsgTooBig,MsgEmail,true))
{return true;}
else
{alert(MsgIncorrectDataType);return false;}}
function validateRequiredFieldsGeneric(MsgRequiredFieldEnterValue){var tagNames=new Array("input","select","textarea");var failOccurred=false;for(var i=0;i<tagNames.length;i++){var objects=document.getElementsByTagName(tagNames[i]);for(var k=0;k<objects.length;k++){var pass=true;var obj=objects[k];var requiredAttribute=false;requiredAttribute=obj.getAttribute("required");if(requiredAttribute==null)
requiredAttribute='false';if(requiredAttribute=='true')
{var tab;if(obj.tagName.toLowerCase()=="textarea"||obj.getAttribute("type")=="text"||obj.getAttribute("type")=="password"||obj.getAttribute("type")=="file"){if(obj.value==""){pass=false;}}else if(obj.tagName.toLowerCase()=="select"){var options=obj.options;if(obj.selectedIndex==-1){pass=false;}else if(options[obj.selectedIndex].text==""){pass=false;}}
if(!pass){obj.style.backgroundColor="yellow";obj.title=MsgRequiredFieldEnterValue;failOccurred=true;}else{if(obj.style.backgroundColor=="yellow"){obj.style.backgroundColor=""}
obj.title="";}}
else if(obj.style.backgroundColor=="yellow")
{obj.style.backgroundColor=""}}}
return failOccurred;}
function validateFieldDataTypes(MsgDecimalNumber,MsgIntegerNumber,MsgDateFormat,MsgTime,MsgMinute,MsgHour,MsgTooBig,MsgEmail){var failed=false;var textareas=document.getElementsByTagName("textarea");for(var i=0;i<textareas.length;i++){var attr=textareas[i].getAttribute("MaxLength");if(attr!=null){if(attr!=""){if(textareas[i].value.length>attr){textareas[i].style.backgroundColor="#FF5B4C";textareas[i].title=MsgTooBig;failed=true;;}}}}
var tagNames=new Array("input","textarea");for(var j=0;j<tagNames.length;j++){var inputs=document.getElementsByTagName(tagNames[j]);for(var i=0;i<inputs.length;i++){if(inputs[i].style.backgroundColor=="#FF5B4C"){inputs[i].style.backgroundColor="";inputs[i].title="";}
if(inputs[i].value.length==0){continue;}
if(inputs[i].getAttribute("type")!=null&&inputs[i].getAttribute("type").toLowerCase()=="text"){var attr=inputs[i].getAttribute("MaxLength");if(attr!=null){if(attr!=""){if(inputs[i].value.length>attr){failed=true;;}}}}
if(inputs[i].getAttribute("type")!="text"&&inputs[i].getAttribute("type")!="password"&&tagNames[j]=="input"){continue;}
switch(inputs[i].getAttribute("datatype"))
{case"phone":if(!validatePhone(inputs[i]))failed=true;break;case"decimal":if(isNaN(parseFloat(inputs[i].value)))
{inputs[i].style.backgroundColor="#FF5B4C";inputs[i].title=MsgDecimalNumber;failed=true;}
break;case"int":if(isNaN(parseInt(inputs[i].value.replace(/,/g,''))))
{inputs[i].style.backgroundColor="#FF5B4C";inputs[i].title=MsgIntegerNumber;failed=true;}
if((inputs[i].value.indexOf(".")>-1))
{inputs[i].style.backgroundColor="#FF5B4C";inputs[i].title=MsgIntegerNumber;failed=true;}
break;case"date":var dateValue=null;var dateString=replaceFrenchMonth(inputs[i].value);var pieces=dateString.split(' ');var strYear=pieces[2];var strDay=pieces[0];var strMonth=getMonthNumFromMMM(pieces[1]);if(!isDateMDY(strMonth,strDay,strYear))
{inputs[i].style.backgroundColor="#FF5B4C";inputs[i].title=MsgDateFormat;failed=true;}
break;case"minute":var minuteInput=inputs[i].value;if(minuteInput<0||minuteInput>59)
{inputs[i].style.backgroundColor="#FF5B4C";inputs[i].title=MsgMinute;failed=true;}
break;case"hour":var hourInput=inputs[i].value;if(hourInput<0||hourInput>23){inputs[i].style.backgroundColor="#FF5B4C";inputs[i].title=MsgHour;failed=true;}
break;case"email":var isOK=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(inputs[i].value);if(!isOK)
{inputs[i].style.backgroundColor="#FF5B4C";inputs[i].title=MsgEmail;failed=true;}
break;}}}
if(failed){return false;}
return true;}
function isValidDate(dateStr,format){if(format==null){format="MDY";}
format=format.toUpperCase();if(format.length!=3){format="MDY";}
if((format.indexOf("M")==-1)||(format.indexOf("D")==-1)||(format.indexOf("Y")==-1)){format="MDY";}
if(format.substring(0,1)=="Y"){var reg1=/^\d{2}(\-|\/|\.)\d{1,2}\1\d{1,2}$/;var reg2=/^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/;}else if(format.substring(1,2)=="Y"){var reg1=/^\d{1,2}(\-|\/|\.)\d{2}\1\d{1,2}$/;var reg2=/^\d{1,2}(\-|\/|\.)\d{4}\1\d{1,2}$/;}else{var reg1=/^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2}$/;var reg2=/^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;}
if((reg1.test(dateStr)==false)&&(reg2.test(dateStr)==false)){return false;}
var parts=dateStr.split(RegExp.$1);if(format.substring(0,1)=="M"){var mm=parts[0];}else if(format.substring(1,2)=="M"){var mm=parts[1];}else{var mm=parts[2];}
if(format.substring(0,1)=="D"){var dd=parts[0];}else if(format.substring(1,2)=="D"){var dd=parts[1];}else{var dd=parts[2];}
if(format.substring(0,1)=="Y"){var yy=parts[0];}else if(format.substring(1,2)=="Y"){var yy=parts[1];}else{var yy=parts[2];}
if(parseFloat(yy)<=50){yy=(parseFloat(yy)+2000).toString();}
if(parseFloat(yy)<=99){yy=(parseFloat(yy)+1900).toString();}
var dt=new Date(parseFloat(yy),parseFloat(mm)-1,parseFloat(dd),0,0,0,0);if(parseFloat(dd)!=dt.getDate()){return false;}
if(parseFloat(mm)-1!=dt.getMonth()){return false;}
return true;}
var dtCh="/";var minYear=1900;var maxYear=2100;function isInteger(s)
{var i;for(i=0;i<s.length;i++)
{var c=s.charAt(i);if(((c<"0")||(c>"9")))return false;}
return true;}
function stripCharsInBag(s,bag)
{var i;var returnString="";for(i=0;i<s.length;i++)
{var c=s.charAt(i);if(bag.indexOf(c)==-1)returnString+=c;}
return returnString;}
function daysInFebruary(year)
{return(((year%4==0)&&((!(year%100==0))||(year%400==0)))?29:28);}
function DaysArray(n)
{for(var i=1;i<=n;i++)
{this[i]=31
if(i==4||i==6||i==9||i==11){this[i]=30}
if(i==2){this[i]=29}}
return this}
function isDate(dtStr)
{var daysInMonth=DaysArray(12)
var pos1=dtStr.indexOf(dtCh)
var pos2=dtStr.indexOf(dtCh,pos1+1)
var strMonth=dtStr.substring(0,pos1)
var strDay=dtStr.substring(pos1+1,pos2)
var strYear=dtStr.substring(pos2+1)
strYr=strYear
if(strDay.charAt(0)=="0"&&strDay.length>1)strDay=strDay.substring(1)
if(strMonth.charAt(0)=="0"&&strMonth.length>1)strMonth=strMonth.substring(1)
for(var i=1;i<=3;i++)
{if(strYr.charAt(0)=="0"&&strYr.length>1)strYr=strYr.substring(1)}
month=parseInt(strMonth)
day=parseInt(strDay)
year=parseInt(strYr)
if(pos1==-1||pos2==-1)
{return false}
if(strMonth.length<1||month<1||month>12)
{return false}
if(strDay.length<1||day<1||day>31||(month==2&&day>daysInFebruary(year))||day>daysInMonth[month])
{return false}
if(strYear.length!=4||year==0||year<minYear||year>maxYear)
{return false}
if(dtStr.indexOf(dtCh,pos2+1)!=-1||isInteger(stripCharsInBag(dtStr,dtCh))==false)
{return false}
return true}
function isDateMDY(strMonth,strDay,strYear)
{var daysInMonth=DaysArray(12)
strYr=strYear
if(strDay.charAt(0)=="0"&&strDay.length>1)strDay=strDay.substring(1)
if(strMonth.charAt(0)=="0"&&strMonth.length>1)strMonth=strMonth.substring(1)
for(var i=1;i<=3;i++)
{if(strYr.charAt(0)=="0"&&strYr.length>1)strYr=strYr.substring(1)}
month=parseInt(strMonth)
day=parseInt(strDay)
year=parseInt(strYr)
if(strMonth.length<1||month<1||month>12)
{return false}
if(strDay.length<1||day<1||day>31||(month==2&&day>daysInFebruary(year))||day>daysInMonth[month])
{return false}
if(strYear.length!=4||year==0||year<minYear||year>maxYear)
{return false}
return true}
function getMonthNumFromMMM(MMM){var retVal=MMM.toLowerCase();if(retVal=="jan"){retVal="1";}else if(retVal=="feb"){retVal="2";}else if(retVal=="mar"){retVal="3";}else if(retVal=="apr"){retVal="4";}else if(retVal=="may"){retVal="5";}else if(retVal=="jun"){retVal="6";}else if(retVal=="jul"){retVal="7";}else if(retVal=="aug"){retVal="8";}else if(retVal=="sep"){retVal="9";}else if(retVal=="oct"){retVal="10";}else if(retVal=="nov"){retVal="11";}else if(retVal=="dec"){retVal="12";}else{retVal="0";}
return retVal;}
function replaceFrenchMonth(french_date){var english_date=french_date.toLowerCase();english_date=english_date.replace("janv.","Jan");english_date=english_date.replace("fev.","Feb");english_date=english_date.replace("f\u00E9v.","Feb");english_date=english_date.replace("mars","Mar");english_date=english_date.replace("avr.","Apr");english_date=english_date.replace("mai","May");english_date=english_date.replace("juin","Jun");english_date=english_date.replace("juil.","Jul");english_date=english_date.replace("aout","Aug");english_date=english_date.replace("ao\u00FBt","Aug");english_date=english_date.replace("sept.","Sep");english_date=english_date.replace("oct.","Oct");english_date=english_date.replace("nov.","Nov");english_date=english_date.replace("dec.","Dec");english_date=english_date.replace("d\u00E9c.","Dec");return english_date;}
