
var Class = {
	create: function() {
		return function() { this.initialize.apply(this, arguments); }
	}
};

//

function $(id) {  
	if (id == undefined) return false;
	return (document.getElementById(id.toString())) ? document.getElementById(id.toString()) : false; 
}


var Ajax = Class.create();

Ajax.prototype = {

	// Constructeur

	initialize: function(sUrl, scope) {

		if (scope == undefined) { 
			this.scope = window; 
		} else {
			this.scope = scope; 
		} 

		this.sUrl = sUrl;
		this.oXmlHttp = false;
		this.sVariables = "";
		this.aArguments = [];

		/*@cc_on
		@if(@_jscript_version >= 5)
			try {
				this.oXmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					this.oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (E) {
					this.oXmlHttp = false;
				}
			}
		@else
			this.oXmlHttp = false;
		@end @*/
		if(!this.oXmlHttp && typeof XMLHttpRequest != 'undefined') {
			try {
				this.oXmlHttp = new XMLHttpRequest();
			} catch (e) {
				this.oXmlHttp = false;
			}
		}
		if (!this.oXmlHttp) {
			// XMLHttpRequest n'est pas supporte pas le client
		}
	},
	// Envoi
	envoie: function(fonctionRetour) {

		this.fonctionRetour = fonctionRetour;
		this.oXmlHttp.abort();
		this.oXmlHttp.open('POST', this.sUrl, true);
		this.oXmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

		for (var i = 0; i < this.aArguments.length; i++) {
			this.sVariables += "&"+this.aArguments[i].nom+"="+this.aArguments[i].valeur;
		}

		this.oXmlHttp.send(this.sVariables);
		var _this = this;

		this.oXmlHttp.onreadystatechange = function () {
			try {
				if (_this.oXmlHttp.status == 200 && _this.oXmlHttp.readyState == 4) {
					_this.fonctionRetour.apply(_this.scope, [_this.oXmlHttp.responseText]);
				}
			} catch (e) {
				// debug seulement
			}
		}
	},

	// Ajoute
	ajoute: function(nom, valeur) {
		var bExiste = false;
		for (var i = 0; i < this.aArguments.length; i++) {
			if (this.aArguments[i].nom == nom) {
				bExiste = true;
				this.aArguments[i].valeur = valeur;
				break;
			}
		}
		if (!bExiste) {
			this.aArguments.push( {nom: nom, valeur: valeur} );
		}
	}

};


// Pour le listing des produits suivant précédent
function afficherListeProduit(depart, rechercher, idGamme, promo, tri) {

	var gestionListeProduit = new Ajax("../medias/includes/solidar_resultat_recherche.php");
	gestionListeProduit.ajoute('depart', depart);
	gestionListeProduit.ajoute('rechercher', rechercher);
	gestionListeProduit.ajoute('idLiaison', idGamme);
	gestionListeProduit.ajoute('promo', promo);
	gestionListeProduit.ajoute('tri', tri);
	gestionListeProduit.envoie(retourListeProduit);
	
}

var retourListeProduit = function(e) {
	$("listingProduit").innerHTML = e;
}


// Moteur de recherche
function testMoteurRecherche() {
	motClef = $("champRecherche").value;
	if(motClef=="Rechercher..." || motClef=="") {
		alert("Vous devez saisir un mot clé");
		return false;
	} else {
		return true;
	}
}

function ajouterPanier(idProduit) {
	
	var gestionListeProduit = new Ajax("../medias/includes/solidar_acces_compte.php");
	gestionListeProduit.ajoute('idProduitAjouter', idProduit);
	gestionListeProduit.envoie(retourAjoutPanier);

}

var retourAjoutPanier = function(e) {
	$("solidarRecapPanier").innerHTML = e;
	afficherInfo();
}

function afficherInfo()
{
	hauteur = document.documentElement.scrollTop;

	$("infoPanier").style.top = (hauteur+300)+"px";
	$("infoPanierContenu").style.top = (hauteur+300)+"px";

	$("infoPanier").style.display = "block";
	$("infoPanierContenu").style.display = "block";
}

function effacerInfo()
{
	$("infoPanier").style.display = "none";
	$("infoPanierContenu").style.display = "none";
}

