
function wHELPERS(){};wHELPERS.prototype.addEvent=function(obj,type,fn){if(!obj){return;}
if(obj.attachEvent){obj['e'+type+fn]=fn;obj[type+fn]=function(){obj['e'+type+fn](window.event);}
obj.attachEvent('on'+type,obj[type+fn]);}else if(obj.addEventListener){obj.addEventListener(type,fn,false);}else{var originalHandler=obj["on"+type];if(originalHandler){obj["on"+type]=function(e){originalHandler(e);fn(e);};}else{obj["on"+type]=fn;}}}
wHELPERS.prototype.removeEvent=function(obj,type,fn){if(obj.detachEvent){if(obj[type+fn]){obj.detachEvent('on'+type,obj[type+fn]);obj[type+fn]=null;}}else if(obj.removeEventListener)
obj.removeEventListener(type,fn,false);else{obj["on"+type]=null;}}
wHELPERS.prototype.getSourceElement=function(e){if(!e)e=window.event;if(e.target)
var srcE=e.target;else
var srcE=e.srcElement;if(!srcE)return null;if(srcE.nodeType==3)srcE=srcE.parentNode;if(srcE.tagName.toUpperCase()=='LABEL'&&e.type=='click'){if(srcE.getAttribute('for')){srcE=document.getElementById(srcE.getAttribute('for'));}}
return srcE;}
wHELPERS.prototype.preventEvent=function(e){if(!e)e=window.event;if(e.preventDefault)e.preventDefault();else e.returnValue=false;return false;}
wHELPERS.prototype.stopPropagation=function(e){if(!e)var e=window.event;e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation();}
wHELPERS.prototype.randomId=function(){var seed=(new Date()).getTime();seed=seed.toString().substr(6);for(var i=0;i<6;i++)
seed+=String.fromCharCode(48+Math.floor((Math.random()*10)));return"id-"+seed;}
wHELPERS.prototype.activateStylesheet=function(sheetref){if(document.getElementsByTagName){var ss=document.getElementsByTagName('link');}else if(document.styleSheets){var ss=document.styleSheets;}
for(var i=0;ss[i];i++){if(ss[i].href.indexOf(sheetref)!=-1){ss[i].disabled=true;ss[i].disabled=false;}}}
wHELPERS.prototype.hasClass=function(element,className){if(element&&element.className){if((' '+element.className+' ').indexOf(' '+className+' ')!=-1){return true;}}
return false;}
wHELPERS.prototype.hasClassPrefix=function(element,className){if(element&&element.className){if((' '+element.className).indexOf(' '+className)!=-1){return true;}}
return false;}
wHELPERS.prototype.hasIdPrefix=function(element,idPrefix){if(element&&element.id){if(element.id.indexOf(idPrefix)!=-1){return true;}}
return false;}
wHELPERS.prototype.getTop=function(obj){var cur=0;if(obj.offsetParent){while(obj.offsetParent){if((new wHELPERS()).getComputedStyle(obj,'position')=='relative'){return cur;}
cur+=obj.offsetTop;obj=obj.offsetParent;}}
return cur;}
wHELPERS.prototype.getLeft=function(obj){var cur=0;if(obj.offsetParent){while(obj.offsetParent){if((new wHELPERS()).getComputedStyle(obj,'position')=='relative'){return cur;}
cur+=obj.offsetLeft;obj=obj.offsetParent;}}
return cur;}
wHELPERS.prototype.getComputedStyle=function(element,styleName){if(window.getComputedStyle){return window.getComputedStyle(element,"").getPropertyValue(styleName);}else if(element.currentStyle){return element.currentStyle[styleName];}
return false;}
var wHelpers=wHELPERS;if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0;i<arguments.length;++i){this[this.length]=arguments[i];}
return this.length;};}
if(wHELPERS){var wFORMS={debugLevel:0,helpers:new wHELPERS(),behaviors:{},onLoadComplete:new Array(),processedForm:null,onLoadHandler:function(){for(var behaviorName in wFORMS.behaviors){wFORMS.debug('wForms/loaded behavior: '+behaviorName);}
for(var i=0;i<document.forms.length;i++){wFORMS.debug('wForms/initialize: '+(document.forms[i].name||document.forms[i].id));wFORMS.processedForm=document.forms[i];wFORMS.addBehaviors(document.forms[i]);}},addBehaviors:function(node){if(!node)return;var deep=arguments[1]?arguments[1]:true;if(!node.nodeType){node=document.getElementById(node);}
if(!node||node.nodeType!=1)return;deep=(arguments.length>1)?arguments[1]:true;wFORMS._addBehaviors(node,deep);},_addBehaviors:function(node,deep){if(node.getAttribute('rel')=='no-behavior'){return false;}
if(node.nodeType==1){for(var behaviorName in wFORMS.behaviors){wFORMS.behaviors[behaviorName].evaluate(node);}
if(deep){for(var i=0,l=node.childNodes.length,cn=node.childNodes;i<l;i++){if(cn[i].nodeType==1)
wFORMS._addBehaviors(cn[i],deep);}}
if(node.tagName.toUpperCase()=='FORM'){for(var i=0;i<wFORMS.onLoadComplete.length;i++){wFORMS.onLoadComplete[i]();}
if(wFORMS.onLoadComplete.length>0){wFORMS.onLoadComplete=new Array();}}}},hasBehavior:function(behaviorName){if(wFORMS.behaviors[behaviorName])return true;return false;},debug:function(txt){msgLevel=arguments[1]||10;if(wFORMS.debugLevel>0&&msgLevel>=wFORMS.debugLevel){if(!wFORMS.debugOutput)
wFORMS.initDebug();if(wFORMS.debugOutput)
wFORMS.debugOutput.innerHTML+="<br />"+txt;}},initDebug:function(){var output=document.getElementById('debugOutput');if(!output){output=document.createElement('div');output.id='debugOutput';output.style.position='absolute';output.style.right='10px';output.style.top='10px';output.style.zIndex='300';output.style.fontSize='x-small';output.style.fontFamily='courier';output.style.backgroundColor='#DDD';output.style.padding='5px';if(document.body)
wFORMS.debugOutput=document.body.appendChild(output);}
if(wFORMS.debugOutput)
wFORMS.debugOutput.ondblclick=function(){this.innerHTML=''};}};wFORMS.NAME="wForms";wFORMS.VERSION="2.0";wFORMS.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]";};wFORMS.toString=function(){return this.__repr__();};wFORMS.utilities=wFORMS.helpers;var wf=wFORMS;wf.utilities.getSrcElement=wFORMS.helpers.getSourceElement;wf.utilities.XBrowserPreventEventDefault=wFORMS.helpers.preventEvent;wFORMS.helpers.activateStylesheet('wforms-jsonly.css');wFORMS.helpers.addEvent(window,'load',wFORMS.onLoadHandler);}
if(wFORMS){wFORMS.preventSubmissionOnEnter=false;wFORMS.showAlertOnError=true;wFORMS.className_required="required";wFORMS.className_validationError_msg="errMsg";wFORMS.className_validationError_fld="errFld";wFORMS.classNamePrefix_validation="validate";wFORMS.idSuffix_fieldError="-E";wFORMS.behaviors['validation']={errMsg_required:"This field is required. ",errMsg_alpha:"The text must use alphabetic characters only (a-z, A-Z). Numbers are not allowed.",errMsg_email:"This does not appear to be a valid email address.",errMsg_integer:"Please enter an integer.",errMsg_float:"Please enter a number (ex. 1.9).",errMsg_password:"Unsafe password. Your password should be between 4 and 12 characters long and use a combinaison of upper-case and lower-case letters.",errMsg_alphanum:"Please use alpha-numeric characters only [a-z 0-9].",errMsg_date:"This does not appear to be a valid date.",errMsg_notification:"%% error(s) detected. Your form has not been submitted yet.\nPlease check the information you provided.",errMsg_custom:"Please enter a valid value.",className_allRequired:"allrequired",jumpToErrorOnPage:null,currentPageIndex:-1,submitSwitchedOffFields:false,switchedOffFields:[],evaluate:function(node){if(node.tagName.toUpperCase()=="FORM"){if(wFORMS.functionName_formValidation.toString()==wFORMS.functionName_formValidation){wFORMS.functionName_formValidation=eval(wFORMS.functionName_formValidation);}
wFORMS.helpers.addEvent(node,'submit',wFORMS.functionName_formValidation);}},init:function(){},run:function(e){var element=wFORMS.helpers.getSourceElement(e);if(!element)element=e;var currentPageOnly=arguments.length>1?arguments[1]:false;wFORMS.behaviors['validation'].switchedOffFields=[];wFORMS.behaviors['validation'].jumpToErrorOnPage=null;if(wFORMS.preventSubmissionOnEnter){if(element.type&&element.type.toLowerCase()=='text')
return wFORMS.preventEvent(e);}
while(element&&element.tagName.toUpperCase()!='FORM'){element=element.parentNode;}
var nbErrors=wFORMS.behaviors['validation'].validateElement(element,currentPageOnly,true);wFORMS.behaviors['validation'].errorCount=nbErrors;if(nbErrors>0){if(wFORMS.behaviors['validation'].jumpToErrorOnPage){wFORMS.behaviors['paging'].gotoPage(wFORMS.behaviors['validation'].jumpToErrorOnPage);}
if(wFORMS.showAlertOnError){wFORMS.behaviors['validation'].showAlert(nbErrors);}
return wFORMS.helpers.preventEvent(e);}
if(!wFORMS.behaviors['validation'].submitSwitchedOffFields&&!currentPageOnly){for(var i=0;i<wFORMS.behaviors['validation'].switchedOffFields.length;i++){var element=wFORMS.behaviors['validation'].switchedOffFields[i];while(element.childNodes[0])
element.removeChild(element.childNodes[0]);}}
return true;},remove:function(){},validateElement:function(element){var deep=arguments.length>2?arguments[2]:true;var currentPageOnly=arguments[1]?arguments[1]:false;var wBehavior=wFORMS.behaviors['validation'];if(wFORMS.hasBehavior('switch')&&wFORMS.helpers.hasClassPrefix(element,wFORMS.classNamePrefix_offState)){if(!wBehavior.submitSwitchedOffFields){wBehavior.switchedOffFields.push(element);}
return 0;}
if(wFORMS.hasBehavior('paging')&&wFORMS.helpers.hasClass(element,wFORMS.className_paging)){if(!wFORMS.helpers.hasClass(element,wFORMS.className_pagingCurrent)&&currentPageOnly)
return 0;wBehavior.currentPageIndex=wFORMS.behaviors['paging'].getPageIndex(element);}
var nbErrors=0;if(!wBehavior.checkRequired(element)){wBehavior.showError(element,wBehavior.errMsg_required);nbErrors++;}else{if(wFORMS.helpers.hasClassPrefix(element,wFORMS.classNamePrefix_validation)){var arrClasses=element.className.split(" ");for(j=0;j<arrClasses.length;j++){switch(arrClasses[j]){case"validate-alpha":if(!wBehavior.isAlpha(element.value)){wBehavior.showError(element,wBehavior.errMsg_alpha);nbErrors++;}
break;case"validate-alphanum":if(!wBehavior.isAlphaNum(element.value)){wBehavior.showError(element,wBehavior.errMsg_alphanum);nbErrors++;}
break;case"validate-date":if(!wBehavior.isDate(element.value)){wBehavior.showError(element,wBehavior.errMsg_date);nbErrors++;}
break;case"validate-time":break;case"validate-email":if(!wBehavior.isEmail(element.value)){wBehavior.showError(element,wBehavior.errMsg_email);nbErrors++;}
break;case"validate-integer":if(!wBehavior.isInteger(element.value)){wBehavior.showError(element,wBehavior.errMsg_integer);nbErrors++;}
break;case"validate-float":if(!wBehavior.isFloat(element.value)){wBehavior.showError(element,wBehavior.errMsg_float);nbErrors++;}
break;case"validate-strongpassword":if(!wBehavior.isPassword(element.value)){wBehavior.showError(element,wBehavior.errMsg_password);nbErrors++;}
break;case"validate-custom":var pattern=new RegExp("\/([^\/]*)\/([gi]*)");var matches=element.className.match(pattern);if(matches[0]){var validationPattern=new RegExp(matches[1],matches[2]);if(!element.value.match(validationPattern)){wBehavior.showError(element,wBehavior.errMsg_custom);nbErrors++;}}
break;}}}}
if(nbErrors==0){wBehavior.removeErrorMessage(element);}else{if(wBehavior.currentPageIndex>0&&!wBehavior.jumpToErrorOnPage){wBehavior.jumpToErrorOnPage=wBehavior.currentPageIndex;}}
if(deep){for(var i=0;i<element.childNodes.length;i++){if(element.childNodes[i].nodeType==1){nbErrors+=wBehavior.validateElement(element.childNodes[i],currentPageOnly,deep);}}}
return nbErrors;},checkRequired:function(element){var wBehavior=wFORMS.behaviors['validation'];if(wFORMS.helpers.hasClass(element,wFORMS.className_required)){switch(element.tagName.toUpperCase()){case"INPUT":var inputType=element.getAttribute("type");if(!inputType)inputType='text';switch(inputType.toLowerCase()){case"checkbox":return element.checked;break;case"radio":return element.checked;break;default:return!wBehavior.isEmpty(element.value);}
break;case"SELECT":if(element.selectedIndex==-1){return false;}else
return!wBehavior.isEmpty(element.options[element.selectedIndex].value);break;case"TEXTAREA":return!wBehavior.isEmpty(element.value);break;default:return wBehavior.checkOneRequired(element);break;}}else if(wFORMS.helpers.hasClass(element,wBehavior.className_allRequired)){return wBehavior.checkAllRequired(element);}
return true;},checkOneRequired:function(element){if(element.nodeType!=1)return false;var tagName=element.tagName.toUpperCase();var wBehavior=wFORMS.behaviors['validation'];if(tagName=="INPUT"||tagName=="SELECT"||tagName=="TEXTAREA"){var value=wBehavior.getFieldValue(element);if(!wBehavior.isEmpty(value)){return true;}}
for(var i=0;i<element.childNodes.length;i++){if(wBehavior.checkOneRequired(element.childNodes[i]))return true;}
return false;},checkAllRequired:function(element){if(element.nodeType!=1)return true;var tagName=element.tagName.toUpperCase();var wBehavior=wFORMS.behaviors['validation'];if(tagName=="INPUT"||tagName=="SELECT"||tagName=="TEXTAREA"){var value=wBehavior.getFieldValue(element);if(wBehavior.isEmpty(value)){return false;}}
for(var i=0;i<element.childNodes.length;i++){if(!wBehavior.checkAllRequired(element.childNodes[i]))return false;}
return true;},getFieldValue:function(element){var value=null;if(element&&element.tagName){if(element.tagName.toUpperCase()=="INPUT"){var inputType=element.getAttribute("type");if(!inputType)inputType='text';switch(inputType.toLowerCase()){case"checkbox":value=element.checked?element.value:null;break;case"radio":var radioGroup=element.form[element.name];for(var i=0;i<radioGroup.length;i++){if(radioGroup[i].checked){if(!value)value=new Array();value[value.length]=radioGroup[i].value;}}
break;default:value=element.value;}}else if(element.tagName.toUpperCase()=="SELECT"){if(element.selectedIndex!=-1)
value=element.options[element.selectedIndex].value
else
value=null;}else if(element.tagName.toUpperCase()=="TEXTAREA"){value=element.value;}}
return value;},isEmpty:function(s){var regexpWhitespace=/^\s+$/;return((s==null)||(s.length==0)||regexpWhitespace.test(s));},isAlpha:function(s){var regexpAlphabetic=/^[a-zA-Z\s]+$/;return wFORMS.behaviors['validation'].isEmpty(s)||regexpAlphabetic.test(s);},isAlphaNum:function(s){var validChars=/^[\w\s]+$/;return wFORMS.behaviors['validation'].isEmpty(s)||validChars.test(s);},isDate:function(s){var testDate=new Date(s);return wFORMS.behaviors['validation'].isEmpty(s)||!isNaN(testDate);},isEmail:function(s){var regexpEmail=/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;return wFORMS.behaviors['validation'].isEmpty(s)||regexpEmail.test(s);},isInteger:function(s){var regexp=/^[+]?\d+$/;return wFORMS.behaviors['validation'].isEmpty(s)||regexp.test(s);},isFloat:function(s){return wFORMS.behaviors['validation'].isEmpty(s)||!isNaN(parseFloat(s));},isPassword:function(s){return wFORMS.behaviors['validation'].isEmpty(s);},showError:function(element,errorMsg){wFORMS.behaviors['validation'].removeErrorMessage(element);if(!element.id)element.id=wFORMS.helpers.randomId();element.className+=" "+wFORMS.className_validationError_fld;var msgNode=document.createTextNode(" "+errorMsg);var fe=document.getElementById(element.id+wFORMS.idSuffix_fieldError);if(!fe){fe=document.createElement("div");fe.setAttribute('id',element.id+wFORMS.idSuffix_fieldError);var fl=document.getElementById(element.id+wFORMS.idSuffix_fieldLabel);if(fl)
fl.parentNode.insertBefore(fe,fl.nextSibling);else
element.parentNode.insertBefore(fe,element.nextSibling);}
fe.appendChild(msgNode);fe.className+=" "+wFORMS.className_validationError_msg;},showAlert:function(nbTotalErrors){alert(wFORMS.behaviors['validation'].errMsg_notification.replace('%%',nbTotalErrors));},removeErrorMessage:function(element){if(wFORMS.helpers.hasClass(element,wFORMS.className_validationError_fld)){var rErrClass=new RegExp(wFORMS.className_validationError_fld,"gi");element.className=element.className.replace(rErrClass,"");var errorMessage=document.getElementById(element.id+wFORMS.idSuffix_fieldError);if(errorMessage){errorMessage.innerHTML="";}}}}
wFORMS.functionName_formValidation=wFORMS.behaviors['validation'].run;wFORMS.formValidation=wFORMS.behaviors['validation'].run;wFORMS.arrErrorMsg=new Array();wFORMS.arrErrorMsg[0]=wFORMS.behaviors['validation'].errMsg_required;wFORMS.arrErrorMsg[1]=wFORMS.behaviors['validation'].errMsg_alpha;wFORMS.arrErrorMsg[2]=wFORMS.behaviors['validation'].errMsg_email;wFORMS.arrErrorMsg[3]=wFORMS.behaviors['validation'].errMsg_integer;wFORMS.arrErrorMsg[4]=wFORMS.behaviors['validation'].errMsg_float;wFORMS.arrErrorMsg[5]=wFORMS.behaviors['validation'].errMsg_password;wFORMS.arrErrorMsg[6]=wFORMS.behaviors['validation'].errMsg_alphanum;wFORMS.arrErrorMsg[7]=wFORMS.behaviors['validation'].errMsg_date;wFORMS.arrErrorMsg[8]=wFORMS.behaviors['validation'].errMsg_notification;}