
var MSG_INCORRECT_VALUE="Found {nr_errors} field(s) with invalid value(s). Please correct the marked fields before submitting the form!";var BCKG_COLOR_VALUE_INVALID="#FFFFBF";var BCKG_COLOR_VALUE_VALID="#FFFFFF";var FIELD_CONST={ATTRIBUTE_SRC:'src',ATTRIBUTE_ID:'id',ATTRIBUTE_WIDTH:'width',ATTRIBUTE_HEIGHT:'height',ATTRIBUTE_HINT:'hint',FIELD_SELECTOR_CSS:'selectobject',ATTRIBUTE_FIELD_AUTOFILL:'field_default_value',ATTRIBUTE_FIELD_VALIDATOR:'field_validator',ATTRIBUTE_FIELD_MAXLENGTH:'field_maxlength',ATTRIBUTE_FIELD_WIDTH:'field_width',ATTRIBUTE_FIELD_HEIGHT:'field_height',ATTRIBUTE_FIELD_HINT:'field_hint',ATTRIBUTE_FIELD_WRAP:'field_wrap',ATTRIBUTE_FIELD_DEFAULT_VALUE:'field_default_value',ATTRIBUTE_FIELD_OPTIONS:'field_options',ATTRIBUTE_FIELD_VALUE:'field_value',ATTRIBUTE_FIELD_CHECKED:'field_checked',ATTRIBUTE_FIELD_MANDATORY:'field_mandatory',PASTED_FIELD_PREFIX:'copy_of_',PLUGIN_NAME_VALIDATOR:'value_validator = "__validator__reg_exp" validator_options = \'{"reg_exp":"^[a-zA-Z\_\-][a-zA-Z0-9\_\-]+$"}\' value_invalid_msg = "'+"Incorect Value!\nPlease correct the marked field.\n\nThe name can contain only letters, digits, underscore (_) or dash (-)\nand cannot start with a digit."+'"'}
for(var i in FIELD_CONST_SHARED){FIELD_CONST[i]=FIELD_CONST_SHARED[i];}
var FORM_ACTIONS_CONST={SUBMIT_CAPTION_PROP_NAME:'submit_caption',PROP_PREFIX:'__action_prop__',LABEL_PROP_PREFIX:'__action_label__',HOLDER_ELEMENT_PREFIX:'__action_holder__',NAME_ATTRIBUTE:'action_name',EDIT_TMPL_LINK_HOLDER_ID:'edit_tmpl_link',TMPL_FIELD_PARAM_TYPE:'field_param',TMPL_FIELD_NAME_PREFIX:'$',composeActionPropPrefix:function(sActionName){return FORM_ACTIONS_CONST.PROP_PREFIX+sActionName;},composeActionPropName:function(sActionName,sPropName){return FORM_ACTIONS_CONST.composeActionPropPrefix(sActionName)+sPropName;}}
for(var i in FORM_ACTIONS_CONST_SHARED){FORM_ACTIONS_CONST[i]=FORM_ACTIONS_CONST_SHARED[i];}
var VALIDATOR_CONST={VALIDATOR_ATTRIBUTE_NAME:'field_validator',VALIDATOR_PROP_NAME:'validator',VALIDATION_NONE:0,VALIDATION_NOT_EMPTY:1,VALIDATION_EMAIL:2,VALIDATION_CHAR:3,VALIDATION_NUMBER:4,VALIDATION_PHONE:5,VALIDATION_DATE:6,VALIDATION_RE:7,PHONE_FORMAT_1:1,PHONE_FORMAT_2:2,PHONE_FORMAT_3:3,PHONE_FORMAT_4:4,DATE_FORMAT_1:1,DATE_FORMAT_2:2,DATE_FORMAT_3:3,DATE_FORMAT_4:4}
var MAP_VALIDATION_ID_IDENT={};MAP_VALIDATION_ID_IDENT[VALIDATOR_CONST.VALIDATION_NONE]='__validator__none';MAP_VALIDATION_ID_IDENT[VALIDATOR_CONST.VALIDATION_NOT_EMPTY]='__validator__not_empty';MAP_VALIDATION_ID_IDENT[VALIDATOR_CONST.VALIDATION_EMAIL]='__validator__email';MAP_VALIDATION_ID_IDENT[VALIDATOR_CONST.VALIDATION_CHAR]='__validator__character';MAP_VALIDATION_ID_IDENT[VALIDATOR_CONST.VALIDATION_NUMBER]='__validator__number';MAP_VALIDATION_ID_IDENT[VALIDATOR_CONST.VALIDATION_PHONE]='__validator__phone';MAP_VALIDATION_ID_IDENT[VALIDATOR_CONST.VALIDATION_DATE]='__validator__date';MAP_VALIDATION_ID_IDENT[VALIDATOR_CONST.VALIDATION_RE]='__validator__reg_exp';VALIDATOR_CONST.VALIDATIONS_LIST={};VALIDATOR_CONST.VALIDATIONS_LIST[VALIDATOR_CONST.VALIDATION_NONE]={name:"None",value:VALIDATOR_CONST.VALIDATION_NONE,options:{}};VALIDATOR_CONST.VALIDATIONS_LIST[VALIDATOR_CONST.VALIDATION_NOT_EMPTY]={name:"Not Empty",value:VALIDATOR_CONST.VALIDATION_NOT_EMPTY,options:{}};VALIDATOR_CONST.VALIDATIONS_LIST[VALIDATOR_CONST.VALIDATION_EMAIL]={name:"Email",value:VALIDATOR_CONST.VALIDATION_EMAIL,options:{}};VALIDATOR_CONST.VALIDATIONS_LIST[VALIDATOR_CONST.VALIDATION_CHAR]={name:"Letter",value:VALIDATOR_CONST.VALIDATION_CHAR,options:["length_from","length_to"]};VALIDATOR_CONST.VALIDATIONS_LIST[VALIDATOR_CONST.VALIDATION_NUMBER]={name:"Number",value:VALIDATOR_CONST.VALIDATION_NUMBER,options:["range_from","range_to"]};VALIDATOR_CONST.VALIDATIONS_LIST[VALIDATOR_CONST.VALIDATION_PHONE]={name:"Phone",value:VALIDATOR_CONST.VALIDATION_PHONE};VALIDATOR_CONST.VALIDATIONS_LIST[VALIDATOR_CONST.VALIDATION_DATE]={name:"Date",value:VALIDATOR_CONST.VALIDATION_DATE,options:["date_format"]};VALIDATOR_CONST.VALIDATIONS_LIST[VALIDATOR_CONST.VALIDATION_RE]={name:"Regular Expression",value:VALIDATOR_CONST.VALIDATION_RE,options:["reg_exp"]};


