/*
 * Page produit : onglet fiche technique
 * TODO test: tester 
 */
function cacher_onglets() {
	hideElement('content_desc');
	hideElement('content_avis');
	hideElement('content_fiche');
}
	
function activer_description() {
	cacher_onglets();
	jQuery("#onglet_description")[0].className = 'description_selected';
	jQuery("#content_desc").show("slow");
}
	
function desactiver_description() {
	jQuery("#onglet_description")[0].className = 'description_non_selected';
}
	
function activer_fiche() {
	cacher_onglets();
	jQuery("#onglet_fiche")[0].className = 'fiche_selected';
	jQuery("#content_fiche").show("slow");
}
	
function desactiver_fiche() {
	jQuery("#onglet_fiche")[0].className = 'fiche';
}

/*
 * Compte client commande, affiche le layer commentaires gsell / client
 * @surcharge
 */
function afficheLayerCommentaires(commentaireClient) {
	jQuery("#layer_alerte").show();
	jQuery("#conteneur_layer_alerte .deb_conteneur_petit").css("margin-top", "300px");
	jQuery("#contenu_alerte").html(commentaireClient);
}

/*
 * Affiche le layer d'inscription à la newsletter
 * @surcharge
 */
function afficheLayerNewsletter(form_newsletter) {
	
	var valid = new Validation(form_newsletter);
	if (valid.validate()){
		jQuery.get(
			"/maroquinerie_valise_bagages_sac.gnc?Destination=newsletterSubscribe&email=" + form_newsletter.email.value,
			function(data) {
				successLayer(data, 'newsletter');
			}
		);
	}
	
}	

/*
 * Validation du layer d'inscription à la newsletter
 * @surcharge
 */
function valideNewsletter(form_newsletter) {
	var valid = new Validation(form_newsletter);
	if (valid.validate()){
		if (formNewsletter.offresPartenaires) {
			formNewsletter.offresPartenaires.value = formNewsletter.offresPartenaires.checked;
		}
		formNewsletter.submit();
	}
}

/*
 * Ajout au DOM d'un div pour les layers
 * @surcharge
 */
function successLayer(response, className) {
	
	layer = (jQuery("#layer").size() == 0)? jQuery("<div id=\"layer\"></div>").appendTo(jQuery("#cadre_0")) : jQuery("#layer");
	
	if (className){
		layer.removeClass().addClass(className);
	}
	
	layer.html(response);
	layer.show();
	document.location.href = "#"; // Pour faire remonter en haut de la page
	
}

/*
 * Page produit : envoyer à un ami
 * @surcharge
 */
function submitEnvoyerAmi() {
	
	jQuery.post(
		jQuery("#envoyerAmiForm").attr("action"),
		jQuery("#envoyerAmiForm").serialize(),
		function(data) {
			successLayer(data, 'envoyerami');
		}
	);
	
}

/*
 * Validation du formulaire de contact
 * @surcharge 
 */
function envoyermessage() {
	var formComment = jQuery("#formmessage")
	var valid = new Validation(formComment[0]);
	if (valid.validate()){
		formComment.submit();
	}
}

/** 
* Toutes les fonctions définies ici sont spécifiques au site bagages_v2, car liées 
* à la structure html du site, et utilisées sur l'ensemble du site ou bien sur un grand nombre de page 
*/
jQuery(function() {

	/*
	* Initialisation du layer derniers produits vus
	*/ 	
	if (jQuery("#dernier_produits").size() > 0) {
		jQuery("#dernier_produits").hide();
		var largeur = jQuery(document).width();
		var articlevu = jQuery("#article_vu");
		var reso = jQuery("#cadre_3");
		if(largeur < 1280) {
			articlevu.addClass("pos1");
			reso.addClass("reso");
		} else  {
			articlevu.addClass("pos2");
		}
		articlevu.hover(function() {
			jQuery("#dernier_produits").show();
		}, function() {
			jQuery("#dernier_produits").hide();
		});
	}
  
	/*
	 * Tous les cases à cocher dans un div.check 
	 * sont stylées avec une image cochée ou décochée
	 * qui est changée au clic
	 */
	jQuery("div.check input[type=checkbox]").click(function() {
		jQuery(this).parent().toggleClass('checked');
	});
  
});

/*
 * @see /js compte.js/panier.js et bagages/modele.js
 */
function refreshLayerPanier() {
	jQuery("#mon_panier").load("/sites/bagages_v2/jsp/layer_panier.jsp");
}

/*
 * Abscence du paramètre "affichage" par rapport à gsell
 * @see fr.geniecube1_7.client.gsell.servlet.ActionCommande
 */
