﻿
function StripWhiteSpaces(str)
{return str.replace(/^\s*|\s*|\s*$/g,"");}
function StripNonDigits(str)
{return str.replace(/[^\d]*/gi,"");}
function TrimSpaces(str)
{return str.replace(/^\s+|\s+$/g,'');}
function IsEmpty(object)
{object.value=TrimSpaces(object.value);if((object.value==null)||(object.value.length==0)){return true;}
else{return false;}}
function IsNonEmpty(object)
{return!IsEmpty(object);}
function ExtractNumeric(str)
{var validChars="0123456789";var numberArray=new Array();var n;for(i=0;i<str.length;i++){n=str.charAt(i);if(validChars.indexOf(n)!=-1){numberArray.push(n);}}
return numberArray;}
function IsLetter(c)
{return(((c>="a")&&(c<="z"))||((c>="A")&&(c<="Z")));}
function IsLetterCode(code)
{if((code<65||code>90)&&(code<97||code>122)){return false;}
else{return true;}}
function ValidateField(object,allowEmpty,func,errFieldId,errMsg)
{try{var errField=document.getElementById(errFieldId);var ret;if(IsEmpty(object)){ret=allowEmpty;}
else if((func!=null)&&!func(object)){ret=false;}
else{ret=true;}
if(ret==true){var end=object.className.indexOf("error");if(end!=-1){object.className=object.className.substr(0,end-1);}
if(errField!=null){errField.innerHTML='';}}
else{if(object.className.length!=0){object.className+=" error";}
else{object.className+="error";}
if(errField!=null){errField.innerHTML=errMsg;}}
return ret;}
catch(e){alert("An exception occurred in the script.\nError name: "+e.name
+".\nError message: "+e.message+"\nerrFieldId: "+errFieldId);}}
function ValidateEmail(field)
{if(IsEmpty(field)){return true;}
var objRegExp=/^[\w&]+([-+.][\w&]+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;if(objRegExp.test(field.value)){return(true);}
return(false);}
function ValidateUserName(field)
{if(IsEmpty(field)){return true;}
var objRegExp=/^[A-z]\w{3}\w*|^[\w&]+([-+.][\w&]+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;if(objRegExp.test(field.value)){return(true);}
return(false);}
function ValidatePassword(field)
{if(IsEmpty(field)){return true;}
var objRegExp=/(.{5})+/;if(objRegExp.test(field.value)){return(true);}
return(false);}
function Compare(func,funcParam1,funcParam2,errFieldId,errMsg)
{try{var errField=document.getElementById(errFieldId);if(!func(funcParam1,funcParam2)){if(errField!=null){errField.innerHTML=errMsg;}
return false;}
else{if(errField!=null){errField.innerHTML='';}
return true;}}
catch(e){alert("An exception occurred in the script.\nError name: "+e.name
+". Error message: "+e.message);}}
function ComparePassword(fieldId1,fieldId2)
{var pass1=document.getElementById(fieldId1);var pass2=document.getElementById(fieldId2);if(IsEmpty(pass1)||IsEmpty(pass2)){return false;}
if(pass1.value==pass2.value){return true;}else{return false;}}
function FormatPhoneNumber(field)
{if(IsEmpty(field)){return true;}
var str=StripNonDigits(field.value);var regexpUS=/^(1?)(\d{3})(\d{3})(\d{4})$/;var regexpFR=/^(\d{2-3})(\d{2})(\d{2})(\d{2})(\d{2})$/;var ar=regexpUS.exec(str);if(ar!=null){var result='';if(ar[1]!=''){result+=ar[1]+'-';}
result+=ar[2]+'-'+ar[3]+'-'+ar[4];field.value=result;return true;}
ar=regexpFR.exec(str);if(ar!=null){var result='';if(ar[1]!=''){result+=ar[1]+' ';}
result+=ar[2]+' '+ar[3]+' '+ar[4]+' '+ar[5];field.value=result;return true;}
return false;}
function FormatPostalCode(field)
{if(IsEmpty(field)){return true;}
var canada_regex=/^([A-z]\d[A-z])(\d[A-z]\d)$/;var us_regex=/^\d{5}(-\d{4})?$/;var cp=StripWhiteSpaces(field.value);cp=cp.toUpperCase();var ar;if(ar=canada_regex.exec(cp)){field.value=ar[1]+" "+ar[2];return true;}
else if(us_regex.test(cp)){field.value=cp;return true;}
return false;}
function FormatMedicalNumber(field)
{if(IsEmpty(field)){return true;}
var regexp=/^\D{4}\d{8}$/;var str=StripWhiteSpaces(field.value);str=str.toUpperCase();if(regexp.test(str)){field.value=str;return true;}
return false;}
function FormatSSN(field)
{if(IsEmpty(field)){return true;}
var regexp=/^(\d{3})(\d{3})(\d{3})$/;var str=StripNonDigits(field.value);var ar=regexp.exec(str);if(ar!=null){field.value=ar[1]+" "+ar[2]+" "+ar[3];return true;}
return false;}
function FormatDate(field)
{if(IsEmpty(field)){return true;}
var regexp=/^((19|20)\d{2})\D?(0?[1-9]|1[012])\D?(3[01]|[12][0-9]|0?[1-9])$/;var str=field.value;var ar=regexp.exec(str);if(ar!=null){var resultDate=new Date(ar[1],ar[3]-1,ar[4]);var year=resultDate.getFullYear();var month=resultDate.getMonth()+1;var day=resultDate.getDate();field.value=year+"-"+(month<10?"0"+month:month)+"-"+(day<10?"0"+day:day);return true;}
return false;}
function FormatTime(field)
{if(IsEmpty(field)){return true;}
var regexp=/^([01]?[0-9]|2[0-3])\D?([0-5][0-9])$/;var str=field.value;var ar=regexp.exec(str);if(ar!=null){field.value=ar[1]+":"+ar[2];return true;}
return false;}
function CapitalizeProperNameOnTheFly(input,event)
{if(!event){var event=window.event;}
if(event.keyCode){var code=event.keyCode;}
else if(event.charCode){var code=event.charCode;}
else if(event.which){var code=event.which;}
else{return true;}
if(!IsLetterCode(code)){return true;}
var newLetter=String.fromCharCode(code);if(typeof input.selectionStart!='undefined'){var start=input.selectionStart;var end=input.selectionEnd;if(start==0&&end==input.value.length){input.value='';}
else if(start!=input.value.length){return true;}}
else if(typeof document.selection!='undefined'){var selectionRange=document.selection.createRange();var inputRange=input.createTextRange();if(selectionRange.isEqual(inputRange)==true){document.selection.clear();}
else if((selectionRange.text!=''||selectionRange.compareEndPoints('EndToEnd',inputRange)!=0)){return true;}}
else{return true;}
if(input.value.length==0){input.value=newLetter.toUpperCase();return false;}
var preceedingLetter=input.value.charCodeAt(input.value.length-1);var capitalizeNext=false;if(preceedingLetter==32||preceedingLetter==45||preceedingLetter==46){capitalizeNext=true;}
if(preceedingLetter==99||preceedingLetter==67){if(input.value.charCodeAt(input.value.length-2)==77||input.value.charCodeAt(input.value.length-2)==109){capitalizeNext=true;}}
if(capitalizeNext==true){input.value=input.value+newLetter.toUpperCase();}
else{input.value=input.value+newLetter.toLowerCase();}
return false;}
function CheckRequiredFields(fieldArray,labelArray)
{var ret=true;var field;var label;try{for(var i=0;i<fieldArray.length;i++){field=document.getElementById(fieldArray[i]);if(labelArray!=null){label=document.getElementById(labelArray[i]);}
if(field.value==""||(field.onblur!=null&&field.onblur()==false)){ret=false;field.className="error";}
else{field.className="text";}}}
catch(e){alert("An exception occurred in the script.\nError name: "+e.name
+".\nError message: "+e.message);}
return ret;}
function CheckSingleRequiredField(fieldId,labelId)
{var ret=true;var field=document.getElementById(fieldId);var label=document.getElementById(labelId);try{if(field.value==""||(field.onblur!=null&&field.onblur()==false)){ret=false;field.className="error";if(label!=null){label.style.color="#ff0000";}}
else{field.className="text";if(label!=null){label.style.color="";}}}
catch(e){alert("An exception occurred in the script.\nError name: "+e.name
+".\nError message: "+e.message);}
return ret;}