
var sSepPrMsg4D="_ml__sep_";
var sSepPrMsgJS="<br>";

var zeContentGlob="";
var zeContentClic="";
var zeEvtAGerer="";
var baliseTitreQ="span";//was:a
var bAffCadreSel = true;

var clTblSel="table-sel";
var clTblSelStySpec="table-selspec";
var clTblHover="table-hover";
var clTblSelHover=clTblSel+" "+clTblHover+" "+clTblSelStySpec;
var tablNiv1_class = ["titGen", "soustitregen_td", "tablesection", "pageMultiCol", "formtbl", "boutonEnvoyer", "lien_sautDePage", "tabletxt", "tableimage", "tablevideo"] ; //"MLQrIdAff"
/*
function mjqDroppable(zeSelector, yn){
	if(zeSelector){
		if(zeSelector!=""){
			if(yn === "n"){
				$(zeSelector).droppable ({disabled: "true"});
			}else{
				$(zeSelector).droppable ({disabled: "false"});
			}
		}
	}
}

function mjqInputText2Vide(){
	var $txt=$(':text, textarea');
	if($txt.length > 0){
		$txt.val("");
	}
}
*/
function mjqInputTextReadonlyPourDrop(yn){  //pour drag/drop
	var $txt=$(':text, textarea');
	if($txt.length > 0){
		if(yn === "y"){
			$txt.attr('readonly', 'readonly');
		}else{
			$txt.removeAttr('readonly');
			$txt = $txt.filter(".readonly_nonjq");
			if($txt.length > 0){
				$txt.attr('readonly', 'readonly');
			}
		}
	}
}
function mjqPrint(){
    window.print();
    return 'ok';
}

function mjqTable_surCoordY(sPosY, zeContexte){
    var sIdElem="";
    var posY=parseInt(sPosY, 10);
    var posYElemSuiv = -1;
    var marginTopElemSuiv = -1;
    var sIdElemSuiv = "";
    var bRepasserExec1fois = false;
    if(posY>0){
    	var sSelector = "";
    	var s="";
    	for(var i=0; i<tablNiv1_class.length; i++){
    		s = tablNiv1_class[i];
    		if((s === "formtbl") || (s === "tableSection")) {
    			sSelector += "table[class*=" + s + "]";
    		}else{
    		    sSelector += "table." + s;
    		}
    		if(i < (tablNiv1_class.length - 1)){
    			sSelector += ",";
    		}
    	}
        //var $elems=$(sSelector );
        var $elems=$(sSelector).not("[class*=disp_none]"); //16/12/15:pr exclure les qu tjrs masquées
		if($elems.length>0){
            for (var iElem=($elems.length-1); iElem >= 0; iElem-- ){
            //for (var iElem = 0; iElem < $elems.length; iElem++ ){
            	var $elemCour = $elems.eq(iElem);
                sIdElem="";
                var posXYElem = $elems.eq(iElem).offset();
                var posYElem = posXYElem.top;
                
                if( posYElem <= posY){
                    var $elemAvecId = $elems.eq(iElem).find("[id]").not("[id^=codtitq]").not("[id^=csstit_]").not("[id^=csszs_]").not("[id^=Q]");
                    if($elemAvecId.length>0){
                        sIdElem = $elemAvecId.eq(0).attr('id');

                        // on cherche d'abord si dans grp
                        var $zeTableContenantSel = $elemAvecId.closest('table[class*=tablquregroup]').eq(0);
                        if($zeTableContenantSel.length>0){
                            sIdElem="";
                            var $elemAvecId = $zeTableContenantSel.find("[id^=grpquhomog], [id^=tablperso]");
                            if($elemAvecId.length>0){
                                $elemCour = $zeTableContenantSel;
                                sIdElem = $elemAvecId.eq(0).attr('id');
                            }
                        }
                        if(sIdElem === ""){
                            sIdElem = $elemAvecId.eq(0).attr('id');
                            if((sIdElem.indexOf("conspersoq") === 0) || (sIdElem.indexOf("tdsaisq") === 0) || (sIdElem.indexOf("Q") === 0) || (sIdElem.indexOf("titreq") === 0)){
                                var $zeTableContenantSel = $elemAvecId.closest('table[class*=formtbl]').eq(0);
                                if($zeTableContenantSel.length>0){
                                    var $elemAvecId = $zeTableContenantSel.find("[id]").not("[id^=codtitq]").not("[id^=csstit_]").not("[id^=csszs_]");
                                    if($elemAvecId.length>0){
                                        $elemCour = $zeTableContenantSel;
                                        sIdElem = $elemAvecId.eq(0).attr('id');
                                    }
                                }
                            }
                        }
                        if(sIdElem.indexOf("im") === 0){
                            // cas particulier de l'im logo de TG
                            var $zeTableContenantSel = $elemAvecId.closest('table[class*=logoname_table]').eq(0);
                            if($zeTableContenantSel.length>0){
                                $elemCour = $zeTableContenantSel;
                                sIdElem = $zeTableContenantSel.eq(0).attr('id');
                            }
                        }
                        if(sIdElem !== ""){
                       		var bSortir= true;
                       		if(zeContexte){
                       			if(zeContexte === "insere_sdp$"){
                       				bRepasserExec1fois = true; // on reste sur la qu prec
                       			}
                       		}
                        	if(!bRepasserExec1fois){
								if(iElem < ($elems.length-1)){
									if(posYElemSuiv > 0){
										if(marginTopElemSuiv > 0){
											if(posY >= (posYElemSuiv - marginTopElemSuiv )){
												//on est entre 2 elem
												posY = posYElemSuiv + 1;
												iElem = iElem + 2; //on repasse pr elem suiv
												bSortir = false;
												bRepasserExec1fois = true;
											}
										}
									}
								}
                        	}
                        	
                            if(bSortir){
                            	return sIdElem; //on sort
                            }
                        }
                    }
                }
            	if(posYElem>0){
            	    posXYElem = $elemCour.offset();
                	posYElem = posXYElem.top;
                	if(posYElem) posYElemSuiv = posYElem;
                	marginTopElemSuiv = $elemCour.css("margin-top");
                	marginTopElemSuiv = parseInt(marginTopElemSuiv, 10);
                }
                
            }
        }
    }
    return sIdElem;
}

function mjqErrQuFantome(zeIdQ){
	if(zeIdQ !== ""){
		var zeSelector = "#"+zeIdQ;
		var $qu = $(zeSelector).eq(0);
		if($qu.length>0){
			$qu.addClass("msgqufantome");
			var $td = $(zeSelector).eq(0).closest("td");
			if($td.length>0){
				//$td.css("color","red");
				$td.addClass("msgqufantome"); // pour select
			}
		}
	}
}

function mjqcss_InsertRule(unique_title, zeSelectorRule, zecssSelectorEtCssText, zecssText){
    for(var i=0; i<document.styleSheets.length; i++) {
        var sheet = document.styleSheets[i];
        if(sheet.title === unique_title) {
            var enMinusc = zeSelectorRule.toLowerCase();//safari met tout en minusc !
            var bRuleExist=false;
            var s2="";
            for (var i2=0; i2<sheet.rules.length; i2++){
                s2=sheet.rules[i2].selectorText;
                if(typeof s2 != "undefined"){
                    s2=s2.toLowerCase();
                    if(s2===enMinusc){
                        //var s=sheet.cssRules[i2].cssText;
                        sheet.deleteRule(i2);
                        //bRuleExist=true;
                        //sheet.rules[i2].cssText=zecssSelectorEtCssText;//zecssText; //ex : "{ color: white; }"
                        i2=sheet.rules.length+10;
                    }
                }
            }
            if(!bRuleExist){
                sheet.insertRule(zecssSelectorEtCssText,0); //ex : monStyle.insertRule("#blanc { color: white }", 0);
            }
            i=document.styleSheets.length;
        }
    }

}

function mjqcss_StyleSheetAllNames(unique_title){
    var sReturn="";
    var s="";
    for(var i=0; i<document.styleSheets.length; i++) {
        var sheet = document.styleSheets[i];
        if(sheet.title === unique_title) {
            for (var i2=0; i2<sheet.rules.length; i2++){
                s=sheet.rules[i2].selectorText;
                sReturn = sReturn + s + sSepPrMsg4D;
            }
            i=document.styleSheets.length;

        }
    }
    return sReturn;
}

function mjqcssText_surStyleSheet(unique_title, zeSelectorRule){

    for(var i=0; i<document.styleSheets.length; i++) {
        var sheet = document.styleSheets[i];
        if(sheet.title === unique_title) {
            var enMinusc = zeSelectorRule.toLowerCase();//safari met tout en minusc !
            var s2="";
            for (var i2=0; i2<sheet.rules.length; i2++){
                s2=sheet.rules[i2].selectorText;
                if(typeof s2 != "undefined"){
                    s2=s2.toLowerCase();
                    if(s2===enMinusc){
                        var s=sheet.cssRules[i2].cssText;
                        return s;
                    }
                }
            }
            i=document.styleSheets.length;
        }
    }
    return "";
}

function mjqCSS_set(zeSelector, zeProp, zeVal){
    var $zeElem =  $(zeSelector);
    if($zeElem.length > 0){
    	 $zeElem.css(zeProp, zeVal);
    }
}
function mjqCSS_get(zeSelector, zeProp){
    //var $zeElem_ = $(zeSelector);
    
    var $zeElem_ =  $(zeSelector).closest('td'); //la cell qui contient le txt
    if($zeElem_.length>0){
        if(zeProp==="class"){
            var s = $zeElem_.eq(0).attr("class");
        }else{
            var s = $zeElem_.eq(0).css(zeProp);
        }
        s=" "+s; //conv en chaine
        s=s.substr(1);

        return s;
    }else{
        return "";
    }
}

function mjqSetAttrGrpQuHomog(zeId, zeAttr, zeValue, zeAction){

	if(zeAttr === "class"){
		if(zeValue !== ""){
			idDuGrp=zeId; 
			if(idDuGrp!==""){
				sClass='grpquhomog'+idDuGrp;
				if(sClass!==""){
					var zeSelector='table.'+sClass;
					var $zeTableContenantLeGrp = $(zeSelector).eq(0);
					if($zeTableContenantLeGrp.length>0){
						if(zeAction === "remove"){
							$zeTableContenantLeGrp.removeClass(zeValue);
						}else{
							$zeTableContenantLeGrp.addClass(zeValue);
						}
					}
				}
			}
		}
	}
}
function mjqSetAttr(zeId, zeAttr, zeValue){
    var zeSelector='#'+zeId;
    var $elem=$(zeSelector).eq(0);
    if($elem.length>0){
        if(zeAttr==="class"){
            $elem.addClass(zeValue);
        }else{
            $elem.attr(zeAttr,zeValue);
        }
        var zeret = $elem.attr(zeAttr);
        return zeret;
    }
    return "err";
}

function mjqGetAttr(zeId, zeAttr){
    var zeSelector=zeId;
    var $elem=$(zeSelector).eq(0);
    if($elem.length>0){
        var zeret = $elem.attr(zeAttr);
        return zeret;
    }
    return "";
}

function mjqAttrib_surSelecteur(zeSelector, zeAttr){
    var $zeElem_ = $(zeSelector);
    if($zeElem_.length>0){
        return $zeElem_.eq(0).attr(zeAttr);
    }else{
        return "";
    }
}

function mjqId_surSelecteur(zeSelector){
    var $zeElem_ = $(zeSelector);
    if($zeElem_.length>0){
        return $zeElem_.eq(0).attr('id');
    }else{
        return "";
    }
}

function mjqGetHtmlEtObj(zeSelector, oHtml, zeOpt){
 	if(zeSelector != ''){
        var bIgnorerClassSelected=false;
        if(typeof(zeOpt)!='undefined'){
            if(zeOpt=="ignorerClassSelected")
                bIgnorerClassSelected=true;
        }
        if(!bIgnorerClassSelected){
            $('*').removeClass(clTblSelHover).end();
            $('*').removeClass('input_selected').removeClass('input_selectedZW').end();
        }
        var bSpanOnly = false;
        var $elem = $(zeSelector).eq(0);
        if($elem.length > 0){
        	if(oHtml["opt_input"]){
        		if(oHtml["opt_input"] === "span_only"){
        			bSpanOnly = true;
        		}
        	}
        	if(!bSpanOnly){
				if(zeSelector.indexOf("#"+"label") === 0){
					var $elem = $elem.closest("td").eq(0) //td n'a pas d'id
				}else if(zeSelector.indexOf("#"+"titreq") === 0){ //titreq dans grp q homog
					var $elem = $elem.closest("td").eq(0) //td n'a pas d'id
				}
        	}
        }
		if($elem.length > 0){
			var zeHtml = $elem.html();
			oHtml["html"] = zeHtml;

			/*
			var $desc = $elem.contents();
			var $desc = $desc.eq(0).contents();
			var $desc = $elem.filter("*");
			var $desc = $elem.filter("span");
			var $desc = $elem.find("span");
			var $desc = $elem.find("br");
			var $desc = $elem.find("span, br, a");
			*/
			
			var $desc = $elem.contents();

			if($desc.length > 0){
				oHtml["nbDesc"] = $desc.length;
				$desc.each(function(index){
					var prop1 = "niv1_" + (index + 1);
					oHtml[prop1] = {};
					oHtml[prop1]["tagName"] = $(this).prop("tagName");
					oHtml[prop1]["html"] = $(this).html();
					oHtml[prop1]["text"] = $(this).text();
					oHtml[prop1]["style"] = $(this).attr("style");
					
					$desc2 = $(this).contents();
					oHtml[prop1]["nbDesc"] = $desc2.length;
					$desc2.each(function(index2){
						var prop2 = "niv2_" + (index2 + 1);
						oHtml[prop1][prop2] = {};
						oHtml[prop1][prop2]["tagName"] = $(this).prop("tagName");
						oHtml[prop1][prop2]["html"] = $(this).html();
						oHtml[prop1][prop2]["text"] = $(this).text();
						oHtml[prop1][prop2]["style"] = $(this).attr("style");
						
						$desc3 = $(this).contents();
						oHtml[prop1][prop2]["nbDesc"] = $desc3.length;
						$desc3.each(function(index3){
							var prop3 = "niv3_" + (index3 + 1);
							oHtml[prop1][prop2][prop3] = {};
							oHtml[prop1][prop2][prop3]["tagName"] = $(this).prop("tagName");
							oHtml[prop1][prop2][prop3]["html"] = $(this).html();
							oHtml[prop1][prop2][prop3]["text"] = $(this).text();
							oHtml[prop1][prop2][prop3]["style"] = $(this).attr("style");
							
							$desc4 = $(this).contents();
							oHtml[prop1][prop2][prop3]["nbDesc"] = $desc4.length;
							$desc4.each(function(index4){
								var prop4 = "niv4_" + (index4 + 1);
								oHtml[prop1][prop2][prop3][prop4] = {};
								oHtml[prop1][prop2][prop3][prop4]["nbDesc"] = 0;

								oHtml[prop1][prop2][prop3][prop4]["tagName"] = $(this).prop("tagName");
								oHtml[prop1][prop2][prop3][prop4]["html"] = $(this).html();
								oHtml[prop1][prop2][prop3][prop4]["text"] = $(this).text();
								oHtml[prop1][prop2][prop3][prop4]["style"] = $(this).attr("style");
								
								$desc5 = $(this).contents();
								oHtml[prop1][prop2][prop3][prop4]["nbDesc"] = $desc5.length;
								$desc5.each(function(index5){
									var prop5 = "niv5_" + (index5 + 1);
									oHtml[prop1][prop2][prop3][prop4][prop5] = {};
									oHtml[prop1][prop2][prop3][prop4][prop5]["nbDesc"] = 0;

									oHtml[prop1][prop2][prop3][prop4][prop5]["tagName"] = $(this).prop("tagName");
									oHtml[prop1][prop2][prop3][prop4][prop5]["html"] = $(this).html();
									oHtml[prop1][prop2][prop3][prop4][prop5]["text"] = $(this).text();
									oHtml[prop1][prop2][prop3][prop4][prop5]["style"] = $(this).attr("style");
								});
							});
						});
					});
				});
			}
			return oHtml;
		}
    }
}

function mjqGetHtml(zeSelector, zeOpt){
    if(zeSelector != ''){
        
        var bIgnorerClassSelected=false;
        if(typeof(zeOpt)!='undefined'){
            if(zeOpt=="ignorerClassSelected")
                bIgnorerClassSelected=true;
        }
        if(!bIgnorerClassSelected){
            $('*').removeClass(clTblSelHover).end();
            $('*').removeClass('input_selected').removeClass('input_selectedZW').end();
        }

        var zeHtml=$(zeSelector).html();
        return zeHtml;
    }
    return "err";
}

