/* Fichier JS contenant les fonctions JS et AJAX  */
/* FRONT OFFICE */

// ############################################################################"
// ------------  Création de l'objet XMLHTTPREQUEST ------------------
// parametre : none
// ############################################################################"
function getXhr()
{
	var xhr = null; 
	if(window.XMLHttpRequest) // Firefox et autres
	   xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject)
	{ // Internet Explorer 
	    try
	    {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else
	{ // XMLHttpRequest non supportépar le navigateur 
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
	   xhr = false;
	} 
	return xhr
}
// -------------------------

// ############################################################################"
/* Vérification de la disponibilité du produit selon les spécificités choisies */
// parametre : none
// ############################################################################"
function disponibilite() {
	if( document.getElementById("resultat").hasChildNodes() ) {
		document.getElementById("resultat").removeChild(document.getElementById("resultat").firstChild);
	}
	// On retire les images d'erreur ou ok
	if( document.getElementById("erreur").style.display = "block" ) {
		document.getElementById("erreur").style.display = "none";
	}
	if( document.getElementById("ok").style.display = "block" ) {
		document.getElementById("ok").style.display = "none";
	}
	document.getElementById("modele").value = 0;
	
	// Récupération des éléments -- Init variables
	var taille = document.getElementById("taille").value;
	var couleur = document.getElementById("couleur").value;
	var texture = document.getElementById("texture").value;

	var dispo = false;

	if( taille != "-1" && couleur != "-1" && texture != "-1" ) {

		for( var i=0; i<modeles.length; i++ ) {
			if( modeles[i]["taille"] == taille && modeles[i]["couleur"] == couleur && modeles[i]["texture"] == texture ) {
				if( modeles[i]["dispo"] > 0 ) {
					dispo = true;
				}
				break;
			}
		}
		
		if( dispo == true ) {
			document.getElementById("modele").value = modeles[i]["id"];
			var texte = document.createTextNode("Disponible");
			document.getElementById("ok").style.display = "inline";
			return( modeles[i]["id"] );
		}else{
			document.getElementById("erreur").style.display = "inline";	
			var texte = document.createTextNode("Indisponible");
			return 0;
		}
		document.getElementById("resultat").appendChild(texte);		
			
	}else{
		// Erreur : veuillez sélectionner un modèle
		alert("Veuillez sélectionner un modèle : une taille, une couleur et une texture");
	}		
}

// ############################################################################"
/* Tester si la disponibilité est correcte avant d'ajouter au panier */
// parametre : 
// ############################################################################"
function test_dispo(formulaire) {

	// Récupération des éléments -- Init variables
	var taille = document.getElementById("taille").value;
	var couleur = document.getElementById("couleur").value;
	var texture = document.getElementById("texture").value;
	
	if( taille == "-1" || couleur == "-1" || texture == "-1") {
		disponibilite();
		return false;
	}else{
		if( document.getElementById("modele").value <= 0 ) {
			if( disponibilite() > 0 ) {
				formulaire.submit();
			}else{
				return false;
			}
		}
	}
}

// ############################################################################"
/* Affiche le message de confirmation pour vider le panier */
// parametre : none
// ############################################################################"
function vider_panier() {
	var div = document.getElementById("confirmation");
	div.style.display = "block";
}

// ############################################################################"
/* Supprime un produit dans le panier */
// parametre : idPrpduit
// ############################################################################"
function suppProduit(lien, idProduit, idModele) {

	if(confirm("Désirez-vous réellement supprimer ce produit de votre panier ?")) {
		var xhr = getXhr(); 
		
		xhr.onreadystatechange = function()
		{
			try
			{
				// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
				if(xhr.readyState == 4 && xhr.status == 200)
				{
					var td = lien.parentNode;
					var suppTr = td.parentNode;
					var parent = suppTr.parentNode;

					parent.removeChild(suppTr);			
					
					//si j'utilise IE, je réinitialise l'objet (quelle merde ce truc, sérieux)
					if (window.ActiveXObject)
					{
						xhr = new ActiveXObject('Microsoft.XMLHTTP');
					}

					// rafraichissement de la page
					//document.location.reload();					
				}
			}
			catch ( e )
			{
				// Si une exception s'est produite, on catch
				alert("Une exception s'est produite : " + e.description);
			}
		}
		
		// Ouverture de la requete et modification du Content-type
		xhr.open("POST","./ajax/supp_produit.php",true);
		xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
		// Envoi de la requete au script PHP avec les variables
		xhr.send("idProduit="+idProduit+"&idModele="+idModele);	
		
		
	}
}

// ############################################################################"
/* Sauvegarde la quantité d'un produit dans le panier */
// parametre : idPrpduit
// ############################################################################"
function save_qte(input) {
	// On supprime le contenu du div erreur qui affiche les erreurs commises
	var div_erreur = document.getElementById("erreur");
	if( div_erreur.hasChildNodes() ) {
		for( var i=0; i<div_erreur.childNodes.length; i++ ) {
			div_erreur.removeChild(div_erreur.firstChild);
		}
	}

	// Récupération des id du produit et du modele 
	var td = input.parentNode;
	var div = td.getElementsByTagName("div")[0];
	var ligne_modif = div.firstChild.data.split("|");
	
	var idProduit = ligne_modif[0];
	var idModele = ligne_modif[1];

	// Récupération de la nouvelle quantité souhaitée
	var nouvelle_qte = input.value;
	
	var xhr = getXhr(); 
	
	xhr.onreadystatechange = function()
	{
		try
		{
			// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
			if(xhr.readyState == 4 && xhr.status == 200)
			{
				var debut = xhr.responseText.substring(0,8);
				if( debut == "!erreur!" ) {
					// Si erreur, on affiche le message d'erreur et on remet l'ancienne valeur dans le champ quantité
					var txt_erreur = document.createTextNode("La quantité souhaitée n'est pas correcte, veuillez recommencer");
					div_erreur.appendChild(txt_erreur);
					input.value = xhr.responseText.substring(8,xhr.responseText.length);
				}else{
					var txt_ok = document.createTextNode("La mise à jour de la quantité a bien été effectuée");
					div_erreur.appendChild(txt_ok);
				}
				
				//si j'utilise IE, je réinitialise l'objet (quelle merde ce truc, sérieux)
				if (window.ActiveXObject)
				{
					xhr = new ActiveXObject('Microsoft.XMLHTTP');
				}			
			}
		}
		catch ( e )
		{
			// Si une exception s'est produite, on catch
			alert("Une exception s'est produite : " + e.description);
		}
	}
	
	// Ouverture de la requete et modification du Content-type
	xhr.open("POST","./ajax/save_qte.php",true);
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
	// Envoi de la requete au script PHP avec les variables
	xhr.send("idProduit="+idProduit+"&idModele="+idModele+"&qte="+nouvelle_qte);	
}

// ############################################################################"
/* Switch sur les photos dans la popup de zoom */
// parametre : idPhoto -- identifiant de la photo que l'on veut switcher
// ############################################################################"
function je_switch_jeanpierre(obj, idPhoto) {
	// MISE EN FORME - - CSS
	var td_miniatures = document.getElementById("miniatures").getElementsByTagName("td");
	for( var i=0; i<td_miniatures.length; i++ ) 
	{
		var image = td_miniatures[i].getElementsByTagName("img")[0];
		if( image.style.border != "0" )
		{
			image.style.border = "0";
		}
	}
	obj.style.border = "1px dashed #E7E7E7";

	// Récupération du nom du fichier image de la photo à afficher
	var newPhoto = photos[idPhoto];
	// Récupération du td parent de l'image
	var td_grande = document.getElementById("grande").getElementsByTagName("td")[0];
	// Suppression du premier fils de ce td, càd l'ancienne image
	td_grande.removeChild(td_grande.getElementsByTagName("img")[0]);
	// Création d'un noeud img auquel on ajoute l'attribut src
	var img = document.createElement("img");
	img.setAttribute("src", "./admin/upload/produits/"+newPhoto);
	// On dénit comme fils de td la nouveau noeud img créé
	td_grande.appendChild(img);
}
