if(typeof(tmt)=="undefined"){var tmt ={};}

function displayError(formNode,validators)
{var errorHTML ='';
for(var i=0;i<validators.length;i++)
{errorHTML +='- ' +validators[i].message +'<br />';}

if (!errorHTML =='')
{document.getElementById("errorDisplay").style.display ="block";document.getElementById("errorDisplay").innerHTML ='<span style="float:left;"><img src="../../images/Site1Model1/attention.gif" /></span>&nbsp;&nbsp;Pour valider, merci de compléter les informations suivantes : <p style="padding-left:30px;"><i>' +errorHTML +'</i></p>';}
}

tmt.addEvent =function(obj,type,fn){if(obj.addEventListener){obj.addEventListener(type,fn,false);}
else 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]);}
}

tmt.get =function(){var returnNodes =new Array();for(var i=0;i<arguments.length;i++){var nodeElem =arguments[i];if(typeof nodeElem =="string"){nodeElem =document.getElementById(nodeElem);}
if(arguments.length ==1){return nodeElem;}
returnNodes.push(nodeElem);}
return returnNodes;}

tmt.getAll =function(startNode){
var rootNode =(startNode)?tmt.get(startNode):document;return rootNode.getElementsByTagName("*");}

tmt.getAllNodes =function(startNode){var elements =tmt.getAll(startNode);var nodesArray =[];for(var i=0;i<elements.length;i++){if(elements[i].nodeType ==1){nodesArray.push(elements[i]);}
}
return nodesArray;}

tmt.getNodesByAttribute =function(attName,startNode){var nodes =tmt.getAll(startNode);return tmt.filterNodesByAttribute(attName,nodes);}

tmt.getNodesByAttributeValue =function(attName,attValue,startNode){var nodes =tmt.getAll(startNode);return tmt.filterNodesByAttributeValue(attName,attValue,nodes);}

tmt.filterNodesByAttribute =function(attName,nodes){var filteredNodes =new Array();for(var i=0;i<nodes.length;i++){if(nodes[i].getAttribute(attName)){filteredNodes.push(nodes[i]);}
}
return filteredNodes;}

tmt.filterNodesByAttributeValue =function(attName,attValue,nodes){var filteredNodes =new Array();for(var i=0;i<nodes.length;i++){if(nodes[i].getAttribute(attName)&&(nodes[i].getAttribute(attName)==attValue)){filteredNodes.push(nodes[i]);}
}
return filteredNodes;}

tmt.setNodeAttribute =function(nodeList,attName,attValue){for(var i=0;i<nodeList.length;i++){var nodeElem =tmt.get(nodeList[i]);if(nodeElem){nodeElem[attName]=attValue;}
}
}

tmt.addClass =function(element,className){var nodeElem =tmt.get(element);if(!nodeElem ||(tmt.hasClass(nodeElem,className)==true)){return;}
nodeElem.className +=(nodeElem.className ?" ":"")+className;}

tmt.hasClass =function(element,className){var nodeElem =tmt.get(element);if(nodeElem){return nodeElem.className.search(new RegExp("\\b"+className +"\\b"))!=-1;}
return null;}

tmt.removeClass =function(element,className){var nodeElem =tmt.get(element);if(!nodeElem ||(tmt.hasClass(nodeElem,className)==false)){return;}
nodeElem.className =nodeElem.className.replace(new RegExp("\\s*\\b"+className +"\\b","g"),"");}

tmt.toggleClass =function(element,className){var nodeElem =tmt.get(element);if(tmt.hasClass(nodeElem,className)){tmt.removeClass(nodeElem,className);}
else{tmt.addClass(nodeElem,className);}
}

tmt.trim =function(str){return str.replace(/^\s+|\s+$/g,"");}