function mjqGetTextBrut(zeSelector,zeTypeSelector){
    if(zeSelector != ''){
        var zeElem = $(zeSelector).get(0);
        if(zeElem){
            var zeTxtBrut = zeElem.innerText;  //innerHTML;
            return zeTxtBrut;
        }
    }
    return "";
}

function mjqAddRemoveClass(zeSelector, zeClass, zeAction){
    var $elem=$(zeSelector);
    if($elem.length>0){
        if(zeAction==="remove"){
            $elem.removeClass(zeClass);
        }else{
            $elem.addClass(zeClass);
        }
    }
}

function mjqScrollTop(zeSelector){
    //voir rem dans moda
    var zeYOffset=window.pageYOffset;
    return '' + zeYOffset;//convertir en chaine sinon rien sous win
    /*
    if(zeSelector!=''){
        var $zeElem = $(zeSelector).eq(0);
        if($zeElem.length>0){
            return $zeElem.scrollTop();
        }
    }
     */
}

function mjqSelElem(typeElem, idOuClass, sFormOptOnglet, stySpecif){
  
    var bStySpecif=false;
    if(typeElem==="pasDeSel"){
        $('*').removeClass(clTblSelHover).end();
        
    }else if(idOuClass!=''){
        var stySel=clTblSel;
        if (typeof (stySpecif)!="undefined"){
            if(stySpecif!==""){
                bStySpecif=true;
                stySel=stySel+" "+stySpecif;
            }
        }
        var b_titreQ=false;
        var b_Section=false;
        var b_tablPerso_Q=false;
        var b_grpQuHomog=false;
        
        if(typeElem==="titregenname_td"){
            if(idOuClass.indexOf('titregenname_td')>-1){
                var zeSelector='#'+idOuClass;
                if($(zeSelector).closest('table').length>0){
                    $(zeSelector).closest('table').eq(0).toggleClass(stySel);
                }
            }
        }else if(typeElem==="soustitregen_td"){
            var zeSelector='#'+idOuClass;
            if($(zeSelector).closest('table').length>0){
                $(zeSelector).closest('table').eq(0).toggleClass(stySel);
            }
            
        }else if(typeElem==='logoname_table'){
                var zeSelector = 'table[name*=logoname_table]';
                var $zeElem_ = $(zeSelector);
                if($zeElem_.length>0){
                    $zeElem_.eq(0).toggleClass(stySel);
                }
        }else if(typeElem==='MLQrIdAff'){
            var zeSelector = 'table.MLQrIdAff';
            var $zeElem_ = $(zeSelector);
            if($zeElem_.length>0){
                $zeElem_.eq(0).toggleClass(stySel);
            }
        }else if(typeElem==='boutonEnvoyer'){
            var zeSelector = 'table.boutonEnvoyer';
            var $zeElem_ = $(zeSelector);
            if($zeElem_.length>0){
                $zeElem_.eq(0).toggleClass(stySel);
            }
            
        }else if(typeElem==="im"){
            var zeSelector='#'+idOuClass;
            if($(zeSelector).closest('td').length>0){
                $(zeSelector).closest('td').eq(0).toggleClass(stySel);
            }
        
        }else if(typeElem==="video"){
            var zeSelector='#'+idOuClass;
            if($(zeSelector).closest('td').length>0){
                $(zeSelector).closest('td').eq(0).toggleClass(stySel);
            }
        }else if(typeElem==="txt"){
            var zeSelector='#'+idOuClass;
            if($(zeSelector).closest('table').length>0){
                $(zeSelector).closest('table').eq(0).toggleClass(stySel);
            }
            
        }else if(typeElem==="grpquhomog"){
            b_grpQuHomog=true;
         }else if(typeElem==="tablperso"){
            b_tablPerso_Q=true;
             
        }else if(typeElem==="quest"){
            var zeSelector='#titreq'+idOuClass;
            var zeElem = $(zeSelector).eq(0);  //balise titreQ
            if(zeElem){
                b_titreQ=true;
            }else{
                var zeSelector='#Q'+idOuClass;
                var zeElem = $(zeSelector).eq(0);  //balise <input> etc
                if(zeElem.length>0){
                    var zeElem = $(zeSelector).closest('table[class*=tablperso]').eq(0);
                    if(zeElem.length>0)
                        b_tablPerso_Q=true;
                }
            }
        }else if(typeElem="sect"){
            //var zeSelector='td.'+idOuClass;
            var zeSelector='#'+idOuClass;

            var zeElem = $(zeSelector).eq(0);
            if(zeElem.length>0){
                b_Section=true;
            }
        }
        
        if(b_Section){
            $('*').removeClass(clTblSelHover).end();
            $(zeSelector).toggleClass(stySel);
            var zeIdSect=$(zeSelector).attr("id");
            return "#"+zeIdSect;
            
        }else if((b_tablPerso_Q)||(b_grpQuHomog)){
            //$(zeSelector).closest('table[class*=tablperso]').toggleClass(stySel);
            
            var nomClass="tablquregroup";
            if(b_tablPerso_Q) nomClass="tablperso";
            var zeSelectorTbl="table[class*="+nomClass+"]";
            
            var zeSelector="#"+idOuClass;
            if($(zeSelector).closest(zeSelectorTbl).length>0){
                if(bStySpecif){
                    $(zeSelector).closest(zeSelectorTbl).eq(0).toggleClass(clTblSel);
                    $(zeSelector).eq(0).toggleClass(stySpecif); // = span
                }else{
                    $(zeSelector).closest(zeSelectorTbl).eq(0).toggleClass(stySel);
                }
            }
            return zeSelector;
            
        }else if(b_titreQ){
            
                var sTDClassASel="titquest";
                if(sFormOptOnglet==="ZoneDeSaisie") sTDClassASel="formzonesaisie";
                var zeSelectorTD="td[class*="+sTDClassASel+"]"; //td[class*=titquest] ou td[class*=formzonesaisie]

                // le tableau parent 'formtbl' peut etre
                // - le tableau comprenant une ou plusieurs questions disp='juxtap'
                // - le tableau comprenant une question disp='superp'
                //var zeTblParentJuxtap = $(zeSelector).parents('table[class*=tabljuxtap]').get(0);
                var zeTblParentJuxtap = $(zeSelector).closest('table[class*=tabljuxtap]').eq(0);
                //var zeTblParentSuperp = $(zeSelector).parents('table[class*=tablsuperp]');
                var bDispJuxtap=false;
                if(zeTblParentJuxtap.length>0) bDispJuxtap=true;
                
                if(bDispJuxtap){  //c'est une dispo juxtap
                    //$(zeSelector).closest('tr[class*=trclassq]').find('td').not('[id^=tdsaisq]').toggleClass(stySel); //les cell de la ligne
                    //$(zeSelector).closest('tr[class*=trclassq]').find('td[class*=titquest], td[class*=formzonesaisie]').toggleClass(stySel);
                    $(zeSelector).closest('tr[class*=trclassq]').find(zeSelectorTD).toggleClass(stySel);
                }else{ //c'est une dispo superp
                    //background.image ne marche pas pour table
                    //$(zeSelector).parents('table[class*=formtbl]').toggleClass(stySel);
                    //$(zeSelector).closest('table[class*=formtbl]').find('td').not('[id^=tdsaisq]').toggleClass(stySel);
                    //$(zeSelector).closest('table[class*=formtbl]').find('td[class*=titquest], td[class*=formzonesaisie]').toggleClass(stySel);
                    $(zeSelector).closest('table[class*=formtbl]').find(zeSelectorTD).toggleClass(stySel);
                }
               return zeSelector;
        }
    }
}

function mjqChangeText (zeTxt, zeId){
    if(zeId!=''){
        var zeSelector='#'+zeId;
        if($(zeSelector).length>0){
            $(zeSelector).empty();
            $(zeSelector).html(zeTxt);
        }
        return "ok";
    }
    return "err";
}

function mjqChangeTextStyle (zeHtml, sZoneWeb_id_dernClic, zeAction, zePos){
    var sReturn='';
    var $zeTableContenantSel;
    if(zeAction==='add'){
        // on remonte jusq table (class*=formtbl)(class*=tablesection),... si on n'y est pas déja
        var zeSelector = '#'+sZoneWeb_id_dernClic;
        var zeTagName = $(zeSelector).get(0).tagName;
        
        if(zeTagName==='table'){
            alert('Existe déjà : table :'+zeSelector);
        }else{
        	
            //on vérifie d'abord si dans zone multi col
            var $zeTableContenantSel = $(zeSelector).closest('table.pageMultiCol').eq(0);
            if($zeTableContenantSel.length<=0){
                var $zeTableContenantSel = $(zeSelector).closest('table.MLQrIdAff').eq(0);
            }
            
            if($zeTableContenantSel.length<=0){
            	var sSelector = "";
            	var s="";
				for(var i=0; i<tablNiv1_class.length; i++){
					s = tablNiv1_class[i];
					if((s === "formtbl") || (s === "tableSection")) {
						sSelector = "table[class*=" + s + "]";
					}else{
						sSelector = "table." + s;
					}
					var $zeTableContenantSel = $(zeSelector).closest(sSelector).eq(0);
					if($zeTableContenantSel.length>0){
						i = tablNiv1_class.length;
					}
				}
    		}

        }
        if($zeTableContenantSel){
            if($zeTableContenantSel.length>0){
                if(zePos==="before"){
                    $zeTableContenantSel.before(zeHtml);
                }else{
                    $zeTableContenantSel.after(zeHtml);
                }
            }
        }
    }else if(zeAction==='mod'){
        if(sZoneWeb_id_dernClic==="boutonEnvoyer"){
            var zeSelector = '#'+sZoneWeb_id_dernClic;
            var zeTagName = $(zeSelector).get(0).tagName;
            if((zeTagName==="input")||(zeTagName==="INPUT")){
                $(zeSelector).attr('value',zeHtml);
            }
    
        }else{
            var zeSelector = '#'+sZoneWeb_id_dernClic;
            var zeTagName = $(zeSelector).get(0).tagName;
            if((zeTagName==="td")||(zeTagName==="TD")){
                $(zeSelector).eq(0).html(zeHtml);
            }
        }
    }else if(zeAction==='suppr'){
        var zeSelector = '#'+sZoneWeb_id_dernClic;
        var $zeTableContenantSel = $(zeSelector).closest('table.tabletxt').eq(0);//c'est bien un txt
        if($zeTableContenantSel.length>0){
            $zeTableContenantSel.eq(0).remove();
        }
    }
}

function mjqIconesSrc(zeClass){
    var sReturn='';
    var zeSelector = 'img[class*=butt_image]';
    var $zeIcones = $(zeSelector);//.eq(0);
    if($zeIcones.length>0){
        for (var icone=0; icone<$zeIcones.length; icone++){
            sReturn += $zeIcones.eq(icone).attr('src')+';';
        }

    }
    return sReturn;
}

function mjqImOuTxtProperty(zeType, idObj, zeAction, zeAttr, zeValue){
    var sReturn='';
    var bBoutonEnvoyer=false;
    var bTitreSection=false;
    var bTitreGen=false;
    var btitreQouGrpQ=false;
    var bLibModSpan=false;
    var bLibModLabel=false;
    var bLibConsPerso=false;

    if(idObj==="boutonEnvoyer"){
        bBoutonEnvoyer=true;
    }else if(idObj.indexOf("titregenname_td")===0){
        bTitreGen=true;
    }else if(idObj.indexOf("section")===0){
        bTitreSection=true;
    }else if(idObj.indexOf("grpquhomog")===0){
        btitreQouGrpQ=true;
    }else if(idObj.indexOf("tablperso")===0){
        btitreQouGrpQ=true;
    }else if(idObj.indexOf("titreq")===0){
        btitreQouGrpQ=true;
    }else if(idObj.indexOf("libmod")===0){
        bLibModSpan=true;
    }else if(idObj.indexOf("labelQ")===0){
        bLibModLabel=true;
    }else if(idObj.indexOf("consperso")===0){
        bLibConsPerso=true;
    }

    var zeSelector = '#'+idObj;
    var $zeObj = $(zeSelector).eq(0);
    if($zeObj.length>0){
        if((bTitreSection)|(bTitreGen)|(btitreQouGrpQ)|(bLibModSpan)|(bLibModLabel)|(bLibConsPerso)){
            var $zeTdObj =  $(zeSelector).closest('td').eq(0); //la cell qui contient le(s) lib(s) 
        }else if(bBoutonEnvoyer){
            var $zeTdObj =  $(zeSelector).closest('td[name^=boutonEnvoyer]').eq(0); 

        }else if(zeType==="im"){
            var $zeTdObj =  $(zeSelector).closest('td[name^=image_jq]').eq(0); //la cell qui contient l'image
        }else if(zeType==="video"){
            var $zeTdObj =  $(zeSelector).closest('td[name^=video_jq]').eq(0); //la cell qui contient la video
        }else{
            var $zeTdObj =  $(zeSelector).closest('td[name^=text_jq]').eq(0);
        }
        
        if($zeTdObj.length>0){
            if(zeAction==='set'){
                if((zeType==="im")||(zeType==="video")){
                    if((zeAttr==='width')||(zeAttr==='height')){
                        $zeObj.attr(zeAttr,zeValue);
                        return zeAttr+zeValue;
                    }
                }
                if(zeAttr==='text-align'){
                    $zeTdObj.css(zeAttr,zeValue);
                }else if(zeAttr.indexOf("padding")===0){
                    $zeTdObj.css(zeAttr,zeValue);
                }
                if(zeType==="video"){
                	if(zeAttr==='poster'){
                		 $zeObj.attr(zeAttr,zeValue); // url
                	}else if (zeAttr==='source'){
                		var $sources=$(zeSelector).find('source');
						if($sources.length>0){
							$sources.remove();
						}
						var $div=$(zeSelector).find('div');
						if($div.length>0){
							$div.remove();
						}
						$(zeSelector).append(zeValue); // bloc html de 1 ou n <source> + div si video pas aff
                	}
                }
                
            }else{ //get
                sReturn += 'id=='+$zeObj.attr('id')+';';
                if((bLibModSpan)||(bLibModLabel)){
                    var $zeLabelObj =  $(zeSelector).closest('label').eq(0); //
                    if($zeLabelObj){
                        sReturn += 'class=='+$zeLabelObj.attr('class')+';';
                    }
                }else{
                    sReturn += 'class=='+$zeTdObj.attr('class')+';';
                }
                var styleInline = $zeTdObj.attr("style");
                if(styleInline){
                	if(styleInline !== "undefined"){
                		var sReg=":";
       					var reg1=new RegExp(sReg, "g");
       					styleInline=styleInline.replace(reg1, "==");   
                 		sReturn += styleInline + ";";
                	}
                }
                /*
                sReturn += 'text-align=='+$zeTdObj.css('text-align')+';';
                sReturn += 'padding-top=='+$zeTdObj.css('padding-top')+';';
                sReturn += 'padding-bottom=='+$zeTdObj.css('padding-bottom')+';';
                sReturn += 'padding-left=='+$zeTdObj.css('padding-left')+';';
                sReturn += 'padding-right=='+$zeTdObj.css('padding-right')+';';

                sReturn += 'border-top-width=='+$zeTdObj.css('border-top-width')+';';
                sReturn += 'border-top-color=='+$zeTdObj.css('border-top-color')+';';
                */
                if(zeType==="im"){
                    sReturn += 'width=='+$zeObj.css('width')+';';
                    sReturn += 'height=='+$zeObj.css ('height')+';';
                    sReturn += 'widthBase=='+$zeObj.attr('widthBase')+';';
                    sReturn += 'heightBase=='+$zeObj.attr ('heightBase')+';';

                    sReturn += 'alt=='+$zeObj.attr('alt')+';';
                    sReturn += 'src=='+$zeObj.attr('src')+';';
                }else if(zeType==="video"){
                    sReturn += 'width=='+$zeObj.attr('width')+';';
                    sReturn += 'poster=='+$zeObj.attr('poster')+';';

					var $sources=$(zeSelector).find('source');
					if($sources.length>0){
						for(var isrc=0;isrc<$sources.length; isrc++){
							var typeSrc=$sources.eq(isrc).attr('type');
							if(typeSrc!==""){
								sReturn += typeSrc + '==' +$sources.eq(isrc).attr('src')+';';
							}
						}
					}
                }
                return sReturn;
            }
        }
    }
}
function mjqInsertImage_saufLogo ( zePathImage, param_unus, sZoneWeb_id_dernClic, zeAction, zePos){
    //images (et video) sauf titre gen du form fait par mjqChangeImage
    var sReturn='';
    var $zeTableContenantSel;
    if(zeAction==='add'){
        var zeSelector = '#'+sZoneWeb_id_dernClic;
        var zeTagName = $(zeSelector).get(0).tagName;
        
        if(zeTagName==='table'){
            alert('table :'+zeSelector);
        }else{
            var $zeTableContenantSel = $(zeSelector).closest('table.pageMultiCol').eq(0);
            
            if($zeTableContenantSel.length<=0){
                var $zeTableContenantSel = $(zeSelector).closest('table[class*=formtbl], table[class*=tablesection]').eq(0);
            }
            if($zeTableContenantSel.length<=0){
                var $zeTableContenantSel = $(zeSelector).closest('table.tableimage').eq(0);
            }
            if($zeTableContenantSel.length<=0){
                var $zeTableContenantSel = $(zeSelector).closest('table.tablevideo').eq(0);
            }
            if($zeTableContenantSel.length<=0){
                var $zeTableContenantSel = $(zeSelector).closest('table.tabletxt').eq(0);
            }
            if($zeTableContenantSel.length<=0){
                var $zeTableContenantSel = $(zeSelector).closest('table.soustitregen_td').eq(0);
            }
            if($zeTableContenantSel.length<=0){
                var $zeTableContenantSel = $(zeSelector).closest('table.MLQrIdAff').eq(0);
            }
            if($zeTableContenantSel.length<=0){
                var $zeTableContenantSel = $(zeSelector).closest('table.boutonEnvoyer').eq(0);
            }
            if($zeTableContenantSel.length<=0){
                var $zeTableContenantSel = $(zeSelector).closest('table.lien_sautDePage').eq(0);
            }
        }
        if($zeTableContenantSel){
            if($zeTableContenantSel.length>0){
                if(zePos==="before"){
                    $zeTableContenantSel.before(zePathImage);
                }else{
                    $zeTableContenantSel.after(zePathImage);
                }

            }
        }
    }//add
}

