function obj_nivelator(forClassName)
{
    var div = document.getElementsByTagName("div");
    var dl = document.getElementsByTagName("dl");
    var divToNivel = new Array();
    var divToNivelInner = new Array();
  
    var maxHeight  = 0;
   
   
   
    // on récupere les div correspondants à la classe désirée
    for(var iDiv = 0; iDiv< div.length; iDiv ++)
    {
        if (div[iDiv].className == forClassName)
        {
            divToNivel.push(div[iDiv]);
        }
    } 
    
    // on récupere les div correspondants à la classe désirée
    for(var iDiv = 0; iDiv< dl.length; iDiv ++)
    {
        if (dl[iDiv].className == forClassName)
        {
            divToNivel.push(dl[iDiv]);
        }
    } 
    
 
     
     // on recupere la hauteur maximal
     for(var iDiv = 0; iDiv< divToNivel.length; iDiv ++)
     {
		if (divToNivel[iDiv] && divToNivel[iDiv].offsetHeight > maxHeight)
		{
			maxHeight = divToNivel[iDiv].offsetHeight;
		}
	}
       
        
     // on parcourt chaque éléments compris dans les divs recherché 
     for(var iDiv = 0; iDiv< divToNivel.length; iDiv ++)
     {        
        var paddingTop;
        var paddingBottom;
              
       if (divToNivel[iDiv] && divToNivel[iDiv].offsetHeight < maxHeight)
       {
			// on récupere le style CSS du noeud
            var curStyle = recup_style(divToNivel[iDiv]);
            
            divToNivel[iDiv].style.paddingBottom = maxHeight - divToNivel[iDiv].offsetHeight +  "px";
        }
     }
} 

if (typeof window.addEventListener == "function")
{
 window.addEventListener("load", onLaunch, false);
}
else
{
 window.attachEvent("onload", onLaunch, false);
} 

function onLaunch(){
	obj_nivelator("partnerCpCoeurTexte");
	obj_nivelator("notice");
}	

 
function recup_style(thisElmt){
    if(window.getComputedStyle){
        return window.getComputedStyle(thisElmt,null);
    }
    else{
        return thisElmt.currentStyle;
    }
}





function selectThisAdr(idAdr,typeAdr, idCurAdr)
{
	// récupération des elements HTML
	adressShowHtml = document.getElementById(idCurAdr).innerHTML;
	adressShowId = document.getElementById(idCurAdr).getAttribute("id_bis");
	
	adressClick = document.getElementById(idAdr);

	// assignation
	document.getElementById(idCurAdr).innerHTML = adressClick.innerHTML;
	document.getElementById(idCurAdr).setAttribute("id_bis",adressClick.id);
		
	adressClick.innerHTML = adressShowHtml;
	adressClick.id = adressShowId;

	// puis la va falloir via HTTPREQUEST contacter une page distante qui va juste changer l'id de gestion actuel
	//======================================================================================

	URIpath = docRoot + "/ajax/ajax_request.aspx?idControl=7&idAdr=" 
						  + idAdr + "&typeAdr=" + typeAdr;
	//LoadContent(URIpath,"noDiv","","LoadContent(docRoot + '/ajax/ajax_request.aspx?idControl=0&tmpPaysID=" + PaysID + "','box_livraison','','ChooseFDP(document.getElementById(\"currentFDP\").value);');");
						  
	// Modif le 30/08/2007 par D.guillard, ajout de l'id Adresse pour une adresse de livraison qui viens d'être séléctionné
	if (idCurAdr == 'cur_adrFact')	LoadContent(URIpath,"noDiv","","");	else LoadContent(URIpath,"noDiv","","LoadContent(docRoot + '/ajax/ajax_request.aspx?idControl=0&CurAdr=" + idAdr + "','box_livraison','','ChooseFDP(document.getElementById(\"currentFDP\").value);');");
}