var timer1;
var timer2;
var pasBlocageActionOuverture = 1;
var pasBlocageActionFermeture = 1;
var dejaLancer = 0;

function afficherPanier(num)
{
	// si aucun parametre
	// Si le layer est visible, on le rend invisible
	if (isNaN(num)==true && $("contenuPanierFinal").style.display == "block") {
		pasBlocageActionFermeture = 0;
		clearTimeout(timer1);
		$("contenuPanierFinal").style.display = "none";
		effacerPanier(0);
		// Sinon on initialise le compteur
	} else if(pasBlocageActionFermeture) {
		if(isNaN(num)==true) {
			if(pasBlocageActionOuverture==0) {
				return false;
			} else {
				pasBlocageActionOuverture = 0;
			}
		
			/*if(document.documentElement.scrollTop>21) {
				hauteur = document.documentElement.scrollTop-41;
			} else if(document.documentElement.scrollTop>0) {
				alert(document.documentElement.scrollTop);
				hauteur = -21;
			} else {
				hauteur = -21;
			}
			$("contenuPanierFinal").style.top = hauteur+"px";
			$("contenuPanier").style.top = hauteur+"px";*/

			clearTimeout(timer2);
			num = 20;
			coeffW = 490;
			coeffH = 341;
		//	opacifie("contenuPanier", 100);
			$("contenuPanier").style.display = "block";
		} else {
			num--;
			coeffW = coeffW/2;
			coeffH = coeffH/2;
		}
		if (num > 1) { 
			$("imagePanier").width = 560-coeffW;
			$("imagePanier").height = 390-coeffH;
			timer1 = setTimeout("afficherPanier("+(num--)+")", 15);
		} else if(num==1) {
			$("contenuPanierFinal").style.display = "block";
			pasBlocageActionOuverture = 1;
			//$("layerInvisible").style.zIndex = 1;
			//opacifie("layerInvisible", 20);
			/*	timer1 = setTimeout("afficherPanier("+(num--)+")", 40);
			} else if(num<=0) {
				$("contenuPanier").style.display = "none";
			}*/
		}
	}	
}

function effacerPanier(pourcentage)
{
	if(pasBlocageActionOuverture) {
		pasBlocageActionFermeture = 0;
		reductionPanier(pourcentage);
		if(pourcentage<5) {
			timer2 = setTimeout("effacerPanier("+(pourcentage+1)+")", 10);
		} else {
			$("contenuPanier").style.display = "none";
			if($("contenuPanierFinal").innerHTML=="") {
				$("recapPanier").innerHTML = "<p class='accroche76'>Votre panier est vide</p>";
			}
			pasBlocageActionFermeture = 1;
		}
	}
}

function reductionPanier(Pourcentage) {

	$("imagePanier").width-=Math.round(Math.exp(Pourcentage));
	$("imagePanier").height-=Math.round(Math.exp(Pourcentage));

}

// ===================================================
// Suppression d'un élément dans le panier
function supprimerProduitPanier(idProduit)
{
	//if(confirm("Etes vous sûr de vouloir supprimer cet article de votre panier ?")) {
		var suppressionProduit = new Ajax("../medias/includes/solidar_panier.php");
		suppressionProduit.ajoute('idProduitSupprimer', idProduit);
		suppressionProduit.envoie(retourSuppressionPanier);
	//}
}

var retourSuppressionPanier = function(e) {
	
	if(e=="") {
		//alert("Votre panier est vide");
		$("contenuPanierFinal").innerHTML = "";
		effacerPanier(0);
	} else {
		$("contenuPanierFinal").innerHTML = e;
		dernierProduitAjoute();
	}

}

// ===================================================
// Remplacement du dernier produit ajouté au panier (lors d'une suppression ou modification de quantité)
function dernierProduitAjoute()
{
	var testDernierProduitAjoute = new Ajax("../medias/includes/solidar_panier.php");
	testDernierProduitAjoute.ajoute('testDernierProduitAjoute', "1");
	testDernierProduitAjoute.envoie(retourDernierProduitAjoute);
}

var retourDernierProduitAjoute = function(e) {

	if(e!="") {
		$("dernierProduitAjoute").innerHTML = e;
	}

}

