/* 
	ED - 12.07.2006
	Fonction AddEvent de John Resig 
	http://ejohn.org/projects/flexible-javascript-events/
*/
 function addEvent( obj, type, fn ) {
   if ( obj.attachEvent ) {
     obj['e'+type+fn] = fn;
     obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
     obj.attachEvent( 'on'+type, obj[type+fn] );
   } else
     obj.addEventListener( type, fn, false );
 }
 
 function removeEvent( obj, type, fn ) {
  if ( obj.detachEvent ) {
    obj.detachEvent( 'on'+type, obj[type+fn] );
    obj[type+fn] = null;
  } else
    obj.removeEventListener( type, fn, false );
}

/* Affichage d'un calendrier pour les formulaires avec recherche par date */
function affiche_calendrier(nom, form) {
	if (document.getElementById) {
		document.write("<a href=\"#\" onclick=\"window.open('/adminsite/calendrier/calendrierjs.html?champ=" + nom + "&form=" + form +"', 'calendrier', 'width=135, height=138, toolbar=no, location=no, status=yes, resizable=yes'); return false;\"><img src=\"/images/calendrier.png\" border=\"0\"  alt=\"choisir une date\"></a>");
	}
}

/* Activation du service selectionnï¿½ dans la liste des services */
function activerService() {

	var index = window.document.getElementById('selectservices').selectedIndex;
	if( index == 0)
		return;
	var url = window.document.getElementById('selectservices').options[index].value;

	/* Analyse target */
	var indexTarget = url.indexOf(';');
	if (indexTarget > 0) {
		var target =  url.substring(0,indexTarget);
		url = url.substring(indexTarget + 1);
		window.open(url, target);
	} else {
		window.location.href=url.substring(1);
	}
}

/* Affichage d'une image dans une popup */
function afficheImage(source) {
	// Ouverture du pop-up
	window.open(source,'pop','status=no,directories=no,toolbar=no,location=no,menubar=no,scrollbars=yes,resizable=yes');
}

function atteindreAncre(ancre) {
	if (ancre != 'null'){
		window.location.href += '#' + ancre;
	}
}

/* Fonction utilisï¿½e dans la recherche avancï¿½e pour rï¿½initialiser les formulaires */
function viderFormulaire(criteres) {
	criteres = criteres.split(";");
	var champReinit = "";
	var valeurChamp = "";
	
	for (var i=0; i < (criteres.length); i++) {
		champReinit = eval("document.forms['recherche_avancee']." + criteres[i].substring(0, criteres[i].indexOf("=")));
		valeurChamp = criteres[i].substring(criteres[i].indexOf("=")+1);
		
		if (champReinit) {
			
			var sType = champReinit.type;
			//bouton radio
			if (!sType) {
				for (var i = 0; i < champReinit.length; i++)
					champReinit[i].checked = false;
			} 
			//checkbox
			else if(sType == 'checkbox')
				champReinit.checked = false;
			//autres
			else
			champReinit.value = valeurChamp;
		}
	}
}


/* Fonction permettant d'afficher le bouton imprimer (donc uniquement si javascript est actif) */
function afficherBoutonImprimer(intitule) {
	document.write('<span id="imprimer" onclick="window.print(); return false;">' + intitule + '</span>');
}


/* Fonction permettant d'intervertir l'id d'un ï¿½lï¿½ment avec un autre */
function switchId(ancienIdItem, nouvelIdItem) {
	var itemSwitch = window.document.getElementById(ancienIdItem);

	if (itemSwitch != null) {
		
		
		itemSwitch.id = nouvelIdItem;
	}
}

/* Permet d'ouvrir une popin à l'aide de shadowbox */
function shadowOverlay(lien, hauteur, largeur, titre) {
	Shadowbox.open({
		player:     'iframe',
        content:    lien,
        height:     hauteur,
        width:      largeur,
		title:      titre,
        options: {
			modal: true
		}
	});
}

/* Permet de modifier l'affichage de l'adresse de livraison durant le processus de commande */
function choixAdresse(choix)
{
	var divAdresseLivraison = window.document.getElementById('adresseLivraison');
	if (divAdresseLivraison) {
		var inputs = divAdresseLivraison.getElementsByTagName("input"); 
		for (var i = 0; i < inputs.length; i++) { 
			modifierElement(inputs[i], choix);
		}
		
		var selects = divAdresseLivraison.getElementsByTagName("select"); 
		for (var i = 0; i < selects.length; i++) { 
			modifierElement(selects[i], choix);
		}
	}
}