function mjqChangeImage (zeLogoName_idTG_idQ_idIm, zeAction, html_titreEtOuIm, zePathImage){
    
    if(zeAction==='add'){ //logo slt
            if(zeLogoName_idTG_idQ_idIm.indexOf('titregenname_td')>-1){
                var zeSelector = '#'+zeLogoName_idTG_idQ_idIm;
                var $tableTG= $(zeSelector).closest('table').eq(0);
                if($tableTG.length>0){
                    var sSignet = '<p id="beforeProv"></p>';
                    $tableTG.before(sSignet); //pour pouvoir insérer $zeHtml_new after
                    $tableTG.remove(); //peut contenir ou non le logo

                    var zeSelector = 'table[name*=logoname_table]';
                    var $tableIm=$(zeSelector);
                    if($tableIm.length>0) {//peut déja avoir été suppr si dans table 'titregenname_td'
                        $tableIm.eq(0).remove();
                    }
                    //insertion du nouv html (titre et logo si logo)
                    if($('#beforeProv').length>0){
                        $('#beforeProv').eq(0).after(html_titreEtOuIm);
                        $('#beforeProv').eq(0).remove();
                    }
                }
            }
    }else if(zeAction==='suppr'){
        if(zeLogoName_idTG_idQ_idIm==='logoname_table'){
            var zeSelector = 'table[name*=logoname_table]';
            var $tdSiJuxtap=$(zeSelector).closest('td[name^=logo_td_siJuxtap]');
            if($tdSiJuxtap.length>0) $tdSiJuxtap.remove();
            else $(zeSelector).remove();                

        }else if(zeLogoName_idTG_idQ_idIm!=''){
            var zeSelector = '#'+zeLogoName_idTG_idQ_idIm;
            var zeTagName = $(zeSelector).get(0).tagName;   
            if((zeTagName==="img")||(zeTagName==="IMG")||(zeTagName==="video")||(zeTagName==="VIDEO")){
                var $zeTable_Image =  $(zeSelector).closest('table').eq(0);   //la table contenant l'im ou la video et le contenu avant insertion de l'im
                 $zeTable_Image.remove();
            }
        }
    }else if(zeAction==='modif'){ //jamais
        if(zeLogoName_idTG_idQ_idIm==='logoname_table'){
            var zeSelector = 'table[name*=logoname_table]';
            var $zeElem_ = $(zeSelector);
            if($zeElem_.length>0){
                var $zeIm = $zeElem_.find("img").eq(0);  
                if ($zeIm.length>0){
                    $zeIm.attr('src',zePathImage);
                }
            }
            return "ok";
            
        }else if(zeLogoName_idTG_idQ_idIm!=''){
            if(true){
                var zeSelector = '#'+zeLogoName_idTG_idQ_idIm;
                var zeTagName = $(zeSelector).get(0).tagName;   //closest('td').wrapInner( "<table><tr><td class='middle_v'></td></tr></table>" );
                if((zeTagName==="img")||(zeTagName==="IMG")){
                    $(zeSelector).eq(0).attr('src',zePathImage);
                }
            }else{
                //var sNoQ=zeLogoName_idTG_idQ_idIm;
                //var zeSelector='#'+'titreq'+sNoQ;
             }
            return "ok";
        }
    }
    return "err";
}
function mjqStyFondLigAltern (zeSelector, zeClass_aSuppr, zeClass_aAj, zeFind){

    if(zeSelector!==""){ //ex : "#titreq5" ou "#tdsaisq5"
        var $elems=$(zeSelector);
        if($elems.length>0){
            if(typeof (zeFind)!=="undefined"){
                if(zeFind!==""){
                    $elems=$elems.find(zeFind);// ex: ".altmod_"
                }
            }
        }
        if($elems.length>0){
            if(zeClass_aSuppr!==""){
                $elems.removeClass(zeClass_aSuppr).end();
            }
            if(zeClass_aAj!==""){
                $elems.addClass(zeClass_aAj).end();
            }
        }
    }
}
function mjqChangeStyle (zeParam1, zeParam2){
    var $zeStyleSheet=$('style[name^=styleSheet_form]').eq(0);
    if($zeStyleSheet.length>0){
        if(zeParam1==='undo'){
        }else if(zeParam1!=''){
            $zeStyleSheet.empty();
            $zeStyleSheet.html(zeParam1);
            
            var bBorderRadius=false;
            if(zeParam2){
                if(zeParam2==="1"){
                    bBorderRadius=true;
                }
            }
            var zeTD = $('table[class*=tablsuperp], table[class*=tablquregroup]').find('td[class*=titquest]');
            if(bBorderRadius) zeTD.addClass('titqradius-superp'); else zeTD.removeClass('titqradius-superp');
           // var zeTD = $('table[class*=tablquregroup]').find('td[class*=titquest]');
            //if(bBorderRadius) zeTD.addClass('titqradius-superp'); else zeTD.removeClass('titqradius-superp');
            var zeTD = $('table[class*=tabljuxtap]').find('td[class*=titquest]');
            if(bBorderRadius) zeTD.addClass('titqradius-juxtap'); else zeTD.removeClass('titqradius-juxtap');
            
            var zeTD = $('table[class*=tablsuperp], table[class*=tablquregroup]').find('td[class*=formzonesaisie]');
            if(bBorderRadius) zeTD.addClass('zonesaisradius-superp'); else zeTD.removeClass('zonesaisradius-superp');
            var zeTD = $('table[class*=tabljuxtap]').find('td[class*=formzonesaisie]');
            if(bBorderRadius) zeTD.addClass('zonesaisradius-juxtap'); else zeTD.removeClass('zonesaisradius-juxtap');

        }
        return "ok";
    }
    return "err";
}

/*
function mjqGetPageDeLaQu(zeId){
    var zeSelector='*[name=Q'+zeId+']';   // ex : Q1, .
    var $parentsUntilFormOuDiv = $('td[class*=formzonesaisie]').find(zeSelector).parents('div[name^=div_sautDePage]');
    if($parentsUntilFormOuDiv.length>0){
        return $parentsUntilFormOuDiv.eq(0).attr('id')+'/'+pCour;
    }else{
        var zeSelector='*[name^=Q'+zeId+'M'+']';   // ex : Q3M1 
        var $parentsUntilFormOuDiv = $('td[class*=formzonesaisie]').find(zeSelector).parents('div[name^=div_sautDePage]');    
        if($parentsUntilFormOuDiv.length>0){
            return $parentsUntilFormOuDiv.eq(0).attr('id')+'/'+pCour;
        }
    }    
    return err;
}
 */

function mjqMasqAffTousSautDePg(zeAction){
    if((zeAction==='none')|(zeAction==='block')){
        var $sdp=$('div[name^=div_sautDePage]');
        if($sdp.length>0) $sdp.css('display', zeAction);
        
        var $sdp=$('div[name*=lien_sautDePage]');
        if($sdp.length>0) $sdp.css('display', zeAction);
    }
}
function mjqChangeSautDePg(zeAction, html_div, zeTypeId, zeId, zeNoPgOuNbSdP, htmlLienSautDePg, sSautDePageHaut){

    //zeTypeId : "titreq" / "grpquhomog" / "tablperso" / "section_no_id"
    
    var bSautDePgHaut=false;
    if(typeof(sSautDePageHaut) != "undefined"){
       if(sSautDePageHaut === '1'){
            bSautDePgHaut=true;
       }
    }
    var idSignetDeb1erSautDePg = 'span1erDivSautDePg'; // placé par Moda dans EP_HTML_TitreGenFormulaire
   
    //pour conserver trace du debut de l'insertion
    //var sSignetDeb = '<p id="debProvSdP"></p>';
    var sSignetDeb = '<span id="debProvSdP"></span>'; //span pour éviter <p> si oubli de suppr; mais <p> vide aff ?

    if(zeAction==='nbSdP'){
        var nbSdP=0;
        var $divSautDePg = $('div[name^=div_sautDePage]');
        if($divSautDePg.length>0) nbSdP=$divSautDePg.length;
        return nbSdP;
        
    }else if(zeAction==='supprDiv'){
        var $liensSautDePg = $('table[name*=lien_sautDePage]');
        if($liensSautDePg.length>0) $liensSautDePg.remove();
        var $liensSautDePg = $('div[name*=lien_sautDePage]' );
        if($liensSautDePg.length>0) $liensSautDePg.remove();
       
        var $divSautDePg = $('div[name^=div_sautDePage]');
        
        var $signetDeb=$('#'+'debProvSdP');
        if (parseInt(zeNoPgOuNbSdP, 10)<=0){
            if($signetDeb.length>0) $signetDeb.remove();//on supprime pour eviter doublons par la suite
        }else{//s'il y a des pages à maj ensuite
            if($signetDeb.length>0){
                //le signet peut déja avoir été posé lors de suppr des sdp une 1ere fois (cf FormZW_ModifForm_MajSurStruct)
            }else{
                if($divSautDePg.length>0)
                    $divSautDePg.eq(0).before(sSignetDeb);
                else{   //au cas ou il n'y avait pas de saut de page; idSignetDeb1erSautDePg doit tjrs etre mis dans EP_HTML_TitreGenFormulaire
                    var $idSignetDeb1erSautDePg = $('#'+idSignetDeb1erSautDePg);
                    if($idSignetDeb1erSautDePg.length>0){
                        //alert('$idSignetDeb1erSautDePg.length='+idSignetDeb1erSautDePg.length);
                        $idSignetDeb1erSautDePg.eq(0).after(sSignetDeb);
                    }
                }
            }
        }
        if($divSautDePg.length>0){
            //on regarde s'il y a des obj qui suivent le sdp avant la 1ere qu qui suit
            $('*').removeClass("hasPageBefore").end();
            var pbDeb=1; //1ere page inutile pcq 'span1erDivSautDePg'
            for(var iPg=1; iPg<$divSautDePg.length; iPg++){
                var $zeTbl1Pg=$divSautDePg.eq(iPg);
                if($zeTbl1Pg.length>0){
                    var $zeChild = $zeTbl1Pg.children();
                    if($zeChild.length>0) {
                        var $zeFirstChild = $zeChild.eq(0);
                        var bhc =  (($zeFirstChild.filter("[class*=formtbl]").length) > 0); // formtbl1, formtbl2,...
                        if( !bhc){ //($zeFirstChild.hasClass("formtbl"))){
                            if(!($zeFirstChild.hasClass("pageMultiCol"))){
                                 var $zeTblImTxt = $zeFirstChild.nextUntil("table[class*=formtbl],table[class*=pageMultiCol]").andSelf();
                                 if($zeTblImTxt.length>0){
                                    $zeTblImTxt.addClass("hasPageBefore");
                                 }
                            }
                        }
                    }
                }
            }

            var $divSautDePgChildren = $divSautDePg.children();
            $divSautDePgChildren.unwrap();  //suppr tous les div de saut de pg
           
            // au cas ou  div[name^=div_sautDePage] fantome (sans children)
            var $divSautDePg = $('div[name^=div_sautDePage]');
			if($divSautDePg.length>0){
				$divSautDePg = $divSautDePg.filter(function(index){	
						return $(this).children().length <=0;
					});
				if($divSautDePg.length>0){
					$divSautDePg.remove();
				}
			}
        }
                
    }else if(zeAction==='1div'){
        //un div pour saut de page doit tjrs etre au niveau des enfants de niv 1 de <form>
        var $formChildrenNiv1 = $('form[name^=fML]').eq(0).children();  //tous les enfants de niv1 de <form>
        
        var zeSelector='#'+zeTypeId+zeId;   // ex : tdsaisq, titreq5, tablperso2,  grpquhomog, section_no_id3...
        var $parents_ = $(zeSelector).parents('form[name^=fML]');   //tous les ancêtres de l'elem suivant fin de page jusq 'form...' exclu
        if($parents_.length>0){
            var $parentsUntilForm = $(zeSelector).parentsUntil('form[name^=fML]');   //tous les ancêtres jusq 'form...' exclu  
            if($parentsUntilForm.length>0){
                var $formChildren_debPgSuiv = $parentsUntilForm.eq($parentsUntilForm.length-1);   //le dernier est le plus haut dans la hiér
                if( $formChildren_debPgSuiv.length>0){
                    // on cherche s'il y a des txt ou im qui doivent rester sur la page suiv
                    var $zeTblImTxt = $formChildren_debPgSuiv.prevUntil("table[class*=formtbl],table[class*=pageMultiCol]", "table.hasPageBefore");
                    if($zeTblImTxt.length>0){
                        $formChildren_debPgSuiv = $zeTblImTxt.eq($zeTblImTxt.length-1);//en ordre inverse!
                        var zeIdx = $zeTblImTxt.eq($zeTblImTxt.length-1).index();
                        for (var i=0; i<($zeTblImTxt.length-1); i++){
                            if($zeTblImTxt.eq(i).index()<zeIdx){
                                $formChildren_debPgSuiv = $zeTblImTxt.eq(i);
                                zeIdx=$zeTblImTxt.eq(i).index();
                            }
                        }
                    }
                }
                var $signetDeb=$('#'+'debProvSdP');
                if($signetDeb.length>0){
                    var $zePlage = $formChildrenNiv1.slice($signetDeb.index()+1, $formChildren_debPgSuiv.index());
                    if($zePlage.length>0){
                        
                        $zePlage.wrapAll(html_div); //wrap l'ensemble des éléments comme un tout
                        
                        $('#'+'debProvSdP').remove();
                        var idDivPg= 'p'+zeNoPgOuNbSdP;
                        $('#'+idDivPg).after(sSignetDeb);
                        
                       if(bSautDePgHaut){
                            $('#'+idDivPg).prepend(htmlLienSautDePg);
                       }else{
                            $('#'+idDivPg).append(htmlLienSautDePg);
                       }
                    }
                }
            }

        }
        
    }else if(zeAction==='dernDiv'){
        var $formChildrenNiv1 = $('form[name^=fML]').eq(0).children();  //tous les enfants de niv1 de <form>
        var indexDernFormChildren= $formChildrenNiv1.length-1;
        
        var $signetDeb=$('#'+'debProvSdP');
        if($signetDeb.length>0){
            var $zePlage = $formChildrenNiv1.slice($signetDeb.index()+1);   // ,2ème param : If omitted, the range continues until the end of the set; indexDernFormChildren);
            if($zePlage.length>0){
                $zePlage.wrapAll(html_div); //wrap l'ensemble des éléments comme un tout
                var idDivPg= 'p'+zeNoPgOuNbSdP;
                if(bSautDePgHaut){
                    $('#'+idDivPg).prepend(htmlLienSautDePg);
                }else{
                    $('#'+idDivPg).append(htmlLienSautDePg);
                }
            }
        }
        var $signetDeb=$('#'+'debProvSdP');
        if($signetDeb.length>0)
            $signetDeb.remove();
    }
    
}   //mjqChangeSautDePg

