
String.prototype.trim=function(){return this.replace(/^\s+/g,'').replace(/\s+$/g,'');}
var emailPattern=/^\w([^<>()\[\]\\,;:=\x00-\x20@\"]*\w)?@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;var urlPattern=/^((http[s]?|ftp):\/\/)?([\w-]+(:[\w-]+)?@)?([\w-]+\.)+[\w-]+(:\d+)?([\w-.,\/?%&#:;=*+!]*)?$/;var phonePattern=/^(\+?1(\s+|-|\.)?)?((\(\d{3}\)|\d{3})(\s+|-|\.)?)?\d{3}(\s+|-|\.)?\d{4}(,?\s*e?xt?\.?\s*\d{1,5}){0,1}$/i;var northAmericanPhonePattern=/^(\(\d{3}\)|\d{3})(\s+|-|\.)?\d{3}(\s+|-|\.)?\d{4}(,?\s*e?xt?\.?\s*\d{1,5}){0,1}$/i;var cellPhonePattern=/^(\+\d{1,3}(\s+|-|\.)?)?(\(\d{1,5}\)|\d{1,5})(\s+|-|\.)?\d{3}(\s+|-|\.)?\d{0,7}$/i;var loosePhonePattern=/^\+?\(?\d([\s\-\,\.\(\)]*\d){6,}(,?\s*e?xt?\.?\s*\d{1,5}){0,1}$/i
var nonEmptyPattern=/^\s*.+\s*$/g;var daysInMonth=new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);function AdjustDayCount(ddDay,ddMonth,ddYear)
{if(ddDay==null||ddMonth==null||ddYear==null||ddMonth.selectedIndex<0||ddYear.selectedIndex<0)
return;var month=ddMonth.options[ddMonth.selectedIndex].value;var year=ddYear.options[ddYear.selectedIndex].value;if(month<1||month>12||year<1)
return;var daysNeeded=daysInMonth[month];if(month==2&&(year%4==0&&(year%100!=0||year%400==0)))
daysNeeded++;if(daysNeeded<ddDay.options.length)
ddDay.options.length=daysNeeded;else if(ddDay.options.length<daysNeeded)
{while(ddDay.options.length<daysNeeded)
{var newItem=document.createElement("option");newItem.text=ddDay.options.length+1;newItem.value=newItem.text;ddDay.options[ddDay.options.length]=newItem;}}}
var fieldValidations=[];function ValidateCustom()
{var looksValid=true;if(fieldValidations&&fieldValidations.length)
for(i=0;i<fieldValidations.length;i++)
looksValid=fieldValidations[i]()&&looksValid;return looksValid;}
function ValidateTextboxRequired(tb,row)
{var tbStr=tb.value.trim();if(tbStr.length==0)
{if(row.className=="")row.className="actionerror";row.className+=" missing";if(tb.type=="hidden")
tb.onchange=function(){row.className="";this.onchange=null;};else
tb.onkeydown=function(){row.className="";this.onkeydown=null;};return false;}
return true;}
function ValidateTextboxMinMaxNotRequired(tb,row)
{return(tb.value.trim().length==0)?true:ValidateTextboxMinMax(tb,row);}
function ValidateTextboxMinMax(tb,row)
{var errorClass="";var tbStr=tb.value.trim();if(tb.getAttribute("minchars")&&tbStr.length<tb.getAttribute("minchars"))
errorClass="tooshort";else if(tb.getAttribute("maxchars")&&tbStr.length>tb.getAttribute("maxchars"))
errorClass="toolong";if(errorClass!="")
{if(row.className=="")row.className="actionerror";row.className+=" "+errorClass;tb.onkeydown=function(){row.className="";this.onkeydown=null;};return false;}
return true;}
function parseNumber(stringValue){if(!stringValue)
return null;var cleanValue="";for(var i=0;i<stringValue.length;i++)
{var curChar=stringValue.charAt(i);if((curChar>='0'&&curChar<='9')||curChar=='.'||curChar=='-')
cleanValue+=curChar;}
return parseFloat(cleanValue);}
function ValidateTextboxMinMaxValue(tb,row)
{var errorClass="";var minValue=parseNumber(tb.getAttribute("minvalue"));var maxValue=parseNumber(tb.getAttribute("maxvalue"));var parsedValue=parseNumber(tb.value);if(!isNaN(parsedValue))
{if(minValue)
{var minValueParsed=parseFloat(minValue);if(!isNaN(minValueParsed)&&parsedValue<minValueParsed)
errorClass="tooshort";}
if(maxValue)
{var maxValueParsed=parseFloat(maxValue);if(!isNaN(maxValueParsed)&&parsedValue>maxValueParsed)
errorClass="toolong";}}
if(errorClass!="")
{if(row.className=="")row.className="actionerror";row.className+=" "+errorClass;tb.onkeydown=function(){row.className="";this.onkeydown=null;};return false;}
return true;}
function ValidateTextboxFormat(tb,row,validPattern)
{var tbStr=tb.value.trim();if(tbStr.length>0&&tbStr.match(validPattern)==null)
{if(row.className=="")row.className="actionerror";row.className+=" badformat";tb.onkeydown=function(){row.className="";this.onkeydown=null;};return false;}
return true;}
function ValidateDropDownChoice(dd,row,invalidIndex)
{if(dd.selectedIndex==invalidIndex)
{if(row.className=="")row.className="actionerror";row.className+=" mustchoose";dd.onchange=function(){row.className="";this.onchange=null;};return false;}
return true;}
function ValidateDropDownChoiceValue(dd,row,invalidValue)
{var selectedValue=dd.options[dd.selectedIndex].value;if(selectedValue==invalidValue)
{if(row.className=="")row.className="actionerror";row.className+=" mustchoose";dd.onchange=function(){row.className="";this.onchange=null;};return false;}
return true;}
function GetInputControls(parentControl,controlArray){if(!controlArray)controlArray=[];for(var i=0;i<parentControl.childNodes.length;i++)
{if(parentControl.childNodes[i].tagName=="INPUT")
controlArray[controlArray.length]=parentControl.childNodes[i];controlArray=GetInputControls(parentControl.childNodes[i],controlArray);}
return controlArray;}
function ValidateRadioButtonValue(radio,row,invalidValue)
{var selectedValue=invalidValue;var inputControls=GetInputControls(radio);for(var i=0;i<inputControls.length;i++)
if(inputControls[i].checked)
{selectedValue=inputControls[i].getAttribute("value");break;}
if(selectedValue==invalidValue)
{if(row.className=="")row.className="actionerror";row.className+=" mustchoose";for(var i=0;i<inputControls.length;i++)
if(inputControls[i].tagName=="INPUT")
inputControls[i].onfocus=function(){row.className="";this.onfocus=null;};return false;}
return true;}
function BadTextboxFormat(textbox,section)
{if(section.className=="")
section.className="actionerror";section.className+=" badformat";textbox.onkeydown=function(){section.className="";this.onkeydown=null;};}