/* Active ou désactive l'élément passé en paramètre */
function modifierElement(element, choix)
{
	var classeDesactive = / readonly/;
	
	if (choix == 1) {
		element.disabled = "";
		element.className = element.className.replace(classeDesactive, "");
	} else if (choix == 2) {
		element.disabled = "disabled";
		element.className += " readonly";
	}
}

/* 
	CB - 20100225
	Ensemble de fonctions redéfinies afin d'assurer le fonctionnement du panier spécifique à Tollens Pro
*/

/**
 * Permet d'ajouter un item au panier (appel XHR)
*/
function addItemAvecLibelle(action, typeP, typeF, codeF, langueF, libelleF)
{
	//alert('type = ' + typeP + ', objet = ' + typeF + ', code = ' + codeF + ', langue = '+langueF + ', libelle = '+libelleF);
	var url = '/servlet/com.kportal.panier.processus.TraitementPanier';
  
	var myAjax = new Ajax.Request(url,
		{
			method: 'post',
			asynchronous: true,
			parameters: {
				ACTION: action,
				TYPE_PANIER: typeP,
				TYPE_FICHE: typeF,
				CODE_FICHE: codeF,
				LANGUE_FICHE: langueF,
				LIBELLE_FICHE: libelleF },
			onUninitialized: function (xhr)
			{ // Création de l'objet XHR
				//alert('onUninitialized');
			},
			onLoading: function (xhr)
			{ // Après appel méthode open
				//alert('onLoading');
			},
			onLoaded: function (xhr)
			{ // Requête envoyée
				//alert('onLoaded');
			},
			onInteractive: function (xhr)
			{ // Réponse en cours de réception
				//alert('onInteractive');
			},
			on200: function (xhr)
			{ // Réponse HTTP "OK"
				//alert('on200');
			},
			onSuccess: function (xhr)
			{ // Réponse HTTP == 2xx
				//alert('onSuccess');
			},
			on404: function (xhr)
			{ // Réponse HTTP "OK"
				//alert('on404');
			},
			onFailure: function (xhr)
			{ // Réponse HTTP != 2xx
				//alert('onFailure');
			},
			onException: function (xhr, exception)
			{
				alert(exception);
			},
			onComplete: function (xhr)
			{ // Requête totalement terminée
				if (xhr.status == 200)
				{
					eval(xhr.responseText);
				} else {
					//alert(xhr.status);
				}
			}
		}
	)
}

/**
 * Permet de supprimer complètement un item du panier (appel XHR)
 */
function deleteTotalItem(typeP, idFP)
{
	var url = '/servlet/com.kportal.panier.processus.TraitementPanier';
	var myAjax = new Ajax.Request(url,
		{
			method: 'post',
			asynchronous: true,
			parameters: {
				ACTION: 'SUPPRIMER_TOUT',
				TYPE_PANIER: typeP,
				ID_FICHEPANIER: idFP},
			onUninitialized: function (xhr)
			{ // Création de l'objet XHR
				//alert('onUninitialized');
			},
			onLoading: function (xhr)
			{ // Après appel méthode open
				//alert('onLoading');
			},
			onLoaded: function (xhr)
			{ // Requête envoyée
				//alert('onLoaded');
			},
			onInteractive: function (xhr)
			{ // Réponse en cours de réception
				//alert('onInteractive');
			},
			on200: function (xhr)
			{ // Réponse HTTP "OK"
				//alert('on200');
			},
			onSuccess: function (xhr)
			{ // Réponse HTTP == 2xx
				//alert('onSuccess');
			},
			on404: function (xhr)
			{ // Réponse HTTP "OK"
				//alert('on404');
			},
			onFailure: function (xhr)
			{ // Réponse HTTP != 2xx
				//alert('onFailure');
			},
			onException: function (xhr, exception)
			{
				alert(exception);
			},
			onComplete: function (xhr)
			{ // Requête totalement terminée
				if (xhr.status == 200)
				{
					eval(xhr.responseText);
				} else {
					//alert(xhr.status);
				}
			}
		}
	)
}