ArticleAffichage.prototype.ajoutePanier = function() {
	
	var originalArticleAffichage = this;
	
	var data = "Destination=ajoutArticle&oldcouleur=0&addcross=0" +
				"&numa=" + this.num +
				"&couleur=" + this.numCouleurSelected +
				"&qte=1" +
				"&lot=" + this.lot +
				"&urlArticleLot=" + this.urlArticleLot;
		
	jQuery.post("/maroquinerie_valise_bagages_sac.gnc", data, function(data, textStatus, jqXHR) {
		originalArticleAffichage.successAjoutePanier(data);
	});

}

//Fiche produit, changement de couleur : stocke les miniature inutiles 
var s = jQuery();

/* 
 * On surcharge ici la méthode changeCouleurUI de l'objet ArticleAffichage :
 * cette méthode est invoquée quand la couleur sélectionnée d'un article est changée,
 * elle sert à répercuter ce changement sur l'affichage 
*/
ArticleAffichage.prototype.changeCouleurUI = function() {

	// Utiliser dans les fonctions jQuery où this réprésente généralement un élement du DOM
	var originalArticleAffichage = this;
	
	// Etat sélectionné pour les vignettes de couleur sur les miniesfiches
	var selectedCouleur = this.getCouleurSelected();
	
	for (i=0; i<this.listeCouleursJSON.length; i++){ 
		couleurElement = jQuery("#couleur_article_"+this.num+"_"+this.listeCouleursJSON[i].numCouleur)
		couleurElementQuick = jQuery("#quickview_couleur_article_"+this.num+"_"+this.listeCouleursJSON[i].numCouleur)
		if (this.listeCouleursJSON[i].numCouleur == this.numCouleurSelected) {
			couleurElement.addClass("selected");
			couleurElementQuick.addClass("selected");
			selectedCouleur = this.listeCouleursJSON[i];
		} else {
			couleurElement.removeClass("selected");
			couleurElementQuick.removeClass("selected");
		}
	}
	
	// Page produit : mise à jour de l'image principale
	this.numDetailSelected = (!jQuery(".vignettes a.select").hasClass("vignette360"))? jQuery(".vignettes a.select").index(): -1;
	this.changePhotosDetail(this.numDetailSelected);
	
	// on remet en place les miniatures précédemment inutilisées
	s.insertBefore(".vignettes a:last-child");
	// puis on vide le wrapper
	s = jQuery("");
	
	// Page produit : mise à jour des vignettes (les différentes vues à gauche de l'image principale
	jQuery("#apercus_" + this.num + " img").each(function (index, element) {
		
		element = jQuery(element);
		
		if (element.parent().hasClass("vignette360")) {
			//Rien à faire
		} else {
			if (element.parent().hasClass("vignette0")) {
				element.attr("src", originalArticleAffichage.urlServeurStatic + '/images/imftp/article/petite/' + selectedCouleur.imagePetite);
				element.parent().attr("rev", originalArticleAffichage.urlServeurStatic + '/images/imftp/article/moyenne/' + selectedCouleur.imageMoyenne);
				element.parent().attr("href", originalArticleAffichage.urlServeurStatic + '/images/imftp/article/grande/' + selectedCouleur.imageGrande);
			} else {
				image=false;
				if (element.parent().hasClass("vignette1")) {
					image = selectedCouleur.imageD1;
				}
				if (element.parent().hasClass("vignette2")) {
					image = selectedCouleur.imageD2;
				}
				if (element.parent().hasClass("vignette3")) {
					image = selectedCouleur.imageD3;
				}
				if (element.parent().hasClass("vignette4")) {
					image = selectedCouleur.imageD4;
				}
				if (element.parent().hasClass("vignette5")) {
					image = selectedCouleur.imageD5;
				}
				if (image) {
					element.attr("src", originalArticleAffichage.urlServeurStatic + '/images/imftp/article/detail/' + image);
					
					// zoom on fait les changements nécessaires sur les attributs rev et href
					// même valeur puisque nous n'avons pas de taille 'small'
					var href = originalArticleAffichage.urlServeurStatic + '/images/imftp/article/detailZ/' + image
					element.parent().attr("rev", href);
					element.parent().attr("href", href);
					// /zoom
					
					element.parent().show();
					
				} else {
					// sauvgarde cette miniature qui n'est pas utilisée pour cette couleur
					s = s.add(element.parent());
					// suppression du DOM
					element.parent().remove();
				}
			}
		}
	});
	
	// Mise à jour du zoom
	try {
		MagicZoomPlus.refresh();
	} catch(e) {}
	

	// changer la photo sur une mini-fiche produit :
	jQuery("#image_article_" + this.num).attr("src", this.urlServeurStatic + '/images/imftp/article/petite/' + selectedCouleur.imagePetite);
	
	//changer la photo de l'image du quickview
	jQuery("#quickimg_" + this.num).attr("src", this.urlServeurStatic + '/images/imftp/article/moyenne/' + selectedCouleur.imageMoyenne);
	
	// changer le libelle de la couleur
	jQuery("#couleur_selected_" + this.num).html(selectedCouleur.libelleCouleur);
	
	// changer le prix du produit
	jQuery("#le_prix_" + this.num).html(selectedCouleur.prixApplicable + " &euro;");
	
	// changer/cacher le prix barré
	var elementBarre = jQuery("#prix_barre_" + this.num).html(selectedCouleur.prixBarre + " &euro;");
	
	// changer/cacher le pourcentage de réduc
	var elementPourcent = jQuery("#pourcentage_reduction_" + this.num).html(selectedCouleur.pourcentageReduction);
	
	if (selectedCouleur.isPromo) {
		elementBarre.show();
		elementPourcent.parent().show();
	} else {
		elementBarre.hide();
		elementPourcent.parent().hide();
	}
	
	// changer la date de livraison
	jQuery("#date_livraison_" + this.num).html(selectedCouleur.dateLivraison);
	
}