var FORM_WILDCARDS={"0":{"match":'$date_time',"callback":"WC_DateTime()"},"1":{"match":'$date',"callback":"WC_Date()"},"2":{"match":'$browser_ver',"callback":"navigator.userAgent"},"3":{"match":'$referrer',"callback":"document.referrer"},"4":{"match":'$ip',"callback":"Form_GetIP()"}};function WC_Date(){var oDate=new Date();var iMonth=oDate.getMonth()+1;if(iMonth<10){iMonth='0'+iMonth;}
var iDate=oDate.getDate();if(iDate<10){iDate='0'+iDate;}
return oDate.getFullYear()+'-'+iMonth+'-'+iDate;}
function WC_DateTime(){var oDate=new Date();return oDate.getFullYear()+'-'+(oDate.getMonth()+1)+'-'+oDate.getDate()+' '+oDate.getHours()+':'+oDate.getMinutes();}
function Form_SetTextFieldProps(oField){var sWidth=oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_WIDTH);if(sWidth){oField.style.width=sWidth+"px";}
var sMaxLength=oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_MAXLENGTH);if(sMaxLength){oField.maxLength=sMaxLength;}
Form_InitFieldHint(oField);}
function Form_SetHiddenFieldProps(oField){}
function Form_SetTextAreaProps(oField){var sWidth=oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_WIDTH);if(sWidth){oField.style.width=sWidth+"px";}
var sHeight=oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_HEIGHT);if(sHeight){oField.style.height=sHeight+"px";}
var sWrap=oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_WRAP);if(sWrap!=null&&sWrap!=''){oField.wrap=sWrap;}
Form_InitFieldHint(oField);}
function Form_SetDropDownProps(oField){var sWidth=oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_WIDTH);if(sWidth){oField.style.width=sWidth+"px";}
if(oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_TYPE)==FIELD_CONST.DROPDOWN_TYPE_LIST){var sHeight=oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_HEIGHT);if(sHeight){oField.className='control';oField.size=sHeight;}}
var sOptions=oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_OPTIONS);var arrOptions=eval('('+sOptions+')');oField.options.length=0;for(var i=0;i<arrOptions.length;i++){var oOptionDef=arrOptions[i];var oOption=new Option(oOptionDef.name,oOptionDef.value);oField.options[oField.options.length]=oOption;}
for(var i=0;i<arrOptions.length;i++){var oOptionDef=arrOptions[i];oField.options[i].selected=oOptionDef.checked;}
Form_InitFieldHint(oField);}
function Form_SetCheckboxProps(oField){oField.checked=(oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_CHECKED)>0);var vValue=oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_VALUE);if(vValue!=null){oField.value=vValue;}
Form_InitFieldHint(oField);}
function Form_SetRadioProps(oField){oField.checked=(oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_CHECKED)>0);var vValue=oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_VALUE);if(vValue!=null){oField.value=vValue;}
Form_InitFieldHint(oField);}
function Form_SetResetProps(oField){oField.value=oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_VALUE);}
function Form_SetSubmitProps(oField){}
function Form_AllowFormSubmissionDelayed(iFormNodeID,oForm){oForm.onsubmit=function(){return Form_OnSubmit(iFormNodeID,oForm);}
window.setTimeout(function(){Form_AllowFormSubmission(iFormNodeID,oForm);},7*1000);}
function Form_AllowFormSubmission(iFormNodeID,oForm){oForm.setAttribute('key_loaded','1');var form_submission_key=document.createElement('input');form_submission_key.setAttribute('type','hidden');form_submission_key.setAttribute('name','form_submission_key');form_submission_key.setAttribute('value',iFormNodeID);oForm.appendChild(form_submission_key);}
function Form_OnSubmit(iFormNodeID,oForm){if(oForm.getAttribute('submitted')>0||oForm.getAttribute('processing')>0){return false;}
oForm.setAttribute('processing',1);var oStatusMsgHolder=document.getElementById('form_status_msg_holder_'+iFormNodeID);if(oStatusMsgHolder!=null){oStatusMsgHolder.style.display='none';}
var oRC=Form_Validate(oForm);if(!oRC.valid){Form_DisplayFormInvalidMessage(iFormNodeID,oRC.invalid_fields,oForm,oRC.nr_errors);oForm.setAttribute('processing',0);return false;}
if(oForm.getAttribute('key_loaded')==null||!oForm.getAttribute('key_loaded')){oForm.setAttribute('processing',0);return false;}
oForm.setAttribute('submitted',1);oForm.setAttribute('processing',0);oForm.elements["do_submit_form_actions"].value="go";return true;}
function Form_DisplayFormInvalidMessage(iFormNodeID,arrInvalidFields,oForm,iNrErrors){document.getElementById('form_invalid_msg_'+iFormNodeID).innerHTML=MSG_INCORRECT_VALUE.supplant({nr_errors:iNrErrors});document.getElementById('form_invalid_msg_holder_'+iFormNodeID).style.display="block";}
function Form_GetFieldErrHolderId(oField){return'err_holder_'+oField.name;}
function Form_Validate(oForm){var arrFields=oForm.elements;var bValid=true;var arrInvalidFields=[];var iNrErrorsFound=0;for(var i=0;i<arrFields.length;i++){var oField=arrFields[i];if(Form_IsUserCreatedField(oField)&&oField.getAttribute('type')!='submit'&&oField.getAttribute('type')!='reset'){if(oField.getAttribute('type')=='checkbox'){if(oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_MANDATORY)!=null&&oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_MANDATORY)>0){if(!oField.checked){Form_SetInvalidFieldDecoration(oField);iNrErrorsFound++;bValid=false;}else{Form_SetValidFieldDecoration(oField);}}}else{if(!ValidateField(oField)){Form_SetInvalidFieldDecoration(oField);arrInvalidFields[arrInvalidFields.length]=oField;iNrErrorsFound++;bValid=false;}else{Form_SetValidFieldDecoration(oField);}}}}
var sRadioGroupsProps=oForm.radio_groups_props.value;var oRadioGroupsProps=eval('('+sRadioGroupsProps+')');for(var i=0;i<oRadioGroupsProps.length;i++){if(oRadioGroupsProps[i].checked){var sRadioButtonId=oRadioGroupsProps[i].name;var arrRadioButtons=oForm[sRadioButtonId];if(isDefined(arrRadioButtons)){if(isDefined(arrRadioButtons.length)&&arrRadioButtons.length>0){var bCheckedRadioFound=false;for(var j=0;j<arrRadioButtons.length;j++){Form_SetValidFieldDecoration(arrRadioButtons[j]);if(arrRadioButtons[j].checked){bCheckedRadioFound=true;break;}}
if(!bCheckedRadioFound){bValid=false;for(var j=0;j<arrRadioButtons.length;j++){Form_SetInvalidFieldDecoration(arrRadioButtons[j]);}
iNrErrorsFound++;}}else{var oRadioButton=arrRadioButtons;if(oRadioButton.checked){Form_SetValidFieldDecoration(oRadioButton);}else{bValid=false;iNrErrorsFound++;Form_SetInvalidFieldDecoration(oRadioButton);}}}}}
return{valid:bValid,invalid_fields:arrInvalidFields,nr_errors:iNrErrorsFound};}
function Form_SetInvalidFieldDecoration(oField){oField.style.backgroundColor=BCKG_COLOR_VALUE_INVALID;var sErrMsgHolderId=Form_GetFieldErrHolderId(oField);var oErrMsgHolder=document.getElementById(sErrMsgHolderId);if(oErrMsgHolder==null){var sValidatorMessage='';if(oField.getAttribute('type')=='checkbox'){sValidatorMessage='Please check the checkbox.';}else if(oField.getAttribute('type')=='radio'){sValidatorMessage='Please select one of the radio button options.';}else{sValidatorMessage=Validator_GetMessage(oField);}
var oErrMsgHolderNode=document.createElement('a');oErrMsgHolderNode.id=Form_GetFieldErrHolderId(oField);oErrMsgHolderNode.className='alert';oErrMsgHolderNode.style.textDecoration='none';oErrMsgHolderNode.setAttribute('href','javascript:void(null)');oErrMsgHolderNode.setAttribute('title',sValidatorMessage);oErrMsgHolderNode.innerHTML='<b>&nbsp;!&nbsp;</b>';if(oField.nextSibling){oField.parentNode.insertBefore(oErrMsgHolderNode,oField.nextSibling);}else{oField.parentNode.appendChild(oErrMsgHolderNode);}}}
function Form_SetValidFieldDecoration(oField){oField.style.backgroundColor='';var sErrMsgHolderId=Form_GetFieldErrHolderId(oField);var oErrMsgHolder=document.getElementById(sErrMsgHolderId);if(oErrMsgHolder!=null){oErrMsgHolder.parentNode.removeChild(oErrMsgHolder);}}
function Form_Initialize(iFormNodeID,sFormName){var oForm=document.forms[sFormName];var arrFields=oForm.elements;for(var i=0;i<arrFields.length;i++){var oField=arrFields[i];if(!Form_IsUserCreatedField(oField)){continue;}
Form_SetFieldValidations(oField);Form_SetFieldProps(oField);Form_SetFieldAutoFill(oField);}
oForm.onreset=Form_Reset;}
function Form_Reset(){var arrFields=this.elements;for(var i=0;i<arrFields.length;i++){var oField=arrFields[i];SetFieldValue(oField,'');Form_SetFieldProps(oField);Form_SetFieldAutoFill(oField);}
return(false);}
function Form_GetByFieldById(sFieldId,oForm){var arrFields=oForm.elements;for(var i=0;i<arrFields.length;i++){if(arrFields[i].getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_ID)==sFieldId){return arrFields[i];}}
return null;}
function Form_SetFieldValidations(oField){var sValidator=oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_VALIDATOR);if(sValidator!=null){try{var oValidator=eval('('+sValidator+')');}catch(e){return;}
var sValidatorIdent=MAP_VALIDATION_ID_IDENT[oValidator.id];var sValidatorOptions=stringify(oValidator.options);Validator_SetFieldValidators(oField,sValidatorIdent,sValidatorOptions);}}
function Form_SetFieldAutoFill(oField){var sAutoFills=oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_AUTOFILL);if(sAutoFills!=null){for(var k in FORM_WILDCARDS){var reWildcards=eval("/\\"+FORM_WILDCARDS[k].match+"/");if(sAutoFills.match(reWildcards)){var str_replacement=eval(FORM_WILDCARDS[k].callback);sAutoFills=sAutoFills.replace(reWildcards,str_replacement);}}
SetFieldValue(oField,sAutoFills);}}
function Form_SetFieldProps(oField){var sFieldType=Form_GetFieldType(oField);oField.className=mapFieldType_Props[sFieldType].css_class;var oPropsSetFunction=mapFieldType_Props[sFieldType].set_props_function;oPropsSetFunction(oField);}
function Form_IsUserCreatedField(oField){return(oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_ID)!=null);}
function Form_GetFieldType(oField){var sType=oField.getAttribute('type');if(sType!=null){return sType}
if(oField.tagName=='TEXTAREA'){return FIELD_CONST.TEXTAREA_TYPE;}
if(oField.tagName=='SELECT'){return FIELD_CONST.DROPDOWN_TYPE;}
return null;}
var mapFieldType_Props=[];mapFieldType_Props['text']={css_class:'textfield',set_props_function:Form_SetTextFieldProps}
mapFieldType_Props['password']=mapFieldType_Props['text'];mapFieldType_Props['hidden']={css_class:'',set_props_function:Form_SetHiddenFieldProps};mapFieldType_Props[FIELD_CONST.TEXTAREA_TYPE]={css_class:'textareafieldsmall',set_props_function:Form_SetTextAreaProps}
mapFieldType_Props[FIELD_CONST.DROPDOWN_TYPE]={css_class:'selectobject',set_props_function:Form_SetDropDownProps}
mapFieldType_Props['checkbox']={css_class:'checkbox',set_props_function:Form_SetCheckboxProps}
mapFieldType_Props['radio']={css_class:'radio',set_props_function:Form_SetRadioProps}
mapFieldType_Props['reset']={css_class:'button',set_props_function:Form_SetResetProps}
mapFieldType_Props['submit']={css_class:'button',set_props_function:Form_SetSubmitProps}
function Form_InitFieldHint(oField){var sHint=oField.getAttribute(FIELD_CONST.ATTRIBUTE_FIELD_HINT);if(!sHint){return;}
var sHintKey=oField.name;var i=1;while(Form_IsTooltipKeyRegistered(sHintKey)){sHintKey+='_'+i;i++;}
Form_RegisterTooltip(sHintKey,sHint);if(document.all){oField.onfocus=new Function('Form_ShowTooltip(this, "'+sHintKey+'")');oField.onblur=new Function('Form_HideTooltip()');}else{oField.addEventListener('focus',new Function('Form_ShowTooltip(this, "'+sHintKey+'")'),false);oField.addEventListener('blur',new Function('Form_HideTooltip()'),false);}}
var FORM_TOOLTIP_HEIGHT=35;var FORM_TOOLTIP_WIDTH=200;var FORM_TOOLTIP_LEFT_OFFSET=25;function Form_ShowTooltip(oField,sHintKey){window.clearTimeout(iTOutToHideTooltip)
var iTopPosition=0;var iLeftPosition=0;if(document.all){iTopPosition=window.event.y+document.body.scrollTop-window.event.offsetY;iLeftPosition=window.event.x+document.body.scrollLeft-window.event.offsetX;}else{iTopPosition=FF_mouse_y;iLeftPosition=FF_mouse_x;}
iTopPosition-=FORM_TOOLTIP_HEIGHT;if(oField.style.width){iLeftPosition+=parseInt(oField.style.width);}else{iLeftPosition+=FORM_TOOLTIP_LEFT_OFFSET;}
ShowTooltip(oField,sHintKey,FORM_TOOLTIP_WIDTH,FORM_TOOLTIP_HEIGHT,undefined,undefined,iLeftPosition,iTopPosition);}
var iTOutToHideTooltip=null;function Form_HideTooltip(){iTOutToHideTooltip=window.setTimeout("HideTooltip()",10);}
var arrRegisteredTooltips=[];function Form_IsTooltipKeyRegistered(sKey){return isDefined(arrRegisteredTooltips[sKey]);}
function Form_RegisterTooltip(sKey,sHint){AddTooltip(sKey,sHint);NO_ESCAPE[sKey]=1;arrRegisteredTooltips[sKey]=1;}
var FF_mouse_y=0;var FF_mouse_x=0;function SetFFMouseCoords(e){FF_mouse_y=e.pageY;FF_mouse_x=e.pageX;}
window.onmousemove=SetFFMouseCoords;