// gestion des mail -- wish
function wishList_sendMail(strGet, idList, mode)
{
	this.idInput = strGet; 
	this.curInput = document.getElementById(this.idInput);
	this.idList = idList;
	
	this.checkMailValid = function()
	{
		var isGood = /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(this.curInput.value);
		
		if (isGood)
		{
			document.getElementById('validate_mailReceiver').innerHTML = ''
			this.addMail()
		}
		else
		{
			document.getElementById('validate_mailReceiver').innerHTML = '<div class="validation-advice" id="advice-required" style="margin-top:5px;">Adresse e-mail incorrecte, nom@domaine.fr ..</div>'
		}
	}
	
	this.addMail = function()
	{
		// on se rend via AJAX airline dans le processus de maj		
		URIpath = docRoot + '/ajax/ajax_request.aspx?idControl=8&thisMail='+ this.curInput.value +'&idList=' + this.idList; 	  
	
		// puis on effectue le tout
		LoadContent(URIpath,'listDestinataire',"","");
	}
	
	this.supprMail = function()
	{
		// on se rend via AJAX airline dans le processus de maj		
		URIpath = docRoot + '/ajax/ajax_request.aspx?idControl=9&thisMail='+ this.idInput +'&idList=' + this.idList; 	  
	
		// puis on effectue le tout
		LoadContent(URIpath,'listDestinataire',"","");
	}
	
	/*
    // Tristan - 02/09/2009 
	this.showMail = function() 
	{alert('hi!');
		URIpath = docRoot + '/ajax/ajax_request.aspx?idControl=11&idList=' + this.idList;
		LoadContent(URIpath,'listDestinataire',"","");
	}
	*/
	
	if (mode == 1)
	{
		if (confirm('Confirmez vous la suppression de l\'adresse e-mail suivante : \n ' + this.idInput + ' ?'))
		{this.supprMail()}
	}
	else if (mode == 2)
	{
		URIpath = docRoot + '/ajax/ajax_request.aspx?idControl=8&idList=' + this.idList;
		setTimeout("LoadContent('" + URIpath + "','listDestinataire','','')", 100)
	}
	else
	{
		this.checkMailValid()
	}
	
}


function scrollBar_list(idElementToGo)
{	
	var maxI = (document.getElementById(idElementToGo).offsetTop - 200);
	i = 1;
	do 
	{ 
		i = i + 3;
		window.scrollTo(0,i);
		
	} while (maxI > i)

	setTimeout("window.scrollTo(0, " + maxI +")",1);
																	


}


function close_formulaire_addProduct()
{
	setOpacity(document.getElementById('container'), 100);
	document.getElementsByTagName('body').item(0).removeChild(document.getElementById('formProduct'));
	document.getElementsByTagName('body').item(0).removeChild(document.getElementById('overlay_pop'));
}



