//-------------------------Ajax Lib--------------------------------------------
if(!gtiFwk)             var gtiFwk          = new Object();
if(!gtiFwk.gtiAjaxLib)  gtiFwk.gtiAjaxLib   = new Object();

gtiFwk.gtiAjaxLib = {
    //--debut refactoring ajax
    updateDOMCnt : function(hlink, idDomElem) {
        var objDom = dojo.byId(idDomElem);
        gtiFwk.gtiAjaxLib.utilDojoDestroyRecursive(objDom, false);
        gtiFwk.tinyMceTool.cleanEditor(idDomElem);
        gtiFwk.gtiJsLib.setToWaitStatus(idDomElem);
        dojo.xhrPost( {
            url : hlink,
            handleAs : 'text',
            load : function(response, ioArgs) {
                var tResponse=response.split(gtiFwk.appFwkConsts.HTML_JS_SEPERATOR);
                if (tResponse.length > 1){
                    objDom.innerHTML = tResponse[0];
                    eval(tResponse[1]);
                    dojo.parser.parse(objDom);
                    gtiFwk.tinyMceTool.parseDom(idDomElem);
                }else {
                    objDom.innerHTML = tResponse[0];
                    dojo.parser.parse(objDom);
                    gtiFwk.tinyMceTool.parseDom(idDomElem);
                }
                return true;
            },
            error : function(response, ioArgs) {
                /*var errMsg = 'link: ' + hlink + '\n response: ' + response
						+ '\n HTTP status code: ' + ioArgs.xhr.status;*/
                objDom.innerHTML = "<b><font color='red'>Une Erreur s'est produite : </font></b></br>";
                objDom.innerHTML +="<b><font color='red'>Link : </font></b>"+hlink;
                objDom.innerHTML +="</br><b><font color='red'>Réponse : </font></b>"+response;
                objDom.innerHTML +="</br><b><font color='red'>Code Status HTTP : \n\
                        </font></b>"+ioArgs.xhr.status;
            //alert(errMsg);
            }
        });
    },
    /*---------------------------------------------------------------------------
	                         updateDOMCntWithForm
	   --------------------------------------------------------------------------*/
    updateDOMCntWithForm : function(hlink, idDomElem, idFrm) {
        if (dijit.byId(idFrm).validate() == false) {
            alert('Données saisies non valides');
            return;
        }
        var objDom = dojo.byId(idDomElem);
        gtiFwk.gtiAjaxLib.utilDojoDestroyRecursive(objDom, false);
        gtiFwk.tinyMceTool.cleanEditor(idDomElem);
        gtiFwk.gtiJsLib.setToWaitStatus(idDomElem);
        dojo.xhrPost( {
            url : hlink,
            form : dojo.byId(idFrm),
            handleAs : 'text',
            load : function(response, ioArgs) {
                var tResponse=response.split(gtiFwk.appFwkConsts.HTML_JS_SEPERATOR);
                if (tResponse.length > 1){
                    objDom.innerHTML = tResponse[0];
                    eval(tResponse[1]);
                    dojo.parser.parse(objDom);
                    gtiFwk.tinyMceTool.parseDom(idDomElem);
                }
                else {
                    objDom.innerHTML = tResponse[0];
                    dojo.parser.parse(objDom);
                    gtiFwk.tinyMceTool.parseDom(idDomElem);
                }
            },
            error : function(response, ioArgs) {
                var errMsg = 'link: ' + hlink + '\n response: ' + response
                + '\n HTTP status code: ' + ioArgs.xhr.status;
                alert(errMsg);
            }
        });
    },
    updateDOMCntWithFormIo:function (hlink,idDomElem,idFrm) {
        // --- Validation formulaire ---------------
        if(dijit.byId(idFrm).validate()==false){
            alert('Données saisies non valides !');
            return;
        }// end validation
        // ----cas editors -----------------------
        gtiFwk.gtiAjaxLib.utilUpdateValueEditors(idFrm);
        // ----------
        var objDom = dojo.byId(idDomElem);
        gtiFwk.tinyMceTool.cleanEditor(idDomElem);
        gtiFwk.gtiAjaxLib.utilDojoDestroyRecursive(objDom, false);
        gtiFwk.gtiJsLib.setToWaitStatus(idDomElem);

        dojo.io.iframe.send({
            url : hlink,
            form:dojo.byId(idFrm),
            handleAs : 'text',
            handle: function(response,ioArgs){
                var tResponse=response.split(gtiFwk.appFwkConsts.HTML_JS_SEPERATOR);
                if (tResponse.length > 1){
                    objDom.innerHTML = tResponse[0];
                    eval(tResponse[1]);
                    dojo.parser.parse(objDom);
                    gtiFwk.tinyMceTool.parseDom(idDomElem);
                } else {
                    objDom.innerHTML = tResponse[0];
                    dojo.parser.parse(objDom);
                    gtiFwk.tinyMceTool.parseDom(idDomElem);
                }
            }
        });
    },
    utilUpdateValueEditors : function(idForm){
        var listChilds=dijit.findWidgets(dojo.byId(idForm));
        var longListChilds =listChilds.length;
        for(var i=0;i<longListChilds;i++){
            idDojoElem=listChilds[i].id;
            typeDojoElem=listChilds[i].declaredClass;
            if(typeDojoElem=='dijit.Editor'){
                document.getElementById(idDojoElem).value =dijit.byId(idDojoElem).getValue();
            }
        }
    },
    /* -----------------------------------------------------------------------------
	 Détruit une dijit ainsi que ses fils de manière récursive
	---------------------------------------------------------------------------*/
    utilDojoDestroyRecursive : function(domElem, boolDestroyParent) {
        var listChilds = dijit.findWidgets(dojo.byId(domElem.id));
        var longListChilds = listChilds.length;
        for ( var i = 0; i < longListChilds; i++) {
            foo2 = dijit.findWidgets(dojo.byId(listChilds[i].id));
            if (foo2.length > 0) {
                gtiFwk.gtiAjaxLib.utilDojoDestroyRecursive(dojo
                    .byId(listChilds[i].id), true);
            } else {
                listChilds[i].destroy();
            }
        }
        if (boolDestroyParent) {
            dijit.byId(domElem.id).destroy();
        }
        return true;
    },
    /**
     * showDojoDialog_updateDOMCnt
     */
    showDojoDialog_updateDOMCnt : function(hlink,title,style){
        //vider le contenu du divMsg
        document.getElementById('divMsg').innerHTML='';
        if(title) dijit.byId('divDialog_global').attr('title',title);
        if(style) dijit.byId('divDialog_global').attr('style',style);
        gtiFwk.gtiAjaxLib.updateDOMCnt(hlink,'divDialog');
        dijit.byId('divDialog_global').show();
    },

    /**
     * hideDojoDialog
     */
    hideDojoDialog : function(){
        dijit.byId('divDialog_global').hide();
    },
    /**
     * showDojoDialog
     */
    showDojoDialog : function(){
        dijit.byId('divDialog_global').show();
    },
    /**
     * cleanDojoDialog
     */
    cleanDojoDialog:function(){
        gtiFwk.dojoTools.gtiAjaxLib.utilDojoDestroyRecursive(dojo.byId('divDialog_global'), false);
        document.getElementById('divDialog').innerHTML='';
    },
    cleanHtmlDom : function(idDomElem){        
        var objDom = dojo.byId(idDomElem);        
        gtiFwk.tinyMceTool.cleanEditor(idDomElem);
        gtiFwk.gtiAjaxLib.utilDojoDestroyRecursive(objDom, false);
        dojo.byId(idDomElem).innerHTML="";
    },
    deleteElemnt : function(hlink, idDomElem, idFrm) {
        var delMsg = "Etes vous sûr de vouloir supprimer cet élément ?";
        if (!confirm(delMsg)) {
            return;
        }
        document.forms[idFrm].elements['frmAction'].value = 'delete';
        gtiFwk.gtiAjaxLib.updateDOMCntWithForm (hlink, idDomElem, idFrm);
    },























    
    //fin refactoring ajax
    //--------------------------------------------------
    //	getXhr
    //--------------------------------------------------
    util_getXhr: function (){
        var xhr = null;
        if(window.XMLHttpRequest) // Firefox et autres
            xhr = new XMLHttpRequest();
        else if(window.ActiveXObject){ // Internet Explorer
            try {
                xhr = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        else { // XMLHttpRequest non support par le navigateur
            alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
            xhr = false;
        }
        return xhr;
    }//function
    ,

    //--------------------------------------------------
    //	innerHTMLJS
    //--------------------------------------------------
    util_innerHTMLJS: function (obj,content){
        if(typeof(obj) != 'object' && typeof(content) != 'string') return;
        obj.innerHTML = content;
        //obj.innerText = content;
        var scripts = obj.getElementsByTagName('script');
        if(scripts == false) return true; // no node script == no problem !
        for (var i=0;i<scripts.length;i++)
        {
            var scriptclone = document.createElement('script');
            if(scripts[i].attributes.length > 0) /* boucle de copie des attributs du script dans le nouveau node */
            {
                for (var j in scripts[i].attributes)
                {
                    if(typeof(scripts[i].attributes[j]) != 'undefined'
                        && typeof(scripts[i].attributes[j].nodeName) != 'undefined' /* IE needs it */
                        && scripts[i].attributes[j].nodeValue != null
                        && scripts[i].attributes[j].nodeValue != '' /* IE needs it ou il copie des nodes vides */)
                        {
                        scriptclone.setAttribute(scripts[i].attributes[j].nodeName,scripts[i].attributes[j].nodeValue);
                    }
                }
            }
            scriptclone.text = scripts[i].text; // on copie le corp du script
            /* on force le remplacement du node par dom, qui a pour effet de forcer le parsing du javascript */
            scripts[i].parentNode.replaceChild(scriptclone,scripts[i]);
        }
        return true;
    }//function
    ,
    //--------------------------------------------------
    //	setToWaitStatus
    //--------------------------------------------------
    util_setToWaitStatus: function (divId){
        document.getElementById(divId).innerHTML="<p align=center><img id='indicator' src='sys_resources/images/sys_icons/indicator.gif' ></p><p align='center' class='dbMsg'>Chargement en cours ...</p>";
    //document.getElementById(divId).innerHTML="<p align='center' class='info'>"+document.getElementById("msgWhait").value+"</p>";
    }//function
    ,
    //--------------------------------------------------
    //	updateMainCnt
    //--------------------------------------------------
    updateDivContent: function (hlink,divId){
        var divObj = document.getElementById(divId);
        if(!divObj){
            alert("Erreur dans 'updateDivContent'_js \r\n l'objet DOM '"+divId+"' est introuvable");
            return;
        }
        var xhr = gtiFwk.gtiAjaxLib.util_getXhr();
        xhr.onreadystatechange = function(){
            if((xhr.readyState == 4 && xhr.status == 200)){
                var strRes = xhr.responseText;
			
                if(document.getElementById("divError")){
                    document.getElementById("divError").style.display="none";
                    document.getElementById("contentDivError").innerText="";
                    document.getElementById("liste_triDesc").style.display="";
                    document.getElementById("liste_triAsc").style.display="none";
                }
                if(document.getElementById("dtDiv"))document.getElementById("dtDiv").style.visibility = "hidden";
                var strResVect = xhr.responseText.split('****');
                if(strResVect.length==2){
                    var strResJs   =strResVect[1];
                    var strResHtml =strResVect[0];
                    //alert("strResJs\r\n"+strResJs);
                    divObj.innerHTML = strResHtml;
                    eval(strResJs);
				
                }
                else {
                    gtiFwk.gtiAjaxLib.util_innerHTMLJS(divObj,strResVect[0]);
                }

            }
            else if(xhr.readyState == 4 && xhr.status != 200) {
                alert('Fichier non trouvable ou erreur \r\n. Status :'+xhr.status +"\r\n hlink "+hlink);
            }
            else {
                gtiFwk.gtiAjaxLib.util_setToWaitStatus(divId);
            }
        }//function
        xhr.open("POST",hlink,true);
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        xhr.send(null);
    }//function
    ,
    //--------------------------------------------------
    //	updateDivContent_js
    //--------------------------------------------------
    updateDivContent_js: function (hlink,divId){
        //alert(hlink);
        var divObj = document.getElementById(divId);
        if(!divObj){
            alert("Erreur dans 'updateDivContent_js' \r\n l'objet DOM '"+divId+"' est introuvable");
            return;
        }
        var xhr = gtiFwk.gtiAjaxLib.util_getXhr();
        xhr.onreadystatechange = function(){
            if((xhr.readyState == 4 && xhr.status == 200)){
                //alert(xhr.responseText);
                var strResVect = xhr.responseText.split('****');
                if(strResVect.length==2){
                    var strResJs   =strResVect[1];
                    var strResHtml =strResVect[0];
                    //alert("strResJs\r\n"+strResJs);
                    divObj.innerHTML = strResHtml;
                    eval(strResJs);
				
                }
                else {
                    divObj.innerHTML = strResVect[0];
                }
            }
            else if(xhr.readyState == 4 && xhr.status != 200) {
                alert('Fichier non trouvable ou erreur \r\n. Status :'+xhr.status +"\r\n hlink "+hlink);
            }
            else {
                gtiFwk.gtiAjaxLib.util_setToWaitStatus(divId);
            }
        }//function
        xhr.open("POST",hlink,true);
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
        xhr.send(null);
    }//function
    ,
    //--------------------------------------------------
    //	updateDivContent_js
    //--------------------------------------------------
    appendAjaxResponseToDivContent_js: function (hlink,divId){
        //alert(hlink);
        var divObj = document.getElementById(divId);
        if(!divObj){
            alert("Erreur dans 'updateDivContent'_js \r\n l'objet DOM '"+divId+"' est introuvable");
            return;
        }
        var xhr = gtiFwk.gtiAjaxLib.util_getXhr();
        xhr.onreadystatechange = function(){
            if((xhr.readyState == 4 && xhr.status == 200)){
                //alert(xhr.responseText);
                var strResVect = xhr.responseText.split('****');
                if(strResVect.length==2){
                    var strResJs   =strResVect[1];
                    var strResHtml =strResVect[0];
                    //alert("strResJs\r\n"+strResJs);
                    tmp_ = divObj.innerHTML+strResHtml;
                    divObj.innerHTML = tmp_;
                    eval(strResJs);
                }
                else {
                    tmp_ = divObj.innerHTML+strResVect[0];
                    alert("Div content : "+divObj.innerHTML);
                    divObj.innerHTML = tmp_;
                }
            }
            else if(xhr.readyState == 4 && xhr.status != 200) {
                alert('Fichier non trouvable ou erreur \r\n. Status :'+xhr.status +"\r\n hlink "+hlink);
            }
            else { }
        }//function
        xhr.open("POST",hlink,true);
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
        xhr.send(null);
    }//function
    ,
    //-----------------------------------------------------------------
    //	rien :user for a cbo with empty event
    //-----------------------------------------------------------------
    //rien: function (){}
    //,
    //-----------------------------------------------------------------
    //	activeDiv_standardDoc
    //-----------------------------------------------------------------
    activeDiv_standardDoc: function (div){
        var pxAdded=0;//
        pxAdded    =400; // translater le dive new pour son affichage complait
        document.getElementById(div).style.display="";
        document.getElementById(div).style.left=Mouse.x-pxAdded;
        document.getElementById(div).style.top=Mouse.y+2;
    }//function
    ,
    //-----------------------------------------------------------------
    //	activeDiv_standard
    //-----------------------------------------------------------------
    activeDiv_standard: function (div){
        try{
            //var pxAdded=0;//
            document.getElementById(div).style.display="";
            document.getElementById(div).style.left=Mouse.x;
            document.getElementById(div).style.top=Mouse.y+2;
        }catch(ex){
            alert('une erreur s\'est produite sur la page: '+ex);
        }//catch
    }//function
    ,
    //-----------------------------------------------------------------
    //	sendFrmAjaxStandard
    //-----------------------------------------------------------------
    sendFrmStandard: function (bean,nature,div,idFrm,complements,strIds){
        if(gtiFwk.gtiForms.util_gtiFrm_validateFrm_sendFrm(strIds)==false) return;
        else {
            if(idFrm!="") complements+=gtiFwk.gtiLists.getFormAsString(idFrm);
            gtiFwk.gtiAjaxLib.sendRequestAjaxStandard(bean,nature,div,complements);
        }//else
    }//function
    ,
    //-----------------------------------------------------------------
    //	sendRequestAjaxStandard
    //-----------------------------------------------------------------
    sendRequestAjaxStandard: function (bean,nature,div,elemToSend){
        var xhr = gtiFwk.gtiAjaxLib.util_getXhr();
        xhr.onreadystatechange = function(){
            if(xhr.readyState == 4 && xhr.status == 200){
                var response=xhr.responseText;
                var obj=document.getElementById(div);
                gtiFwk.gtiAjaxLib.util_innerHTMLJS(obj,response);
            }//if
            else if(xhr.readyState == 4 && xhr.status != 200) {
                alert('Fichier non trouvable ou erreur \r\n. Status :'+xhr.status);
            }
            else gtiFwk.gtiAjaxLib.util_setToWaitStatus(div);
        }//if
        if(nature=='GET') xhr.open('GET',bean,true);
        else			  xhr.open('POST',bean,true);
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        xhr.send(elemToSend);
    }//function
    ,
    //-----------------------------------------------------------------
    //	verifCodeResponseIcon
    //-----------------------------------------------------------------
    verifCodeResponseIcon: function (server,send,img_msgVal,lib,id,validerFrm){ 
        value=document.getElementById(id).value;
        if(value=="") return;
        var xhr = gtiFwk.gtiAjaxLib.util_getXhr();
        xhr.onreadystatechange = function(){
            if((xhr.readyState == 4 && xhr.status == 200)){
                if(document.getElementById(validerFrm)) document.getElementById(validerFrm).disabled=false;
                var strRes = xhr.responseText;
                if(strRes.indexOf("Erreur....")!= -1){
                    var str=strRes.split("Erreur....");
                    if(document.getElementById(img_msgVal)) document.getElementById(img_msgVal).innerHTML=str[1];// icon 'non valide'
                    if(document.getElementById(lib)) 		document.getElementById(lib).innerHTML		 ="";
                    if(document.getElementById(id))         document.getElementById(id).value			 ="";
                    document.getElementById(id).focus();
                //alert("Code non valide");
                }
                else{
                    var str=strRes.split("::::");
                    if(document.getElementById(img_msgVal)) document.getElementById(img_msgVal).innerHTML=str[0];// icon 'valide'
                    if(document.getElementById(lib)){
                        if(str.length>=2) document.getElementById(lib).innerHTML =str[1];//libell� trouve
                        if(str.length>=3) document.getElementById(lib).innerHTML +=str[2];//les input hidden
                    }//if
                }//else
            }
            else {
                if(document.getElementById(img_msgVal)) document.getElementById(img_msgVal).innerHTML="<img id='indicator' src='sys_resources/images/sys_icons/indicator.gif'>";
                if(document.getElementById(validerFrm)) document.getElementById(validerFrm).disabled=true;
            }//else
        }//
        xhr.open("POST",server,true);
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        xhr.send("&"+send+"="+value);
    }//function
}//class