function mjqChangeSection(zeAction, html_div, zeTypeId, zeIdOuClass, nbSect_noSect, nbColPageFormHTML_Qu){    // , zeNoPg, htmlLienSautDePg){

    //zeTypeId : "titreq" / "grpquhomog" / "tablperso" ...
    var zeTblClass=new Array('titform','titquest','titqu_polslt','formtbl','formzonesaisie','numsection');
    var bDansDivSautDePg=false;
    var bDansForm=false;
    var nbColPageFormHTML_debSect=1;
    if(typeof(nbColPageFormHTML_Qu)!="undedined"){
        nbColPageFormHTML_debSect = parseInt(nbColPageFormHTML_Qu, 10);
    }
        
    if(zeAction==='suppr1Sect'){//slt si derniere, sinon il faut renuméroter les sect
        var zeSelector='table[class~='+zeIdOuClass+']';   // ici "class"; ex : <table classe="tablesection numsection1">
        var $zeTblClass=$(zeSelector).eq(0);
        if($zeTblClass.length>0){
            $zeTblClass.remove();
        }
    }else if(zeAction==='supprToutesSect'){
        
        if(zeTypeId === "suppr_sur_toremove"){
			$(".toremove").remove();
		}else{
			// un titre de section est tjrs dans un <table class="tablSection"...>
			var nbSect_noSect_num = 0;
			var $tableSection=$('table.tablesection');
			if($tableSection.length>0){
				//on regarde s'il y a des obj qui suivent la sect avant la 1ere qu qui suit
				$('*').removeClass("hasSectBefore").end();
				for(var iSect=0; iSect<$tableSection.length; iSect++){
					var $zeTbl1Sect=$tableSection.eq(iSect);
					if($zeTbl1Sect.length>0){
						var $zeTblImTxt = $zeTbl1Sect.nextUntil('table[class*=formtbl],table[class*=pageMultiCol]');
						if($zeTblImTxt.length>0){
							$zeTblImTxt.addClass("hasSectBefore");
						}
					}
				}
			}
			if($tableSection.length>0){
				nbSect_noSect_num=$tableSection.length;
				if(zeTypeId === "addClass_toremove"){
					$tableSection.addClass("toremove");
					$("[id^=section_no_id]").removeAttr("id");//pr que pas trouvé par "1Sect"
				}else{
					$tableSection.remove();
				}
			}
			nbSect_noSect_num += 2; //par précaution
			if(false){
				/*
				//un titre de section est enfant de <form> ou <div id='p...'>
				var $parentsUntilFormOuDiv = $(zeSelector).parents('div[name^=div_sautDePage]');    
				if($parentsUntilFormOuDiv.length>0){
					var $parentsUntilFormOuDiv = $(zeSelector).parentsUntil('div[name^=div_sautDePage]');   //tous les ancêtres jusq 'div...' exclu  
					if($parentsUntilFormOuDiv.length>0){
						bDansDivSautDePg=true;
						$parentsUntilFormOuDiv.remove();
					}
				}
				var $parentsUntilFormOuDiv = $(zeSelector).parents('form[name^=fML]');    
				if($parentsUntilFormOuDiv.length>0){
					var $parentsUntilFormOuDiv = $(zeSelector).parentsUntil('form[name^=fML]');   //tous les ancêtres jusq 'form...' exclu  
					if($parentsUntilFormOuDiv.length>0){
						bDansForm=true;
						$parentsUntilFormOuDiv.remove();
					}
				}
				 */
			}
			//on enleve les no de cette section dans les noms de class de tous les elem du form
			var sClass='';
			var sClassNo='';
			var zeSelector='';
			//var nbSect_noSect_num = parseInt(nbSect_noSect, 10);
			for(var iClass=0; iClass<zeTblClass.length; iClass++){
				sClass=zeTblClass[iClass];  //'titform','titquest' etc
				for(var iSect=1; iSect<=nbSect_noSect_num; iSect++){
					sClassNo=sClass+iSect;
					$('.'+sClassNo).removeClass(sClassNo).addClass(sClass);
				}
			}
        }
    }else if(zeAction==='1sect'){
        //un titre de section est enfant de <form> ou de <div id='p...'>
        var zeSelector='#'+zeTypeId+zeIdOuClass;   // ex : titreq5, tablperso2...
        
        if(true){
            //il ne peut pas y avoir de saut de page entre l'elem zeTypeId+zeIdOuClass et le titre de sect à insérer
            //donc il suffit de remonter jusqu'au tabl contenant la qu, le grp de qu, le tabl perso ou le tabl "pageMultiCol"
            if(nbColPageFormHTML_debSect>=2){
                var $zeElem = $(zeSelector).closest('table.pageMultiCol').eq(0);
            }else{
                var $zeElem = $(zeSelector).closest('table[class*=formtbl], table.tablquregroup, table.tablperso').eq(0);
            }
            if($zeElem.length>0){
                
                //prend tout ce qui suit, mais infra ne traitera que les class qui n'ont pas encore de no de sect
                //ce qui suppose pour les appels successif de '1sect' de tjrs commencer par la fin de la seq de sections et de remonter
                var $zePlage=$zeElem.nextAll().andSelf();

                var bSdpApres=false;
                // les sauts de pages doivent tjrs etre suppr avant l'appel de '1sect' pour éviter ce charabia
                if(true){ // rétabli pour éviter scroll si...
                     //on regarde s'il y a un saut de page avant
                     //si oui on prend tous les saut de page suivant pour aller jusqu'à la fin du form
                    var $SdpAvant = $zeElem.closest('div[name^=div_sautDePage]').eq(0);
                    if($SdpAvant.length>0){
                        var $SdpApres=$SdpAvant.nextAll();
                        if($SdpApres.length>0){
                            bSdpApres=true;
                        }
                    }
                }
                
                for(var iClass=0; iClass<zeTblClass.length; iClass++){
                    sClass=zeTblClass[iClass];  //'titform','titquest','titqu_polslt','formtbl','formzonesaisie','numsection'
                    sClassNo=sClass+nbSect_noSect;
                    $zePlage.filter('.'+sClass).removeClass(sClass).addClass(sClassNo);
                    $zePlage.find('.'+sClass).removeClass(sClass).addClass(sClassNo);//pour les descendants
                    
                    if(bSdpApres){
                        if($SdpApres.length>0){
                            $SdpApres.filter('.'+sClass).removeClass(sClass).addClass(sClassNo);
                            $SdpApres.find('.'+sClass).removeClass(sClass).addClass(sClassNo);//pour les descendants
                        }
                    }
                }
                //$('*').removeClass("hasSectBefore").end();
                var $zeTblImTxt = $zeElem.prevUntil('table[class*=formtbl], table[class*=pageMultiCol]', 'table.hasSectBefore');
                if($zeTblImTxt.length>0){
                    $zeElem = $zeTblImTxt.eq($zeTblImTxt.length-1);//en ordre inverse!
                    var zeIdx=$zeTblImTxt.eq($zeTblImTxt.length-1).index();
                    for (var i=0; i<($zeTblImTxt.length-1); i++){
                        if($zeTblImTxt.eq(i).index()<zeIdx){
                            $zeElem = $zeTblImTxt.eq(i);
                            zeIdx=$zeTblImTxt.eq(i).index();
                        }
                    }
                }
                $zeElem.before(html_div); //on l'ajoute à la fin pour éviter décalages supra
            }
        }
        

        /*
        var $parentsUntilFormOuDiv = $(zeSelector).parents('div[name^=div_sautDePage]');
        if($parentsUntilFormOuDiv.length>0){
            var $parentsUntilFormOuDiv = $(zeSelector).parentsUntil('div[name^=div_sautDePage]');   //tous les ancêtres jusq 'div...' exclu  
            if($parentsUntilFormOuDiv.length>0){
                bDansDivSautDePg=true;
            }
        }else{
            var $parentsUntilFormOuDiv = $(zeSelector).parents('form[name^=fML]');   //tous les ancêtres jusq 'form...' exclu  
            if($parentsUntilFormOuDiv.length>0){
                var $parentsUntilFormOuDiv = $(zeSelector).parentsUntil('form[name^=fML]');   //tous les ancêtres jusq 'form...' exclu  
                if($parentsUntilFormOuDiv.length>0)
                    bDansForm=true;
            }
        }
        if((bDansDivSautDePg)||(bDansForm)){
            //le dernier dans $parentsUntilFormOuDiv est le plus haut dans la hiér
            var $formOuDivChildren_debSection = $parentsUntilFormOuDiv.eq($parentsUntilFormOuDiv.length-1);
            //var indexPosInsertionSection=$formOuDivChildren_debSection.index();   //pos dans les freres de $formOuDivChildren_debSection
            
            
            //on affecte les numéros de class pour sections jusqu'à la fin 
            //les sections sont maj de la dernière à la 1ere
            //=> lorsque qu'une section est stylée les noms de class ont le numéro
            // et ne sont plus trouvées par $zePlage.filter('.'+sClass) ou $zePlage.find('.'+sClass)
            //si c'est dans un div on gere d'abord jusq fin du div
            //puis on gère jusque fin du form (depuis fin du div si div sinon depuis ...
            if(true){   //bDansDivSautDePg){
                //var $divChildrenNiv1 = $formOuDivChildren_debSection.siblings();     //  //tous les enfants de niv1 de <div>
                var $divChildrenNiv1 = $formOuDivChildren_debSection.parent().children();     //  //tous les enfants de niv1 de <div>
                var indexPosInsertionSection=$formOuDivChildren_debSection.index();//-1; //-1;   //pos dans les freres de $formOuDivChildren_debSection
                var $zePlage = $divChildrenNiv1.slice(indexPosInsertionSection);   //, $formOuDivChildren_debSection.index());
               
                //si la section continue sur la ou les pages suiv
                if(bDansDivSautDePg){
                    var $zeDivNext=$formOuDivChildren_debSection.parent().nextAll();//tous les div qui suivent si sur plusieurs pages
                    //var $zeDivNext=$zeDivNext.nextAll();
                }
                for(var iClass=0; iClass<zeTblClass.length; iClass++){
                    sClass=zeTblClass[iClass];  //'titform','titquest','titqu_polslt','formtbl','formzonesaisie','numsection'
                    sClassNo=sClass+nbSect_noSect;
                    $zePlage.filter('.'+sClass).removeClass(sClass).addClass(sClassNo);
                    $zePlage.find('.'+sClass).removeClass(sClass).addClass(sClassNo);
                    if(bDansDivSautDePg){
                        if($zeDivNext.length>0){
                            $zeDivNext.filter('.'+sClass).removeClass(sClass).addClass(sClassNo);
                            $zeDivNext.find('.'+sClass).removeClass(sClass).addClass(sClassNo);
                        }
                    }
                }
            }
            
            $formOuDivChildren_debSection.before(html_div); //on l'ajoute à la fin pour éviter décalages supra

        }    
         */
    }
}   //mjqChangeSection

function mjqGrpQuHomog_QuIsInGrp(zeIdQ){
    var sReturn="";
    if(zeIdQ!=''){
        var zeSelector='titreq'+zeIdQ;
        zeSelector = baliseTitreQ+'#'+zeSelector;//[id^='+zeSelector+']';
        var $zeQu = $(zeSelector).eq(0);
        if($zeQu.length>0){
            var $zeTableContenantLaQu = $zeQu.closest('table.tablquregroup').eq(0);
            if($zeTableContenantLaQu.length>0){
                sReturn=$zeTableContenantLaQu.attr('class');
                return sReturn;
            }
        }
    }
}

function mjqGrpQuHomog_QuDuGrp(zeIdDuGrp){
    var sReturn="";
    if(zeIdDuGrp!=''){
        var sClass='grpquhomog'+zeIdDuGrp;
        var zeSelector='table.'+sClass;
        var $zeTableContenantLeGrp = $(zeSelector).eq(0);
        if($zeTableContenantLeGrp.length>0){
            var $zeQu=$zeTableContenantLeGrp.find(baliseTitreQ+'[id^=titreq]');
            if($zeQu.length>0){
                for(var i=0;i<$zeQu.length;i++){
                    sReturn += $zeQu.eq(i).attr('id')+sSepPrMsg4D;
                }
                return(sReturn);
            }
        }
    }
}
function mjqGrpQuHomog_tousLesGrp(){
    var sReturn="";
    var zeSelector=baliseTitreQ+'[id^=grpquhomog]';
    var $zeSelTlb=$(zeSelector);
    if($($zeSelTlb).length>0){
        for(var i=0;i<$zeSelTlb.length;i++){
            sReturn += $zeSelTlb.eq(i).attr('id')+sSepPrMsg4D;
        }
        return(sReturn);
    }
}

function mjqGrpQuPerso_tousLesGrp(){
    var sReturn="";
    var zeSelector='*[id^=tablperso]';
    var $zeSelTlb=$(zeSelector);
    if($($zeSelTlb).length>0){
        for(var i=0;i<$zeSelTlb.length;i++){
            sReturn += $zeSelTlb.eq(i).attr('id')+sSepPrMsg4D;
        }
        return(sReturn);
    }
}

function mjqGrpQuPerso_QuIsInGrp(zeIdQ){
    var sReturn="";
    if(zeIdQ!=''){
        var zeSelector='Q'+zeIdQ;
        zeSelector='#'+zeSelector;
        var $zeQu = $(zeSelector).eq(0);
        if($zeQu.length>0){
            var $zeTableContenantLaQu = $zeQu.closest('table.tablquregroup').eq(0);
            if($zeTableContenantLaQu.length>0){
                sReturn=$zeTableContenantLaQu.attr('class');
                return sReturn;
            }
        }
    }
}

function mjqGrpQuPerso_QuDuGrp(zeIdDuGrp){
    var sReturn="";
    if(zeIdDuGrp!=''){
        var sClass=zeIdDuGrp; //tablperso2;//'grpquhomog'+zeIdDuGrp;
        var zeSelector='table.'+sClass;
        var $zeTableContenantLeGrp = $(zeSelector).eq(0);
        if($zeTableContenantLeGrp.length>0){
            var $zeQu=$zeTableContenantLeGrp.find(':input[name^=Q]'); // ":input" inclut "select", "textarea"...
            if($zeQu.length>0){
                for(var i=0;i<$zeQu.length;i++){
                    //sReturn += $zeQu.eq(i).attr('id')+sSepPrMsg4D;
                    sReturn += $zeQu.eq(i).attr('name')+sSepPrMsg4D;

                }
                return(sReturn);
            }
        }
    }
}

function mjqQuDansForm_toutesQu(){
    var sReturn="";
    var $ttesQ = $('[id^=Q], [id^=titreq]').not('[id*=_], [id*=M]'); // pour éviter Q5_2 ou Q5_M2;
    if($ttesQ.length>0){
    	for(var i=0; i<$ttesQ.length; i++){
            sReturn += $ttesQ.eq(i).attr('id')+";"//sSepPrMsg4D;
        }
    }
    return(sReturn);
}

function mjqChangeValue1Field(zeField, zeValue, zeAction){
    
    var zeAct="set";
    if(typeof(zeAction) != "undefined"){
        if(zeAction==="get") zeAct="get";
    }
    if(typeof(document.fML[zeField])!="undefined"){
        if(zeAct==="set"){
            document.fML[zeField].value = zeValue;
        }else if(typeof(document.fML[zeField].value) != "undefined"){
            return document.fML[zeField].value;
        }
    }
}