function print_formulaire_addProduct(idPan_notFound)
{
	// définition des variables
	this.withToAdd_step1 = 4;
	this.withToAdd_step2 = 12;
	this.withToAdd_step3 = 36;
	this.withToAdd_step4 = 18;
	this.withToAdd_step5 = 3;


	// création du div qui va "cacher" un peu tout
	this.elmt_divObscure = document.createElement("div");
	this.elmt_divObscure.setAttribute("id", "overlay_pop");// on lui ajoute une belle Id ;)
	
	
	// Création du div qui va contenir le formulaire
	this.elmt_divContent = document.createElement("div"); // création
	this.elmt_divContent.setAttribute("id", "formProduct_content");// on lui ajoute une belle Id ;)
	
	// création du div qui va "grandir"
	this.elmt_divAjax = document.createElement("div"); // création
	this.elmt_divAjax.setAttribute("id", "formProduct");// on lui ajoute une belle Id ;)
	this.elmt_divAjax.style.top  = yMousePos + "px"; // puis on le positionne
	this.elmt_divAjax.appendChild(this.elmt_divContent);// importation du div contenant le formulaire dans le div qui grandira !
	
	// récupération du body
	this.elmt_Body = document.getElementsByTagName("body").item(0); // récupération
	// si le 
	
	//
	this.bodyWidth = this.elmt_Body.offsetWidth;
	this.heightAndTop = nv_getPageScroll();
	this.leftPosition = 0;
	this.topPosition =  this.heightAndTop[1] + 133;
	
	this.positionned = false;
	
	window.onscroll = function()
	{
		this.heightAndTop = nv_getPageScroll();
		this.topPosition =  this.heightAndTop[1] + 133;
		
		if (this.positionned)
		{
			this.elmt_divAjax.style.top = this.topPosition + 'px';
		}
	
	}
	this.curYPosition = yMousePos;
	this.curTopPosition = yMousePos;
	
	this.curTimer;
	
	
	// fonction permettant d'aggrindir le bloc
	this.sizeForm = function(curLeft, curSize)
	{
		widthAdd = 5;
		
		
		
		// on purge les timer
		if(this.curTimer){clearTimeout(this.curTimer)}
		
		
		// Calcul de la quantité à ajouté
		if (curSize > 50 ){widthAdd = this.withToAdd_step2;}
		if (curSize > 150){widthAdd = this.withToAdd_step3;}
		if (curSize > 300){widthAdd = this.withToAdd_step4;}
		if (curSize > 500){widthAdd = this.withToAdd_step5;}
		if (curSize > 545){widthAdd = 1;}
		
		
		// on calcul la nouvelle hauteur du div, ainsi que sa nouvelle position vertical
		var myHeight = (450 * (curSize / 550))
		this.curTopPosition = this.curYPosition - (myHeight / 2);
		
		// on déplace ntore div
		this.elmt_divAjax.style.left = curLeft + "px";
		this.elmt_divAjax.style.top = this.curTopPosition + "px";
		if (curSize <= 550) {this.elmt_divAjax.style.width = curSize + "px";}
		this.elmt_divAjax.style.height = myHeight + "px";
		
		
	
		// on agis celon la taille
		if (curSize < 550)
		{
			var self = this;
			self.curTimer = setTimeout("self.sizeForm(" + (curLeft - widthAdd) +", " + (curSize + widthAdd) + ")",10);
		}
		else if (curSize > 550)
		{
			var self = this;
			self.curTimer = setTimeout("self.sizeForm(" + (curLeft + widthAdd) + ", " + (curSize - widthAdd) + ")",10);
		}
		else
		{	
			this.leftPosition = Math.floor((this.bodyWidth - curSize) / 2) ;
			this.elmt_divAjax.style.overflow= 'visible';
			this.elmt_divAjax.style.border = 'none';
			this.elmt_divContent.style.border = 'none';
			this.elmt_divContent.style.backgroundColor = 'transparent';
			
			this.positionForm_left(curLeft,curSize)
		}
	}
	
	this.positionForm_left = function(curLeft, curSize)
	{
		if(this.curTimer){clearTimeout(this.curTimer)}
	
		
		this.elmt_divAjax.style.left = curLeft + "px"
		
		widthAdd = 3;
		
		if (curLeft > this.leftPosition)
		{
			if (curLeft > this.leftPosition + 50  ){widthAdd = 10}
			if (curLeft > this.leftPosition + 100 ){widthAdd = 30}
			if (curLeft > this.leftPosition + 200 ){widthAdd = 60}
		
		}
		else
		{
			widthAdd = 75;
			if (curLeft > this.leftPosition - 10 ){widthAdd = 4}
			if (curLeft > this.leftPosition - 50 ){widthAdd = 10}
			if (curLeft > this.leftPosition - 100 ){widthAdd = 30}
			if (curLeft > this.leftPosition - 200 ){widthAdd = 60}
		}
	
		
		
		if (curLeft < (this.leftPosition - 4) )
		{
			var self = this;
			self.curTimer = setTimeout("self.positionForm_left(" + (curLeft + widthAdd) + ", " + curSize + ")",10);
		}
		else if (curLeft > (this.leftPosition + 4)) 
		{
			var self = this;
			self.curTimer = setTimeout("self.positionForm_left(" + (curLeft - widthAdd) + ", " + curSize + ")",10);
		}
		else
		{
			this.elmt_divAjax.style.left = this.leftPosition + "px"
			this.positionForm_top(this.curTopPosition);
		}

	}
	
	this.positionForm_top = function(curTop)
	{
		if(this.curTimer){clearTimeout(this.curTimer)}
	
		widthAdd = 4;
		
		if (curTop > this.topPosition)
		{
			if (curTop > this.topPosition + 50  ){widthAdd = 10}
			if (curTop > this.topPosition + 100 ){widthAdd = 30}
			if (curTop > this.topPosition + 200 ){widthAdd = 60}
		
		}
		else
		{
			widthAdd = 75;
			if (curTop > this.topPosition - 10 ){widthAdd = 4}
			if (curTop > this.topPosition - 50 ){widthAdd = 10}
			if (curTop > this.topPosition - 100 ){widthAdd = 30}
			if (curTop > this.topPosition - 200 ){widthAdd = 60}
		}
		
		
		this.elmt_divAjax.style.top = curTop + "px"
		
		if (curTop < (this.topPosition - 5)) 
		{
			var self = this;
			self.curTimer = setTimeout("self.positionForm_top(" + (curTop + widthAdd) + ")",10);
		}
		else if (curTop > (this.topPosition + 5)) 
		{
			var self = this;
			this.curTimer = setTimeout("self.positionForm_top(" + (curTop - widthAdd) + ")",10);
		}
		else
		{			this.positionned = true;
		this.elmt_divAjax.style.top = this.topPosition + 'px';
		}
	}
	
	if (!document.getElementById("formProduct"))
	{
		this.elmt_divObscure.style.height = (this.heightAndTop[0] + this.heightAndTop[2]) + "px";	
		
		this.elmt_divObscure.onclick = function() {close_formulaire_addProduct(); 	
		if(this.curTimer){clearTimeout(this.curTimer)}};// on lui ajoute une belle Id ;)
		
		
		this.elmt_Body.appendChild(this.elmt_divObscure)
		this.elmt_Body.appendChild(this.elmt_divAjax)// importation du div "grandissant" dans le body

		
		// on se rend via AJAX airline dans le processus de maj		
		URIpath = docRoot + '/ajax/ajax_request.aspx?idControl=22'; 	  
	
		if (!isNaN(idPan_notFound))
		{
			URIpath = URIpath + '&idPan=' + idPan_notFound;
		}
	
		// puis on effectue le tout
		LoadContent(URIpath,'formProduct_content',"","");
	
		
		this.sizeForm(xMousePos ,  0)
		setOpacity(this.elmt_divObscure, 40);
		
		
	}
}

