/*
 * Lien de type popup
 * cf. fr.geniecube1_7.metier.commun.page.elements.Lien.format()
 */
function popup(adr,nompop,larg,haut,res){window.open(adr,nompop,'width='+larg+',height='+haut+',scrollbars=1,toolbar=0,location=0,status=0,menubar=0,resizable='+res);}

/* 
 * Utilisé dans le modèle par défaut d'image
 * pour ouvrir l'image zoom dans une nouvelle fenêtre 
 */
function imgPopup(nomPop,img,fond,txt,css){
	if(typeof(imgPop) == "object") {
		imgPop.close();
	}
	var ressources = "ressources/";
	if(arguments[5]!= undefined){ressources = arguments[5];}
   imgPop = window.open("",nomPop,"scrollbars=yes,width=700,height=550");
   imgPop.document.write("<html>\n\n");
   imgPop.document.write("<head><title>Apercu d'image</title></head>\n\n");
   imgPop.document.write("<body bgcolor=\""+fond+"\">\n");
   imgPop.document.write("  <table border=\"0\" cellpadding=\"0\" cellspacing=\"2\" width=\"100%\">\n");
   imgPop.document.write("    <tr><td align=\"center\"><img src=\""+ressources+img+"\"></td></tr>\n");
   imgPop.document.write("    <tr><td align=\"center\">\n");
   imgPop.document.write("      <table border=\"0\" cellpadding=\"0\" cellspacing=\"2\">\n");
   imgPop.document.write("        <tr><td><span style=\""+css+"\">"+txt+"</span></td></tr>\n");
   imgPop.document.write("      </table>\n");
   imgPop.document.write("    </td></tr>\n");
   imgPop.document.write("  </table>\n");
   imgPop.document.write("</body>\n\n");
   imgPop.document.write("</html>");
}

/* 
 * Test si la chaine passée en paramètre est une adresse e-mail valide
 * (modeles/site/extranet_register_form.jsp && modeles/site/include_fin_form.jsp)
 */
function is_Email(email){
	return new RegExp("^[\\w\\-]+(\\.[\\w\\-]+)*@[\\w\\-]+(\\.[\\w\\-]+)*\\.[\\w\\-]{2,}$", "i").test(email);
}

/* Inscription à l'extranet (modeles/site/extranet_login.jsp) */
function sinscrire(){
	var objform = document.forms.fidentification;
 	objform.traitement.value='sinscrire';
 	objform.submit();
}

/*
 * DOM loaded
 * Toutes les actions nécessitants le chargement complet du DOM
 * devraient se trouver ici
 */