function mjqMultiColPage(sNoQ, sOption){
    var sReturn='';
    var sListeQ1Lig='';
    var sOpt='';
    if(typeof(sOption) != "undefined"){
        sOpt=sOption;
    }
    if(sOpt==="unWrap"){
        //___on unwrap si ...
        $zeTblsMultiCol=$('table.pageMultiCol').filter("table.toUnwrap").children("tbody");
        if($zeTblsMultiCol.length>0){
            $zeTblsMultiCol.children().unwrap();
        }
        $zeTblsMultiCol=$('table.pageMultiCol').filter("table.toUnwrap");
        if($zeTblsMultiCol.length>0){
            $zeTblsMultiCol.children().unwrap();//Remove the parents of the set of matched elements from the DOM
        }
        ///___
        
        //___on supprime les elem vides si exist
        
        var $zeTblsMultiCol = $('table.pageMultiCol');
        if($zeTblsMultiCol.length>0){
            var nbNotEmpty=0;
            var nbTbl=$zeTblsMultiCol.length;
            for(i=0;i<nbTbl;i++){
                var $zeTbl=$zeTblsMultiCol.eq(i);
                /*
                 if(i<=2){
                    var zeHtml=$zeTbl.html();
                    alert(i+" : "+zeHtml );
                }
                 */
                var $ligOK = $zeTbl.find('tr.ligTablMultiPg');
                if ($ligOK.length >=1 ) {
                    nbNotEmpty+=1;
                }
            }
            //if(true){//nbNotEmpty<$zeTblsMultiCol.length){
                //alert("$zeTblsMultiCol.length = "+$zeTblsMultiCol.length+" / "+"nbNotEmpty = "+nbNotEmpty);
            //}
        }

        /*
        var $elemEmpty = $('table.pageMultiCol')
        .filter(function(index){
             var bEmpty=true;
             var $ligOK = $zeTbl.find('tr.ligTablMultiPg');
             //var $ligOK = $(this).has('.ligTablMultiPg');
             if ($ligOK.length >=1 ) {
                            nbNotEmpty+=1;
                            bEmpty = false;
             }
            return bEmpty;
             });
         alert("$elemEmpty = "+$elemEmpty.length+" / "+nbNotEmpty);
        */
            
        return $zeTblsMultiCol.length;
        
    }else if(sOpt==="multiLig2LigParLig"){
        var $zeTblsMultiCol = $('table.pageMultiCol');
        if($zeTblsMultiCol.length>0){
           
           $zeTblsMultiCol.each(function(index){
                                    var $lignesDuTabl = $(this).find('tr.ligTablMultiPg');
                                    var nbLig=$lignesDuTabl.length;
                                    if(nbLig>=2){
                                        
                                        var $zeColGroup=$(this).find('colgroup').eq(0);
                                        var zeColGrpLength=$zeColGroup.length;
                                        var $zeColGrpClone;
                                        if(zeColGrpLength>0){
                                            $zeColGrpClone=$zeColGroup.clone();
                                            $zeColGroup.remove();
                                        }
                                
                                        var $zeTableElem = $(this).attr('class');
                                        $zeTableElem="class="+"'"+$zeTableElem+"'";
                                        $zeTableElem="<table "+$zeTableElem+">"+"</table>";
                                        $lignesDuTabl.wrap($zeTableElem);
                                
                                        $(this).addClass('toUnwrap'); //cf "supprTablVide"

                                        $lignesDuTabl = $(this).find('table.pageMultiCol');//il faut recharger apres .wrap()
                                        if(zeColGrpLength>0){
                                            $lignesDuTabl.prepend($zeColGroup);
                                        }
                                    }
                                });
           }
        return $zeTblsMultiCol.length;
    }else{
        
        var zeSelector='#'+'titreq'+sNoQ;
        var $zeTblParentMultiCol = $(zeSelector).closest('table.pageMultiCol').eq(0);
        if($zeTblParentMultiCol.length>0){
            sReturn = $zeTblParentMultiCol.attr('class');// ex : 'pageMultiCol nbColPage2 ...'
            
            var bLig1DuTblMultiCol=true; //tjrs : cf "multiLig2LigParLig"
            var $zeTblParentTR = $(zeSelector).closest('tr.ligTablMultiPg').eq(0);
            if($zeTblParentTR.length>0){
                if(sOpt==='listeQ1Lig$'){
                    var $quConcernees = $zeTblParentTR.find(baliseTitreQ+'[id^=titreq]');
                    $quConcernees.each(function(index){
                        sListeQ1Lig += $(this).attr('id') + ';';
                    });
                }
            }
        
            sReturn += sSepPrMsg4D;
            if(bLig1DuTblMultiCol) sReturn +='1'; else sReturn +='0';
                    
            sReturn += sSepPrMsg4D;
            sReturn += sListeQ1Lig;
            ///___
            
           }
    }
    return sReturn;
}
/*
function mjqMLZZaLaFin(){
	// on remet svt MLZZ à la fin par précaution
	var $elem = $("input[name=MLZZ]").eq(0);
	if($elem.length > 0){
		var $formLastElem = $("form").children().last();
		if($formLastElem.length > 0){
			var zeName = $formLastElem.eq(0).attr("name");
			if(zeName !== "MLZZ"){
				var $clone = $elem.clone();
				$formLastElem.after($clone);
				$elem.remove();
			}
		}
	}
}
*/
function mjqDeplaceElem (idSrc, idDest, sPosInsertion){
	var $elemSrc = {};
	if(idSrc !== ""){
		if(idSrc.indexOf("im") === 0){
			$elemSrc = $('#'+idSrc).closest("table.tableimage").eq(0);
		}else if(idSrc.indexOf("video") === 0){
			$elemSrc = $('#'+idSrc).closest("table.tablevideo").eq(0);
		}else if(idSrc.indexOf("txt") === 0){
			$elemSrc = $('#'+idSrc).closest("table.tabletxt").eq(0);
		}else if(idSrc.indexOf("section_no_id") === 0){
			$elemSrc = $('#'+idSrc).closest("table[class*=tablesection]").eq(0);
		}else if( (idSrc.indexOf("grpquhomog") === 0) || (idSrc.indexOf("tablperso") === 0) ){
			$elemSrc = $('#'+idSrc).closest("table.tablquregroup").eq(0);
		}else if(idSrc.indexOf("titreq") === 0){
			$elemSrc = $('#'+idSrc).closest("table[class*=formtbl]").eq(0);
		}
		if($elemSrc.length > 0){
			if(idDest !== ""){
			  	var $zeTableDest = $('#'+idDest).closest('table.pageMultiCol').eq(0);
                if($zeTableDest.length <= 0){
					var $zeTableDest = $('#'+idDest).closest('table.titGen, table[class*=tablesection], table.tablquregroup, table[class*=formtbl], table.tableimage, table.tablevideo, table.tabletxt, table.lien_sautDePage,table.boutonEnvoyer').eq(0);
				}
				
				if($zeTableDest.length > 0){
				 	var sSignet = '<p id="beforeProv"></p>';    //pour conserver trace du debut de l'insertion
                    //$zeTableDest.before(sSignet);  //pour pouvoir insérer $zeHtml_new after
                    if(sPosInsertion === "before"){
						$zeTableDest.before(sSignet);
					}else{
						$zeTableDest.after(sSignet);
					}

					var $zeTableSrcClone = $elemSrc.clone();
					var $beforeProv =  $('#beforeProv').eq(0);
					
					//if(sPosInsertion === "before"){
						//$beforeProv.before($zeTableSrcClone);
					//}else{
						$beforeProv.after($zeTableSrcClone);
					//}
										
					var $beforeProv =  $('#beforeProv').eq(0);
					$beforeProv.remove();
					
					$elemSrc.remove();
					
					jspMLZZaLaFin();
				}
			}
		}
	}
}
function mjqChangeElem (zeParam1, zeHtml_new, sNoQ, sAutresParam){
    
    if(zeParam1 != ''){
        var tblParamsAutres = sAutresParam.split(';');
        var largeurPage=600;
        if(tblParamsAutres.length>0){
          largeurPage=parseInt(tblParamsAutres[0], 10);
        }     
          //______
    
        var tblParam1 = zeParam1.split('/');
        var typeBloc='';
        if(tblParam1.length>0) typeBloc=tblParam1[0];
        
        if(typeBloc === 'MLQrIdAff'){
            var bSuppr=false;
            var bMLAA=false;
            if(zeHtml_new==="suppr") bSuppr=true;
            
            var zeSelector='#'+typeBloc;
            var $zeElemDeRef = $(zeSelector).closest('table.MLQrIdAff').eq(0);
            if($zeElemDeRef.length<=0){
                if(!bSuppr){
                    //on se positionne apres MLAA
                    //<input type="hidden" name="MLAA" value="A">
                    $zeElemDeRef=$(':input[name^=MLAA]').eq(0);
                    if($zeElemDeRef.length>0){
                        bMLAA=true;
                    }
                }
            }
            if($zeElemDeRef.length>0){
                if(bSuppr){
                    if(!bMLAA){
                        $zeElemDeRef.remove();
                    }
                }else{
                    if(bMLAA){
                        $zeElemDeRef.after(zeHtml_new);
                    }else{
                        var $beforeProv =  $('#beforeProv').eq(0);
                        if($beforeProv.length>0) $beforeProv.remove();
                        var sSignet = '<p id="beforeProv"></p>';    //pour conserver trace du debut de l'insertion
                        $zeElemDeRef.before(sSignet);  //pour pouvoir insérer $zeHtml_new after
                        $zeElemDeRef.remove(); //on supprime tout le tableau
                        var $beforeProv =  $('#beforeProv').eq(0);
                        $beforeProv.after(zeHtml_new);
                        var $beforeProv =  $('#beforeProv').eq(0);
                        $beforeProv.remove();
                        //jspContenuInsere_avantRemove($zeElemDeRef, zeHtml_new){


                    }
                }
            }
            

        }else if(typeBloc === 'boutonEnvoyer'){
            var zeSelector='#'+typeBloc;
            var $zeTableContenantBout = $(zeSelector).closest('table.boutonEnvoyer').eq(0);
            if($zeTableContenantBout.length>0){
                
                var $beforeProv =  $('#beforeProv').eq(0);
                if($beforeProv.length>0)
                    $beforeProv.remove();
                var sSignet = '<p id="beforeProv"></p>';    //pour conserver trace du debut de l'insertion
                $zeTableContenantBout.before(sSignet);  //pour pouvoir insérer $zeHtml_new after
                $zeTableContenantBout.remove(); //on supprime tout le tableau
                var $beforeProv =  $('#beforeProv').eq(0);
                $beforeProv.after(zeHtml_new);
                var $beforeProv =  $('#beforeProv').eq(0);
                $beforeProv.remove();

            }

        }else if(typeBloc === 'suppr1Q'){
            var zeSelector='#'+'titreq'+sNoQ;
            var $zeTableContenantLaQuDest = $(zeSelector).closest('table[class*=formtbl]').eq(0);
            if($zeTableContenantLaQuDest.length>0){
                $zeTableContenantLaQuDest.remove();
            }
        }else if(typeBloc === 'inser1QouGrpQ'){  // (1Q ou 1grpQ)
            if(tblParam1.length >=3){
            	var bQuDeRefTrouvee=true;
                var sNoQDeRef=tblParam1[2];
                var LidQ = parseInt(sNoQDeRef, 10);
                if(LidQ > 0){
                    var zeSelector='#'+'titreq'+sNoQDeRef;
                    var $zeTableContenantLaQuDest = $(zeSelector).closest('table[class*=formtbl]').eq(0); // rem :si grp qu => prend le tabl contenant ttes les qu
                    if($zeTableContenantLaQuDest.length<=0){
                        var zeSelector='#'+'Q'+sNoQDeRef;
                        var $zeTableContenantLaQuDest = $(zeSelector).closest('table[class*=formtbl]').eq(0); // rem :si grp qu => prend le tabl contenant ttes les qu
                    }
                    if($zeTableContenantLaQuDest.length <= 0){
                        LidQ = 0;
                        var bQuDeRefTrouvee=false; // erreur grave notamment / ordre qu
                    }
                }
               
                if(LidQ <= 0){ // 1ere qu créée ou pb
                  
                    // on se positionne à la fin du form avant MLZZ ou boutonEnvoyer
                    // rem : MLZZ peut etre apres le bouton Envoyer
					var $inputMLZZ_ou_boutEnvoyer =  $('input[name=MLZZ], table.boutonEnvoyer').eq(0);
                    if($inputMLZZ_ou_boutEnvoyer.length>0){
                        $inputMLZZ_ou_boutEnvoyer.before(zeHtml_new);
                    }
                    if(!bQuDeRefTrouvee){
                		return "err_posQ"; //moda aff une alerte et essayera de mettre la nouv qu à la fin
                	}
                                     
                }else if($zeTableContenantLaQuDest.length>0){
                    // si dans tabl multicol => on place devant le tabl multicol, sauf si à la fin du form if(tblParam1[1]==="before")
                    // rem : dans Moda on doit refuser les autres cas
                    var $zeTblParentMultiCol = $zeTableContenantLaQuDest.closest('table.pageMultiCol').eq(0);
                    if($zeTblParentMultiCol.length>0){
                        if(tblParam1[1]==="before"){
                            $zeTblParentMultiCol.before(zeHtml_new);
                        }else{
                            $zeTblParentMultiCol.after(zeHtml_new);
                        }
                    }else{
                        if(tblParam1[1]==="before"){
                            $zeTableContenantLaQuDest.before(zeHtml_new);
                        }else{
                            $zeTableContenantLaQuDest.after(zeHtml_new);
                        }
                    }
                }
                return "ok";
            }
        }else if(typeBloc === 'modif1Q'){   //remplace 1 qu mais pas le type de dispo
            var zeId=typeBloc+sNoQ;
            var zeSelector='#'+'titreq'+sNoQ;
            var $zeTableContenantLaQuDest = $(zeSelector).closest('table[class*=formtbl]').eq(0);
            if($zeTableContenantLaQuDest.length>0){
                //$zeTableContenantLaQuDest.after(zeHtml_new).end();
                //$zeTableContenantLaQuDest.remove(); //on supprime tout le tableau
                var $beforeProv =  $('#beforeProv').eq(0);
                if($beforeProv.length>0)
                    $beforeProv.remove();
                var sSignet = '<p id="beforeProv"></p>';    //pour conserver trace du debut de l'insertion
                $zeTableContenantLaQuDest.before(sSignet);  //pour pouvoir insérer $zeHtml_new after
                $zeTableContenantLaQuDest.remove(); //on supprime tout le tableau
                var $beforeProv =  $('#beforeProv').eq(0);
                $beforeProv.after(zeHtml_new);
                var $beforeProv =  $('#beforeProv').eq(0);
                $beforeProv.remove();
            }
            return "ok";
            
        }else if(typeBloc === 'titreq'){   //name=tqx / id=titreqx
            //var zeId=typeBloc+sNoQ;
            var zeSelector='#'+typeBloc+sNoQ;
            $(zeSelector).empty();
            $(zeSelector).html(zeHtml_new);
            return "ok";
            
        }else if(typeBloc === 'oblMsgQ'){//msg sais obl
            //var zeId=typeBloc+sNoQ;
            var zeSelector='#'+typeBloc+sNoQ;
            $(zeSelector).empty();
            $(zeSelector).html(zeHtml_new);
            return "ok";
        }else if(typeBloc === 'oblMsg'){//msg sais obl aff tjrs
            var zeSelector='span[id^='+typeBloc+']'; //ex:<span id="oblMsgQ5" style="display","inline";...">
            if(zeHtml_new==="1"){
                //$(zeSelector).removeAttr("display");//ne réaff pas
			    $(zeSelector).css("display","inline");
            }else{
               $(zeSelector).css("display","none");
            }
            return "ok";
        }else if(typeBloc === 'consAutoAff'){//consignes auto aff ou non
            //class="consauto" ou "consautoblock" style="display","inline"/"block";...">
            if(zeHtml_new==="1"){//aff
                $('.consauto').css("display","inline");
                $('.consautoblock').css("display","block");//pour retour à la ligne
            }else{
                $('.consauto').css("display","none");
                $('.consautoblock').css("display","none");
            }
            return "ok";
        }else if(typeBloc === 'tdsaisq'){   //les modals d'une qu "um"
            //var zeId=typeBloc+sNoQ;
            var zeSelector='#'+typeBloc+sNoQ;
            $(zeSelector).empty();
            $(zeSelector).html(zeHtml_new);
            return "ok";

        }else if(typeBloc === 'deplaceQ'){
            if(tblParam1.length >=3){
                sNoQSrc=tblParam1[1];
                sNoQDest=tblParam1[2];
            
                var zeSelector='#tdsaisq'+sNoQDest;
                var $zeTableContenantLaQuDest = $(zeSelector).closest('table[class*=formtbl]').eq(0);
                if($zeTableContenantLaQuDest.length>0){
                    var sSignet = '<p id="beforeProv"></p>';    //pour conserver trace du debut de l'insertion
                    $zeTableContenantLaQuDest.before(sSignet);  //pour pouvoir insérer $zeHtml_new after

                    var zeSelector='#tdsaisq'+sNoQSrc;
                    var $zeTableContenantLaQuSrc = $(zeSelector).closest('table[class*=formtbl]').eq(0);
                    if($zeTableContenantLaQuSrc.length>0){
                        var $zeTableContenantLaQuClone = $zeTableContenantLaQuSrc.clone();
                        var $beforeProv =  $('#beforeProv').eq(0);
                        
                        //___insertion des qu
                        $beforeProv.after($zeTableContenantLaQuClone);
                                            
                        var $beforeProv =  $('#beforeProv').eq(0);
                        $beforeProv.remove();
                        
                        $zeTableContenantLaQuSrc.remove();
                    }
                }
            }
            
        }else if(typeBloc === 'modifTablPerso'){
             var idDuGrp='';
             if(tblParam1.length >=2){
                idDuGrp=tblParam1[1]; //ex: "tablperso1"
             }
             if(idDuGrp!=''){
                 var zeSelector='#'+idDuGrp;//'table.'+sClass;//[class*='+sClass+']';
                 var $zeTableContenantLeGrp = $(zeSelector).closest('table.tablquregroup').eq(0);
                 if($zeTableContenantLeGrp.length>0){
                     var sSignet = '<p id="beforeProv"></p>'; //pour conserver trace du debut de l'insertion
                     $zeTableContenantLeGrp.before(sSignet); //pour pouvoir insérer $zeHtml_new after
                     $zeTableContenantLeGrp.remove();
                     var $beforeProv =  $('#beforeProv').eq(0);
                     //___insertion des qu
                     $beforeProv.after(zeHtml_new);
                     
                     var $beforeProv =  $('#beforeProv').eq(0);
                     $beforeProv.remove();
                     return 'ok';
                 }
             }
            
        }else if((typeBloc === 'degroupTablPerso')||(typeBloc === 'degroupGrpQuHomog')||(typeBloc === 'modifGrpQuHomog')){
            var sClass='';

            if(tblParam1.length >=2){
                if(typeBloc === 'degroupTablPerso'){
                    sClass=tblParam1[1];   // ex : tablperso2
                }else{
                   var idDuGrp=0;
                    idDuGrp=parseInt(tblParam1[1], 10);
                    if(idDuGrp>0) sClass='grpquhomog'+tblParam1[1];   //idDuGrp; 
                }
            }
            if(sClass!=''){
                //var sClass='grpquhomog'+tblParam1[1];   //idDuGrp;
                var zeSelector='table.'+sClass;
                var $zeTableContenantLeGrp = $(zeSelector).eq(0);

                if($zeTableContenantLeGrp.length>0){
                    var sSignet = '<p id="beforeProv"></p>'; //pour conserver trace du debut de l'insertion
                    $zeTableContenantLeGrp.before(sSignet); //pour pouvoir insérer $zeHtml_new after
                    $zeTableContenantLeGrp.remove();
                    var $beforeProv =  $('#beforeProv').eq(0);
                    //___insertion des qu
                    $beforeProv.after(zeHtml_new);
                                    
                    var $beforeProv =  $('#beforeProv').eq(0);
                    $beforeProv.remove();
                    return 'ok';
                }
            }
        }else if(typeBloc === 'nouvTablPerso'){
            var nbQuDuGrp=0;
            if(tblParam1.length >=2){
                nbQuDuGrp=parseInt(tblParam1[1], 10);
            }
            
            if(nbQuDuGrp>=1){
                if(tblParam1.length >= 3){
                    var s=tblParam1[2];
                    var tbl_sNoQ = s.split(';');
                    if(tbl_sNoQ.length>=2){
                        for(var iNoQ=0; iNoQ<tbl_sNoQ.length; iNoQ++){
                            if((parseInt(tbl_sNoQ[iNoQ]), 10)>0){
                                var zeSelector='#tdsaisq'+tbl_sNoQ[iNoQ];
                                var $zeTableContenantLaQu = $(zeSelector).closest('table[class*=formtbl]').eq(0);
                                if($zeTableContenantLaQu.length>0){
                                    if(iNoQ===0){
                                        var sSignet = '<p id="beforeProv"></p>'; //pour conserver trace du debut de l'insertion
                                        $zeTableContenantLaQu.before(sSignet); //pour pouvoir insérer $zeHtml_new after
                                    }
                                    $zeTableContenantLaQu.remove();
                                }
                            }
                        }
                        var $beforeProv =  $('#beforeProv').eq(0);
                        //___insertion du tableau
                        $beforeProv.after(zeHtml_new);
                        
                        var $beforeProv =  $('#beforeProv').eq(0);
                        $beforeProv.remove();
                        return 'ok';
                    }
                }
                
            }
            
        }else if(typeBloc === 'nouvGrpQuHomog'){
            var nbQuDuGrp=0;
            if(tblParam1.length >=2){
                nbQuDuGrp=parseInt(tblParam1[1], 10);
            }
            
            if(nbQuDuGrp>=2){
                if(tblParam1.length >= 3){
                    var s=tblParam1[2];
                    var tbl_sNoQ = s.split(';');
                    if(tbl_sNoQ.length>=2){
                        for(var iNoQ=0; iNoQ<tbl_sNoQ.length; iNoQ++){
                            if((parseInt(tbl_sNoQ[iNoQ], 10))>0){
                                var zeSelector='#tdsaisq'+tbl_sNoQ[iNoQ];
                                var $zeTableContenantLaQu = $(zeSelector).closest('table[class*=formtbl]').eq(0);
                                if($zeTableContenantLaQu.length>0){
                                    if(iNoQ===0){
                                        var sSignet = '<p id="beforeProv"></p>'; //pour conserver trace du debut de l'insertion
                                        $zeTableContenantLaQu.before(sSignet); //pour pouvoir insérer $zeHtml_new after
                                    }
                                    $zeTableContenantLaQu.remove();
                                }
                            }
                        }
                        var $beforeProv =  $('#beforeProv').eq(0);
                        //___insertion du tableau de grp de qu homog
                        $beforeProv.after(zeHtml_new);
                                    
                        var $beforeProv =  $('#beforeProv').eq(0);
                        $beforeProv.remove();
                        return 'ok';
                    }
                }
            
            }
        
            
        }else if(typeBloc === 'multiColPage'){
        
            var bTtesQDeLaLigSur1Col=true;
            //var zeId=typeBloc+sNoQ;
            var zeSelector='#titreq'+sNoQ;

            var nbColPage=0;
            if(tblParam1.length >=2){
                nbColPage=parseInt(tblParam1[1], 10);
            }
            
            if(nbColPage>=2){
                //les tests sur le nb col cour, les quest concernées, ... sont fait dans 4D avant d'arriver ici
                if(tblParam1.length >= 3){
                    var s=tblParam1[2];
                    var tbl_sNoQ = s.split(';');
                    if(tbl_sNoQ.length>=2){
                        for(var iNoQ=0; iNoQ<tbl_sNoQ.length; iNoQ++){
                            if((parseInt(tbl_sNoQ[iNoQ]), 10)>0){
                                var zeSelector='#tdsaisq'+tbl_sNoQ[iNoQ];
                                var $zeTableContenantLaQu = $(zeSelector).closest('table[class*=formtbl]').eq(0);
                                if($zeTableContenantLaQu.length>0){
                                    if(iNoQ==0){
                                        var sSignet = '<p id="beforeProv"></p>'; //pour conserver trace du debut de l'insertion
                                        $zeTableContenantLaQu.before(sSignet); //pour pouvoir insérer $zeHtml_new after
                                    }
                                    $zeTableContenantLaQu.remove();
                                }
                            }
                        }
                        var $beforeProv =  $('#beforeProv').eq(0);
                        //___insertion du tableau multicol
                        $beforeProv.after(zeHtml_new);
                        
                        var $beforeProv =  $('#beforeProv').eq(0);
                        $beforeProv.remove();
                    }
                }

            }else if(nbColPage===1){

                
                //on cherche si déja dans tabl multicol
                var $zeTblParentMultiCol = $(zeSelector).closest('table.pageMultiCol').eq(0);
                if($zeTblParentMultiCol.length > 0){  //c'est dans un tabl multicol

                    var $zeTblParentTR = $(zeSelector).closest('tr.ligTablMultiPg').eq(0);
                    if($zeTblParentTR.length>0){
                        
                        var $lignesDuTabl = $zeTblParentTR.siblings().andSelf();
                        var zeNoLigSel = $lignesDuTabl.index($zeTblParentTR);
                        var $zePrevTR = $zeTblParentTR.prev().eq(0); //il y a au moins une ligne de quests avant dans le meme tabl multicol
                        var $zeNextTR = $zeTblParentTR.next().eq(0); //il y a au moins une ligne de quests apres dans le meme tabl multicol
                        
                        var $zeCellContenantLaQu = $(zeSelector).closest('td[class*=colMultiPgCol]').eq(0);
                        if($zeCellContenantLaQu.length>0){
                            //qu ou grp de qu
                            var $zeTableContenantLaQu = $(zeSelector).closest('td[class*=colMultiPgCol]').eq(0).find('table[class*=formtbl]').eq(0);
                            if($zeTableContenantLaQu.length>0){
                                                            
                                var $zeCellContenantLaQu_freres=$zeCellContenantLaQu.siblings().andSelf();  //contient aussi les cols séparateurs
                                
                                var sSignet = '<p id="afterProv"></p>'; //pour conserver trace de la fin de l'insertion
                                
                                if (bTtesQDeLaLigSur1Col) { //tjrs
                                    var sListeQModif = sNoQ + ';';
                                    
                                    var $zeTblParentMultiColClone = $zeTblParentMultiCol.clone();
                                    
                                    //___copie des tableaux de qu de la ligne dans tablsDeQuDeLaLigClone
                                    var $tablsDeQuDeLaLig = $zeCellContenantLaQu_freres.find('table[class*=formtbl]');//exclut les cols séparateurs
                                    var $tablsDeQuDeLaLigClone = $tablsDeQuDeLaLig.clone(); //clone pcq modif infra
                                    
                                    var $quConcernees = $tablsDeQuDeLaLig.find(baliseTitreQ+'[id^=titreq]');
                                    $quConcernees.each(function(index){
                                        sListeQModif += $(this).attr('id') + ';';
                                    });
                                    ///___
                                                                    
                                     //___suppression de lig de deb dans le tabl cloné
                                    var zeNo=zeNoLigSel+1;  // //on supprime aussi la ligne cour 
                                    var $lignesDuTablclone = $zeTblParentMultiColClone.find('tr.ligTablMultiPg').eq(0).siblings().andSelf().filter('tr:lt('+zeNo+')');
                                    if($lignesDuTablclone.length>0) $lignesDuTablclone.remove();
                                    ///___
                                    
                                    
                                    //___on place d'abord $zeTblParentMultiColClone,
                                    // car les "$zeTblParentMultiCol.after" suivants décaleront $zeTblParentMultiColClone vers le bas
                                    $zeTblParentMultiCol.after($zeTblParentMultiColClone);
                                    
                                    //___on met les tabls de qu de la ligne sur une colonne apres $zeTblParentMultiCol
                                    //var zeNoLig= $tablsDeQuDeLaLigClone.length - 1;  //de la fin au debut
                                    $tablsDeQuDeLaLigClone.each(function(index){
                                        var zePos = $tablsDeQuDeLaLigClone.length - 1 - index;
                                        //$tablsDeQuDeLaLigClone.eq(zePos).attr('width',largeurPage.toString());
                                        //$zeTblParentMultiColClone.prepend($tablsDeQuDeLaLigClone.eq(zePos)); 
                                        $zeTblParentMultiCol.after($tablsDeQuDeLaLigClone.eq(zePos));
                                        //zeNoLig-=1;
                                    });
                                    ///___
                                    
                                    //___suppr de lignes de fin dans le tabl multicol original
                                    if($zePrevTR.length<=0){
                                        //il n'y a pas de ligne avant => on suppr le tabl
                                        $zeTblParentMultiCol.remove();
                                    }else{
                                        var zeNoLig = $lignesDuTabl.length - 1;  //de la fin au debut
                                        $lignesDuTabl.each(function(){
                                            if(zeNoLig>=(zeNoLigSel)) $lignesDuTabl.eq(zeNoLig).remove();
                                            zeNoLig -= 1;
                                        });
                                    }

                                    if($zeNextTR.length<=0){ //il n'y a pas de ligne apres => on suppr le tabl cloné
                                        $zeTblParentMultiColClone.remove();
                                    }

                                    ///___
                                                                 
                                   return sListeQModif;

                                }else if(!bTtesQDeLaLigSur1Col){    //jamais ?
                                    
                                    /*
                                     var $zeTtesCellQuDsTblMulticol = $zeTblParentMultiCol.find('td[class*=colMultiPgCol]')
                                     .filter(function(){
                                     return ($(this).find('table[class*=formtbl]').length > 0);
                                     });
                                     //var zeNoCellSel = $zeTtesCellQuDsTblMulticol.index($zeCellContenantLaQu);
                                     var zeNoCellQuCour=-1;  //commence à 0
                                     var bDans1ereCol=false;
                                     var bDansDernCol=false
                                     zeNoColCellCour = $zeCellContenantLaQu_freres.index($zeCellContenantLaQu);
                                     if(zeNoColCellCour===0) bDans1ereCol=true;
                                     if(zeNoColCellCour===($zeCellContenantLaQu_freres.length-1)) bDansDernCol=true;
                                     
                                     //___clone du tableau contenant la qu
                                    var $zeTableContenantLaQuClone = $zeTableContenantLaQu.clone();
                                    $zeTableContenantLaQuClone.attr('width',largeurPage.toString()); //si une seule colonne
                                    $zeTableContenantLaQuClone.append(sSignet); //pour pouvoir insérer $zeTblParentMultiColClone after
                                    
                                    $zeTableContenantLaQu.remove(); //on supprime tout le tableau mais on garde la cell pour usage ultérieur
                                    var $zeTblParentMultiColClone = $zeTblParentMultiCol.clone();
                         
                                    //___suppr de tabls de qu dans la ligne cour si...
                                    if((!bDans1ereCol) && (!bDansDernCol)){//c'est une colonne intermédiaire
                                        //il faut supprimer les tabls de qu qui précèdent dans la ligne du tabl de la qu
                                        var $ligneDuTablClone = $zeTblParentMultiColClone.find('tr[class*=ligTablMultiPg]').eq(zeNoLigSel);
                                        var $CellsDeLigneDuTablCloneAvant = $ligneDuTablClone   .find('td[class*=colMultiPgCol]').eq(0).siblings().andSelf()
                                                                                                .filter('td:lt('+(zeNoColCellCour)+')');  
                                        var $tablsASuppr = $CellsDeLigneDuTablCloneAvant.find('table[class*=formtbl]');
                                        if($tablsASuppr.length>0) $tablsASuppr.remove();
                                    }
                                    
                                    //___suppr de tabls de qu dans la ligne cour si...
                                    if((!bDans1ereCol) && (!bDansDernCol)){//c'est une colonne intermédiaire
                                        var $CellsDeLigneDuTabl = $zeCellContenantLaQu_freres.filter('td:gt('+(zeNoColCellCour)+')');  
                                        var $tablsASuppr = $CellsDeLigneDuTabl.find('table[class*=formtbl]');
                                        if($tablsASuppr.length>0) $tablsASuppr.remove();
                                    }

                                    //___suppression de lig dans le tabl cloné
                                    var zeNo=zeNoLigSel; //on garde la ligne cour si le tabl est inséré avant
                                    if(bDansDernCol)
                                        zeNo=zeNoLigSel+1;  // //on supprime aussi la ligne cour qui sera conservée dans le tabl multicol original
                                    var $lignesDuTablclone = $zeTblParentMultiColClone.find('tr[class*=ligTablMultiPg]').eq(0).siblings().andSelf().filter('tr:lt('+zeNo+')');    
                                    if($lignesDuTablclone.length>0) $lignesDuTablclone.remove();
                                    ///___
                                                                
                                    //___insertion du tableau de la qu cour
                                    $zeTblParentMultiCol.after($zeTableContenantLaQuClone); //+ sSignet);
                                    var $afterProv =  $('#afterProv').eq(0);
                                    
                                    //___insertion du tableau multicol cloné
                                    $afterProv.after($zeTblParentMultiColClone);
                                    
                                    var $afterProv =  $('#afterProv').eq(0);
                                    $afterProv.remove();
                                    
                                    //___suppr de lignes dans le tabl multicol original
                                    var zeNoLig= $lignesDuTabl.length - 1;  //de la fin au debut
                                    $lignesDuTabl.each(function(){
                                        if(bDans1ereCol){ //le tabl inséré était dans la col 1
                                            if(zeNoLig>=(zeNoLigSel)) $lignesDuTabl.eq(zeNoLig).remove();
                                            
                                        }else if(zeNoLig>zeNoLigSel) $lignesDuTabl.eq(zeNoLig).remove();
                                        zeNoLig -= 1;
                                    });
                                    ///___
                                     */
                                }
                                
                            }
                        }
                    }
                }
            }

        }else if(typeBloc === 'superp2juxtap'){
            var zeSelector='#titreq'+sNoQ;
            var zeElem = $(zeSelector).eq(0);  // balise TitreQ
            if(zeElem.length>0){
                var $zeTblParentSuperp = $(zeSelector).closest('table[class*=tablsuperp]').eq(0);
                if($zeTblParentSuperp.length > 0){ 
                    $zeTblParentSuperp.after(zeHtml_new);
                    $zeTblParentSuperp.remove(); //on supprime tout le tableau
                }
            }
        
        }else if(typeBloc === 'juxtap2superp'){
            //var zeId='titreq'+sNoQ;
            var zeSelector='#titreq'+sNoQ;
            var zeElem = $(zeSelector).eq(0);  //balise baliseTitreQ
            if(zeElem.length>0){
                var $zeTblParentJuxtap = $(zeSelector).closest('table[class*=tabljuxtap]').eq(0);
                if($zeTblParentJuxtap.length > 0){  //c'est une dispo juxtap
                   
                    //le 1er elem tr en amont de la cell contenant le titre de qu
                    var $zeTblParentTR = $(zeSelector).closest('tr[class*=trclassq]').eq(0);
                    if($zeTblParentTR.length>0){
                        //var $zeTblParentTR = $(zeSelector).closest('tr[class*=trclassq]').eq(0);
                        
                        var $lignesDuTabl = $zeTblParentTR.siblings().andSelf();
                        var zeNoLigSel = $lignesDuTabl.index($zeTblParentTR);
                    
                        var zePrevTR = $zeTblParentTR.prev().eq(0); //il y a une quest avant dans le meme tabl juxtap
                        var zeNextTR = $zeTblParentTR.next().eq(0); //il y a une quest apres dans le meme tabl juxtap
                                                
                        if(zePrevTR.length<=0){  //si c'est la 1ere ligne
                            $zeTblParentTR.remove(); //on supprime la ligne
                            $zeTblParentJuxtap.before(zeHtml_new);
                            if(!zeNextTR){
                            	$zeTblParentJuxtap.remove();
                            }else if(zeNextTR.length<=0){
                            	$zeTblParentJuxtap.remove(); //4/2/16
                            }
                        }else if(zeNextTR.length<=0){ //c'est la dernière ligne
                            $zeTblParentTR.remove(); //on supprime la ligne
                            var $zeInsert = $zeTblParentJuxtap.after(zeHtml_new);
                            
                        }else{  //il y a une ligne avant ET après
                            var $zeTblParentClone = $zeTblParentJuxtap.clone();
                            var zeNo=zeNoLigSel+1;  //on supprime aussi la ligne cour
                            var $lignesDuTablclone = $zeTblParentClone.find('tr').eq(0).siblings().andSelf().filter('tr:lt('+zeNo+')');    
                            if($lignesDuTablclone.length>0) $lignesDuTablclone.remove();

                            //dans le tabl cloné on supprime les lignes d'avant la ligne de la qu
                            /*
                            var $lignesDuTablclone = $zeTblParentClone.find('tr').eq(0).siblings().andSelf();    
                            var zeNoLig= $lignesDuTablclone.length - 1;  //de la fin au debut
                            $lignesDuTablclone.each(function(){
                                if(zeNoLig<=zeNoLigSel) $lignesDuTablclone.eq(zeNoLig).remove();
                                zeNoLig -= 1;
                            });
                           */
                                                           
                            var sSignet = '<p id="afterProv"></p>'; //pour conserver trace de la fin de l'insertion
                            $zeTblParentJuxtap.after(zeHtml_new + sSignet);
                            var $afterProv =  $('#afterProv').eq(0);
                            
                            var $zeInsert = $afterProv.after($zeTblParentClone);
                            $afterProv.remove();
                            
                           // var $lignesDuTablclone = $zeInsert.find('tr');
                            var zeNoLig= $lignesDuTabl.length - 1;  //de la fin au debut
                            $lignesDuTabl.each(function(){
                                if(zeNoLig>=zeNoLigSel) $lignesDuTabl.eq(zeNoLig).remove();
                                zeNoLig -= 1;
                            });
                        }
                        return "ok";
                    }
                }
            }
        }
    }
    return "err";
}

