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

//**************************************************************************************************// VARIABLES GLOBALES

var tbphoto					= new Array();															// Tableau de gestion des images de la photothèque
var nbphoto					= 0;																	// Nombre de photos au sein de la photothèque en cours
var div_listimg				= "";																	// Espace affichant l'ensemble des miniatures de la photothèque
var div_desc_st				= true;																// Gestion de l'affichage des descriptions de photos
var path_img_loader			= racinePath + "manager/images/indicator_bar.gif";						// Chemein de l'image de loading utilisé par Thickbox

//**************************************************************************************************// EXTENSIONS JAVASCRIPT

Array.prototype.in_array = function(valeur){
	for (var i in this) { if (this[i] == valeur) return i;}
	return false;
}

Array.prototype.array_key_exists = function(key){
	return this[key] !== undefined;
}

//**************************************************************************************************// 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 + "manager/images/indicator.gif\" alt=\"\" />"); }
		if(ct_cppanier.size() > 0){ $("#th-supp").html("<img src=\"" + racinePath + "manager/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
				var 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 + "manager/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
					var 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);
				}
			});
		}
	}
}

/*
* Initialisation des actions liées à la photothèque
* axisScroll : y ou x
* stepScroll : 8 ou 1
*****************************************************************************************************/
function manage_phototheque(){																		// Photothèque ?
	if($("#blc-phototheque").size() != 0){
		// Nombre de photos en cours au sein de cette photothèque
		div_listimg			= $('#blc-listphoto div.blc-show a');
		nbphoto				= div_listimg.length;
	
		// Gestion de l'affichage d'une photographie, avec gestion du cache et effet d'apparition
		$("#blc-loading").hide();
		$('#blc-listphoto div.blc-show a').click( function(){ show_photo($(this).attr("id"), $(this).attr("href")); return false; });
		$('#blc-listphoto div.blc-show img').hover(function(){ $(this).animate({opacity:".10"}, 250).animate({opacity:"1"}, 100); },function(){});

		// Gestion de la description
		if(div_desc_st == false){ $("#blc-title div").hide(); }
		$("#blc-title h1 a").click( function(){
			if(div_desc_st == false){ $("#blc-title div").animate({ left: 50, opacity: 'show'}, 500); }else{ $("#blc-title div").animate({ left: 50, opacity: 'hide'}, 500); }
			div_desc_st		= !div_desc_st;
		});
		
		// Chargement des 8 premières photos de la galerie
		list_photo(0, stepScroll);
		$('#blc-photo div.blc-prev a').click( function(){ show_photo($(this).attr("class"), $(this).attr("href")); return false; });
		$('#blc-photo div.blc-next a').click( function(){ show_photo($(this).attr("class"), $(this).attr("href")); return false; });
		
		// Gestion du scroll du listing des miniatures
		$('#blc-listphoto div.blc-show').serialScroll({
			items: 'li',
			prev: '#blc-listphoto div.blc-prev a',
			next: '#blc-listphoto div.blc-next a',
			duration: 700,
			force: true,
			axis: axisScroll,
			step: stepScroll,
			jump: false,
			lazy: false,
			onBefore: list_photo(currentScroll, (currentScroll + stepScroll))
		});
	}
}

/*
* Gestion des images et ajout au sein du cache navigateur
*****************************************************************************************************/
function list_photo(nb_deb, nb_fin){
	if(nb_fin > nbphoto){ nb_fin = nbphoto; }

	if(nb_fin != 0){
		div_listimg.each( function(i){
			if(i >= nb_deb && i < nb_fin){
				add_photo($(this).attr("id"), $(this).attr("href"), $(this).attr("title"));
			}
		});
	}
}

