function montrer_cacher(mode,element)
{
	if (mode == 'hide')
	{
		new Fx.Slide(element).hide();
	}
	if (mode == 'show')
	{
		cacher_all();
		new Fx.Slide(element).show();
	}
}
function montrer_cacher3(id)
{

//    try{
        if(id) element = document.getElementById(id);
        if(element.style.display == 'none')
        {
    		element.style.display = 'block';
    	}
        else
        {
    		element.style.display = 'none';
    	}
//    }catch(err){}
}
function montrer_cacher2(img,id)
{
//    try{
        if(id) element = document.getElementById(id);
    	if (img.src.indexOf('delete') > 0)
    	{
    		element.style.display = 'none';
    		img.src = img.src.replace('delete','add');
    	}
    	else if (img.src.indexOf('add') > 0)
    	{
    		element.style.display = 'block';
    		img.src = img.src.replace('add','delete');
    	}
//    }catch(err){}
}

function cacher_test(id_class,mode)
{
    $$("."+id_class).each(function(item)
        {
            if (mode == 'hide')
            {
                new Fx.Slide(item).hide();
            }
            else if(mode == 'show')
            {
                new Fx.Slide(item).show();
            }
            else if(mode == 'onload')
            {
                new Fx.Slide(item).hide();
            }            
            else
            {
                alert ("ERROR HORRIBLE !!! ALERTER JEROME BRUN !!");
            }        
        }
    )
}
function cacher_test2(id_class,mode)
{
    $$("."+id_class).each(function(item)
        {
            if (mode == 'hide')
            {
montrer_cacher2('hide',item);
            }
            else if(mode == 'show')
            {
montrer_cacher2('show',item);
            }
            else if(mode == 'onload')
            {
montrer_cacher2('hide',item);
            }            
            else
            {
                alert ("ERROR HORRIBLE !!! ALERTER JEROME BRUN !!");
            }        
        }
    )
}
function fctForm_Exec_A_01(
		szBase,
    szAction
    )
/*----------------------------------------------------------------------------------------------------------------------------------
 Traitement de l'action demandée
 Renvoi : TRUE si confirmation, FALSE sinon
----------------------------------------------------------------------------------------------------------------------------------*/
{
    	do_submit = true;
      var theForm = document.forms['Filtres'];

      // Appel PDF =============================
      if (szAction == "PDF")
      {
        // Test sélection
        if (theForm.elements['lgRole_Id'].value == -1)
        {
                alert("Aucun dossier sélectionné !");
                return false;
        }
  
        var lgRole_Id = theForm.elements['lgRole_Id'].value;
//alert("Role ="+lgRole_Id);        
        open('http://tresa-compta.exploit.com/VCH_Role_IMP_A_01.php?szBase='+szBase+'&lgRole_Id='+lgRole_Id+'&Action=Role_PDF', 'Role_PDF', 'width=650, height=500, left=50, top=50, scrollbars=yes');
      }

    return true; 
}
function ouvrir_all()
{
    cacher_test('BlockCustomerInfo','show');
    cacher_test('BlockPU','show');
    cacher_test('BlockDO','show');
    cacher_test('BlockProducts','show');
    cacher_test('BlockPrice','show');
    cacher_test('BlockOptions','show');
    
    return false;
}
function cacher_all()
{
/*
*/ 
    cacher_test('BlockCustomerInfo','onload');
    cacher_test('BlockPU','onload');
    cacher_test('BlockDO','onload');
    cacher_test('BlockProducts','onload');
    cacher_test('BlockPrice','onload');
    cacher_test('BlockOptions','onload');
    new Fx.Slide('div_1').hide();

    return false;
}
function ouvrir_all2()
{
    cacher_test('BlockCustomerInfo','show');
    cacher_test('BlockPU','show');
    cacher_test('BlockDO','show');
    cacher_test('BlockProducts','show');
    cacher_test('BlockPrice','show');
    cacher_test('BlockOptions','show');
    
    return false;
}
function cacher_all2()
{
/*
*/ 
    cacher_test('BlockCustomerInfo','onload');
    cacher_test('BlockPU','onload');
    cacher_test('BlockDO','onload');
    cacher_test('BlockProducts','onload');
    cacher_test('BlockPrice','onload');
    cacher_test('BlockOptions','onload');
montrer_cacher2('hide','','div_1');

    return false;
}
//----------------------------------------------------------------------------------------------------------------
var submitLock=false;
function submitForm(elem){
while (elem.parentNode && elem.parentNode.tagName != "FORM")
{
    elem = elem.parentNode;
}
var oForm = elem.parentNode;
oForm.submit();
}
//----------------------------------------------------------------------------------------------------------------