function mjqAlert (zeParam1){
    var $tooltipExist = $('#tooltip').get(0);
    var zeTagName = $tooltipExist.tagName;
    alert("#tooltip = "+zeTagName);
    return zeTagName;

}

function mjqSurMinut (zeParam1){
    var sRet = ""
    if(zeEvtAGerer!==""){
        sRet = "evt="+zeEvtAGerer;
        sRet += sSepPrMsg4D + zeContentClic;
        zeEvtAGerer="";
    }
    return sRet;
}

function mjqAnnuleSelTxt (zeParam1){
    if (window.getSelection) {  // all browsers, except IE before version 9
        var selection = window.getSelection ();
        selection.removeAllRanges ();
    }else{
        if (document.selection.createRange) {        // Internet Explorer
            var range = document.selection.createRange ();
            document.selection.empty ();
        }
    }

}
function tooltipHide_f(zeParam1){
    $('#tooltip').hide();
}
function mjqDocxTablesPrExport(oHtml){
	var sReturn = "";
	var $tbls = $("table.titGen, table[class*=tablesection], table.pageMultiCol, table[class*=formtbl], table.tablquregroup, table.tabletxt, table.tableimage, table.lien_sautDePage");
	
	oHtml["nbTbl"] = $tbls.length;
	
	$tbls.each(function(index){
		var zeClass = $(this).attr('class');
		var zeId = "";
		var $zeId = $(this).find("[id]").not("[id^=codtitq]").not("[id^=csstit_]").not("[id^=csszs_]");
		if($zeId.length > 0){
			var zeId = $zeId.eq(0).attr("id");
		}
		//sReturn += "class=" + zeClass + ";id=" + zeId + sSepPrMsg4D;
		oHtml["tbl" + (index + 1)] = {};
		oHtml["tbl" + (index + 1)]["class"] =zeClass;
		oHtml["tbl" + (index + 1)]["id"] =zeId;
		if(zeClass.indexOf("pageMultiCol") >= 0){
			var $cols = $(this).find("td[class^=colMultiPgCol]");
			if($cols.length > 0 ){
				oHtml["tbl" + (index + 1)]["nbTD"] = $cols.length;
				$cols.each(function(indexTD){
					oHtml["tbl" + (index + 1)]["c" + (indexTD + 1) + "tdW"] = $(this).width();
				});
			}
		}
	});
	//return sReturn;
	return oHtml;

}

