
function defineXMLObject()
{var xhr_object=null;if(window.XMLHttpRequest){xhr_object=new XMLHttpRequest();}
else if(window.ActiveXObject){xhr_object=new ActiveXObject("Microsoft.XMLHTTP");}
else{alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");return;}
return xhr_object;}
function xmlFORMRequest(formQ,fichierTraitementsServeur)
{data=getQueryString(formQ);requestXMLObject(data,'FORM',fichierTraitementsServeur);}
function xmlPOSTRequest(data,fichierTraitementsServeur)
{requestXMLObject(data,'POST',fichierTraitementsServeur);}
function requestXMLObject(data,method,fichierTraitementsServeur)
{var xhr_object=null;xhr_object=defineXMLObject();try{xhr_object.open(method,fichierTraitementsServeur+data,true);}
catch(err){alert("Erreur de parsing du fichier XML"+err);}
xhr_object.onreadystatechange=function(){if(xhr_object.readyState==4){if(xhr_object.status==200){if(xhr_object.responseXML!=null){reponse=defineROOTElement(xhr_object.responseXML);deepIntoNode(reponse,0);}
else{alert('Erreur : '
+"\n¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\n"
+xhr_object.responseText);}}
else if(xhr_object.status==404)
alert("Fichier "+fichierTraitementsServeur+" introuvable ! \n(Code "+xhr_object.status+" : "+xhr_object.statusText+")");else
alert("Code d'erreur non gérée :\n (Code "+xhr_object.status+" : "+xhr_object.statusText+")");}}
if(method=="POST"){xhr_object.setRequestHeader("Content-type","application/x-www-form-urlencoded");xhr_object.send(data);}
else{xhr_object.send(fichierTraitementsServeur+'&'+data);}}
function defineROOTElement(reponseXML)
{var rootElement=null;if(reponseXML.firstChild!=null&&reponseXML.childNodes.length==1){rootElement=reponseXML.firstChild;}
else if(reponseXML.childNodes[1].nodeType!=3&&reponseXML.childNodes.length==2){rootElement=reponseXML.childNodes[1];}
else if(reponseXML.childNodes[1].nodeType!=3){rootElement=reponseXML.childNodes[1];}
else
alert('Votre navigateur n\'est pas supporté ! Désolé.');return rootElement;}
function useXMLResult(){}
function getQueryString(formQ){var data="";for(var i=0;i<formQ.elements.length;i++){if(i!=0)
data+="&";data+=formQ.elements[i].name+"="+getValueFromFormElement(formQ.elements[i]);}
return data;}
function getValueFromFormElement(element){switch(element.nodeName.toUpperCase()){case'BUTTON':;case'TEXTAREA':;case'INPUT':;case'OPTION':;case'RADIO':return element.value;break;case'SELECT':return(element.selectedIndex!=-1?(element.options[element.selectedIndex].value!=""?element.options[element.selectedIndex].value:element.options[element.selectedIndex].innerHTML):0);break;}}
function deepIntoNode(node,level){if(node.nodeType!=3)
{if(node.childNodes.length==0){}
else{for(var i=getIndicePremierEnfant();i<node.childNodes.length;i++){if(node.childNodes[i]!=null)
{deepIntoNode(node.childNodes[i],level+1);}}}
fillNode(node);}}
function getNodeAttribute(node,attributeName){var attributeValue=null;if(node.attributes.length>0){for(var i=0;i<node.attributes.length;i++)
if(node.attributes[i].nodeName==attributeName)
attributeValue=node.attributes[i].nodeValue;return attributeValue;}}
function getNodeType(node,nodeID){var nodeType=null;if(nodeID!=null){if(document.getElementById(nodeID)!=null)
nodeType=document.getElementById(nodeID).nodeName;}
return nodeType;}
function fillNode(node){var nodeID=getNodeAttribute(node,'id');var mode=getNodeAttribute(node,'mode');var callback=getNodeAttribute(node,'fonction');if(callback!=null&&callback!="")
{eval(callback+"(node)");}
var nodeType=getNodeType(node,nodeID);switch((nodeType==null?'':nodeType.toUpperCase())){case'DIV':;case'PRE':;case'SPAN':;case'P':;case'BLOCKQUOTE':;case'H1':;case'H2':;case'H3':;case'H4':;case'H5':;case'H6':;case'UL':;case'LI':;case'EM':;case'STRONG':;case'TD':;case'A':;case'BUTTON':;case'TEXTAREA':fillContainer(node,nodeID,mode);break;case'IMG':fillImage(node,nodeID,mode);break;case'INPUT':;case'OPTION':;case'RADIO':fillInput(node,nodeID,mode);break;case'SELECT':fillSelect(node,nodeID,mode);break;case'IFRAME':filliFrame(node,nodeID,mode);break;case'TBODY':;case'TR':;case'TABLE':fillTable(node,nodeID);break;}}
function getIndicePremierEnfant(){if(window.XMLHttpRequest)
return 0;else if(window.ActiveXObject)
return 0;else
return null;}
function fillContainer(node,id,mode){if(node.firstChild!=null&&node.firstChild.data!=null){var element=document.getElementById(id);if(mode=='a'){element.innerHTML+=' '+node.firstChild.data;}
else if(mode=='abr'){element.innerHTML+='<br>'+node.firstChild.data;}
else{element.innerHTML=node.firstChild.data;}
ajaxDomActionLinker(element);}
else if(mode=='clear'){document.getElementById(id).innerHTML='';}}
function ajaxDomActionLinker(parentElement){var linkElems=getElementsByClass("ajax",parentElement,"a");var formElems=getElementsByClass("ajax",parentElement,"form");var myRegExp="/"+domaine+"/";var matchPos1=document.URL.search(myRegExp);var startToLookFrom=domaine.length+matchPos1;for(var e in formElems){e=formElems[e];if(e.action){var relativeURI=e.action.substr(startToLookFrom+1,e.action.length-startToLookFrom);var parts=relativeURI.split("#");if(parts.length>1){var destination=parts[parts.length-1];relativeURI=parts[0];}
else{var destination='panneauCentral';}
e.setAttribute('onsubmit',"javascript:postFormAndLoadAjaxContent(this, '"+relativeURI+"', '"+destination+"'); return false;");}}
for(var e in linkElems){e=linkElems[e];if(e.href){var relativeURI=e.href.substr(startToLookFrom+1,e.href.length-startToLookFrom);var parts=relativeURI.split("#");if(parts.length>1){var destination=parts[parts.length-1];relativeURI=parts[0];}
else{var destination='panneauCentral';}
e.setAttribute('onclick',"javascript:loadAjaxContent('"+relativeURI+"', '"+destination+"'); return false;");}}}
function fillInput(node,id,mode){if(node.firstChild.data!=null){if(mode=='a')
document.getElementById(id).value+=node.firstChild.data;else
document.getElementById(id).value=node.firstChild.data;}}
function fillImage(node,id,mode){if(node.firstChild.data!=null){document.getElementById(id).src=node.firstChild.data;}}
function fillSelect(node,id,mode){if(mode!='a')
document.getElementById(id).options.length=0;for(var i=getIndicePremierEnfant();i<node.childNodes.length;i++)
if(node.childNodes[i]!=null)
addOneOptionToSelect(node.childNodes[i],id);}
function addOneOptionToSelect(node,id,mode){if(getNbElements(node)==2){var y=0;var i1=null;var i2=null;for(var i=getIndicePremierEnfant();i<node.childNodes.length;i++)
if(node.childNodes[i]!=null)
{if(node.childNodes[i].nodeType!=3)
{y++;if(y==1)
i1=i;else if(y==2)
i2=i;}}
var opt=new Option(node.childNodes[i1].firstChild.data,node.childNodes[i2].firstChild.data);document.getElementById(id).options.add(opt);}}
function getNbElements(node){var nbElements=0;for(var i=0;i<node.childNodes.length;i++)
if(node.childNodes[i].nodeType!=3)
nbElements++;return nbElements;}
function fillTable(node,id){for(var i=getIndicePremierEnfant();i<node.childNodes.length;i++){if(node.childNodes[i].nodeType!=3){var elementType=getNodeAttribute(node.childNodes[i],'elementType');var mode=getNodeAttribute(node.childNodes[i],'mode');if(elementType=="tbody")
fillTBody(node.childNodes[i],id,mode);else if(elementType=="thead")
fillTHead(node.childNodes[i],id,mode);else
fillTBody(node.childNodes[i],id,mode);}}}
function fillTHead(node,id,mode){if(mode==null||mode==""){if(document.getElementById(id).childNodes.length!=0)
document.getElementById(id).replaceChild(document.createElement("thead"),document.getElementById(id).getElementsByTagName('thead')[0]);}
var ligne=document.createElement("tr");for(var i=getIndicePremierEnfant();i<node.childNodes.length;i++){if(node.childNodes[i].nodeType!=3){var cellule=document.createElement("th");cellule.appendChild(document.createTextNode(node.childNodes[i].firstChild.data));ligne.appendChild(cellule);}}
document.getElementById(id).childNodes[0].appendChild(ligne);}
function fillTBody(node,id,mode){if(mode==null||mode==""){if(document.getElementById(id).childNodes.length!=0)
document.getElementById(id).replaceChild(document.createElement("tbody"),document.getElementById(id).getElementsByTagName('tbody')[0]);}
var ligne=document.createElement("tr");for(var i=getIndicePremierEnfant();i<node.childNodes.length;i++){if(node.childNodes[i].nodeType!=3){var cellule=document.createElement("td");cellule.appendChild(document.createTextNode(node.childNodes[i].firstChild.data));ligne.appendChild(cellule);}}
document.getElementById(id).childNodes[0].appendChild(ligne);}
function filliFrame(node,id){document.getElementById(id).src=node.firstChild.data;}
ajaxDomActionLinker(document);