function fctX3PALL(id,szLog,szSEL_Mode,szPage)
{
    if (id.value != '-1') window.location = szPage + "?szLog=" + szLog + "&lgCty_Id=" + id + "&szSel_Mode=" + szSEL_Mode;
}
function selectother( thisSelect, otherSelect )
{
	otherSelect.selectedIndex = thisSelect.selectedIndex;
}

function PopupCentrer(page,largeur,hauteur,options)
{
  var top=(screen.height-hauteur)/2;
  var left=(screen.width-largeur)/2;
  window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
}

function prefill(obj, str_default )
{
	if(obj.value == str_default) obj.value = '';
}

function verifform(lock)
{
	var  toto = '';
	return !lock;
}

function doSubmit( frm_name )
{
	var form = document.forms[frm_name];
	form.action = 'index.php';
	form.target = '_self';
	form.submit();
}


function popup_open(formulaire, url, width, height)
{
	if( formulaire.tagName == 'FORM'  )
  {
    formulaire = eval(formulaire) //vérification
    window.open(url, 'popup', 'toolbar=no, status=yes, scrollbars=no, resizable=no, width='+width+', height='+height);
		formulaire.target = 'popup'; //on redéfinit la cible ;)
		formulaire.action = url; //on redéfinit la cible ;)
		formulaire.submit(); //on post
	}
	else
  	window.open(url, 'popup', 'toolbar=no, status=yes, scrollbars=no, resizable=no, width='+width+', height='+height);

	return true;
}


function chkEspaceClient( form, url,CST_ERROR )
{
	if( isValidSubmit( form ) )
		return popup_open(form, url, 600, 600);
	else
		return false;
}

function chkNewsletter(form, url, inputEmail)
{
	var email = form[inputEmail].value;
	if (isValidSubmit( form ) )
		if( isEmail(email) )
			return popup_open(form, url, 220,220);
		else
			return false;
	else
		return false;
}


function isEmail(email)
{

 return true;
}

// lien popup CMS
function popupArticle(
	szPage,
	lgArticle_Id
	)
{
	open(szPage+'?option=com_content&view=article&id='+lgArticle_Id,'ART_'+lgArticle_Id,'width=800, height=400, left=90, top=90, scrollbars=yes');
	return true;
}

// select/deselect plage checkboxes : tous les checkboxes de la classe (cls) passée en paramètres
// prennent la valeur checked du checkbox cliqué 
function selectAll(
    e, 
    cls
    )
{ 
    for(var i in document.getElementsByTagName('input'))
    {
        curInput=document.getElementsByTagName('input')[i];
        if(curInput.className == cls)
            curInput.checked=e.checked;
    }
}
/*
// Déplacé vers fonctions.js pour traduction auto
function isValidSubmit( form,CST_ERROR )
{
	// On teste si le formulaire est bien passé en paramètres
	if( form != null )
	{
		for( var i=0; i < form.elements.length; i++ )
		{
			// On assigne l'element dans elem.
	    var elem = form.elements[i];
	    
	    
	    // On effectue des tests sur les TEXTBOX
	    if( elem.tagName == 'INPUT' && elem.type == 'text' )
	    {
	    	// [1] test de la textbox vide
				if( elem.value == '' )
				{
					alert('Veuillez renseigner le champs ' + elem.name + ' ');
					return false
				}
				
				// [2] test de la textbox qui garde sa valeur par défaut
				if( elem.defaultValue != null && elem.value == elem.defaultValue )
				{
					alert('Veuillez saisir un texte valide dans le champs ' + elem.name + ' ');
					return false;
				}
			}
			
	  }
	  // On a passé tous les tests avec succès.
	  return true;
	}
	else
		return false;
}
*/