function mjqDocxPropsHtmlElemAEnv(typeTabl, zeSelector, oHtml){
	var sReturn = "";
	if(typeTabl){
		oHtml["nbTR_ZS"] = 0;
		if(typeTabl === "tableimage"){
			var $im = $(zeSelector).closest("img").eq(0);
			if($im.length > 0){
				oHtml["img_width"] = $im.width();
				oHtml["img_height"] = $im.height();
				var $td = $im.closest("td[name=image_jq]").eq(0);
				if($td.length > 0){
					oHtml["imgTD_width"] = $td.width();
					oHtml["imgTD_class"] = $td.attr("class");
					oHtml["imgTD_textAlign"] = $td.css("text-align");
					oHtml["imgTD_paddingLeft"] = $td.css("padding-left");
					oHtml["imgTD_paddingTop"] = $td.css("padding-top");
					oHtml["imgTD_paddingRight"] = $td.css("padding-right");
					oHtml["imgTD_paddingBottom"] = $td.css("padding-bottom");
				}
			}
		}else if((typeTabl === "tablsuperp") || (typeTabl === "tabljuxtap") || (typeTabl === "tablquregroup")){
			var $tabl = $(zeSelector).closest("table[class*=formtbl]").eq(0);
			if($tabl.length > 0){
				
				var $tdTitQ = $tabl.find("td[id^=csstit_]").eq(0);
				if($tdTitQ.length > 0){
					oHtml["titq_tdw"] = $tdTitQ.width();
				}
				if(typeTabl === "tablquregroup"){
					var $tdsaisq = $tabl.find("td[id^=csszs_]").eq(0);
				}else{
					var $tdsaisq = $tabl.find("td[id^=tdsaisq]").eq(0);
				}
				if($tdsaisq.length > 0){
					oHtml["tdsaisq_fontSize"] = $tdsaisq.css("font-size");
					oHtml["tdsaisq_tdw"] = $tdsaisq.width();
					
					var $tabl = $tdsaisq.find("table").eq(0);
					var tdsaisq_hasTable = ($tabl.length > 0);
					if( !tdsaisq_hasTable){ // qu type "andh" ou sais clav
						oHtml["nbTR_ZS"] = 0;
						oHtml["nbTDLig1ZS"] = 1;
						oHtml["c1_tdw"] = $tdsaisq.width();
						
						var $consPerso = $tdsaisq.find("[id^=consperso]").eq(0);
						if($consPerso.length > 0){
							oHtml["consPerso_id"] = $consPerso.attr("id");
							oHtml["consPerso_display"] = $consPerso.css("display");
							oHtml["consPerso_text"] = $consPerso.text();
						}
						var $consAuto = $tdsaisq.find("[id^=consauto]").eq(0);
						if($consAuto.length > 0){
							oHtml["consAuto_id"] = $consAuto.attr("id");
							oHtml["consAuto_display"] = $consAuto.css("display");
							oHtml["consAuto_text"] = $consAuto.text();
						}
						/*
						var $input_gen = $tdsaisq.find("input").eq(0);
						if($input_gen.length <= 0){
							var $input_gen = $tdsaisq.find("textarea").eq(0);
						}
						if($input_gen.length > 0){
							oHtml["c1_inputw"] = $input_gen.width();
							oHtml["c1_inputh"] = $input_gen.height();
						}
						*/
						var $formElem = $tdsaisq.find(":input").eq(0);
						if($formElem.length > 0){
							sIndiceRC = "r1c1";
							//oHtml["c1_inputw"] = $input_gen.width();
							//oHtml["c1_inputh"] = $input_gen.height();
							oHtml[sIndiceRC + "_formElem"] = $formElem.get(0).tagName;
							oHtml[sIndiceRC + "_fElemType"] = $formElem.attr("type");
							oHtml[sIndiceRC + "_fId"] = $formElem.attr("id");
							oHtml[sIndiceRC + "_fElemWidth"] = $formElem.width();																			
							oHtml[sIndiceRC + "_fElemHeight"] = $formElem.height();	
							oHtml[sIndiceRC + "_fElemFontSize"] = $formElem.css("font-size");										
									
						}
					

					}else{ //tdsaisq_hasTable
						var $tr = $tabl.find("tr").eq(0); //on passe le <body>
						
						if($tr.length > 0){
							$tr = $tr.siblings("tr").andSelf(); 
						}
						if($tr.length > 0){
							oHtml["nbTR_ZS"] = $tr.length;
							
							//larg des cell de lig1ZS
							var $td = $tr.eq(0).children("td").not(".disp_none");
							if($td.length > 0){
								oHtml["nbTDLig1ZS"] =  $td.length ;
								$td.each(function(index){
									oHtml["c" + (index + 1) + "_tdw"] = $(this).width();
								});
							}
							$tr.each(function(indexTR){
								oHtml["r" + (indexTR + 1) + "_height"] = $(this).height();
								oHtml["r" + (indexTR + 1) + "_class"] = $(this).attr("class");

								var $td = $(this).children("td").not(".disp_none");
								oHtml["r" + (indexTR + 1) + "_nbc"] = $td.length;
								
								$td.each(function(indexTD){
									var sIndiceRC = "r" + (indexTR + 1) +"c" + (indexTD + 1);
									var nbColSpan =  $(this).attr("colspan");
									if(nbColSpan){
										oHtml[sIndiceRC + "_colspan"] = nbColSpan;
									}
									
									oHtml[sIndiceRC + "_txt"] = $(this).text();
									oHtml[sIndiceRC + "_class"] = $(this).attr("class");

									var $formElem = $(this).find(":input").eq(0);
									if($formElem.length > 0){
										oHtml[sIndiceRC + "_formElem"] = $formElem.get(0).tagName;
										oHtml[sIndiceRC + "_fElemType"] = $formElem.attr("type");
										oHtml[sIndiceRC + "_fId"] = $formElem.attr("id");
										oHtml[sIndiceRC + "_fElemWidth"] = $formElem.width();																			
										oHtml[sIndiceRC + "_fElemHeight"] = $formElem.height();			
										oHtml[sIndiceRC + "_fElemFontSize"] = $formElem.css("font-size");										
									}
									
									var $label = $(this).find("label").eq(0);
									if($label.length > 0){
										oHtml[sIndiceRC + "_labelClass"] = $label.attr("class");
									}
									//pr entete grp qu homog
									var $span_header_id = $(this).find("span[id^=header_libmod]").eq(0);
									if($span_header_id.length > 0){
										oHtml[sIndiceRC + "_span_header_id"] = $span_header_id.attr("id");
									}
									var $idq_grpq = $(this).find("[id^=titreq]").eq(0);
									if($idq_grpq.length > 0){
										oHtml[sIndiceRC + "_idq"] = $idq_grpq.attr("id");
									}
									
									var $consPerso = $(this).find("[id^=consperso]").eq(0);
									if($consPerso.length > 0){
										oHtml[sIndiceRC + "consPerso_id"] = $consPerso.attr("id");
										oHtml[sIndiceRC + "consPerso_display"] = $consPerso.css("display");
										oHtml[sIndiceRC + "consPerso_text"] = $consPerso.text();
									}
									var $consAuto = $(this).find("[id^=consauto]").eq(0);
									if($consAuto.length > 0){
										oHtml[sIndiceRC + "consAuto_id"] = $consAuto.attr("id");
										oHtml[sIndiceRC + "consAuto_display"] = $consAuto.css("display");
										oHtml[sIndiceRC + "consAuto_text"] = $consAuto.text();
									}
		
									var $im = $(this).find("img").eq(0);
									if($im.length > 0){
										oHtml[sIndiceRC + "_img"] = $im.attr("src");
										oHtml[sIndiceRC + "_img_style"] = $im.attr("style");
										oHtml[sIndiceRC + "_img_width"] = $im.width();
										oHtml[sIndiceRC + "_img_height"] = $im.height();
										oHtml[sIndiceRC + "_img_paddingLeft"] = $im.css("padding-left");
										oHtml[sIndiceRC + "_img_paddingLeft"] = $im.css("padding-left");
										oHtml[sIndiceRC + "_img_paddingTop"] = $im.css("padding-top");
										oHtml[sIndiceRC + "_img_paddingRight"] = $im.css("padding-right");
										oHtml[sIndiceRC + "_img_paddingBottom"] = $im.css("padding-bottom");
									}
								});
							});
							return oHtml;
						}
					}
				}
			}
		}
	}
	return oHtml;
}

//$("table[class*=tablesection], table[class*=formtbl], table.tabletxt, table.tableimage, table.lien_sautDePage")

function mjqDragDrop_Destroy(){
	$("table.ui-draggable").draggable( "destroy" );
	$("table.ui-droppable").droppable( "destroy" );
}

