var jFormsJQ={_forms:{},tForm:null,declareForm:function(aForm){this._forms[aForm.name]=aForm;jQuery('#'+aForm.name).bind('submit',function(ev){jQuery(ev.target).trigger('jFormsUpdateFields');return jFormsJQ.verifyForm(ev.target)});},getForm:function(name){return this._forms[name];},verifyForm:function(frmElt){this.tForm=this._forms[frmElt.attributes.getNamedItem("id").value];var msg='';var valid=true;this.tForm.errorDecorator.start();for(var i=0;i<this.tForm.controls.length;i++){if(!this.verifyControl(this.tForm.controls[i],this.tForm))
valid=false;}
if(!valid)
this.tForm.errorDecorator.end();return valid;},verifyControl:function(ctrl,frm){var val;if(typeof ctrl.getValue=='function'){val=ctrl.getValue();}
else{var elt=frm.element.elements[ctrl.name];if(!elt)return true;val=this.getValue(elt);}
if(val===null||val===false){if(ctrl.required){frm.errorDecorator.addError(ctrl,1);return false;}}
else{if(!ctrl.check(val,frm)){frm.errorDecorator.addError(ctrl,2);return false;}}
return true;},getValue:function(elt){if(elt.nodeType){switch(elt.nodeName.toLowerCase()){case"input":if(elt.getAttribute('type')=='checkbox')
return elt.checked;case"textarea":var val=jQuery.trim(elt.value);return(val!==''?val:null);case"select":if(!elt.multiple)
return(elt.value!==''?elt.value:null);var values=[];for(var i=0;i<elt.options.length;i++){if(elt.options[i].selected)
values.push(elt.options[i].value);}
if(values.length)
return values;return null;}}else if(this.isCollection(elt)){var values=[];for(var i=0;i<elt.length;i++){var item=elt[i];if(item.checked)
values.push(item.value);}
if(values.length){if(elt[0].getAttribute('type')=='radio')
return values[0];return values;}}
return null;},showHelp:function(aFormName,aControlName){var frm=this._forms[aFormName];var ctrls=frm.controls;var ctrl=null;for(var i=0;i<ctrls.length;i++){if(ctrls[i].name==aControlName){ctrl=ctrls[i];break;}
if(ctrls[i].confirmField&&ctrls[i].confirmField.name==aControlName){ctrl=ctrls[i].confirmField;break;}}
if(ctrl){frm.helpDecorator.show(ctrl.help);}},hasClass:function(elt,clss){return elt.className.match(new RegExp('(\\s|^)'+clss+'(\\s|$)'));},addClass:function(elt,clss){if(this.isCollection(elt)){for(var j=0;j<elt.length;j++){if(!this.hasClass(elt[j],clss)){elt[j].className+=" "+clss;}}}else{if(!this.hasClass(elt,clss)){elt.className+=" "+clss;}}},removeClass:function(elt,clss){if(this.isCollection(elt)){for(var j=0;j<elt.length;j++){if(this.hasClass(elt[j],clss)){elt[j].className=elt[j].className.replace(new RegExp('(\\s|^)'+clss+'(\\s|$)'),' ');}}}else{if(this.hasClass(elt,clss)){elt.className=elt.className.replace(new RegExp('(\\s|^)'+clss+'(\\s|$)'),' ');}}},setAttribute:function(elt,name,value){if(this.isCollection(elt)){for(var j=0;j<elt.length;j++){elt[j].setAttribute(name,value);}}else{elt.setAttribute(name,value);}},removeAttribute:function(elt,name){if(this.isCollection(elt)){for(var j=0;j<elt.length;j++){elt[j].removeAttribute(name);}}else{elt.removeAttribute(name);}},isCollection:function(elt){if(typeof HTMLCollection!="undefined"&&elt instanceof HTMLCollection){return true;}
if(typeof NodeList!="undefined"&&elt instanceof NodeList){return true;}
if(elt instanceof Array)
return true;if(elt.length!=undefined&&(elt.localName==undefined||elt.localName=='SELECT'||elt.localName!='select'))
return true;return false;}};function jFormsJQForm(name){this.name=name;this.controls=[];this.errorDecorator=new jFormsJQErrorDecoratorAlert();this.helpDecorator=new jFormsJQHelpDecoratorAlert();this.element=jQuery('#'+name).get(0);};jFormsJQForm.prototype={addControl:function(ctrl){this.controls.push(ctrl);ctrl.formName=this.name;},setErrorDecorator:function(decorator){this.errorDecorator=decorator;},setHelpDecorator:function(decorator){this.helpDecorator=decorator;},getControl:function(aControlName){var ctrls=this.controls;for(var i=0;i<ctrls.length;i++){if(ctrls[i].name==aControlName){return ctrls[i];}}
return null;}};function jFormsJQControlString(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';this.minLength=-1;this.maxLength=-1;};jFormsJQControlString.prototype.check=function(val,jfrm){if(this.minLength!=-1&&val.length<this.minLength)
return false;if(this.maxLength!=-1&&val.length>this.maxLength)
return false;return true;};function jFormsJQControlSecret(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';this.minLength=-1;this.maxLength=-1;};jFormsJQControlSecret.prototype.check=function(val,jfrm){if(this.minLength!=-1&&val.length<this.minLength)
return false;if(this.maxLength!=-1&&val.length>this.maxLength)
return false;return true;};function jFormsJQControlConfirm(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';this._masterControl=name.replace(/_confirm$/,'');};jFormsJQControlConfirm.prototype.check=function(val,jfrm){if(jFormsJQ.getValue(jfrm.element.elements[this._masterControl])!==val)
return false;return true;};function jFormsJQControlBoolean(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';};jFormsJQControlBoolean.prototype.check=function(val,jfrm){return(val==true||val==false);};function jFormsJQControlDecimal(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';};jFormsJQControlDecimal.prototype.check=function(val,jfrm){return(-1!=val.search(/^\s*[\+\-]?\d+(\.\d+)?\s*$/));};function jFormsJQControlInteger(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';};jFormsJQControlInteger.prototype.check=function(val,jfrm){return(-1!=val.search(/^\s*[\+\-]?\d+\s*$/));};function jFormsJQControlHexadecimal(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';};jFormsJQControlHexadecimal.prototype.check=function(val,jfrm){return(val.search(/^0x[a-f0-9A-F]+$/)!=-1);};function jFormsJQControlDatetime(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';this.minDate=null;this.maxDate=null;this.multiFields=false;};jFormsJQControlDatetime.prototype.check=function(val,jfrm){var t=val.match(/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2}):(\d{2})(:(\d{2}))?$/);if(t==null)return false;var yy=parseInt(t[1],10);var mm=parseInt(t[2],10)-1;var dd=parseInt(t[3],10);var th=parseInt(t[4],10);var tm=parseInt(t[5],10);var ts=0;if(t[7]!=null&&t[7]!="")
ts=parseInt(t[7],10);var dt=new Date(yy,mm,dd,th,tm,ts);if(yy!=dt.getFullYear()||mm!=dt.getMonth()||dd!=dt.getDate()||th!=dt.getHours()||tm!=dt.getMinutes()||ts!=dt.getSeconds())
return false;else if((this.minDate!==null&&val<this.minDate)||(this.maxDate!==null&&val>this.maxDate))
return false;return true;};jFormsJQControlDatetime.prototype.getValue=function(){if(!this.multiFields){var val=jQuery.trim(jQuery('#'+this.formName+'_'+this.name).val());return(val!==''?val:null);}
var controlId='#'+this.formName+'_'+this.name;var v=jQuery(controlId+'_year').val()+'-'
+jQuery(controlId+'_month').val()+'-'
+jQuery(controlId+'_day').val()+' '
+jQuery(controlId+'_hour').val()+':'
+jQuery(controlId+'_minutes').val();var secondsControl=jQuery('#'+this.formName+'_'+this.name+'_seconds');if(secondsControl.attr('type')!=='hidden'){v+=':'+secondsControl.val();if(v=='-- ::')
return null;}
else if(v=='-- :')
return null;return v;};function jFormsJQControlDate(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';this.multiFields=false;this.minDate=null;this.maxDate=null;};jFormsJQControlDate.prototype.check=function(val,jfrm){var t=val.match(/^(\d{4})\-(\d{2})\-(\d{2})$/);if(t==null)return false;var yy=parseInt(t[1],10);var mm=parseInt(t[2],10)-1;var dd=parseInt(t[3],10);var dt=new Date(yy,mm,dd,0,0,0);if(yy!=dt.getFullYear()||mm!=dt.getMonth()||dd!=dt.getDate())
return false;else if((this.minDate!==null&&val<this.minDate)||(this.maxDate!==null&&val>this.maxDate))
return false;return true;};jFormsJQControlDate.prototype.getValue=function(){if(!this.multiFields){var val=jQuery.trim(jQuery('#'+this.formName+'_'+this.name).val());return(val!==''?val:null);}
var controlId='#'+this.formName+'_'+this.name;var v=jQuery(controlId+'_year').val()+'-'
+jQuery(controlId+'_month').val()+'-'
+jQuery(controlId+'_day').val();if(v=='--')
return null;return v;};function jFormsJQControlTime(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';};jFormsJQControlTime.prototype.check=function(val,jfrm){var t=val.match(/^(\d{2}):(\d{2})(:(\d{2}))?$/);if(t==null)return false;var th=parseInt(t[1],10);var tm=parseInt(t[2],10);var ts=0;if(t[4]!=null)
ts=parseInt(t[4],10);var dt=new Date(2007,05,02,th,tm,ts);if(th!=dt.getHours()||tm!=dt.getMinutes()||ts!=dt.getSeconds())
return false;else
return true;};function jFormsJQControlLocaleDatetime(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';this.lang='';};jFormsJQControlLocaleDatetime.prototype.check=function(val,jfrm){var yy,mm,dd,th,tm,ts;if(this.lang.indexOf('fr_')==0){var t=val.match(/^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})(:(\d{2}))?$/);if(t==null)return false;yy=parseInt(t[3],10);mm=parseInt(t[2],10)-1;dd=parseInt(t[1],10);th=parseInt(t[4],10);tm=parseInt(t[5],10);ts=0;if(t[7]!=null)
ts=parseInt(t[7],10);}else{var t=val.match(/^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})(:(\d{2}))?$/);if(t==null)return false;yy=parseInt(t[3],10);mm=parseInt(t[1],10)-1;dd=parseInt(t[2],10);th=parseInt(t[4],10);tm=parseInt(t[5],10);ts=0;if(t[7]!=null)
ts=parseInt(t[7],10);}
var dt=new Date(yy,mm,dd,th,tm,ts);if(yy!=dt.getFullYear()||mm!=dt.getMonth()||dd!=dt.getDate()||th!=dt.getHours()||tm!=dt.getMinutes()||ts!=dt.getSeconds())
return false;else
return true;};function jFormsJQControlLocaleDate(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';this.lang='';};jFormsJQControlLocaleDate.prototype.check=function(val,jfrm){var yy,mm,dd;if(this.lang.indexOf('fr_')==0){var t=val.match(/^(\d{2})\/(\d{2})\/(\d{4})$/);if(t==null)return false;yy=parseInt(t[3],10);mm=parseInt(t[2],10)-1;dd=parseInt(t[1],10);}else{var t=val.match(/^(\d{2})\/(\d{2})\/(\d{4})$/);if(t==null)return false;yy=parseInt(t[3],10);mm=parseInt(t[1],10)-1;dd=parseInt(t[2],10);}
var dt=new Date(yy,mm,dd,0,0,0);if(yy!=dt.getFullYear()||mm!=dt.getMonth()||dd!=dt.getDate())
return false;else
return true;};function jFormsJQControlUrl(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';};jFormsJQControlUrl.prototype.check=function(val,jfrm){return(val.search(/^[a-z]+:\/\/((((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))((\/)|$)/)!=-1);};function jFormsJQControlEmail(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';};jFormsJQControlEmail.prototype.check=function(val,jfrm){return(val.search(/^((\"[^\"f\n\r\t\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/)!=-1);};function jFormsJQControlIpv4(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';};jFormsJQControlIpv4.prototype.check=function(val,jfrm){var t=val.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);if(t)
return(t[1]>255||t[2]>255||t[3]>255||t[4]>255);return false;};function jFormsJQControlIpv6(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';};jFormsJQControlIpv6.prototype.check=function(val,jfrm){return(val.search(/^([a-f0-9]{1,4})(:([a-f0-9]{1,4})){7}$/i)!=-1);};function jFormsJQControlChoice(name,label){this.name=name;this.label=label;this.required=false;this.errInvalid='';this.errRequired='';this.help='';this.items={};};jFormsJQControlChoice.prototype={addControl:function(ctrl,itemValue){if(this.items[itemValue]==undefined)
this.items[itemValue]=[];this.items[itemValue].push(ctrl);},check:function(val,jfrm){if(this.items[val]==undefined)
return false;var list=this.items[val];var valid=true;for(var i=0;i<list.length;i++){var val2=jFormsJQ.getValue(jfrm.element.elements[list[i].name]);if(val2==''){if(list[i].required){jfrm.errorDecorator.addError(list[i],1);valid=false;}}else if(!list[i].check(val2,jfrm)){jfrm.errorDecorator.addError(list[i],2);valid=false;}}
return valid;},activate:function(val){var frmElt=document.getElementById(this.formName);for(var j in this.items){var list=this.items[j];for(var i=0;i<list.length;i++){var elt=frmElt.elements[list[i].name];if(val==j){jFormsJQ.removeAttribute(elt,"readonly");jFormsJQ.removeClass(elt,"jforms-readonly");}else{jFormsJQ.setAttribute(elt,"readonly","readonly");jFormsJQ.addClass(elt,"jforms-readonly");}}}}};function jFormsJQErrorDecoratorAlert(){this.message='';};jFormsJQErrorDecoratorAlert.prototype={start:function(){this.message='';},addError:function(control,messageType){if(messageType==1){this.message+="* "+control.errRequired+"\n";}else if(messageType==2){this.message+="* "+control.errInvalid+"\n";}else{this.message+="* Error on '"+control.label+"' field\n";}},end:function(){if(this.message!=''){alert(this.message);}}};function jFormsJQHelpDecoratorAlert(){};jFormsJQHelpDecoratorAlert.prototype={show:function(message){alert(message);}};