<!--//
function addInputs(theInput,lgTiers_Id,szModeContrat){
var table = document.createElement('table');
table.id = 'hMembers';
var hMembers = document.getElementById('hMembers');
if(hMembers)theInput.parentNode.removeChild(hMembers);

if(theInput.value.match(/^\d+$/)){
var tbody = document.createElement('tbody');
for(var i=0; i<theInput.value; i++){
var row = document.createElement('tr');
var cell = document.createElement('td');
var num = document.createTextNode((i+1)+')');
cell.appendChild(num);
row.appendChild(cell);
tbody.appendChild(row);




//MARK_ALAMO.US
if(szModeContrat == 'OUI')
{
    var cell = document.createElement('td');
    var lgContrat = document.createTextNode('Contrat:');
    var input = document.createElement('select');
    
    			var option = document.createElement('option');
    			option.value = 'M9';
    			option.text = 'M9';
    			input.appendChild(option);
    			var option = document.createElement('option');
    			option.value = 'XZ';
    			option.text = 'XZ';
    			input.appendChild(option);
    			var option = document.createElement('option');            
    			option.value = 'XD';
    			option.text = 'XD';
    			input.appendChild(option);
                			
    input.size = 1;
    input.name = 'lgContrat[]';
    cell.appendChild(lgContrat);
    cell.appendChild(input);
    row.appendChild(cell);
    tbody.appendChild(row);
}   







var cell = document.createElement('td');
var name = document.createTextNode('Accriss code:');
var input = document.createElement('select');

getSIPP_List(input);

input.size = 1;
input.name = 'szFlotte[]';
cell.appendChild(name);
cell.appendChild(input);
row.appendChild(cell);
tbody.appendChild(row);

var cell = document.createElement('td');
var lgCorrespondance = document.createTextNode('Correspond à:');
var input = document.createElement('select');

getSIPP_RETAILER(input,lgTiers_Id);

input.size = 1;
input.name = 'lgCorrespondance[]';
cell.appendChild(lgCorrespondance);
cell.appendChild(input);
row.appendChild(cell);
tbody.appendChild(row);
} table.appendChild(tbody);
theInput.parentNode.insertBefore(table,theInput.nextSibling);
}

else{ alert('Please enter only numbers in this field!');
theInput.value = '';
theInput.focus();
}
}
//-->

function getSIPP_RETAILER(input,lgTiers_Id)
{     
    if(window.XMLHttpRequest) // FIREFOX
    xhr_object = new XMLHttpRequest();
    else if(window.ActiveXObject) // IE
    xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    else
    return(false);
//alert('../service-tarifs/TIERs_GET_PRDs_RETAIL_A_01.php?lgTiers_Id='+lgTiers_Id);
    xhr_object.open("GET", '../service-tarifs/TIERs_GET_PRDs_RETAIL_A_01.php?lgTiers_Id='+lgTiers_Id, false);
    xhr_object.send(null);
    xmlDoc = xhr_object.responseXML;

    
	var test = xmlDoc.documentElement.getElementsByTagName("CAR");
	for(var item in test)
	{
//alert(test[item].firstChild.firstChild.nodeValue);
		try{
//alert(test[item].childNodes[1].firstChild.firstChild.nodeValue);
			var option = document.createElement('option');
			option.value = test[item].firstChild.firstChild.nodeValue;
			option.text = test[item].lastChild.lastChild.nodeValue;
			input.appendChild(option);
		}catch(err){	
//alert(item);
		}
	}
}
function getSIPP_List(input)
{
	if(window.XMLHttpRequest) // FIREFOX
	xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // IE
	xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else
	return(false);

	xhr_object.open("GET", 'all_sipp.xml', false);
	xhr_object.send(null);
	xmlDoc = xhr_object.responseXML;

	var test = xmlDoc.documentElement.getElementsByTagName("Row");

	for(var item in test)
	{
		try{
//alert(test[item].childNodes[1].firstChild.firstChild.nodeValue);
			var option = document.createElement('option');
			option.value = test[item].childNodes[1].firstChild.firstChild.nodeValue;
			option.text = test[item].childNodes[1].firstChild.firstChild.nodeValue;
			input.appendChild(option);
		}catch(err){	
//alert(item);
		}
	}
}
function get_infobulle(div_name)
{

//alert('VCH_HORAIREs_Details_A_01.php?lgAgences_Ids='+agences_ids+'&szMode='+mode);
	
    var elemCible = div_name;
    // on ferme une description éventuelle
	document.getElementById(elemCible).style.display='block';

/*
	current_fx = new Fx.Slide($(elemCible).firstChild);
	current_fx.hide();
	current_fx.show();
*/
    return;

}
function cacher_div(elemCible)
{
//alert(elemCible)
	//current_fx = new Fx.Slide($(elemCible));
	//current_fx.hide();
	document.getElementById(elemCible).style.display='none';
}