function mjqDragDrop_Init(){

	$("table.titGen, table[class*=tablesection], table[class*=formtbl], table.tabletxt, table.tableimage, table.tablevideo, table.boutonEnvoyer, table.lien_sautDePage").droppable({ 
		//accept:".bouger",
		//activeClass:"zone-drop-active",
		hoverClass:"ui-droppable-hover",
		greedy: true,
		drop:function(event, ui){
			//alert("OK, déposé");	
			var sIdElem = "";		
			var $elem = $(this);
			if($elem.length > 0){
				$elem = $elem.eq(0);
				var $elemAvecId = $elem.find("[id]").not("[id^=codtitq]").not("[id^=csstit_]").not("[id^=csszs_]");
				if($elemAvecId.length > 0){
					zeEvtAGerer = "dragstop";
					sIdElem = $elemAvecId.eq(0).attr('id');
                    if(sIdElem.indexOf("im") === 0){
                    	// cas particulier de l'im logo de TG
                		var $zeTableContenantSel = $elemAvecId.closest('table[class*=logoname_table]').eq(0);
                        if($zeTableContenantSel.length>0){
                            sIdElem = $zeTableContenantSel.eq(0).attr('id');
                        }
                    }
                    if(sIdElem !== ""){
                    	zeContentClic += sSepPrMsg4D + "dragstop_id=" + sIdElem;

                    	var sIdElemPrec = "";
                    	var $prev = $elem.prev("table"); //prevAll("table").last();
                    	if ($prev.length > 0){
                    		var $elemAvecId = $prev.eq(0).find("[id]").not("[id^=codtitq]").not("[id^=csstit_]").not("[id^=csszs_]");
							if($elemAvecId.length > 0){
								sIdElem = $elemAvecId.eq(0).attr('id');
                    			zeContentClic += sSepPrMsg4D + "dragstop_prev_id=" + sIdElem;
							}
                    	}
					}
				}
			}
		}
	});
		/*
		$("img").not(function(index, elem){
    		if(elem){
    			var $elem = $(elem);
    			var $tbl = $elem.closest('table[name=logoname_table]').eq(0);
    			if($tbl.length > 0) return true;
    			else return false;
    		}
    	})
    	.draggable({
			//containment: "parent",
			revert:true, 
			helper:"clone", 
			opacity:0.7, 
			axis:"x",
			zIndex: 9999,
			//stop : function(event, ui){
				//;//alert("stopped");
				//}
       	}) ;
       	*/
	$("table[class*=tablesection], table[class*=formtbl], table.tabletxt, table.tableimage, table.tablevideo, table.lien_sautDePage").draggable({
		//revert:true,
		//refreshPositions : true,
		helper:"clone", 
		opacity:0.8, 
		axis:"y", 
		cursor:"auto", 
		//cursorAt:{left: 5}, // top:-1}, //bottom:-5},
		zIndex: 9999,

		start : function(event, ui){
			//cursor:"move", 
			//$(document).on('mouseenter','td:not(:empty)', false);
			//$(document).on('mousemove','td:not(:empty)', false);
			bAffCadreSel = false;
			
			zeContentClic = "";
			$('*').removeClass(clTblHover);
			$('*').removeClass(clTblSel);

			if(ui.helper.context){
				var $elem = $(ui.helper.context);
				if($elem.length > 0){
					var $elem2 = $elem.find("[id]").not("[id^=codtitq]").not("[id^=csstit_]").not("[id^=csszs_]");
					if($elem2.length > 0){
						var zeId = $elem2.eq(0).attr("id");
						zeContentClic += sSepPrMsg4D + "dragstart_id=" + zeId;
					}
				}
			}
		},
		stop : function(event, ui){
			//$(document).on('mouseenter','td:not(:empty)',affCadreSel);
			//$(document).on('mousemove','td:not(:empty)',affCadreSel);
			bAffCadreSel = true;

			/*
			if(false){
				zeEvtAGerer = "dragstop";
				//zeContentClic +=  sSepPrMsg4D + "dragstop_y="+"100";
				var $elemAvecId = $("."+clTblHover); //table-hover"
				if($elemAvecId.length > 0){
					//var zeId = $elem2.eq(0).attr("id");
					var sIdElem= "";
					var $zeTableContenantSel = $elemAvecId.closest('table.tablquregroup').eq(0);
					if($zeTableContenantSel.length>0){
						var $elemAvecId = $zeTableContenantSel.find("[id^=grpquhomog], [id^=tablperso]");
						if($elemAvecId.length>0){
							sIdElem = $elemAvecId.eq(0).attr('id');
						}
					}
					if(sIdElem === ""){
						var $zeTableContenantSel = $elemAvecId.closest('table.titGen, table[class*=tablesection], table[class*=formtbl], table.tableimage, table.tablevideo, table.tabletxt, table.lien_sautDePage,table.boutonEnvoyer').eq(0);
						if($zeTableContenantSel.length>0){
							var $elemAvecId = $zeTableContenantSel.find("[id]").not("[id^=codtitq]").not("[id^=csstit_]").not("[id^=csszs_]");
							if($elemAvecId.length>0){
								sIdElem = $elemAvecId.eq(0).attr('id');
							}
						}
					}
					 if(sIdElem.indexOf("im") === 0){
						// cas particulier de l'im logo de TG
						var $zeTableContenantSel = $elemAvecId.closest('table[class*=logoname_table]').eq(0);
						if($zeTableContenantSel.length>0){
							sIdElem = $zeTableContenantSel.eq(0).attr('id');
						}
					}
					if(sIdElem !== ""){
						zeContentClic += sSepPrMsg4D + "dragstop_id=" + sIdElem;
					}
				}
			}
			*/
		}
	}) ;

}


$(document)
.ready(function() {
    	mjqDragDrop_Init();
    	
       var bShowToolTip=false; // false : pour tester plantages
       var $zeElemGlob;
                  //var $tooltipCell = $('td:not(:empty)');
       var $tooltip;
                  
      	var elemTrouve = function(zeElem){
        if(typeof(zeElem)!="undefined"){
            if(zeElem.length>0) return true;
        }
        return false;
      }
   
    if(bShowToolTip){
        var $tooltipExist = $('#tooltip').eq(0);
        if(elemTrouve($tooltipExist)){
            var $tooltip = $('#tooltip');
            $tooltip.hide();
        }else
            var $tooltip = $('<div id="tooltip"></div>').appendTo('body');
    }
    var positionTooltip = function(event){
        if(bShowToolTip){
            var tPosX = event.pageX;
            var tPosY = event.pageY + 20;
            $tooltip.css('top', tPosY);
            $tooltip.css('left', tPosX);
        }
    };
       
    var positionTooltip4D = function(event){
       if(bShowToolTip){
       var tPosX = event.pageX;
       var tPosY = event.pageY + 20;
       //$tooltip.css('top', tPosY);
       //$tooltip.css('left', tPosX);
            $4d.jsPropElem(zeContentGlob, "mousemove", tPosX, tPosY, function(my4DResult, myError){
                      if(myError!=null){
                           alert( "erreur: " + error[0].message);
                      }
                      });

       }
    };
       
    var checkElem = function(zeThis2, event){
        var zeContent = "";
        //var zeThis = $(this);
        var sId_descdt="";
        var sTagName_descdt="";
        var $zeElem_;
        var zeElem;
        
        //===images, sauf icones modalités
        if(!elemTrouve($zeElem_)){   //doit être cherché avant 'titform'
            //var zeElem = zeThis2.find("img").closest('table[name*=logoname_table]').get(0);
            var $zeElem_ = zeThis2.find("img").closest('table[name*=logoname_table]').eq(0);
        }
        if(!elemTrouve($zeElem_)){   //img doit tjrs etre dans un tableau spécifique à l'image
                  // 1er elem enfant de td sel et qui est une image
            //var zeElem = zeThis2.filter('[name*=image_jq]').find("img:first-child").get(0);
            var $zeElem_ = zeThis2.filter('[name*=image_jq]').find("img:first-child").eq(0);         
        }
        ///===
         if(!elemTrouve($zeElem_)){   //video doit tjrs etre dans un tableau spécifique à la video
                  // 1er elem enfant de td sel et qui est une video
            var $zeElem_ = zeThis2.filter('[name*=video_jq]').find("video:first-child").eq(0);         
        }
                  
        //texte style :  var sHtml="<table class='tabletxt'><tr><td name='text_jq' id='txt5481245'>"+zeHtml+"</td></tr></table>";
         if(!elemTrouve($zeElem_)){
            //var zeElem = zeThis2.filter('[name*=text_jq]').get(0);
            var $zeElem_ = zeThis2.filter('[name*=text_jq]').eq(0);
        }
                  
         if(!elemTrouve($zeElem_)){
          //var zeElem = zeThis2.parent().find("[class*=titsection]").get(0);
          var $zeElem_ = zeThis2.parent().find("[class*=titsection]").eq(0);
        }
          
         if(!elemTrouve($zeElem_)){
          //var zeElem = zeThis2.parent().find("[class*=titform]").get(0);
          var $zeElem_ = zeThis2.parent().find("[class*=titform]").eq(0);
        }
         if(!elemTrouve($zeElem_)){
          //var zeElem = zeThis2.filter("[name*=soustitregen_td]").get(0);
          var $zeElem_ = zeThis2.filter("[name*=soustitregen_td]").eq(0);
        }

         if(!elemTrouve($zeElem_)){
            //var zeElem = zeThis2.filter("[id^=tdsaisq]").get(0);
            var $zeElem_ = zeThis2.filter("[id^=tdsaisq]").eq(0);
        }
         if(!elemTrouve($zeElem_)){
            //var zeElem = zeThis2.find("label").closest("td[id^=tdsaisq]").get(0);
            var $zeElem_ = zeThis2.find("label").closest("td[id^=tdsaisq]").eq(0);
        }
                  
         if(!elemTrouve($zeElem_)){
            //var zeElem = zeThis2.not("[id^=tdsaisq]").filter("[id]").not("[id^=csstit_]").not("[id^=csszs_]").get(0); //elem td sel qui a un id
            var $zeElem_ = zeThis2.not("[id^=tdsaisq]").filter("[id]").not("[id^=csstit_]").not("[id^=csszs_]").eq(0);
        }
         if(!elemTrouve($zeElem_)){
            //var zeElem = zeThis2.not("[id^=tdsaisq]").find("[id]").not("[id^=codtitq]").not("[id^=csstit_]").not("[id^=csszs_]").get(0);   //elem descendant de td sel qui a un id
            var $zeElem_ = zeThis2.not("[id^=tdsaisq]").find("[id]").not("[id^=codtitq]").not("[id^=csstit_]").not("[id^=csszs_]").eq(0);
        }
         if(!elemTrouve($zeElem_)){
            //var zeElem = zeThis2.filter("[id^=tdsaisq]").find("textarea").get(0);   //elem descendant de td sel
            var $zeElem_ = zeThis2.filter("[id^=tdsaisq]").find("textarea").eq(0); 
        }
          if(!elemTrouve($zeElem_)){
            //var zeElem = zeThis2.filter("[id^=tdsaisq]").find("input[type=text]").get(0);   //elem descendant de td sel
            var $zeElem_ = zeThis2.filter("[id^=tdsaisq]").find("input[type=text]").eq(0); 
        }
       if(!elemTrouve($zeElem_)){
        var $zeElem_ = zeThis2.closest("table[name^=tablperso]").find("[id^=tablperso]").eq(0);//clic dans zone sais tabl perso
       }

        if(elemTrouve($zeElem_)){
            var zeIdZeElem=$zeElem_.attr('id');
            zeContent += sSepPrMsg4D + "id=" +zeIdZeElem;
            zeContent += sSepPrMsg4D + "type=" +$zeElem_.attr('type');
            zeContent += sSepPrMsg4D + "className=" +$zeElem_.attr('class');  //zeElem.className;
                  
            if(zeIdZeElem.indexOf("tdsaisq")>-1){
                  var $zeElemDesc =  zeThis2.find("span[id^=libmod]").eq(0);// un tag span dans la cell sel

                if($zeElemDesc.length>0){
                    sTagName_descdt="span";
                    sId_descdt=$zeElemDesc.attr('id'); // on retourne aussi id de desc si ...
                }else{
                  var $zeElemDesc =  zeThis2.find("span[id^=consperso]").eq(0);// un tag span dans la cell sel
                  if($zeElemDesc.length>0){
                    sTagName_descdt="span";
                    sId_descdt=$zeElemDesc.attr('id'); // on retourne aussi id de desc si ...
                  }
                }
            }

            // descendant
            zeContent += sSepPrMsg4D + "sId_descdt=" +sId_descdt;
            zeContent += sSepPrMsg4D + "sTagName_descdt=" +sTagName_descdt;
        }
        zeContentGlob=zeContent;
        $zeElemGlob=$zeElem_;
    };
    
    var mjqRightClickElem = function(event){
                  event.preventDefault();//stop the default action
                  // si on ne montre pas toopTip => checkElem pas exec on mouseOver etc
                  if(!bShowToolTip) checkElem($(this),event);
                  zeContentClic=zeContentGlob;
                  if(elemTrouve($zeElemGlob)){
                    zeEvtAGerer="rightClic";
                  }
                  mjqAnnuleSelTxt('_');
                  event.stopPropagation();//sinon gere les td parents
    };

                  
    var mjqClickElem = function(event){
        // si on ne montre pas toopTip => checkElem pas exec on mouseOver etc
        if(!bShowToolTip) checkElem($(this),event);
        zeContentClic=zeContentGlob;
        if(elemTrouve($zeElemGlob)){
            if(event.type==="click") zeEvtAGerer="clic";
            else zeEvtAGerer="doubleClic";
        }
              
        mjqAnnuleSelTxt('_');
        event.stopPropagation();//sinon gere les td parents
                  
    };

    var affCadreSel = function(){ 
    	if(bAffCadreSel){
    		var $elem = $(this).find("[id^=m]");
    		if($elem.length <= 0){
    			$(this).addClass(clTblHover);
    		}
    	}
    };
    var masqCadreSel = function(){ $(this).removeClass(clTblHover);} ;
             
       
    var showTooltip = function(event){
       if(bShowToolTip) {
                  
       checkElem($(this),event);
       var zeContentPrDiv=zeContentGlob;
       
       var sReg=sSepPrMsg4D;
       var reg1=new RegExp(sReg, "g");
       zeContentPrDiv=zeContentPrDiv.replace(reg1, sSepPrMsgJS);   //";");
       
       $tooltip
            //.html(zeContentPrDiv) géré dans 4D
            .show();
       
       positionTooltip(event);
                  
        $(this).addClass(clTblHover);
       
       $4d.jsPropElem(zeContentGlob, function(my4DResult, myError){
                      if(myError!=null){
                      alert( "erreur: " + error[0].message);
                      }
                      /*
                       else{
                       tout est géré dans 4D jsPropElem
                       if(my4DResult!==""){my4DResult_glob=my4DResult;}
                       }
                       */
                      });
       
       
       }//bShowToolTip
    };//showTooltip
     
    var hideTooltip = function(){
        $tooltip.hide();
        $(this).removeClass(clTblHover)
    };
    var hideTooltip4D = function(){
       //$tooltip.hide();
       //$(this).removeClass(clTblHover)
       $(this).removeClass(clTblHover)

       var zeId=$(this).attr("id");
       $4d.jsPropElem(zeContentGlob, "mouseleave", zeId, function(my4DResult, myError){
                      if(myError!=null){
                      alert( "erreur: " + error[0].message);
                      }
                      });

    };

    //$tooltipCell
        //.hover(showTooltip, hideTooltip)
        //.on('hover',showTooltip, hideTooltip)
        //.mousemove(positionTooltip)
        //.click(mjqClickElem)

        //.on('mouseenter', showTooltip)
       // .on('mouseleave', hideTooltip)
        //.on('mousemove',positionTooltip)
        //.on('click',mjqClickElem)
     //;
            //var tooltipMouseEnter = function(showTooltip){
                    //showTooltip;
                  //} ;
                  
       if(bShowToolTip){
                  /*
                  $(document).on('mouseenter','td:not(:empty)', function(){showTooltip;affCadreSel;});
                  $(document).on('mousemove','td:not(:empty)', function(){positionTooltip;affCadreSel;} );
                  $(document).on('mouseleave','td:not(:empty)', function(){hideTooltip;masqCadreSel;});
                   */
       
           $(document).on('mouseenter','td:not(:empty)', showTooltip);
           $(document).on('mousemove','td:not(:empty)', positionTooltip4D); // positionTooltip);
           $(document).on('mouseleave','td:not(:empty)', hideTooltip4D);
                  //$(document).on('mouseleave','td', function(){hideTooltip;});

       }else{
                  $(document).on('mouseenter','td:not(:empty)',affCadreSel);
                  $(document).on('mousemove','td:not(:empty)',affCadreSel);
                  $(document).on('mouseleave','td:not(:empty)',masqCadreSel);
              }
    $(document).on('dblclick','td:not(:empty)', mjqClickElem);
    $(document).on('click','td:not(:empty)', mjqClickElem);
    $(document).on('contextmenu rightclick','td:not(:empty)', mjqRightClickElem);
    $(document).on('selectstart',function(){return false;});//interdit sel de texte


}); //$(document).ready(