/**
 * Mettre à jour la quantité pour un item existant (augmenter ou diminuer)
 */
function updateQuantiteItemPanier(typePanier, idFichePanier, quantite, nbItems, coutItem, coutTotalItem)
{
	// on met à jour la taille du panier
	updateTotalPanier(typePanier, nbItems);

	// on met a jour la quantité dans l'encadré
	var inputQte = document.getElementById('qte_'+idFichePanier);
	if (inputQte)
	{
		inputQte.value = quantite;
	}
	
	// on met a jour le coût dans l'encadré
	var spanCout = document.getElementById('cout_total_'+idFichePanier);
	if (spanCout)
	{
		var precedentCoutTotalItem = parseFloat(spanCout.innerHTML);
		precedentCoutTotalItem = isNaN(precedentCoutTotalItem)?0:precedentCoutTotalItem;
		
		var nouveauCoutTotalItem = coutTotalItem.replace('.', ',');
		spanCout.innerHTML = nouveauCoutTotalItem;
		// On récupère le chiffre après s'être séparé de la devise
		nouveauCoutTotalItem = parseFloat(nouveauCoutTotalItem.substring(0, nouveauCoutTotalItem.indexOf(" ")));
		nouveauCoutTotalItem = isNaN(nouveauCoutTotalItem)?0:nouveauCoutTotalItem;
		
		var differenceCout = nouveauCoutTotalItem - precedentCoutTotalItem;
		updateCoutTotalPanier(differenceCout);
	}
	
	resetErreurPanier();
}

/**
 * Met à jour la taille du panier
 */
function updateTotalPanier(typePanier, nbItems)
{
	var span = document.getElementById('nbItemsTotal');
	if (span)
	{
		span.innerHTML = nbItems;
	}
}

/**
 * Met à jour le coût total du panier
 */
function updateCoutTotalPanier(differenceCout)
{
	var span = document.getElementById('coutTotal');
	if (span)
	{
		var valeurCourante = parseFloat(span.innerHTML);
		var nouvelleValeur = valeurCourante + differenceCout;
		span.innerHTML = nouvelleValeur.toFixed(2).replace('.', ',');
	}
}

/**
 * Supprimer un item de la liste
 */
function updateSupprimerItem(typePanier, idFichePanier, nbItems, qteItem, coutItem)
{
	// on met à jour la taille du panier
	updateTotalPanier(typePanier, nbItems);
	
	// on met à jour le montant du panier
	var blocCoutAffiche = document.getElementById('cout_total_' + idFichePanier);
	if (blocCoutAffiche) {
		coutAffiche = blocCoutAffiche.innerHTML;
		coutAffiche = parseFloat(coutAffiche.substring(0, coutAffiche.indexOf(" ")));
		if (!isNaN(coutAffiche)) {
			updateCoutTotalPanier(coutAffiche * -1);
		}
	}
	
	// on supprime l'item de la liste
	var bloc_fiche = document.getElementById('bloc_fiche_panier_' + idFichePanier);
	if (bloc_fiche)
	{
		var bloc_panier = bloc_fiche.parentNode;

		// on supprime la fiche de la liste
		bloc_panier.removeChild(bloc_fiche);

		// si on a supprimé le dernier élément on réaffiche le message comme quoi le panier est vide
		if (bloc_panier.getElementsByTagName('div').length == 3)
		{
			location.reload();
		}
	}
}

/* Affichage des messages d'erreur dans le bloc prévue */
function updateErreurPanier(codeErreur, msgErreur, typePanier)
{
	var bloc_erreur = document.getElementById('erreur_validation');
	if (bloc_erreur)
	{
		bloc_erreur.innerHTML = msgErreur;
	} else {
	alert(msgErreur);
}
}

/* Vide le bloc des messages d'erreur */
function resetErreurPanier()
{
	var bloc_erreur = document.getElementById('erreur_validation');
	if (bloc_erreur)
	{
		bloc_erreur.innerHTML = '';
	}
}

/* Fonction appelée lorsque l'utilisateur n'est plus connecté (session expirée) */
function updateErreurIdentificationPanier(urlIdentification)
{
	window.location.href = urlIdentification;
}