function get_ajax_content(id,url,sources)
{
//alert('VCH_OPTs_Details_A_01.php?lgProduit_Id='+product_id+'&lgTiers_Id='+tiers_id+'&szTRFkey='+sztrfkey);
    var elemCible = id;
	document.getElementById(elemCible).style.display='block';

    // on ferme une description éventuelle
    try{
        var status = current_fx.open; // ouvert ou fermé ?
        current_fx.hide();
        // si c'est la même description, on reste sur la fermeture
        if(current_elem == $(elemCible) && status == true)
            return;
    }catch(err){}
    // sinon on va chercher la desc
    req = new Request({
        method: 'post',
        url: url,
        data: {},
		onRequest: function() { $(elemCible).innerHTML = 
			"<div style='background-color:#ffffff; width:500px;padding:60px 0 0 150px;'><center>Chargement en cours<br /><img src='../images/icones/ajax-loader.gif'></center>";
		},
        onComplete: function(response) {
            current_elem = $(elemCible);
            current_elem.innerHTML = response;
            current_fx = new Fx.Slide($(elemCible).firstChild);
            current_fx.hide();
            current_fx.show();
        }
    }).send();
    return;
}
function onglets(id,sources)
{

    if(id) element = document.getElementById(sources+'_'+id);
	element.style.display = 'block';
	
	if(id != 'total_general')
	{
        element1 = document.getElementById(sources+'_'+'total_general');
    	element1.style.display = 'none';
    }
	if(id != 'taux_accrochage')
	{
        element1 = document.getElementById(sources+'_'+'taux_accrochage');
    	element1.style.display = 'none';
    }
	if(id != 'taux_dossier')
	{
        element1 = document.getElementById(sources+'_'+'taux_dossier');
    	element1.style.display = 'none';
    }
}
function countElementsByClass(className, elementTag){
    var count = 0;
    var elements = document.getElementsByTagName(elementTag);
    for (var i = 0; i < elements.length; i++){
    

    if (elements[i].className == className){
    ++count
        }
    }
    return count;
}