function exec_delete_thisPan(idPan)
{
	// on se rend via AJAX airline dans le processus de maj		
	URIpath = docRoot + '/ajax/ajax_request.aspx?idControl=24&idPan=' + idPan;
	
	// puis on effectue le tout
	LoadContent(URIpath,'table_bookNotFound',"","");
}


function exec_form_addProduct(nameForm, nameTxtEan, nameTxtTitle, nameTxtAuteur, nameTxtEditeur, nameSupport, nameTxtQuantite, nameTxtAreaExplicatif, idOrNot)
{
	this.elmt_form				= document.forms[nameForm]; // récupération du formulaire
	this.elmt_txtEan			= this.elmt_form[nameTxtEan];
	this.elmt_txtTitle			= this.elmt_form[nameTxtTitle];
	this.elmt_txtAuteur			= this.elmt_form[nameTxtAuteur];
	this.elmt_txtEditeur		= this.elmt_form[nameTxtEditeur];
	this.elmt_txtQuantite		= this.elmt_form[nameTxtQuantite];
	this.tabElmt_rdbSupport		= this.elmt_form[nameSupport];
	this.elmt_txtAreaEplicatif	= this.elmt_form[nameTxtAreaExplicatif];
	this.curId = idOrNot;
	this.txtError = '';

	// LE formulaire est valide dans plusieurs cas.
	// Si l'ean est remplis, ou alors le champ titre, ou alors le champs explicatif.
	// le champs Auteur, editeur et support ne sont qu'informatif !
	this.verifForm = function()
	{
		isValid = false;
		
		if (this.elmt_txtEan.value.length > 0 || this.elmt_txtTitle.value.length > 0 || this.elmt_txtAreaEplicatif.value.length > 0)
		{
			// Si l'ean n'est pas null, on test si il s'agit bien d'un integer ( add le 04/02/2008, par d.guillard )
			if (this.elmt_txtQuantite.value != '')
			{
				if (Math.floor(this.elmt_txtQuantite.value) == this.elmt_txtQuantite.value)
				{
					isValid  = true;
					}else{
					this.txtError='La quantit\351 saisie doit \352tre un entier.';
				}				
			}else{
				isValid  = true;
			}
		}else{
			this.txtError='Vous devez remplir au moins un des champs suivant pour que votre charg\351 de client\350le puisse retrouv\351 ce titre\n - EAN13 \n  - Titre \n - Information suppl\351mentaire'
		}
		
		return isValid;
	}

	// si le formulaire est valide, alors on envoie via httpRequest les données :)
	if (this.verifForm())
	{
		support = "";
		for(i = 0; i < this.tabElmt_rdbSupport.length; i++)
		{
			if (this.tabElmt_rdbSupport[i].checked)
			{support = this.tabElmt_rdbSupport[i].value;}
		}
		
		
		var txtEanValue		= this.elmt_txtEan.value;
		var txtTitleValue	= this.elmt_txtTitle.value;
		var txtAuteurValue	= this.elmt_txtAuteur.value;
		var txtEditeurValue = this.elmt_txtEditeur.value;
		var txtQuantiteValue = this.elmt_txtQuantite.value;
		var areaExplicValue = this.elmt_txtAreaEplicatif.value;
		var chSupport		= support;
		
		
		// on se rend via AJAX airline dans le processus de maj		
		URIpath = docRoot + '/ajax/ajax_request.aspx?idControl=23&ean=' + txtEanValue + '&titre=' + txtTitleValue +'&auteur=' + txtAuteurValue + '&editeur=' + txtEditeurValue + '&quantite=' + txtQuantiteValue + '&support=' + chSupport + '&commentaire=' + areaExplicValue; 	  
		
			if (!isNaN(this.curId))
			{
				URIpath = URIpath + '&idPan=' + this.curId;
			}
	
		// puis on effectue le tout
		LoadContent(URIpath,'table_bookNotFound',"","");
		
		// on en profite pour fermer le formulaire
		close_formulaire_addProduct()
	}
	else
	{
		//alert("Vous devez remplir au moins un des champs suivant pour que votre charg\351 de client\350le puisse retrouv\351 ce titre\n - EAN13 \n  - Titre \n - Information suppl\351mentaire");
		alert(this.txtError);
	}
}