function GetFieldValue(oField){var vValue;if(oField.type=='text'||oField.type=='hidden'||oField.type=='password'||oField.tagName=='TEXTAREA'){vValue=oField.value;}else if(oField.type=='checkbox'){vValue=oField.checked;}else if(oField.type=='radio'){vValue=oField.value;}else if(oField.tagName=='SELECT'){vValue=oField.options[oField.selectedIndex].value;}
return vValue;}
function SetFieldValue(oField,vValue){if(!oField){return false;}
if(oField.type=='text'||oField.type=='password'||oField.tagName=='TEXTAREA'){oField.value=(vValue!=null)?vValue:'';}else if(oField.type=='hidden'){if(vValue!=null&&vValue!=''){oField.value=vValue;}}else if(oField.type=='checkbox'){var bChecked=false;if(vValue=='true'){bChecked=true;}else if(vValue=='false'){bChecked=false;}else if(vValue>0){bChecked=true;}else{bChecked=vValue;}
oField.checked=bChecked;}else if(oField.type=='radio'){}else if(oField.tagName=='SELECT'){return ListSetSelectedValue(oField,vValue,false);}
return true;}
function ListSetSelectedValue(oList,vValue,bSelectFirstWhenNotFound){if(!oList){return;}
ListResetSelection(oList);var bFound=false;for(var i=0;i<oList.options.length;i++){if(oList.options[i].value==vValue){oList.options[i].selected=true;bFound=true;break;}}
if((!bFound)&&bSelectFirstWhenNotFound&&(oList.options.length>0)){oList.options[0].selected=true;}
return bFound;}
function ListResetSelection(oList){if(!oList){return;}
for(var i=0;i<oList.options.length;i++){oList.options[i].selected=false;}}
function ListMoveOptions(sFromId,sToId){var oDest=document.getElementById(sToId);var oFrom=document.getElementById(sFromId);var arrSelectedOptions=ListCutSelectedOptions(sFromId);for(var i=0;i<arrSelectedOptions.length;i++){arrSelectedOptions[i].selected=false;oDest.options[oDest.options.length]=arrSelectedOptions[i];}}
function ListCutSelectedOptions(sListID){var oList=document.getElementById(sListID);if(!oList){return[];}
var arrSelectedOptions=[];for(var i=0;i<oList.options.length;i++){if(oList.options[i].selected&&oList.options[i].value!=''){arrSelectedOptions[arrSelectedOptions.length]=oList.options[i];oList.remove(i);i--;}}
return arrSelectedOptions;}
function Filter_Trim(vValue){return vValue.trim();}
function Filter_Integer(vValue){return(isNaN(parseInt(vValue,10)))?'':parseInt(vValue,10);}
var MapFilterName_Filter={__filter__trim:Filter_Trim,__filter__int:Filter_Integer};function FilterFieldValue(vValue,vFilter){var vFilteredValue=vValue;var arrFilters=vFilter.split(',');for(var i=0;i<arrFilters.length;i++){var sCurrFilter=arrFilters[i].trim();if(isDefined(MapFilterName_Filter[sCurrFilter])){vFilteredValue=MapFilterName_Filter[sCurrFilter](vFilteredValue);}}
return vFilteredValue;}
function FilterField(oField,vFilter){SetFieldValue(oField,FilterFieldValue(GetFieldValue(oField),vFilter));}
function Validator_None(vValue){return true;}
function Validator_None_Message(){return'';}
function Validator_IsInteger(vValue){return(parseInt(vValue).toString().length==vValue.toString().length&&!isNaN(parseInt(vValue,10)));}
function Validator_IsInteger_Message(){return'An integer number is required.';}
function Validator_IsPositiveInteger(vValue){return(Validator_IsInteger(vValue)&&vValue>0);}
function Validator_IsPositiveInteger_Message(){return'A positive integer number is required.';}
function Validator_IsNonNegativeInteger(vValue){return(Validator_IsInteger(vValue)&&vValue>=0);}
function Validator_IsNonNegativeInteger_Message(){return'A non-negative integer number is required.';}
function Validator_IsNotEmpty(vValue){return(vValue.toString()!='');}
function Validator_IsNotEmpty_Message(){return'This field may not be empty.';}
function Validator_EmptyOrPositiveInteger(vValue){return(!Validator_IsNotEmpty(vValue)||Validator_IsPositiveInteger(vValue));}
function Validator_EmptyOrPositiveInteger_Message(){return'Either enter a positive integer number or leave the field empty.';}
function Validator_EmptyOrNonNegativeInteger(vValue){return(!Validator_IsNotEmpty(vValue)||Validator_IsNonNegativeInteger(vValue));}
function Validator_EmptyOrNonNegativeInteger_Message(){return'Either enter a non-negative integer number or leave the field empty.';}
function Validator_Email(vValue){return(vValue.match(/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,5}|[0-9]{1,5})(\]?)$/)!=null);}
function Validator_Email_Message(){return'Enter a valid email address.'}
function Validator_Character(vValue,oOptions){if(vValue.match(/^[a-z\n\r]+$/i)==null){return false;}
if(isDefined(oOptions)){vValue=vValue.replace(/\n|\r/g,'');if(isDefined(oOptions.length_from)&&oOptions.length_from!=''){if(vValue.toString().length<oOptions.length_from){return false;}}
if(isDefined(oOptions.length_to)&&oOptions.length_to!=''){if(vValue.toString().length>oOptions.length_to){return false;}}}
return true;}
function Validator_Character_Message(oOptions){if(isDefined(oOptions)){var sMessage='';if(oOptions.length_from){sMessage+='Enter not less than '+oOptions.length_from+' letters. ';}
if(oOptions.length_to){sMessage+='Enter not more than '+oOptions.length_to+' letters.';}
if(oOptions.length_from&&oOptions.length_to){sMessage='Enter not less than '+oOptions.length_from+' and not more than '+oOptions.length_to+' letters.';}
if(sMessage!=''){return sMessage;}}
return'Enter one or more letters.';}
function Validator_Number(vValue,oOptions){if(vValue.match(/^[\-]*[\d]+[\.]{0,1}[\d]*$/)==null){return false;}
if(isDefined(oOptions)){if(isDefined(oOptions.range_from)&&oOptions.range_from.toString()!=''){if(parseFloat(vValue)<parseFloat(oOptions.range_from)){return false;}}
if(isDefined(oOptions.range_to)&&oOptions.range_to.toString()!=''){if(parseFloat(vValue)>parseFloat(oOptions.range_to)){return false;}}}
return true;}
function Validator_Number_Message(oOptions){if(isDefined(oOptions)){var sMessage='';var bRangeFromFound=false;if(isDefined(oOptions.range_from)&&oOptions.range_from.toString()!=''){sMessage+='Enter a number not less than '+oOptions.range_from+'. ';bRangeFromFound=true;}
var bRangeToFound=false;if(isDefined(oOptions.range_to)&&oOptions.range_to.toString()!=''){sMessage+='Enter a number up to '+oOptions.range_to+'.';bRangeToFound=true;}
if(bRangeFromFound&&bRangeToFound){sMessage='Enter a number between '+oOptions.range_from+' and '+oOptions.range_to+'.';}
if(sMessage!=''){return sMessage;}}
return'Please enter a valid number.';}
var mapPhoneFormat_Data={"1":{reg_exp:/^\(\d{3}\) \d{3} \d{4}$/,format:'(310) 571 3135'},"2":{reg_exp:/^\d{3}\.\d{3}\.\d{4}$/,format:'310.571.3135'},"3":{reg_exp:/^\d{3} \d{3} \d{4}$/,format:'310 571 3135'},"4":{reg_exp:/^\d{3}\-\d{3}\-\d{4}$/,format:'310-571-3135'}}
function Validator_Phone(vValue,oOptions){if(isDefined(oOptions)&&isDefined(oOptions.phone_format)){var sPhoneFormatId=oOptions.phone_format;var oData=mapPhoneFormat_Data[sPhoneFormatId];if(isDefined(oData)){var oRegExp=oData.reg_exp;return(vValue.match(oRegExp)!=null);}}
var oDefaultPhoneRe=/^[\(\)\.x\ \-\d]+$/;var sDigitsOnly=vValue.replace(/[^\d]+/g,'');return(vValue.match(oDefaultPhoneRe)!=null&&sDigitsOnly.toString().length>4);}
function Validator_Phone_Message(oOptions){if(isDefined(oOptions)&&isDefined(oOptions.phone_format)){var sPhoneFormatId=oOptions.phone_format;var oData=mapPhoneFormat_Data[sPhoneFormatId];if(isDefined(oData)){var sFormat=oData.format;return'The required phone number format is ['+sFormat+'].';}}
return'A phone number is considered valid if it has at least 5 digits separated by space, dot, dash, "x" or parenthesis.';}
var mapDateFormat_Data={"1":{handler:ValidDate_1,format:'YYYY-MM-DD'},"2":{handler:ValidDate_2,format:'YY-MM-DD'},"3":{handler:ValidDate_3,format:'DD-MM-YYYY'},"4":{handler:ValidDate_4,format:'DD-MM-YY'}}
function IsValidDateCombination(iYear,iMonth,iDate){if(iYear<0){return false;}
if(iDate<1||iDate>31){return false;}
if(iMonth<1||iMonth>12){return false;}
return true;}
function ValidDate_1(sDate){var re=/^(\d{4})\-(\d{2})\-(\d{2})$/;if(sDate.match(re)==null){return false;}
var arr=re.exec(sDate);return IsValidDateCombination(parseInt(RegExp.$1,10),parseInt(RegExp.$2,10),parseInt(RegExp.$3,10));}
function ValidDate_2(sDate){var re=/^(\d{2})\-(\d{2})\-(\d{2})$/;if(sDate.match(re)==null){return false;}
var arr=re.exec(sDate);return IsValidDateCombination(parseInt(RegExp.$1,10),parseInt(RegExp.$2,10),parseInt(RegExp.$3,10));}
function ValidDate_3(sDate){var re=/^(\d{2})\-(\d{2})\-(\d{4})$/;if(sDate.match(re)==null){return false;}
var arr=re.exec(sDate);return IsValidDateCombination(parseInt(RegExp.$3,10),parseInt(RegExp.$2,10),parseInt(RegExp.$1,10));}
function ValidDate_4(sDate){var re=/^(\d{2})\-(\d{2})\-(\d{2})$/;if(sDate.match(re)==null){return false;}
var arr=re.exec(sDate);return IsValidDateCombination(parseInt(RegExp.$3,10),parseInt(RegExp.$2,10),parseInt(RegExp.$1,10));}
function Validator_Date(vValue,oOptions){vValue=vValue.replace(/[\/\.\\]+/g,'-');if(isDefined(oOptions)&&isDefined(oOptions.date_format)){var sDateFormatId=oOptions.date_format;var oData=mapDateFormat_Data[sDateFormatId];if(isDefined(oData)){var oValidateFunction=oData.handler;return oValidateFunction(vValue);}}
return false;}
function Validator_Date_Message(oOptions){if(isDefined(oOptions)&&isDefined(oOptions.date_format)){var sDateFormatId=oOptions.date_format;var oData=mapDateFormat_Data[sDateFormatId];if(isDefined(oData)){var sFormat=oData.format;return'The required date format is '+sFormat+'.';}}
return'Enter a valid date.';}
function Validator_RegExp(vValue,oOptions){if(isDefined(oOptions)&&isDefined(oOptions.reg_exp)){var sRegExp=oOptions.reg_exp;if(sRegExp.indexOf('index.html')==-1){sRegExp='/'+sRegExp+'/';}
var oRegExp=eval(sRegExp);return(vValue.match(oRegExp)!=null);}
return true;}
function Validator_RegExp_Message(oOptions){if(isDefined(oOptions)&&isDefined(oOptions.reg_exp)){var sRegExp=oOptions.reg_exp;return'A value that matches the regular expression ['+sRegExp+'] is required.';}
return'';}
var MapValidatorName_Validator={__validator__int:Validator_IsInteger,__validator__positive_int:Validator_IsPositiveInteger,__validator__nonnegative_int:Validator_IsNonNegativeInteger,__validator__not_empty:Validator_IsNotEmpty,__validator__empty_or_positive_int:Validator_EmptyOrPositiveInteger,__validator__empty_or_nonnegative_int:Validator_EmptyOrNonNegativeInteger,__validator__none:Validator_None,__validator__email:Validator_Email,__validator__character:Validator_Character,__validator__number:Validator_Number,__validator__phone:Validator_Phone,__validator__date:Validator_Date,__validator__reg_exp:Validator_RegExp}
var MapValidatorName_Message={__validator__int:Validator_IsInteger_Message,__validator__positive_int:Validator_IsPositiveInteger_Message,__validator__nonnegative_int:Validator_IsNonNegativeInteger_Message,__validator__not_empty:Validator_IsNotEmpty_Message,__validator__empty_or_positive_int:Validator_EmptyOrPositiveInteger_Message,__validator__empty_or_nonnegative_int:Validator_EmptyOrNonNegativeInteger_Message,__validator__none:Validator_None_Message,__validator__email:Validator_Email_Message,__validator__character:Validator_Character_Message,__validator__number:Validator_Number_Message,__validator__phone:Validator_Phone_Message,__validator__date:Validator_Date_Message,__validator__reg_exp:Validator_RegExp_Message}
function ValidateFieldValue(vValue,vValidator,oOptions){if(isDefined(MapValidatorName_Validator[vValidator])){return MapValidatorName_Validator[vValidator](vValue,oOptions);}
return true;}
var ATTRIBUTE_VALIDATOR_VALUE='value_validator';var ATTRIBUTE_VALIDATOR_OPTIONS='validator_options';function ValidateField(oField){var sValidatorValue=oField.getAttribute(ATTRIBUTE_VALIDATOR_VALUE);if(sValidatorValue!=null){var oOptions=null;var sOptions=oField.getAttribute(ATTRIBUTE_VALIDATOR_OPTIONS);if(sOptions!=null){oOptions=eval('('+sOptions+')')}
return ValidateFieldValue(GetFieldValue(oField),sValidatorValue,oOptions);}
return true;}
function CheckFieldValidation(oField){if(!ValidateField(oField)){alert('Incorect Value!\n\nValue should be validated as:\n'+Validator_GetMessage(oField));}}
function Validator_SetFieldValidators(oField,sValidatorIdent,sValidatorOptions){if(sValidatorOptions){oField.setAttribute(ATTRIBUTE_VALIDATOR_OPTIONS,sValidatorOptions);}
oField.setAttribute(ATTRIBUTE_VALIDATOR_VALUE,sValidatorIdent);}
function Validator_SetFieldEvents(oField,sAction){if(!sAction){sAction='CheckFieldValidation(this)';}
if(oField.tagName=='INPUT'||oField.tagName=='TEXTAREA'){if(oField.getAttribute('type')=='checkbox'||oField.getAttribute('type')=='radio'){oField.onclick=new Function(sAction);}else{oField.onblur=new Function(sAction);}}else if(oField.tagName=='SELECT'){oField.onchange=new Function(sAction);}}
function Validator_GetMessage(oField){var vValidator=oField.getAttribute(ATTRIBUTE_VALIDATOR_VALUE);if(vValidator!=null){var oOptions=null;var sOptions=oField.getAttribute(ATTRIBUTE_VALIDATOR_OPTIONS);if(sOptions!=null){oOptions=eval('('+sOptions+')')}
if(isDefined(MapValidatorName_Message[vValidator])){return MapValidatorName_Message[vValidator](oOptions);}}
return'';}