function create_follow(spotname)
{
number_follow = countElementsByClass('item_follow', 'div');

    if(number_follow > 6)
    {
        alert('Dejà '+number_follow+' tracking en cours')
    }
    else
    {    
        //J'ecrit mon nouveau SPOT dans la div type facebook
        old_html = document.getElementById("follow_bar").innerHTML ;       
        result = document.getElementById("follow_bar").innerHTML;
        result += "<div id=\""+spotname+"\"";
        result += "<div id=\"onglet_bottom\" class=\"item_follow\">";
        result += "<div id=\"spot_name\">"+spotname+"</div>";
        result += "<img width=\"17px\" onclick=\"delete_follow(\'"+spotname+"\');\" src=\"../images/icones/fermer.png\" align=\"right\">";
        result += "<img width=\"17px\" onclick=\"see_follow(\'"+spotname+"\');\" src=\"../images/icones/refresh.png\" align=\"right\">";       
        result += "</div>";  
        result += "</div>";       
        document.getElementById("follow_bar").innerHTML = result;
        
        //J'appel en ajax la page avec mon nouveau spot ( memo session php + afichage du spot)
    
        var elemCible = 'spot_follow';
        document.getElementById(elemCible).style.display='block';
        // sinon on va chercher la desc
        req = new Request({
            method: 'post',
            url: 'SPOTs_FOLLOW_A_01.php',
            data: {szSpotName:spotname},
    		onRequest: function() { $(elemCible).innerHTML = 
    			"<div style='background-color:#ffffff; width:500px;'><center>Chargement en cours<img src='../images/icones/ajax-loader.gif'></center>";
    		},
            onComplete: function(response) {
                current_elem = $(elemCible);
                current_elem.innerHTML = response;
                current_fx = new Fx.Slide($(elemCible).firstChild);
                current_fx.hide();
                current_fx.slideIn();
            }
        }).send();
        return;         
    }
}
function see_follow(spotname)
{
    var elemCible = 'spot_follow';
    document.getElementById(elemCible).style.display='block';
    // sinon on va chercher la desc
    req = new Request({
        method: 'post',
        url: 'SPOTs_FOLLOW_A_01.php',
        data: {szSpotName:spotname},
		onRequest: function() { $(elemCible).innerHTML = 
			"<div style='background-color:#ffffff; width:500px;'><center>Chargement en cours<img src='../images/icones/ajax-loader.gif'></center>";
		},
        onComplete: function(response) {
            current_elem = $(elemCible);
            current_elem.innerHTML = response;
            current_fx = new Fx.Slide($(elemCible).firstChild);
            current_fx.hide();
            current_fx.show();
        }
    }).send();
    return;  
}


function delete_follow(spotname)
{

    document.getElementById(spotname).innerHTML = '';
    document.getElementById(spotname).style.display = 'none';
    
    var elemCible = 'spots_follow_error';
    document.getElementById(elemCible).style.display='block';
    // sinon on va chercher la desc
    req = new Request({
        method: 'post',
        url: 'SPOTs_FOLLOW_A_01.php',
        data: {szSpotName:spotname,Action:'DEL'},
        onComplete: function(response) {
            current_elem = $(elemCible);
            current_elem.innerHTML = response;
            current_fx = new Fx.Slide($(elemCible).firstChild);
            current_fx.hide();
            current_fx.show();
        }
    }).send();
    return;  
}







var clicked = false;
var x; 
var y;
var element;
var Xoffset;
var Yoffset;
reg = new RegExp("([0-9]*)px", "i");
function clickser(event, ele_name) {
clicked = true;
element = ele_name;
	if(event.offsetX || event.offsetY) {
		clickX=event.offsetX;
		clickY=event.offsetY;
	}
	else {
		clickX=event.pageX;
		clickY=event.pageY;
	}
itemX = document.getElementById(element).style.left;
itemY = document.getElementById(element).style.top;
arX = reg.exec(itemX);
arY = reg.exec(itemY);
Xoffset = clickX - arX[1];
Yoffset = clickY - arY[1];
document.getElementById('xoffsetval').innerHTML = Xoffset;
document.getElementById('yoffsetval').innerHTML = Yoffset;
document.getElementById('ytopval').innerHTML = document.getElementById(element).style.top;
document.getElementById('xtopval').innerHTML = document.getElementById(element).style.left;
document.getElementById(element).className = 'drag';
document.getElementById(element).style.cursor = 'move';
}

function movers(event) {
	if(clicked == true) {
	if(event.offsetX || event.offsetY) {
		x=event.offsetX - Xoffset;
		y=event.offsetY - Yoffset;
	}
	else {
		x=event.pageX - Xoffset;
		y=event.pageY -Yoffset;
	}
	document.getElementById(element).className = 'drag';
	document.getElementById(element).style.top = y +'px';
	document.getElementById(element).style.left = x +'px';
	document.getElementById('xval').innerHTML = x;
	document.getElementById('yval').innerHTML = y;
	}	
}

function unclicks() {
clicked = false;
document.getElementById(element).style.top = y +'px';
document.getElementById(element).style.left = x +'px';
document.getElementById(element).style.className = 'regular';
document.getElementById(element).style.cursor = 'auto';
}
var maxYsize = 400;
var maxXsize = 350;
var minYsize = 200;
var minXsize = 150;