/*
* Affichage d'une photo au sein de la photothèque
*****************************************************************************************************/
function show_photo(ph_trad_id, ph_image_03){
	var current_id			= ph_trad_id.split("-");
	var div_img				= $('#blc-photo div.blc-show a');

	if(tbphoto.array_key_exists(current_id[1]) == true){
		div_img.fadeOut('fast', function(){
			// Image
			div_img.attr("href", tbphoto[current_id[1]]["ph_image_03"]);
			div_img.attr("title", tbphoto[current_id[1]]["ph_titre_light"]);
			div_img.html(tbphoto[current_id[1]]["ph_image_02"]);
			div_img.fadeIn();
			// Titre et description
			$("#blc-title h1 a").html(tbphoto[current_id[1]]["ph_titre"]);
			$("#blc-title div").html(tbphoto[current_id[1]]["ph_content"]);
			// Lien suivant et précédent
			show_prevnext(ph_trad_id);
		});
	}
}

/*
* Ajout d'une image dans le tableau de gestion et le cache navigateur
*****************************************************************************************************/
function add_photo(ph_trad_id, ph_image_03, ph_titre){
	var current_id	= ph_trad_id.split("-");
	
	if(tbphoto.array_key_exists(current_id[1]) == false){
		$("#blc-loading").show();
		$.ajax({
			type: "GET",
			url: racinePath + "inc/tp/page.phototheque.php",
			data: "ph_trad_id=" + ph_trad_id,
			success: function(msg){
				var tab_msg	= msg.split("@@@");
				if(tab_msg[0] != ""){
					tbphoto[current_id[1]]						= new Array();
					tbphoto[current_id[1]]["ph_image_02"]		= '<img src="' + tab_msg[0] + '" alt="' + ph_titre + '" />';
					tbphoto[current_id[1]]["ph_image_03"]		= ph_image_03;
					tbphoto[current_id[1]]["ph_titre_light"]	= ph_titre;
					tbphoto[current_id[1]]["ph_titre"]			= tab_msg[1];
					tbphoto[current_id[1]]["ph_content"]		= tab_msg[2];
				}else{
					$("#" + ph_trad_id).parent().remove();
				}
				$("#blc-loading").hide();
			}
		});
	}
}

/*
* Gestion des actions sur les boutons suivant/précédent de la photothèque
*****************************************************************************************************/
function show_prevnext(ph_trad_id){
	var current			= $("#" + ph_trad_id);
	var prev			= $("#" + ph_trad_id).parent().prev().children();
	var next			= $("#" + ph_trad_id).parent().next().children();
	if(prev.size() == 0){ prev = $('#blc-listphoto div.blc-show li:last').children(); }
	if(next.size() == 0){ next = $('#blc-listphoto div.blc-show li:first').children(); }
	var prev_id			= prev.attr("id").split("-");
	var next_id			= next.attr("id").split("-");

	// Ajout dans la cache et le tableau de gestion de la photothèque
	add_photo(prev.attr("id"), prev.attr("href"), prev.attr("title"));
	add_photo(next.attr("id"), next.attr("href"), next.attr("title"));
	
	$('#blc-photo div.blc-prev a').attr("class", prev.attr("id"));
	$('#blc-photo div.blc-prev a').attr("href", prev.attr("href"));
	$('#blc-photo div.blc-next a').attr("class", next.attr("id"));
	$('#blc-photo div.blc-next a').attr("href", next.attr("href"));
}

function manage_reservation(){
	var urlReservit		= $("#form-reservation").attr("action");
	urlReservit			+= "&hotelid=" + $("#hotelid").val();
	urlReservit			+= "&lang=" + $("#lang").val();
	urlReservit			+= "&fday=" + $("#fday").val();
	urlReservit			+= "&fmonth=" + $("#fmonth").val();
	urlReservit			+= "&fyear=" + $("#fyear").val();
	urlReservit			+= "&nbnights=" + $("#nbnights").val();
	urlReservit			+= "&numadult=" + $("#numadult").val();
	// MOD HERVE 2008/06/30 Ajout du discountcode (Code promotion)
	urlReservit			+= "&discountcode=" + $("#discountcode").val();
	// MOD HERVE 2008/06/26 window.open(urlReservit);
	document.location	= urlReservit;
	return false;
}