// ===================================================
var majChampTotal = 0;

// Modification d'un élément du panier
function panierModifierQuantite(idProduitModifier, quantite) {

	var quantiteSaisi = parseInt(quantite, 10);
	if(isNaN(quantiteSaisi)==true) {
		$("qte"+idProduitModifier).value = 1;
		quantiteSaisi = 1;
	} else if(quantiteSaisi!=quantite) {
		$("qte"+idProduitModifier).value = quantiteSaisi;
	}

	var quantiteMaxi = $("quantiteMaxiPanier"+idProduitModifier).value;

	if(quantiteMaxi != "" && parseInt(quantite)>parseInt(quantiteMaxi)) {
		$("qte"+idProduitModifier).value = quantiteMaxi;
		alert("Stock limité, vous ne pouvez commander que "+quantiteMaxi+" exemplaire(s) de ce produit");
		quantiteSaisi = quantiteMaxi;
	}

	var modifierQuantitePanier = new Ajax("../medias/includes/solidar_panier.php");
	modifierQuantitePanier.ajoute('idProduitModifier', idProduitModifier);
	modifierQuantitePanier.ajoute('nouvelleQuantite', quantiteSaisi);
	
	if(quantiteSaisi!=0) {
		// Ne modifier que le total produit du panier
		modifierQuantitePanier.envoie(retourModifQuantite);

		majChampTotal = idProduitModifier;

		var modifierQuantitePanier = new Ajax("../medias/includes/solidar_panier.php");
		modifierQuantitePanier.ajoute('idProduitTotal', idProduitModifier);
		modifierQuantitePanier.ajoute('nouvelleQuantite', quantiteSaisi);
		modifierQuantitePanier.envoie(retourSousTotal);

	} else {
		// Mettre à jour l'ensemble du panier
		modifierQuantitePanier.envoie(retourSuppressionPanier);
	}

}

var retourModifQuantite = function(e) {

	$("totalPanier").innerHTML = e;
	
}

var retourSousTotal = function(e) {
	if(majChampTotal) {
		$("total"+majChampTotal).innerHTML = e;
	}
	majChampTotal = 0;
}

function opacifie(sId, nPourcentage) {
	var calque = $(sId).style;
	calque.opacity = (nPourcentage / 100);
	calque.MozOpacity = (nPourcentage / 100);
	calque.KhtmlOpacity = (nPourcentage / 100);
	calque.filter = "alpha(opacity=" + nPourcentage + ")";
}

// Modification d'un élément du panier
function recapPanierModifierQuantite(idProduitModifier, quantite) {

	var quantiteSaisi = parseInt(quantite, 10);
	if(isNaN(quantiteSaisi)==true) {
		$("qte"+idProduitModifier).value = 1;
		quantiteSaisi = 1;
	} else if(quantiteSaisi!=quantite) {
		$("qte"+idProduitModifier).value = quantiteSaisi;
	}

	var quantiteMaxi = $("quantiteMaxiPanier"+idProduitModifier).value;

	if(quantiteMaxi != "" && parseInt(quantite)>parseInt(quantiteMaxi)) {
		$("qte"+idProduitModifier).value = quantiteMaxi;
		alert("Stock limité, vous ne pouvez commander que "+quantiteMaxi+" exemplaire(s) de ce produit");
		quantiteSaisi = quantiteMaxi;
	}

	var modifierQuantitePanier = new Ajax("../medias/includes/solidar_etape1_recapitulatif_panier.php");
	modifierQuantitePanier.ajoute('idProduitModifier', idProduitModifier);
	modifierQuantitePanier.ajoute('nouvelleQuantite', quantiteSaisi);
	
	modifierQuantitePanier.envoie(retourModifPanier);

}

var retourModifPanier = function(e) {

	info = e.split("[*]");
	$("listingRecapPanier").innerHTML = info[0];
	if ($("montantDon")) {
		$("montantDon").innerHTML = info[1];
	}
	
}

function recapPanierSupprimerProduit(idProduit) {
	if(confirm("Etes vous sûr de vouloir supprimer cet article de votre panier")) {
		recapPanierModifierQuantite(idProduit, "0");
	}
}