function expander() {
ary = reg.exec(document.getElementById(element).style.height);
tempY = (+ary[1]);
tempY = (tempY + 10);

arx = reg.exec(document.getElementById(element).style.width);
tempX = (+arx[1]);
tempX = (tempX + 10);
document.getElementById(element).style.height = tempY + 'px';
document.getElementById(element).style.width = tempX + 'px';
if(tempY < maxYsize)
	t=setTimeout("expander()", 35);
}

function shrinker() {
ary = reg.exec(document.getElementById(element).style.height);
tempY = (+ary[1]);
tempY = (tempY - 10);

arx = reg.exec(document.getElementById(element).style.width);
tempX = (+arx[1]);
tempX = (tempX - 10);
document.getElementById(element).style.height = tempY + 'px';
document.getElementById(element).style.width = tempX + 'px';
if(tempY > minYsize)
	t=setTimeout("shrinker()", 35);

}






    //--------------------------------------------------------------------------
    //--------------------------------------------------------------------------
    //---------GESTION DU TABLEAU DINAMYQUE ------------------------------------
    //--------------------------------------------------------------------------
    //--------------------------------------------------------------------------
    
    var index
     function sort_int(p1,p2) { return p1[index]-p2[index]; } //fonction pour trier les nombres
     function sort_char(p1,p2) { return ((p1[index]>=p2[index])<<1)-1; } //fonction pour trier les strings
    
     function TableOrder(e,Dec)  //Dec= 0:Croissant, 1:Décroissant
     { //---- Détermine : oCell(cellule) oTable(table) index(index cellule) -----//

     var FntSort = new Array()
     if(!e) e=window.event
     for(oCell=e.srcElement?e.srcElement:e.target;oCell.tagName!="TD";oCell=oCell.parentNode); //determine la cellule sélectionnée
     for(oTable=oCell.parentNode;oTable.tagName!="TABLE";oTable=oTable.parentNode); //determine l'objet table parent
     for(index=0;oTable.rows[0].cells[index]!=oCell;index++); //determine l'index de la cellule

     //---- Copier Tableau Html dans Table JavaScript ----//
     var Table = new Array()
     for(r=1;r<oTable.rows.length;r++) Table[r-1] = new Array()
    
     for(c=0;c<oTable.rows[0].cells.length;c++) //Sur toutes les cellules
     { var Type;
     objet=oTable.rows[1].cells[c].innerHTML.replace(/<\/?[^>]+>/gi,"")
     if(objet.match(/^\d\d[\/-]\d\d[\/-]\d\d\d\d$/)) { FntSort[c]=sort_char; Type=0; } //date jj/mm/aaaa
     else if(objet.match(/^[0-9£€$\.\s-]+$/)) { FntSort[c]=sort_int; Type=1; } //nombre, numéraire
     else { FntSort[c]=sort_char; Type=2; } //Chaine de caractère
    
     for(r=1;r<oTable.rows.length;r++) //De toutes les rangées
     { objet=oTable.rows[r].cells[c].innerHTML.replace(/<\/?[^>]+>/gi,"")
     switch(Type)
     { case 0: Table[r-1][c]=new Date(objet.substring(6),objet.substring(3,5),objet.substring(0,2)); break; //date jj/mm/aaaa
     case 1: Table[r-1][c]=parseFloat(objet.replace(/[^0-9.-]/g,'')); break; //nombre
     case 2: Table[r-1][c]=objet.toLowerCase(); break; //Chaine de caractère
     }
     Table[r-1][c+oTable.rows[0].cells.length] = oTable.rows[r].cells[c].innerHTML
     }
     }
    
     //--- Tri Table ---//
     Table.sort(FntSort[index]);
     if(Dec) Table.reverse();
    
     //---- Copier Table JavaScript dans Tableau Html ----//
     for(c=0;c<oTable.rows[0].cells.length;c++) //Sur toutes les cellules
     for(r=1;r<oTable.rows.length;r++) //De toutes les rangées
     oTable.rows[r].cells[c].innerHTML=Table[r-1][c+oTable.rows[0].cells.length];  
     }