//==================== WISHLIST ====================\\
	var tab_wish = new Array();  
	
	function wishlist_book_isModif(idList, ean)
	{
		var wishIsAdd = false;

		for (var i = 0;i <tab_wish.length;i++) 
		{
			// si la wish a été trouvé ou déplace notre tableau pour obtenir comme derniere case, une case vide
			if (tab_wish[i].ean == ean)
			{wishIsAdd = true;}
		}		
		
		if (!wishIsAdd)
		{tab_wish[tab_wish.length] = new wishlist_book(idList, ean);}

		document.getElementById('conf_' + ean).style.display = 'inline';
		document.getElementById('conf_all').style.display = 'inline-block';
		
	}
	
	function wishlist_book(idList, ean)
	{
		this.idList = idList;
		this.ean= ean;
		this.hrefValid = document.getElementById('conf_' + ean)
		this.importance = document.getElementById('imp_' + ean)
		this.commentaire = document.getElementById('com_' + ean)
	}
	
	function wishList_BookGestion(curEan)
	{
		/* Recherche dans le tableau de wish de notre wishlist */
		this.searchWish_inTab= function (curEan)
		{
			var wishToReturn; 
			var newTab = new Array();
			// on recherche la wishlist
			for (si = 0;i <tab_wish.length;i++) 
			{  
				// si la wish a été trouvé ou déplace notre tableau pour obtenir comme derniere case, une case vide
				if (tab_wish[i].ean == curEan)
				{wishToReturn = tab_wish[i]}
				else
				{newTab[newTab.length] = tab_wish[i]}
			}		
			// si on a trouvé la wishlist, on supprime la derniere case du tableau
			if (tab_wish.length != newTab.length)
			{
				tab_wish = newTab;
			}
	
			return wishToReturn
		}	
		
		this.majOneBook = function(curEan)
		{
			var wishToMaj = this.searchWish_inTab(curEan)
 
			// on se rend via AJAX airline dans le processus de maj		
			URIpath = docRoot + '/ajax/ajax_request.aspx?idControl=10&idList=' + wishToMaj.idList + '&thisEan='+ wishToMaj.ean +'&thisImportance=' + wishToMaj.importance[wishToMaj.importance.selectedIndex].value + '&thisCommentaire=' + wishToMaj.commentaire.value; 	  
		
			// puis on effectue le tout
			LoadContent(URIpath,"","","document.getElementById('conf_"  + wishToMaj.ean + "').style.display = 'none'");
			
			if (tab_wish.length == 0)
			{document.getElementById('conf_all').style.display = 'none';}
		}
		
		this.majAllBook = function()
		{
			// on recherche la wishlist
			for (var i = 0;i <tab_wish.length;i++) 
			{
				wishToMaj = tab_wish[i]
				
				// on se rend via AJAX airline dans le processus de maj		
				URIpath = docRoot + '/ajax/ajax_request.aspx?idControl=10&idList=' + wishToMaj.idList + '&thisEan='+ wishToMaj.ean +'&thisImportance=' + wishToMaj.importance[wishToMaj.importance.selectedIndex].value + '&thisCommentaire=' + wishToMaj.commentaire.value; 	  
			
				// puis on effectue le tout
				LoadContent(URIpath,"","","document.getElementById('conf_"  + wishToMaj.ean + "').style.display = 'none'");
				
				
			}		
			document.getElementById('conf_all').style.display = 'none';
			tab_wish.length = 0;
			
		}
		
		if (curEan != null)
		{this.majOneBook(curEan)}
		else
		{this.majAllBook()}
	}
//==================== FIN WISHLIST ====================\\


function changeEtat_sltDate(rdb_isChecked, beginName_select)
{
	var strDisabled = 'disabled'
	
	if (rdb_isChecked)
	{strDisabled = ''}
	
	
	document.getElementById(beginName_select + '_day').disabled = strDisabled;
	document.getElementById(beginName_select + '_month').disabled = strDisabled;
	document.getElementById(beginName_select + '_year').disabled = strDisabled;
}