/* 
 * On surcharge ici la méthode successAjoutePanier de l'objet ArticleAffichage :
 * cette méthode est invoquée lors de la réponse à l'appel ajax d'ajout au panier 
 */
ArticleAffichage.prototype.successAjoutePanier = function(response) {
	
	if (response) { // TODO bug: vérifier si peut être null ou undefined avec jQuery
		if (this.loupe) { // TODO bug: loupe et vérifier la ligne du dessous
			jQuery("#produit .commande a.ajout").after(response);
		} else {
			successLayer(response, "ajout_article");
		}
		//raffraichissement du layer panier dans le header
		refreshLayerPanier();
	} else {
		alert("Problème ajout panier, à traiter");
	}

}

/*
 * Cette fonction surcharge la fonction de recherche générique multisite
 * @surcharge
 */
function rechercher(){
	var objform = document.forms.frecherche;

	// Si l'element choix_select existe on est sur la page de recherche
	if (jQuery("#choix_select").size() > 0) {	
		var texte = jQuery("#idinputrayon").val();
		var url = jQuery("#defaultRechercheUrl").val();
		if(texte == objform.texte.defaultValue){
			texte = "";
		}
		window.location.pathname = url+texte;
	} else {
		if(objform.texte.value == objform.texte.defaultValue) {
			objform.texte.value = "";
		}
		objform.submit();
	}
	
	return false;
}

/*
 * Cette fonction est utilisé sur le bloc promos de la home page de bagages
 * @see bagages jsp page_accueil.jsp
 */
function chargeArtcilePromoPourcentage(articleKey, listKey) {
	var div =  '#promo_' + articleKey;
	jQuery(div).show();
  	for (var i=0; i < listKey.length; ++i) {
  		if (listKey[i]!=articleKey) {
    		var div_none =  '#promo_' + listKey[i];
			jQuery(div_none).hide();
			if (i==0) {
				jQuery('#pourcentage_' + listKey[i]).removeClass().addClass('btn first');
			} else if(i == listKey.length - 1) {
				jQuery('#pourcentage_' + listKey[i]).removeClass().addClass('btn last');
			} else {
				jQuery('#pourcentage_' + listKey[i]).removeClass().addClass('btn');
			}
  		} else if(listKey[i] == articleKey) {
  			if(i == 0) {
				jQuery('#pourcentage_' + listKey[i]).removeClass().addClass('btn current first');
			} else if(i == listKey.length - 1) {
				jQuery('#pourcentage_' + listKey[i]).removeClass().addClass('btn current last');
			} else {
				jQuery('#pourcentage_' + listKey[i]).removeClass().addClass('btn current');
			}
  		}
  	}
}


/*
 * @see bagages jsp compte_commandes.jsp et bagages jsp-springweb comande confirmation.jsp
 * TODO evol: il existe une fonction afficheLayerBonDeCommandeGsell. Renommer et surcharger ?
 */
function afficheLayerBonDeCommandeBagages(num) {
	
	jQuery.get(
		"/maroquinerie_valise_bagages_sac.gnc",
		"Destination=affPopupBonDeCommande&numCommande=" + num,
		function(response) {
			successLayer(response, 'bon_commande');
		}
	);
}

/*
 * @see bagages jsp compte_commandes.jsp
 * TODO evol: il existe une fonction afficheLayerFacture. Renommer et surcharger ?
 */
function afficheLayerFactureBagages(num) {
	
	jQuery.get(
		'/sites/bagages_v2/jsp/modele_layer.jsp',
		function(reponse) {
			successLayer(response, 'facture');
			var req = "/maroquinerie_valise_bagages_sac.gnc?Destination=affPopupFactureClient&numCommande=" + num;
			// On affiche la facture dans une iframe pour l'impression
			jQuery("#layer_btn_fermer").after('<iframe src="' + req + '" frameborder="0" vspace="0" hspace="0" scrolling="auto" marginheight="0" marginwidth="0" width="100%" height="800px" > </iframe>');
		}
	);
	
}

