
var configFormStr="document.forms[0]";var ConfigFieldArr=new Array();var DepConfigFieldArr=new Array();var cfaInd=0;var dcfaInd=0;var MAX_CHAR_LENGTH=64000;var selectOne="SELECT ONE";var requiredFieldError="[name] is required";function ConfigField(fieldID,name,elemName,isChild,primitiveType,htmlType,minlength,maxlength,required,reObj,regexErrMsg,staticField,defaultOption,selectedOption,staticFieldName)
{this.fieldID=fieldID;this.name=unescape(name);this.elemName=elemName;this.isChild=isChild;this.isShown=!isChild;this.primitiveType=primitiveType;this.htmlType=htmlType;this.minlength=minlength;this.maxlength=maxlength;this.required=required;this.reObj=reObj;this.regexErrMsg=regexErrMsg;this.staticField=staticField;this.defaultOption=null;this.selectedOption=null;this.optionArr=new Array();this.oaInd=0;this.staticFieldName=staticFieldName;this.addOption=addOption;this.addOptionByIndex=addOptionByIndex;this.validation=validation;this.requireCheck=requireCheck;this.lengthCheck=lengthCheck;this.typeCheck=typeCheck;}
function addOption(optionID,optionText,isChild)
{var o=new ConfigOption(optionID,optionText,isChild);this.optionArr[this.oaInd++]=o;}
function addOptionByIndex(optionID,optionText,isChild)
{var o=new ConfigOption(optionID,optionText,isChild);this.optionArr[optionID]=o;}
function validation()
{if(this.isShown)
{if(!this.requireCheck())
return false;if(!this.lengthCheck())
return false;if(!this.typeCheck())
return false;}
return true;}
function lengthCheck()
{if(this.primitiveType=="datetime")
return true;var formObj=eval(configFormStr+"."+this.elemName);if(!formObj)
formObj=document.getElementById(configFormStr+"."+this.elemName);var success=true;var errStr="";if(this.minlength!=null||this.maxlength!=null||this.primitiveType=="varchar")
{if(this.primitiveType=="varchar"&&(this.maxlength==null||this.maxlength>MAX_CHAR_LENGTH))
{this.maxlength=MAX_CHAR_LENGTH;}
if(!(!this.required&&formObj.value==""))
{if(this.minlength!=null&&formObj.value.length<this.minlength)
{errStr="at least "+this.minlength+" characters";success=false;}
var value=formObj.value;if(this.primitiveType=="varchar"&&formObj.id&&formObj.id.split("_").length>1)
{var fieldID=formObj.id.split("_")[1];var hasHtmlCheckbox=document.getElementById("HAS_HTML_"+fieldID);if(hasHtmlCheckbox&&!hasHtmlCheckbox.checked)
{value=value.replace(/\</gi,"&lt;");value=value.replace(/\>/gi,"&gt;");value=value.replace(/"/gi,"&quot;");}}
if(this.maxlength!=null&&value.length>this.maxlength)
{errStr="at most "+this.maxlength+" characters";success=false;}}}
if(!success)
window.alert(unescape(this.name)+" has to be "+errStr);return success;}
function requireCheck()
{if(!this.required)
return true;var formObj=eval(configFormStr+"."+this.elemName);if(!formObj)
formObj=document.getElementById(configFormStr+"."+this.elemName);if(this.htmlType=="checkbox"||this.htmlType=="radio")
{if(formObj.length==null||formObj.length=="undefined")
return true;for(i=0;i<formObj.length;i++){if(formObj[i].checked)
return true;}}
else if(this.htmlType=="select")
{var ind=formObj.selectedIndex;if(ind!=null&&ind>=0){if(formObj[ind].value!="")
return true;}}
else if(this.primitiveType=="datetime")
{if(formDateColRequiredCheck(this.elemName,configFormStr)){return true;}}
else
{if(!formObj.value.isEmpty())
return true;}
window.alert(requiredFieldError.replace(/\[name\]/i,unescape(this.name)));return false;}
function typeCheck()
{var formObj=eval(configFormStr+"."+this.elemName);if(!formObj)
formObj=document.getElementById(configFormStr+"."+this.elemName);var success=true;var errStr="";if(this.primitiveType=="datetime")
{var errorMessage=null;if(formObj&&(formObj.value==""||formObj.value=="NULL"))
{}
else if(formObj)
{if(!formObj.value.match(/^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/))
{errorMessage="("+unescape(this.name)+"): Please enter a valid date in the form of mm/dd/yyyy";}}
else
{var textValue=formDateCol(this.elemName,configFormStr);if(textValue)
{dateVal=new Date(textValue);testVal=dateVal.getMonth()+1+"/"+dateVal.getDate()+"/"+dateVal.getFullYear();if(testVal!=textValue)
{errorMessage="("+unescape(this.name)+"): has an invalid date";}}}
if(errorMessage!=null)
{window.alert(errorMessage);return false;}
return true;}
else if(this.primitiveType=="int")
{if(formObj.value>2147483647||formObj.value<-2147483648)
{window.alert("("+unescape(this.name)+"): The field must be between -2147483648 and 2147483647");return false;}}
var value=formObj.value;if(this.reObj!=null)
{if(!(!this.required&&formObj.value=="")){success=this.reObj.test(formObj.value);}
if(!success)
window.alert("("+this.name+"): "+this.regexErrMsg);}
return success;}
function ConfigOption(optionID,optionText,isChild)
{this.optionID=optionID;this.optionText=unescape(optionText);this.isChild=isChild;}
function DepConfigField(parentFieldID)
{this.parentFieldID=parentFieldID;this.fieldAffectedArr=new Array();this.addAffectedField=addAffectedField;this.faaInd=0;}
function addAffectedField(fieldID,fieldDependency)
{var cf=new ConfigField(fieldID);cf.fieldDependency=fieldDependency;this.fieldAffectedArr[this.faaInd++]=cf;}
function DepConfigOption(parentOptionID,parentFieldID)
{this.parentOptionID=parentOptionID;this.parentField=parentFieldID;this.fieldDepArr=new Array();this.optionDepArr=new Array();this.addDepOption=addDepOption;this.addDepField=addDepField;this.fdaInd=0;this.odaInd=0;}
function addDepField(fieldID)
{var cf=new ConfigField(fieldID);this.fieldDepArr[this.fdaInd++]=cf;}
function addDepOption(fieldID,optionIDArr)
{var cf=new ConfigField(fieldID);for(var p=0;p<optionIDArr.length;p++)
{cf.addOptionByIndex(optionIDArr[p]);}
this.optionDepArr[this.odaInd++]=cf;}
function clearAllOptions(formObj)
{try{var opts=formObj.options;}
catch(e){return;}
if(opts){var len=opts.length;for(var w=0;w<len;w++){opts[0]=null;}
var o=new Option("-- "+selectOne+" --","");formObj.options[0]=o;}}
function hideChildFields(fieldID)
{var dcf=null;try{dcf=eval("dcf"+fieldID);}
catch(e){return;}
var fdArr=dcf.fieldAffectedArr;var i=0;for(i=0;i<fdArr.length;i++){var cfAffected=fdArr[i];var cfGlobal=null;try{cfGlobal=eval("cf"+cfAffected.fieldID);}
catch(e){continue;}
var cfRow=document.getElementById("ROW_"+cfAffected.fieldID);var cfFormObj=eval(configFormStr+"."+cfGlobal.elemName);if(!cfFormObj)
cfFormObj=document.getElementById(cfGlobal.elemName);if(cfGlobal.primitiveType=="readonly"){cfFormObj.value="";}
if(cfGlobal.optionArr.length>0)
{if(cfFormObj.value!=""){cfGlobal.selectedOption=cfFormObj.value;}
clearAllOptions(cfFormObj);var optArr=cfGlobal.optionArr;var j=0;for(j=0;j<optArr.length;j++)
{var coGlobal=optArr[j];if(!coGlobal.isChild)
{var o=new Option(coGlobal.optionText,coGlobal.optionID);cfFormObj.options[cfFormObj.options.length]=o;}}}
if(cfAffected.fieldDependency==1)
{if(cfRow.className.match(/visiblefield/)||cfRow.className.match(/hiddenfield/)){cfRow.className=cfRow.className.replace(/visiblefield/,'hiddenfield');}else{cfRow.style.display="none";}
cfGlobal.isShown=false;}
hideChildFields(cfAffected.fieldID);}}
function showChildFields(fieldID,optionID)
{var dco=null;try{dco=eval("dco"+optionID);}
catch(e){return;}
var odArr=dco.optionDepArr;var t=0;for(t=0;t<odArr.length;t++)
{var cfAffected=odArr[t];var cfGlobal=null;try{cfGlobal=eval("cf"+cfAffected.fieldID);if(cfGlobal.primitiveType){continue;}}
catch(e){continue;}
var cfFormObj=eval(configFormStr+"."+cfGlobal.elemName);if(!cfFormObj)
cfFormObj=document.getElementById(cfGlobal.elemName);var coGlobalArr=cfGlobal.optionArr;var coAffectedArr=cfAffected.optionArr;var oid=0;var oSelected=false;clearAllOptions(cfFormObj);if(cfGlobal.selectedOption&&cfGlobal.selectedOption!=null&&cfGlobal.selectedOption!="")
{oSelected=true;}
var u=0;for(u=0;u<coGlobalArr.length;u++)
{var coGlobal=coGlobalArr[u];var showOpt=false;if(coAffectedArr[coGlobal.optionID]&&coAffectedArr[coGlobal.optionID]!=null)
{showOpt=true;}
if(showOpt||!coGlobal.isChild)
{var o=new Option(coGlobal.optionText,coGlobal.optionID);cfFormObj.options[cfFormObj.options.length]=o;if(parseInt(cfGlobal.selectedOption)==coGlobal.optionID)
{oid=coGlobal.optionID;cfFormObj.options[cfFormObj.options.length-1].selected=true;}
if(parseInt(cfGlobal.defaultOption)==coGlobal.optionID&&!oSelected)
{oid=coGlobal.optionID;cfFormObj.options[cfFormObj.options.length-1].selected=true;}}}
if(cfFormObj.options&&cfFormObj.options.length==2&&oid<=0)
{cfFormObj.options[1].selected=true;oid=cfFormObj.value;}
if(oid>0)
{showChildFields(cfAffected.fieldID,oid);}}
var fdArr=dco.fieldDepArr;var t=0;for(t=0;t<fdArr.length;t++)
{var cfAffected=fdArr[t];var cfGlobal=null;try{cfGlobal=eval("cf"+cfAffected.fieldID);}
catch(e){continue;}
var cfRow=document.getElementById("ROW_"+cfAffected.fieldID);var cfFormObj=eval(configFormStr+"."+cfGlobal.elemName);if(!cfFormObj)
cfFormObj=document.getElementById(cfGlobal.elemName);if(cfGlobal.primitiveType=="readonly"){cfFormObj.value="fill_value";}
cfGlobal.isShown=true;if(cfRow.className.match(/visiblefield/)||cfRow.className.match(/hiddenfield/)){cfRow.className=cfRow.className.replace(/hiddenfield/,'visiblefield');}else{cfRow.style.display="";}
if(cfFormObj!=null){if(!cfFormObj.options){continue;}}
var oid=0;if(cfGlobal.selectedOption&&cfGlobal.selectedOption!=null&&cfGlobal.selectedOption!="")
{oid=cfGlobal.selectedOption;}
else if(cfGlobal.defaultOption&&cfGlobal.defaultOption!=null&&cfGlobal.defaultOption!="")
{oid=cfGlobal.defaultOption;}
if(!parseInt(oid)>0){continue;}
var u=0;if(cfFormObj!=null){for(u=0;u<cfFormObj.options.length;u++)
{if(cfFormObj.options[u].value==oid)
{cfFormObj.options[u].selected=true;break;}}}
showChildFields(cfAffected.fieldID,oid);}}
function updateDep(fieldID,optionID)
{dcf=null;try{dcf=eval("dcf"+fieldID);}
catch(e){dcf=null;}
if(dcf!=null){hideChildFields(dcf.parentFieldID);}
if(optionID!=""){showChildFields(fieldID,optionID);}}
function fillHiddenField(htmlType,srcElemName,tgElemName)
{var isDropdown=(htmlType=="select");var srcObj=eval(configFormStr+"."+srcElemName);var tgObj=eval(configFormStr+"."+tgElemName);if(!srcObj){srcObj=document.getElementById(configFormStr+"."+srcElemName);tgObj=document.getElementById(configFormStr+"."+tgElemName);}
var valArr=[];if(srcObj.length==null)
{if(ElementIsSelected(srcObj,isDropdown))
valArr[0]="1";else
valArr[0]="0";}
else
{for(i=0;i<srcObj.length;i++)
{if(ElementIsSelected(srcObj[i],isDropdown))
valArr.push(srcObj[i].value)}}
tgObj.value=valArr.join(",");}
function ElementIsSelected(formObj,isDropdown){if(isDropdown)
return formObj.selected;else
return formObj.checked;}
function loadTimeDependency()
{for(s=0;s<DepConfigFieldArr.length;s++){var cf=DepConfigFieldArr[s];if(cf.defaultOption!=null&&cf.defaultOption!=""){showChildFields(cf.parentFieldID,cf.defaultOption);}}}
function getDateFieldFormObj(datePart,fieldName,configFormStr)
{var formObjName=configFormStr+"."+datePart+fieldName;var formObj=eval(formObjName);if(!formObj)
formObj=document.getElementById(formObjName);return formObj.value;}
function formDateColRequiredCheck(fieldName,configFormStr)
{var month=getDateFieldFormObj("dtMM",fieldName,configFormStr);var day=getDateFieldFormObj("dtDD",fieldName,configFormStr);var year=getDateFieldFormObj("dtYY",fieldName,configFormStr);if(month==0||day==0||year==0)
return false;return true;}
function formDateCol(fieldName,collection)
{var month=getDateFieldFormObj("dtMM",fieldName,configFormStr);var day=getDateFieldFormObj("dtDD",fieldName,configFormStr);var year=getDateFieldFormObj("dtYY",fieldName,configFormStr);if((month==0)&&(day==0)&&(year==0))
return null;else
return month+"/"+day+"/"+year;}
