/*---------------------------------------------------------------------------------------------------
* Liste des fonctions utiles ShareWork
* @der.mod : 05/02/2007
* @pré-requis : Appel de la librairie jQuery
*/

//**************************************************************************************************// FONCTIONS DIVERSES

/*
* Gère la sélection de l'élément gràce à son ID
*****************************************************************************************************/
function getElement(id){ if(document.getElementById){ return document.getElementById(id); }else if(document.all){ return document.all[id]; } else return; }

/*
* Gestion de l'ouverture des liens dans une nouvelles fenêtres
*****************************************************************************************************/
function open_ext_link(mClass, newTitle, mBloc){
	if(typeof mClass == "undefined"){ mClass = "opblank"; }
	if(typeof newTitle == "undefined"){ newTitle = " - Nouvelle page"; }
	if(typeof mBloc == "undefined"){ mBloc = ""; }

	$(mBloc+"a."+mClass).attr("title", function() { return (typeof this.title == "undefined" ? "" : this.title) + newTitle; });
	$(mBloc+"a."+mClass).click(function(){ window.open(this.href); return false; });
}

/*
* Ouvre une popup aux dimensions souhaités et la centre dans l'écran
*****************************************************************************************************/
function popupCentrer(page, nom, largeur, hauteur, options) {
	var top 				= (screen.height-hauteur)/2;
	var left				= (screen.width-largeur)/2;
	window.open(page, nom, "top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
}

/*
* Ouvre une popup et redimenssionne cette dernière à la taille de l'image principale
* @pré-requis : appel au onload de la page
*****************************************************************************************************/
function popupAutoResize(mElement) {
	var mElement			= getElement(mElement);
	window.innerWidth		= mElement.width;
	window.innerHeight		= mElement.height;
}

/*
* Initialisation les actions de supression, d'ajout et de modification de la quantité du panier
*****************************************************************************************************/
function manage_cart(){
	var ct_panier			= $("#inc-panier");
	var ct_cppanier			= $("#blc-panier");
	
	if(ct_panier.size() > 0 || ct_cppanier.size() > 0){
		// Action de suppresion d'un produit du panier
		$("a.del-panier").click(function(){ action_cart('del', $(this).attr("id")); });
		
		// Action d'ajout d'un produit au panier
		$("a.add-panier").click(function(){ action_cart('add', $(this).attr("id")); });
		
		// Action de modification de la quantité d'un produit
		$("a.min-prodpanier").click(function(){ action_cart('min', $(this).attr("id")); });
		$("a.max-prodpanier").click(function(){ action_cart('max', $(this).attr("id")); });
		
		// Action d'ajout de promotion panier
		$("a#add-promopanier").click(function(){ action_cart('promo', $(this).attr("id")); });
	}
}

/*
* Gestion les actions de supression, d'ajout et de modification de la quantité du panier
*****************************************************************************************************/
function action_cart(mAction, mId){
	var tb_mId				= mId.split("-");
	var ct_panier			= $("#inc-panier");
	var ct_cppanier			= $("#tb-panier");
	var mPromo				= "";
	
	if(tb_mId.length >= 2){
		mId					= tb_mId[1];
		if(typeof tb_mId[2] != "undefined"){ mIdDeclin = tb_mId[2];	}else{ mIdDeclin = 0; }
		
		if(mAction == "promo"){ mPromo = $("input#pp_code").attr("value"); }						// Gestion d'une promotion de type panier
		if(ct_panier.size() > 0){ ct_panier.html("<img src=\"" + racinePath + "sharework/images/indicator.gif\" alt=\"\" />"); }
		if(ct_cppanier.size() > 0){ $("#th-supp").html("<img src=\"" + racinePath + "sharework/images/indicator.gif\" alt=\"\" />"); }
		$.ajax({
			type: "POST",
			url: racinePath + "inc/tp/inc.list-panier.php",
			data: "acac=" + mAction + "&acid=" + mId + "&acida=" + mIdDeclin + "&lpst=1&lpsq=1&lpstp=1&lpsl=1&lpax=1&accp=" + mPromo,
			success: function(msg){
				
				// 0 -> HTML de list-panier, 1 -> quantité du produit, 2 -> prix total du produit, 3 -> promotion panier, 4 -> prix total du panier
				tab_msg		= msg.split("@@@");
				
				if(ct_panier.size() > 0){															// Si mini-panier présent
					ct_panier.html(tab_msg[0]);
					// On relance l'ction de suppresion d'un produit du panier
					$("a.del-panier").click(function(){ action_cart('del', $(this).attr("id")); });
				}
				if(ct_cppanier.size() > 0){															// Si panier présent
					if(mAction == "del"){
						$("tr#tr-prpanier-" + mId).remove();
					}else if(mAction == "max"){
						$("#tr-prpanier-" + mId + " .td-quantite span").html(tab_msg[1]);			// Mise à jour de la quantité
						$("#tr-prpanier-" + mId + " .td-prixtotal").html(tab_msg[2]);				// Mise à jour du prix total du produit
					}else if(mAction == "min"){
						if(tab_msg[1] != 0){
							$("#tr-prpanier-" + mId + " .td-quantite span").html(tab_msg[1]);		// Mise à jour de la quantité
							$("#tr-prpanier-" + mId + " .td-prixtotal").html(tab_msg[2]);			// Mise à jour du prix total du produit
						}else{
							$("#tr-prpanier-" + mId).remove();
						}
					}
					if(tab_msg[3] != 0){															// Si il y a une promotion
						$("#td-affpromopanier").html("-" + tab_msg[3]);								// Mise à jour de la promotion panier
						$("#td-promopanier").html(tab_msg[4]);										// Mise à jour de la promotion panier (valeur en %)
					}
					$("#td-affprixtotal").html(tab_msg[5]);											// Mise à jour du prix total du panier
					$("#th-supp").html("&nbsp;");
				}
			},
			error: function(){
				if(ct_panier.size() > 0){ ct_panier.html("An error was occured."); }
			}
		});
	}
	return false;
}

/*
* Gestion les actions du compte (creation/modification ou visualisation)
*****************************************************************************************************/
function action_compte(mAction){
	if($("#blc-compte").size() > 0){
		$("input#compte-go-modifier").click(function(){ action_compte('mod'); });
		$("input#compte-back-visualiser").click(function(){ action_compte('view'); });
		
		if(mAction == "crea"){																		// Processus de création d'un compte
			// On cache les labels texte mais apparition des champs de formulaire
			$("#blc-compte div.input-compte").show();
			$("#blc-compte span.input-compte").show();
			$("#blc-compte span.text-compte").hide();
			// On cache le bouton donnant accès à la modification et à l'étape suivante, apparition du bouton annuler et celui de validation
			$("input#compte-go-modifier").hide();
			$("input#compte-go-nextstep").hide();
			$("input#compte-back-visualiser").hide();
			$("input#compte-action").show();
		}else if(mAction == "mod"){																	// Processus de modification
			// On cache les labels texte mais apparition des champs de formulaire
			$("#blc-compte div.input-compte").show();
			$("#blc-compte span.input-compte").show();
			$("#blc-compte span.text-compte").hide();
			// On cache le bouton donnant accès à la modification et à l'étape suivante, apparition du bouton annuler et celui de validation
			$("input#compte-go-modifier").hide();
			$("input#compte-go-nextstep").hide();
			$("input#compte-back-visualiser").show();
			$("input#compte-action").show();
		}else{																						// Processus visualisation des informations d'un compte
			// On affiche les labels texte et on cache des champs de formulaire
			$("#blc-compte div.input-compte").hide();
			$("#blc-compte span.input-compte").hide();
			$("#blc-compte span.text-compte").show();
			// On affiche le bouton donnant accès à la modification et à l'étape suivante, disparition du bouton annuler et celui de validation
			$("input#compte-go-modifier").show();
			$("input#compte-go-nextstep").show();
			$("input#compte-back-visualiser").hide();
			$("input#compte-action").hide();
		}
	}
}

/*
* Initialisation des actions liées au choix d'une livraison
*****************************************************************************************************/
function manage_livraison(){
	if($("#form-livraison").size() > 0){
		$("#err-livraison").hide();
		$("#lvalid-liv").click(function(){ valid_livraison(); });
	}
}

/*
* Gestion du choix d'une livraison
* @pré-requis : initialisation dans la page de la variable racinePath contenant la racine du serveur
*****************************************************************************************************/
function valid_livraison(){
	var livraison_id = 0;
	if($("#form-livraison").size() > 0){
		$("#err-livraison").hide();
		$("#th-select").html("<img src=\"" + racinePath + "sharework/images/indicator.gif\" alt=\"\" />");
		
		$("#form-livraison input[@name=idl]").each(function(i){										// Tous les "input" du formulaire
			if(this.checked == true){ livraison_id = parseInt(this.value); }
		});
			
		if(livraison_id == 0){																		// Livraison non sélectionnée, retour sur la page pour la validation
			$("#err-livraison").show();
			$("#th-select").html("&nbsp;");
		}else{																						// Sondage validé, on enregistre la réponse et on renvoie vers les résultats
			$.ajax({
				type: "POST",
				url: racinePath + "inc/tp/inc.livraison.php",
				data: "idl=" + livraison_id + "&lax=1",
				success: function(msg){
					// 0 -> Message d'erreur, 1 -> URL de redirection
					tab_msg		= msg.split("@@@");
					
					if(tab_msg[0] == ""){															// Validation de la livraison
						document.location = tab_msg[1];
					}else{																			// Erreur !
						$("#err-livraison").html(tab_msg[0]);
						$("#err-livraison").show();
						$("#th-select").html("&nbsp;");
					}
				}
			});
		}
	}
}

/*
* Initialisation les actions liées à la validation d'un sondage
*****************************************************************************************************/
function manage_sondage(){
	var ct_sondage			= $("#inc-sondage");
	
	if(ct_sondage.size() > 0){
		$("#inc-sondage .erreur-item").hide();
		$("a.valid-sondage").click(function(){ valid_sondage($(this).attr("id")); });
	}
}

/*
* Gère la vérification et la validation d'un sondage
* @pré-requis : initialisation dans la page de la variable racinePath contenant la racine du serveur
*****************************************************************************************************/
function valid_sondage(mId){
	var tb_mId			= mId.split("-");
	mId					= tb_mId[1];
	$("#inc-sondage .erreur-item").hide();															// On cache une éventuelle précédente apparition de l'erreur
	
	if(mId != 0){
		var isOk		= false;																	// Détermine si on peut valider le formulaire
		var valChamp	= "";
		var y			= 0;
		
		$("#form-sondage-" + mId + " input[@name=mchp_" + mId + "]").each(function(i){				// Tous les "input" du formulaire en question
			if(this.checked == true){
				if(y == 0){ valChamp = this.value; }else{ valChamp += "," + this.value; }
				isOk	= true;
				y++;
			}
		});
		
		if(!isOk){																					// Sondage non validé, retour sur la page pour la validation
			$("#inc-sondage .erreur-item").show();
		}else{																						// Sondage validé, on enregistre la réponse et on renvoie vers les résultats
			$.ajax({
				type: "POST",
				url: racinePath + "inc/tp/page.sondage.php",
				data: "ids=" + mId + "&mlrep=" + valChamp + "&murl=" + window.location,
				success: function(msg){
					$("#blc-sondage-" + mId).html(msg);
				}
			});
		}
	}
}

/*
* Lancement des fonctions désirées au chargement de la page
*****************************************************************************************************/
$(document).ready(function(){
	open_ext_link();
	manage_cart();
	manage_sondage();
	manage_livraison();
	
	// --------------------------------------------------------------------------------------------- Code pour jQuery Thickbox
	tb_init('a.thickbox, area.thickbox, input.thickbox');
	imgLoader = new Image();																		// preload image
	imgLoader.src = tb_pathToImage;
});