String.prototype.entityify=function(){return this.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");}
String.prototype.quote=function(){return'"'+this.replace(/(["\\])/g,'\\$1')+'"';}
String.prototype.supplant=function(oProps,bReplaceWithBlank,oCallBack){var i,j,vValue;var sString=this;var q=0;var sOpenTag=(isUndefined(oProps.__open_tag))?'{':oProps.__open_tag;var sCloseTag=(isUndefined(oProps.__close_tag))?'}':oProps.__close_tag;for(;;){i=q+sString.substring(q,sString.length).indexOf(sOpenTag);if(i<0){break;}
if(i+1<=q){break;}
j=sString.indexOf(sCloseTag,i+1);if(j==-1){break;}
if(isDefined(oCallBack)){vValue=oCallBack(sString.substring(i+1,j),oProps);}else{vValue=oProps[sString.substring(i+1,j)];}
if(isUndefined(vValue)){if(bReplaceWithBlank){vValue='';}else{q=i+1;continue;}}
sString=sString.substring(0,i)+vValue+sString.substring(j+1);}
return sString;}
String.prototype.trim=function(){return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/,"$1");}
if(!isFunction(Function.apply)){Function.prototype.apply=function(o,a){var r,x='____apply';if(!isObject(o)){o={};}
o[x]=this;switch((a&&a.length)||0){case 0:r=o[x]();break;case 1:r=o[x](a[0]);break;case 2:r=o[x](a[0],a[1]);break;case 3:r=o[x](a[0],a[1],a[2]);break;case 4:r=o[x](a[0],a[1],a[2],a[3]);break;case 5:r=o[x](a[0],a[1],a[2],a[3],a[4]);break;case 6:r=o[x](a[0],a[1],a[2],a[3],a[4],a[5]);break;default:}
delete o[x];return r;}}
Function.prototype.inherits=function(parent){var d=0,p=(this.prototype=new parent());this.prototype.uber=function uber(name){var f,r,t=d,v=parent.prototype;if(t){while(t){v=v.constructor.prototype;t-=1;}
f=v[name];}else{f=p[name];if(f==this[name]){f=v[name];}}
d+=1;r=f.apply(this,Array.prototype.slice.apply(arguments,[1]));d-=1;return r;}
return this;}
Function.prototype.swiss=function(parent){for(var i=1;i<arguments.length;i+=1){var name=arguments[i];this.prototype[name]=parent.prototype[name];}
return this;}
function isAlien(a){return isObject(a)&&typeof a.constructor!='function';}
function isArray(a){return isObject(a)&&a.constructor==Array;}
function isBoolean(a){return typeof a=='boolean';}
function isEmpty(o){var i,v;if(isObject(o)){for(i in o){v=o[i];if(isUndefined(v)&&isFunction(v)){return false;}}}
return true;}
function isFunction(a){return typeof a=='function';}
function isNull(a){return typeof a=='object'&&!a;}
function isNumber(a){return typeof a=='number'&&isFinite(a);}
function isObject(a){return(a&&typeof a=='object')||isFunction(a);}
function isString(a){return typeof a=='string';}
function isUndefined(a){return typeof a=='undefined';}
function isDefined(a){return typeof a!='undefined';}
function stringify(arg){var i,o,v;switch(typeof arg){case'object':if(arg){if(arg.constructor==Array){o='[';for(i=0;i<arg.length;++i){v=stringify(arg[i]);if(v!='function'&&!isUndefined(v)){o+=(o!='['?',':'')+v;}else{o+=',';}}
return o+']';}else if(typeof arg.toString!='undefined'){o='{';for(i in arg){v=stringify(arg[i]);if(v!='function'&&!isUndefined(v)){o+=(o!='{'?',':'')+
i.quote()+':'+v;}}
return o+'}';}else{return;}}
return'null';case'unknown':case'undefined':return;case'string':return arg.quote();case'function':return'function';default:return String(arg);}}