tmt.encodeEntities =function(str){if(str &&str.search(/[&<>"]/)!=-1){str =str.replace(/&/g,"&amp;");str =str.replace(/</g,"&lt;");str =str.replace(/>/g,"&gt;");str =str.replace(/"/g,"&quot;");}
return str
}

tmt.unencodeEntities =function(str){str =str.replace(/&amp;/g,"&");str =str.replace(/&lt;/g,"<");str =str.replace(/&gt;/g,">");str =str.replace(/&quot;/g,'"');return str
}

tmt.hashToEncodeURI =function(obj){var values =[];for(var x in obj){values.push(encodeURIComponent(x)+"="+encodeURIComponent(obj[x]));}
return values.join("&");}

if(typeof(tmt)=="undefined"){alert("Error: tmt.core JavaScript library missing");}
tmt.form ={};
tmt.form.MESSAGE_CLASS ="tmtFormMessage";tmt.form.ERROR_MESSAGE_CLASS ="tmtFormErrorMessage";
tmt.form.checkFields =function(){tmt.setNodeAttribute(arguments,"checked",true);}

tmt.form.uncheckFields =function(){tmt.setNodeAttribute(arguments,"checked",false);}

tmt.form.toggleCheckFields =function(){for(var i=0;i<arguments.length;i++){var fieldNode =tmt.get(arguments[i]);if(fieldNode){fieldNode.checked ?fieldNode.checked =false :fieldNode.checked =true;}
}
}

tmt.form.checkSelect =function(theNode,values){
var valueArray =values.split(",");var selectNode =tmt.get(theNode);
if(selectNode ==null){selectNode =document.getElementsByName(theNode)[0];}
for(var i=0;i<selectNode.options.length;i++){for(var j=0;j<valueArray.length;j++){if(valueArray[j]==tmt.form.getOptionNodeValue(selectNode.options[i])){selectNode.options[i].selected =true;}
}
}
}

tmt.form.resetSelect =function(theNode){var selectNode =tmt.get(theNode);
if(selectNode ==null){selectNode =document.getElementsByName(theNode)[0];}
for(var i=0;i<selectNode.options.length;i++){selectNode.options[i].selected =false;}
}

tmt.form.checkGroup =function(groupName,values){
var valueArray =values.split(",");var groupNodes =document.getElementsByName(groupName);for(var i=0;i<groupNodes.length;i++){for(var j=0;j<valueArray.length;j++){if(groupNodes[i].value ==valueArray[j]){groupNodes[i].checked =true;}
}
}
}

tmt.form.resetGroup =function(groupName){var groupNodes =document.getElementsByName(groupName);for(var i=0;i<groupNodes.length;i++){groupNodes[i].checked =false;}
}

tmt.form.disableFields =function(){tmt.setNodeAttribute(arguments,"disabled",true);}

tmt.form.enableFields =function(){tmt.setNodeAttribute(arguments,"disabled",false);}

tmt.form.toggleEnableFields =function(){for(var i=0;i<arguments.length;i++){var fieldNode =tmt.get(arguments[i]);if(fieldNode){fieldNode.disabled ?fieldNode.disabled =false :fieldNode.disabled =true;}
}
}

tmt.form.getParentForm =function(startNode){var parentObj =startNode.parentNode;while(parentObj){if(parentObj.tagName.toLowerCase()=="body"){return false;}
if(parentObj.tagName.toLowerCase()=="form"){return parentObj;}
else{parentObj =parentObj.parentNode;continue;}
}

return false;}

tmt.form.getOptionNodeValue =function(optionNode){
if(window.ActiveXObject){if(optionNode.attributes["value"].specified){return optionNode.value;}
}
else {if(optionNode.hasAttribute("value")){return optionNode.value;}
}
return optionNode.text;}


tmt.form.isFormField =function(fieldNode){
if(!fieldNode.type){return false;}

if((fieldNode.type.toLowerCase()=="reset")||(fieldNode.type.toLowerCase()=="button")||(fieldNode.tagName.toLowerCase()=="button")){return false;}
return true
}

tmt.form.getChildFields =function(startNode){var childFields =[];var childNodes =tmt.getAllNodes(startNode);for(var i=0;i<childNodes.length;i++){if(tmt.form.isFormField(childNodes[i])){childFields.push(childNodes[i]);}
}
return childFields;}

tmt.form.getSubmitNodes =function(startNode){var inputNodes =startNode.getElementsByTagName("input");return tmt.filterNodesByAttributeValue("type","submit",inputNodes);}

tmt.form.getFieldGroup =function(fieldNode){var boxes =[];if(fieldNode.name){boxes =tmt.getNodesByAttributeValue("name",fieldNode.name,fieldNode.form);}
return boxes;}

tmt.form.getValue =function(field,getGroupValue){var retValue ="";var fieldNode =tmt.get(field);var fieldType =fieldNode.type.toLowerCase();
switch(fieldType){case "select-multiple":
for(var j =0;j <fieldNode.options.length;j++){if(fieldNode.options[j].selected){if(retValue ==""){retValue =tmt.form.getOptionNodeValue(fieldNode.options[j]);}
else{retValue +=",";retValue +=tmt.form.getOptionNodeValue(fieldNode.options[j]);}
}
}
break;case "select-one":
for(var k =0;k <fieldNode.options.length;k++){if(fieldNode.options[k].selected){retValue =tmt.form.getOptionNodeValue(fieldNode.options[k])
break;}
}
break;
case "radio":
case "checkbox":
if(!getGroupValue ||!fieldNode.name){
if(fieldNode.checked){retValue =fieldNode.value;}
}
else{
var boxes =tmt.form.getFieldGroup(fieldNode);retValue =tmt.form.getGroupValue(boxes);}
break;
case "reset":
break;
case "button":
break;
default:

if(window.ActiveXObject &&fieldNode.id &&(typeof(tinyMCE)!="undefined")&&tinyMCE.get(fieldNode.id)){retValue =tinyMCE.get(fieldNode.id).getContent();}

else{retValue =fieldNode.value;}
break;}
return retValue;}



tmt.form.getGroupValue =function(boxes){var values =[];for(var i =0;i <boxes.length;i++){if(boxes[i].checked){values.push(boxes[i].value);}
}
return values.toString();}

tmt.form.hashForm =function(formNode,demoronize){var valueObj ={};for(var i =0;i <formNode.elements.length;i++){var fieldNode =formNode.elements[i];
if(!fieldNode ||!fieldNode.name ||fieldNode.tagName.toLowerCase()=="fieldset"){continue;}
var fieldName =fieldNode.name;valueObj[fieldName]=tmt.form.getValue(fieldNode,true);}
return valueObj;}

tmt.form.serializeForm =function(formNode,demoronize){return tmt.hashToEncodeURI(tmt.form.hashForm(formNode,demoronize));}

tmt.form.clearForm =function(formNode){tmt.form.clearFields(formNode.elements);}

tmt.form.clearFields =function(fieldNodes){for(var i =0;i <fieldNodes.length;i++){tmt.form.clearField(fieldNodes[i]);}
}

tmt.form.clearField =function(fieldNode){
if(!fieldNode ||fieldNode.tagName.toLowerCase()=="fieldset"){return;}
var fieldType =fieldNode.type.toLowerCase();
switch(fieldType){case "select-multiple":
case "select-one":
fieldNode.selectedIndex =-1;break;
case "radio":
case "checkbox":
fieldNode.checked =false;break;
case "reset":
break;
case "button":
break;
default:
fieldNode.value ="";break;}
}
tmt.form.MSG_BOX_ID ="tmtFormMessageBox";

tmt.form.generateBoxId =function(formNode){var errorId =tmt.form.MSG_BOX_ID
if(formNode.getAttribute("id")){errorId +=formNode.getAttribute("id");}
else if(formNode.getAttribute("name")){errorId +=formNode.getAttribute("name");}
return errorId;}

tmt.form.displayMessage =function(formNode,html){tmt.form.displayBox(formNode,html,tmt.form.MESSAGE_CLASS);}

tmt.form.displayErrorMessage =function(formNode,html){tmt.form.displayBox(formNode,html,tmt.form.ERROR_MESSAGE_CLASS);}

tmt.form.displayBox =function(formNode,html,cssClass){if(!cssClass){cssClass =tmt.form.MESSAGE_CLASS;}

var displayNode =document.createElement("div");
var errorId =tmt.form.generateBoxId(formNode);displayNode.setAttribute("id",errorId);displayNode.className =cssClass;displayNode.innerHTML =html;var oldDisplay =tmt.get(errorId);
if(oldDisplay){formNode.parentNode.replaceChild(displayNode,oldDisplay);}
else{formNode.parentNode.insertBefore(displayNode,formNode);}
}

tmt.form.removeDisplayBox =function(formNode){var errorId =tmt.form.generateBoxId(formNode);var oldDisplay =tmt.get(errorId);
if(oldDisplay){oldDisplay.parentNode.removeChild(oldDisplay);}
}

tmt.form.stringDemoronizer =function(str){str =str.replace(new RegExp(String.fromCharCode(710),"g"),"^");str =str.replace(new RegExp(String.fromCharCode(732),"g"),"~");
str =str.replace(new RegExp(String.fromCharCode(8216),"g"),"'");str =str.replace(new RegExp(String.fromCharCode(8217),"g"),"'");str =str.replace(new RegExp(String.fromCharCode(8220),"g"),'"');str =str.replace(new RegExp(String.fromCharCode(8221),"g"),'"');
str =str.replace(new RegExp(String.fromCharCode(8211),"g"),"-");str =str.replace(new RegExp(String.fromCharCode(8212),"g"),"--");str =str.replace(new RegExp(String.fromCharCode(8218),"g"),",");str =str.replace(new RegExp(String.fromCharCode(8222),"g"),",,");str =str.replace(new RegExp(String.fromCharCode(8226),"g"),"*");str =str.replace(new RegExp(String.fromCharCode(8230),"g"),"...");str =str.replace(new RegExp(String.fromCharCode(8364),"g"),"Û");return str;}

if(typeof(tmt)=="undefined"){alert("Error: tmt.core JavaScript library missing");}
if(typeof(tmt.form)=="undefined"){alert("Error: tmt.form JavaScript library missing");}
tmt.validator ={};tmt.validator.DEFAULT_DATE_PATTERN ="YYYY-MM-DD";tmt.validator.DEFAULT_CALLBACK ="tmt.validator.defaultCallback";tmt.validator.DEFAULT_CALLBACK_MULTISECTION ="tmt.validator.multiSectionDefaultCallback";
tmt.validator.init =function(){var formNodes =tmt.filterNodesByAttributeValue("tmt:validate","true",document.getElementsByTagName("form"));for(var i=0;i<formNodes.length;i++){formNodes[i].tmt_validator =true;tmt.validator.filters.init(formNodes[i].elements);

if(typeof formNodes[i].onsubmit !="function"){formNodes[i].onsubmit =function(){return tmt.validator.validateForm(this);}
}
else{
formNodes[i].tmt_oldSubmit =formNodes[i].onsubmit;formNodes[i].onsubmit =function(){
if(this.tmt_oldSubmit()){return tmt.validator.validateForm(this);}
return false;}
}
}
}

tmt.validator.validateForm =function(form){var formNode =tmt.get(form);formNode.tmt_validator =true;var formValidator =tmt.validator.formValidatorFactory(formNode);var activeValidators =tmt.validator.executeValidators(formValidator.validators);
eval(formValidator.callback +"(formNode, activeValidators)");if(activeValidators.length ==0){
formValidator.blockSubmit();}
return activeValidators.length ==0;}

tmt.validator.validateFields =function(fieldsArray,callback){if(fieldsArray.length ==0){return true;}

if(!callback){callback =tmt.validator.getCallback(tmt.get(fieldsArray[0]).form);}

var formNode =tmt.get(fieldsArray[0]).form;var validators =[];for(var i =0;i <fieldsArray.length;i++){var fieldNode =tmt.get(fieldsArray[i]);if(tmt.form.isFormField(fieldNode)){validators.push(tmt.validator.fieldValidatorFactory(fieldNode));}
}

var activeValidators =tmt.validator.executeValidators(validators);
eval(callback +"(formNode, activeValidators)");return activeValidators.length ==0;}

tmt.validator.validateChildFields =function(startNode,callback){var fieldsArray =tmt.form.getChildFields(startNode);return tmt.validator.validateFields(fieldsArray,callback);}

tmt.validator.validateField =function(field,callback){var fieldNode =tmt.get(field);if(!tmt.form.isFormField(fieldNode)){return false;}
if(!callback){callback ="tmt.validator.defaultFieldCallback";}
var fieldType =fieldNode.type.toLowerCase();
if(fieldNode.tagName.toLowerCase()=="fieldset"){return;}
var validator =tmt.validator.fieldValidatorFactory(fieldNode);var haveError =validator.validate();if(haveError){eval(callback +"(fieldNode, validator)");}
else{eval(callback +"(fieldNode, null)");}
return haveError;}


tmt.validator.executeValidators =function(validators){var validatedFields ={};
var activeValidators =[];
for(var i=0;i<validators.length;i++){if(validatedFields[validators[i].name]){
continue;}
if(validators[i].validate()){activeValidators[activeValidators.length]=validators[i];}

validatedFields[validators[i].name]=true;}
return activeValidators;}


tmt.validator.formValidatorFactory =function(formNode){var obj ={};
obj.validators =[];obj.callback =tmt.validator.getCallback(formNode);for(var i =0;i <formNode.elements.length;i++){if(tmt.form.isFormField(formNode.elements[i])){obj.validators.push(tmt.validator.fieldValidatorFactory(formNode.elements[i]));}
}

obj.buttons =tmt.form.getSubmitNodes(formNode);
obj.blockSubmit =function(){
if(!formNode.getAttribute("tmt:blocksubmit")&&!(formNode.getAttribute("tmt:blocksubmit")=="false")){
for(var i=0;i<obj.buttons.length;i++){if(obj.buttons[i].getAttribute("tmt:waitmessage")){obj.buttons[i].value =obj.buttons[i].getAttribute("tmt:waitmessage");}
obj.buttons[i].disabled =true;}
}
}

return obj;}

tmt.validator.fieldValidatorFactory =function(fieldNode){var fieldType =fieldNode.type.toLowerCase();var validator ={};
if(fieldNode.tagName.toLowerCase()=="fieldset"){return validator;}

switch(fieldType){case "select-multiple":
validator =tmt.validator.selectValidatorFactory(fieldNode);break;case "select-one":
validator =tmt.validator.selectValidatorFactory(fieldNode);break;case "radio":
validator =tmt.validator.radioValidatorFactory(tmt.form.getFieldGroup(fieldNode));break;case "checkbox":
validator =tmt.validator.boxValidatorFactory(tmt.form.getFieldGroup(fieldNode));break;
case "reset":
return validator;break;
case "button":
return validator;break;
default:
validator =tmt.validator.textValidatorFactory(fieldNode);break;}
return validator;}

tmt.validator.abstractValidatorFactory =function(fieldNode){var obj ={};obj.message ="";obj.name ="";if(fieldNode.name){obj.name =fieldNode.name;}
else if(fieldNode.id){obj.name =fieldNode.id;}
obj.errorClass ="";if(fieldNode.getAttribute("tmt:message")){obj.message =fieldNode.getAttribute("tmt:message");}
if(fieldNode.getAttribute("tmt:errorclass")){obj.errorClass =fieldNode.getAttribute("tmt:errorclass");}
obj.flagInvalid =function(){
if(obj.errorClass){tmt.addClass(fieldNode,obj.errorClass);}

fieldNode.setAttribute("title",obj.message);}
obj.flagValid =function(){
if(obj.errorClass){tmt.removeClass(fieldNode,obj.errorClass);}
fieldNode.removeAttribute("title");}
obj.validate =function(){

if(fieldNode.disabled){
obj.flagValid();return false;}
if(!obj.isValid()){obj.flagInvalid();return true;}
else{obj.flagValid();return false;}
}

return obj;}

tmt.validator.textValidatorFactory =function(fieldNode){var obj =tmt.validator.abstractValidatorFactory(fieldNode);obj.type ="text";
obj.getFocus =function(){
try{fieldNode.focus();fieldNode.select();}
catch(exception){}
}

obj.isEmpty =function(){return fieldNode.value =="";}

obj.isRequired =function(){var requiredAtt =fieldNode.getAttribute("tmt:required");if(requiredAtt){
if((requiredAtt =="true")||(requiredAtt =="false")){return eval(requiredAtt);}

return(eval(requiredAtt +"(fieldNode)"));}
return false;}


obj.isValid =function(){if(obj.isEmpty()){if(obj.isRequired()){return false;}
else{return true;}
}
else{
for(var rule in tmt.validator.rules){
if(fieldNode.getAttribute("tmt:"+rule)){
if(!eval("tmt.validator.rules."+rule +"(fieldNode)")){return false;}
}
}
}
return true;}

return obj;}

tmt.validator.selectValidatorFactory =function(selectNode){var obj =tmt.validator.abstractValidatorFactory(selectNode);obj.type ="select";var invalidIndex;if(selectNode.getAttribute("tmt:invalidindex")){invalidIndex =selectNode.getAttribute("tmt:invalidindex");}
var invalidValue;if(selectNode.getAttribute("tmt:invalidvalue")!=null){invalidValue =selectNode.getAttribute("tmt:invalidvalue");}


obj.isValid =function(){

if(selectNode.selectedIndex ==-1){selectNode.selectedIndex =0;}

if(selectNode.selectedIndex ==invalidIndex){return false;}

if(selectNode.value ==invalidValue){return false;}

for(var rule in tmt.validator.rules){
if(selectNode.getAttribute("tmt:"+rule)){
if(!eval("tmt.validator.rules."+rule +"(selectNode)")){return false;}
}
}
return true;}

return obj;}

tmt.validator.groupValidatorFactory =function(buttonGroup){var obj ={};obj.name =buttonGroup[0].name;obj.message ="";obj.errorClass ="";
for(var i=0;i<buttonGroup.length;i++){if(buttonGroup[i].getAttribute("tmt:message")){obj.message =buttonGroup[i].getAttribute("tmt:message");}
if(buttonGroup[i].getAttribute("tmt:errorclass")){obj.errorClass =buttonGroup[i].getAttribute("tmt:errorclass");}
}
obj.flagInvalid =function(){
if(obj.errorClass){for(var i=0;i<buttonGroup.length;i++){tmt.addClass(buttonGroup[i],obj.errorClass);buttonGroup[i].setAttribute("title",obj.message);}
}
}
obj.flagValid =function(){
if(obj.errorClass){for(var i=0;i<buttonGroup.length;i++){tmt.removeClass(buttonGroup[i],obj.errorClass);buttonGroup[i].removeAttribute("title");}
}
}
obj.validate =function(){

if(obj.isValid()){obj.flagValid();return false;}
else{obj.flagInvalid();return true;}
}

return obj;}

tmt.validator.boxValidatorFactory =function(boxGroup){var obj =tmt.validator.groupValidatorFactory(boxGroup);obj.type ="checkbox";var minchecked =0;var maxchecked =boxGroup.length;
for(var i=0;i<boxGroup.length;i++){if(boxGroup[i].getAttribute("tmt:minchecked")){minchecked =boxGroup[i].getAttribute("tmt:minchecked");}
if(boxGroup[i].getAttribute("tmt:maxchecked")){maxchecked =boxGroup[i].getAttribute("tmt:maxchecked");}
}

obj.isValid =function(){var checkCounter =0;for(var i=0;i<boxGroup.length;i++){
if(boxGroup[i].checked){checkCounter++;}
}
return (checkCounter >=minchecked)&&(checkCounter <=maxchecked);}

return obj;}

tmt.validator.radioValidatorFactory =function(radioGroup){var obj =tmt.validator.groupValidatorFactory(radioGroup);obj.type ="radio";obj.isRequired =function(){var requiredFlag =false;
for(var i=0;i<radioGroup.length;i++){if(radioGroup[i].disabled ==false){if(radioGroup[i].getAttribute("tmt:required")){requiredFlag =radioGroup[i].getAttribute("tmt:required");}
}
}
return requiredFlag;}


obj.isValid =function(){if(obj.isRequired()){for(var i=0;i<radioGroup.length;i++){
if(radioGroup[i].checked){return true;}
}
return false;}

else{return true;}
}
return obj;}


tmt.validator.rules ={};tmt.validator.rules.datepattern =function(fieldNode){var datObj =tmt.validator.dateStrToObj(fieldNode.value,fieldNode.getAttribute("tmt:datepattern"));if(datObj){return true;}
return false;}
tmt.validator.rules.maxdate =function(fieldNode){var pattern =tmt.validator.DEFAULT_DATE_PATTERN;if(fieldNode.getAttribute("tmt:datepattern")){pattern =fieldNode.getAttribute("tmt:datepattern");}
var valueDate =tmt.validator.dateStrToObj(fieldNode.value,pattern);var maxDate =tmt.validator.dateStrToObj(fieldNode.getAttribute("tmt:maxdate"),pattern);if(valueDate &&maxDate){return valueDate <=maxDate;}
return false;}
tmt.validator.rules.mindate =function(fieldNode){var pattern =tmt.validator.DEFAULT_DATE_PATTERN;if(fieldNode.getAttribute("tmt:datepattern")){pattern =fieldNode.getAttribute("tmt:datepattern");}
var valueDate =tmt.validator.dateStrToObj(fieldNode.value,pattern);var minDate =tmt.validator.dateStrToObj(fieldNode.getAttribute("tmt:mindate"),pattern);if(valueDate &&minDate){return valueDate >=minDate;}
return false;}
tmt.validator.rules.equalto =function(fieldNode){var twinNode =document.getElementById(fieldNode.getAttribute("tmt:equalto"));return twinNode.value ==fieldNode.value;}
tmt.validator.rules.maxlength =function(fieldNode){if(fieldNode.value.length >fieldNode.getAttribute("tmt:maxlength")){return false;}
return true;}
tmt.validator.rules.maxnumber =function(fieldNode){if(parseFloat(fieldNode.value)>fieldNode.getAttribute("tmt:maxnumber")){return false;}
return true;}
tmt.validator.rules.minlength =function(fieldNode){if(fieldNode.value.length <fieldNode.getAttribute("tmt:minlength")){return false;}
return true;}
tmt.validator.rules.minnumber =function(fieldNode){if(parseFloat(fieldNode.value)<fieldNode.getAttribute("tmt:minnumber")){return false;}
return true;}

function creeXMLHttpRequestObject()
{var objRequette =null;try {objRequette =new ActiveXObject("Microsoft.XMLHTTP");
}
catch (Error){try {objRequette =new ActiveXObject("MSXML2.XMLHTTP");
}
catch (Error){try {objRequette =new XMLHttpRequest();
}
catch(Error){try {objRequette =window.createRequest();
}
catch(Error){alert("Impossible de creer l'objet XMLHttpRequest");objRequette =false;}
}
}
}
return objRequette;}

tmt.validator.rules.EmailFormat =function(fieldNode){
url ="../../sources/gene/gene_verifEmailHexilion.asp?email="+fieldNode.value +"&niveau="+fieldNode.getAttribute("tmt:EmailFormat");
var retour =false;var req =new creeXMLHttpRequestObject();
req.open ("GET",url,false);req.send(null);if (req.readyState ==4)
{
if (req.responseText =="VALIDE")
retour =true;else
retour =false;}
return retour;}
tmt.validator.rules.pattern =function(fieldNode){var reg =tmt.validator.patterns[fieldNode.getAttribute("tmt:pattern")];if(reg){
if (fieldNode.getAttribute("tmt:pattern").indexOf('no')==0)
return !reg.test(fieldNode.value);else
return reg.test(fieldNode.value);}
else{
return true;}
}

tmt.validator.patterns ={};tmt.validator.patterns.email =new RegExp("^[\\w\\.=-]+@[\\w\\.-]+\\.[\\w\\.-]{2,4}$");tmt.validator.patterns.lettersonly =new RegExp("^[a-zA-Z]*$");tmt.validator.patterns.alphanumeric =new RegExp("^\\w*$");tmt.validator.patterns.integer =new RegExp("^-?\\d\\d*$");tmt.validator.patterns.positiveinteger =new RegExp("^\\d\\d*$");tmt.validator.patterns.number =new RegExp("^-?(\\d\\d*\\.\\d*$)|(^-?\\d\\d*$)|(^-?\\.\\d\\d*$)");tmt.validator.patterns.filepath_pdf =new RegExp("[\\w_]*\\.([pP][dD][fF])$");tmt.validator.patterns.filepath_jpg_gif =new RegExp("[\\w_]*\\.([gG][iI][fF])|([jJ][pP][eE]?[gG])$");tmt.validator.patterns.filepath_jpg =new RegExp("[\\w_]*\\.([jJ][pP][eE]?[gG])$");tmt.validator.patterns.filepath_zip =new RegExp("[\\w_]*\\.([zZ][iI][pP])$");tmt.validator.patterns.filepath =new RegExp("[\\w_]*\\.\\w{3}$");tmt.validator.patterns.nospecialchar =new RegExp(/[\*|%|!|\[|\]|\{|\}|_|#|=|~|\||\^|°|§|¤|\+|µ|¨]/);
tmt.validator.patterns.webSite =new RegExp("^(http\\://)?([a-zA-Z0-9\\.\\-]+(\\:[a-zA-Z0-9\\.&amp;%\\$\\-]+)*@)?((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\\-]+\\.)*[a-zA-Z0-9\\-]+\\.[a-zA-Z]{2,4})(\\:[0-9]+)?(/[^/][a-zA-Z0-9\\.\\,\\?\\'\\\\/\\+&amp;%\\$#\\=~_\\-@]*)*$","g");

tmt.validator.datePatterns ={};
tmt.validator.createDatePattern =function(rex,year,month,day,separator){var infoObj ={};infoObj.rex =new RegExp(rex);infoObj.y =year;infoObj.m =month;infoObj.d =day;infoObj.s =separator;return infoObj;}
tmt.validator.datePatterns["YYYY-MM-DD"]=tmt.validator.createDatePattern("^\([0-9]{4}\)\\-\([0-1][0-9]\)\\-\([0-3][0-9]\)$",0,1,2,"-");tmt.validator.datePatterns["YYYY-M-D"]=tmt.validator.createDatePattern("^\([0-9]{4}\)\\-\([0-1]?[0-9]\)\\-\([0-3]?[0-9]\)$",0,1,2,"-");tmt.validator.datePatterns["MM.DD.YYYY"]=tmt.validator.createDatePattern("^\([0-1][0-9]\)\\.\([0-3][0-9]\)\\.\([0-9]{4}\)$",2,0,1,".");tmt.validator.datePatterns["M.D.YYYY"]=tmt.validator.createDatePattern("^\([0-1]?[0-9]\)\\.\([0-3]?[0-9]\)\\.\([0-9]{4}\)$",2,0,1,".");tmt.validator.datePatterns["MM/DD/YYYY"]=tmt.validator.createDatePattern("^\([0-1][0-9]\)\/\([0-3][0-9]\)\/\([0-9]{4}\)$",2,0,1,"/");tmt.validator.datePatterns["M/D/YYYY"]=tmt.validator.createDatePattern("^\([0-1]?[0-9]\)\/\([0-3]?[0-9]\)\/\([0-9]{4}\)$",2,0,1,"/");tmt.validator.datePatterns["MM-DD-YYYY"]=tmt.validator.createDatePattern("^\([0-21][0-9]\)\\-\([0-3][0-9]\)\\-\([0-9]{4}\)$",2,0,1,"-");tmt.validator.datePatterns["M-D-YYYY"]=tmt.validator.createDatePattern("^\([0-1]?[0-9]\)\\-\([0-3]?[0-9]\)\\-\([0-9]{4}\)$",2,0,1,"-");tmt.validator.datePatterns["DD.MM.YYYY"]=tmt.validator.createDatePattern("^\([0-3][0-9]\)\\.\([0-1][0-9]\)\\.\([0-9]{4}\)$",2,1,0,".");tmt.validator.datePatterns["D.M.YYYY"]=tmt.validator.createDatePattern("^\([0-3]?[0-9]\)\\.\([0-1]?[0-9]\)\\.\([0-9]{4}\)$",2,1,0,".");tmt.validator.datePatterns["DD/MM/YYYY"]=tmt.validator.createDatePattern("^\([0-3][0-9]\)\/\([0-1][0-9]\)\/\([0-9]{4}\)$",2,1,0,"/");tmt.validator.datePatterns["D/M/YYYY"]=tmt.validator.createDatePattern("^\([0-3]?[0-9]\)\/\([0-1]?[0-9]\)\/\([0-9]{4}\)$",2,1,0,"/");tmt.validator.datePatterns["DD-MM-YYYY"]=tmt.validator.createDatePattern("^\([0-3][0-9]\)\\-\([0-1][0-9]\)\\-\([0-9]{4}\)$",2,1,0,"-");tmt.validator.datePatterns["D-M-YYYY"]=tmt.validator.createDatePattern("^\([0-3]?[0-9]\)\\-\([0-1]?[0-9]\)\\-\([0-9]{4}\)$",2,1,0,"-");
tmt.validator.filters ={};
tmt.validator.filters.init =function(fields){for(var i=0;i<fields.length;i++){if(fields[i].getAttribute("tmt:filters")){
tmt.addEvent(fields[i],"keyup",function(){tmt.validator.filterField(this);});tmt.addEvent(fields[i],"blur",function(){tmt.validator.filterField(this);});}
}
}

tmt.validator.createFilter =function(rex,replaceStr){var infoObj ={};infoObj.rex =new RegExp(rex,"g");infoObj.str =replaceStr;return infoObj;}
tmt.validator.filters.ltrim =tmt.validator.createFilter ("^(\\s*)(\\b[\\w\\W]*)$","$2");tmt.validator.filters.rtrim =tmt.validator.createFilter ("^([\\w\\W]*)(\\b\\s*)$","$1");tmt.validator.filters.nospaces =tmt.validator.createFilter ("\\s*","");tmt.validator.filters.nocommas =tmt.validator.createFilter (",","");tmt.validator.filters.nodots =tmt.validator.createFilter ("\\.","");tmt.validator.filters.noquotes =tmt.validator.createFilter ("'","");tmt.validator.filters.nodoublequotes =tmt.validator.createFilter ('"',"");tmt.validator.filters.nohtml =tmt.validator.createFilter ("<[^>]*>","");tmt.validator.filters.alphanumericonly =tmt.validator.createFilter ("[^\\w]","");tmt.validator.filters.numbersonly =tmt.validator.createFilter ("[^\\d]","");tmt.validator.filters.lettersonly =tmt.validator.createFilter ("[^a-zA-Z]","");tmt.validator.filters.commastodots =tmt.validator.createFilter (",",".");tmt.validator.filters.dotstocommas =tmt.validator.createFilter ("\\.",",");tmt.validator.filters.numberscommas =tmt.validator.createFilter ("[^\\d,]","");tmt.validator.filters.numbersdots =tmt.validator.createFilter ("[^\\d\\.]","");
tmt.validator.filters.alphanumericquote =tmt.validator.createFilter ("[^\\w\\'\\ \\é\\à\\ê\\è\\û\\ï\\ç\\-\\@\\ñ\\ë\\.]","");
tmt.validator.filterField =function(fieldNode){var filtersArray =fieldNode.getAttribute("tmt:filters").split(",");
if(window.event){var code =window.event.keyCode;if((code ==37)||(code ==38)||(code ==39)||(code ==40)){return;}
}
for(var i=0;i<filtersArray.length;i++){var filtObj =tmt.validator.filters[filtersArray[i]];
if(filtObj){fieldNode.value =fieldNode.value.replace(filtObj.rex,filtObj.str)
}

if(filtersArray[i]=="demoronizer"){fieldNode.value =tmt.form.stringDemoronizer(fieldNode.value);}
}
}


tmt.validator.dateStrToObj =function(dateStr,datePattern){var globalObj =tmt.validator.datePatterns[datePattern];if(globalObj){
var dateBits =dateStr.split(globalObj.s);
var testDate =new Date(dateBits[globalObj.y],(dateBits[globalObj.m]-1),dateBits[globalObj.d]);
var isDate =(testDate.getFullYear()==dateBits[globalObj.y])
&&(testDate.getMonth()==dateBits[globalObj.m]-1)
&&(testDate.getDate()==dateBits[globalObj.d]);
if(isDate &&globalObj.rex.test(dateStr)){return testDate;}
return null;}
return null;}


tmt.validator.getCallback =function(formNode){if(formNode.getAttribute("tmt:callback")){return formNode.getAttribute("tmt:callback");}
return tmt.validator.DEFAULT_CALLBACK;}



tmt.validator.defaultCallback =function(formNode,validators){var errorMsg ="";var focusGiven =false;for(var i=0;i<validators.length;i++){
errorMsg +=validators[i].message +"\n";
if(!focusGiven &&(validators[i].getFocus)){validators[i].getFocus();focusGiven =true;}
}
if(errorMsg !=""){
alert(errorMsg);}
}

tmt.validator.errorBoxCallback =function(formNode,validators){
if(validators.length ==0){tmt.form.removeDisplayBox(formNode);return;}
var focusGiven =false;var htmlStr ="<ul>";
for(var i=0;i<validators.length;i++){htmlStr +="<li><em>"+validators[i].name +": </em> "+validators[i].message +"</li>";
if(!focusGiven &&(validators[i].getFocus)){validators[i].getFocus();focusGiven =true;}
}
htmlStr +="</ul>";tmt.form.displayErrorMessage(formNode,htmlStr);}

tmt.validator.multiSectionDefaultCallback =function(formNode,hasErrors,sectionResults){var errorMsg ="";for(var i=0;i<sectionResults.length;i++){
if(sectionResults[i].validators.length ==0){continue;}
var validators =sectionResults[i].validators;for(var k=0;k<validators.length;k++){errorMsg +=validators[k].message +"\n";}
}
if(errorMsg !=""){
alert(errorMsg);}
}

tmt.validator.multiSectionBoxCallback =function(formNode,hasErrors,sectionResults){
if(!hasErrors){tmt.form.removeDisplayBox(formNode);return;}
var htmlStr ="<ul>";
for(var i=0;i<sectionResults.length;i++){
if(sectionResults[i].validators.length ==0){continue;}
htmlStr +="<li><strong>"+sectionResults[i].label +"</strong>";var validators =sectionResults[i].validators;htmlStr +="<ul>";for(var k=0;k<validators.length;k++){htmlStr +="<li><em>"+validators[k].name +": </em> "+validators[k].message +"</li>";}
htmlStr +="</ul></li>";}
htmlStr +="</ul>";tmt.form.displayErrorMessage(formNode,htmlStr);}

tmt.validator.defaultFieldCallback =function(fieldNode,validator){if(validator){tmt.validator.defaultCallback(fieldNode.form,[validator]);}
}

tmt.validator.errorBoxFieldCallback =function(fieldNode,validator){if(validator){tmt.validator.errorBoxCallback(fieldNode.form,[validator]);}
else{tmt.validator.errorBoxCallback(fieldNode.form,[]);}
}
tmt.addEvent(window,"load",tmt.validator.init);