jQuery(function($) {
	
	// Lightbox
	$('a[rel*=lightbox]').lightBox();
	
	// Scrollable
	$(".scrollable").scrollable({circular: true}).autoscroll().navigator({indexed: true});
	
	// Menu déroulant 
	$('.clktoggle').click(function () { // Au click sur l'élément avec classe 'clktoggle'
		$(this).toggleClass("activ inactiv", 1); // On change de classe en fonction de l'état
		$(this).next(".lsttoggle").slideToggle('slow', function () { // Cible l'élément ul juste aprés
		});
	});
	
	// Attribuer une classe au dernier et au premier élement du menu h (cas de débordement du conteneur)
	$('#navh > ul > li').first().addClass('first');
	$('#navh > ul > li').last().addClass('last');
	
	// Arrière plan
	$.backstretch(backgroundImage, {speed: 150});
	
	// Fond opaque par dessus l'arrière plan
	if($("body.opaque").size() > 0) {
		$("<div id=\"opaque\" />").appendTo("body");
	} 
	
	if($("body.opaque_2").size() > 0) {
		$("<div id=\"opaque\" class=\"opaque_2\" />").appendTo("body");
	}
	
	// Feinte pour avoir un menu de gauche noir sur toute la hauteur
	$("<div id=\"background\" />").appendTo("#left");
	
	// Effet d'apparition / dispartion sur les liens du footer
	var cw = 0;
	$("#footer li").each(function(index, element) {
		cw += $(element).outerWidth();
	})
	var w = cw - $("#footer li:first-child").outerWidth() + 33;
	$("#footer").css("right", -w + "px");
	var originaleRight = -w + "px";
	$("#footer .first").click(function() {
		var ul = $(this).parent();
		var right = "10px";
		if(ul.css("right") == "10px") {
				right= originaleRight;
		}
		ul.animate({right: right}, 500, function() {
			$(this).toggleClass("open");
		});
	});
	
	// Ajout de divers class sur le menu
	$("#left ul ul").prev().addClass("hasChildren");
	$("#left ul ul li:last-child").addClass("last");
	
	$("#menu_h > ul > li").click(function() {
		if($(this).find("ul:not(:visible)").size() > 0) {
			$("#left ul ul:visible").slideToggle("fast").parent().removeClass("open"); // on ferme les autres menus
			$("#left .formulaire").not($(this).parents("form")).find("div:visible").slideToggle("fast").prev().removeClass("down"); // on ferme les autres formulaires
			$(this).find("ul").slideToggle("fast").parent().addClass("open"); // pour ouvrir le menu sur lequel on vient de cliquer
		} else {
			$(this).find("ul").slideToggle("fast").parent().removeClass("open"); // pour fermer le menu sur lequel on vient de cliquer
		}
	});
	
	$("#menu_h a[href*='--" + currentPageNum + ".']").parent().addClass("open").parent().show().parent().addClass("open");
	//$("#menu_h a[href*='--" + currentPageNum + ".']").parents("ul").prev().addClass("selected");
	
	$("#left legend").click(function() {
		$("#left ul ul:visible").slideToggle("fast").parent().removeClass("open"); // on ferme les autres menus
		$("#left .formulaire").not($(this).parents("form")).find("div:visible").slideToggle("fast").prev().removeClass("down"); // on ferme les autres formulaires
		$(this).toggleClass("down").next().slideToggle("slow"); // on ouvre/ferme celui sur lequel on vient de cliquer
	});
	
	// Initialisation des champs de formulaire
	$(".formulaire input[type='text']").fields();
	
	// Ajout d'une méthode de validation :
	// le valeur du champ ne doit pas être égale à sa valeur par défaut
	jQuery.validator.addMethod("defaut", function(value, element) {
		return $(element).val() != $(element).data("defaultValue");
	}, "Veuillez remplir ce champ.");
	
	// Ajout d'une méthode de validation :
	// l'option choisie ne doit pas être la première
	jQuery.validator.addMethod("notFirstOption", function(value, element) {
		return $(element).find("option:selected").index() != 0;
	}, "Veuillez remplir ce champ.");
	
	// Validation du formulaire de contact rapide
	$("#contact").validate({
		rules: {
			type: {notFirstOption: true},
			civilite: {notFirstOption: true},
			nom: {required: true, defaut: true},
			prenom: {required: true, defaut: true},
			pays: {required: true, defaut: true},
			ville: {required: true, defaut: true},
			email: {required: true, defaut: true, email: true}
		},
		messages: {
			type: "Etes vous un particulier ou un professionnel ?",
			civilite: "Vous devez préciser votre civilité.",
			nom: "Vous devez préciser votre nom.",
			prenom: "Vous devez préciser votre prénom.",
			pays:"Vous devez préciser votre pays.",
			ville:"Vous devez préciser votre ville.",
			email: "Vous devez préciser une adresse mail valide."
		}
	});
	
	// Validation du formulaire d'inscription à la newsletter
	$("#newsletter").validate({
		rules: {
			email: {required: true, defaut: true, email: true}		
			
			
		},
		messages: {
			email: "Vous devez préciser une adresse mail valide."
		}
	});
	
})

/*
 * Plugin jQuery d'initilisation des valeurs par défaut sur les champs texte
 * Au clic, si le champ contient la valeur par défaut, celui-ci est vidé.
 * Quand on quitte le champ, si celui-ci est vide, on remet la valeur par défaut.
 */
jQuery.fn.fields = function() {
	this.each(function(index, element) {
		$(element).data("defaultValue", $(element).val());
		$(element).click(function() {
			if($(this).val() == $(this).data("defaultValue")) {
				$(this).val("");
			}
		}).blur(function() {
			if($(this).val() == "") {
				$(this).val($(this).data("defaultValue"));
			}
		});
	});
};

