//======================================================================================================================================
//	D'est en ouest
//	Scripts Javascript généraux
//======================================================================================================================================

// ***************************************************************************
//	AJAX
// ***************************************************************************
function ajax(script, data, exec){
	var xmlHttpReq = false;
    var self = this;
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open("POST", "/script(" + script + ")", true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function(){
		if (self.xmlHttpReq.readyState == 4){
			if (self.xmlHttpReq.responseText != undefined){
				var response = self.xmlHttpReq.responseText;
			}
			eval(exec);
        }
    }
    self.xmlHttpReq.send(unescape(data));
}

// ***************************************************************************
//	Liens externes
// ***************************************************************************
function target_blank(){
	if (!document.getElementsByTagName) return;
	var anchors = document.getElementsByTagName("a");
	for (var i = 0; i < anchors.length; i++){
		var anchor = anchors[i];
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external"){
			anchor.target = "_blank";
		}
	}
}

// ***************************************************************************
//	Affichage de l'aide
// ***************************************************************************
var zIndex = 30;
function montrerAide(div, position){
	zIndex += 1;
	var posLeft = position.offsetLeft;
	var posTop = position.offsetTop;
	element(div).style.position = "absolute";
	element(div).left = 0;
	element(div).top = 0;
	element(div).style.marginLeft = (posLeft - 247) + "px";
	element(div).style.marginTop = (posTop + 20) + "px";
	element(div).style.zIndex = zIndex;
	Effect.Appear(div, {duration:0.2});
}

// ***************************************************************************
//	Fonctions générales
// ***************************************************************************
function element(name){
	return document.getElementById(name);
}

function ajusterHauteur(div, hauteur){
	if (element(div).offsetHeight < hauteur){
		element(div).style.height = hauteur + "px";
	}
}

function afficherListe(nb, div, page, type, keyword){
	if (type == "recherche" && keyword != ""){
		var data = "page=" + page + "&nb=" + nb + "&type=recherche&keyword=" + keyword;
		var exec = "element('" + div + "').innerHTML = response;remonterPage('top_recherche');";
		ajax("liste", data, exec);
	} else if (type == "reportages" && keyword != ""){
		var data = "page=" + page + "&nb=" + nb + "&type=reportages&keyword=" + keyword;
		var exec = "element('" + div + "').innerHTML = response;";
		ajax("reportages", data, exec);
	} else if (type == "destinations"){
		var data = "page=" + page + "&nb=" + nb + "&type=destinations";
		var exec = "element('" + div + "').innerHTML = response;";
		ajax("liste", data, exec);
	} else if (type == "prochaines"){
		var data = "page=" + page + "&nb=" + nb;
		var exec = "element('" + div + "').innerHTML = response;";
		ajax("prochaines", data, exec);
	} else if (type == "alerte" && keyword != ""){
		var data = "page=" + page + "&nb=" + nb + "&type=alerte&keyword=" + keyword;
		var exec = "if (response != ''){ element('" + div + "').innerHTML = response; ";
		exec += "Effect.Appear('deja_postees', {duration:0.3});"
		exec += "} else {Effect.Fade('deja_postees', {duration:0.3});}";
		positionnerAlerte();
		ajax("liste_alerte", data, exec);
	} 
}

function positionnerAlerte(){
	document.getElementById("deja_postees").style.top = (document.getElementById("field_village").offsetTop - 48) + 'px';
	document.getElementById("deja_postees").style.left = '450px';
}

function afficherListeA(nb, div, page, type, keyword, type_recherche, commentaires, province, categorie, type_date, date){
	if (type == "recherche_a" && keyword != ""){
		var data = "page=" + page + "&nb=" + nb + "&type=recherche_a&keyword=" + keyword + "&";
		data += 'type_recherche=' + type_recherche + "&";
		data += 'commentaires=' + commentaires + "&";
		data += 'province=' + province + "&";
		data += 'categorie=' + categorie + "&";
		data += 'type_date=' + type_date + "&";
		data += 'date=' + date;
		var exec = "element('" + div + "').innerHTML = response;remonterPage('top_recherche');";
		ajax("liste_a", data, exec);
	} else if (type == "recherche_b" && keyword != ""){
		var data = "page=" + page + "&nb=" + nb + "&type=recherche_b&keyword=" + keyword + "&";
		data += 'type_recherche=' + type_recherche + "&";
		data += 'commentaires=' + commentaires + "&";
		data += 'province=' + province + "&";
		data += 'categorie=' + categorie + "&";
		data += 'type_date=' + type_date + "&";
		data += 'date=' + date;
		var exec = "element('" + div + "').innerHTML = response;remonterPage('top_recherche');";
		ajax("liste_b", data, exec);
	}
}

function remonterPage(id){
	document.location.href = "#" + id;
}

function afficherCommentaires(nb, element, page, dossier){
	if (document.getElementById("envoi").style.display != "none"){
		document.getElementById("field_commentaire").value = "";
	}
	document.getElementById("envoi").style.display = "none";
	document.getElementById("enregistrement").style.display = "none";
	document.getElementById("confirmation").style.display = "none";
	var data = "page=" + page + "&nb=" + nb + "&dossier=" + dossier;
	var exec = "element('" + element + "').innerHTML = response;remonterPage('top_commentaires');";
	if (page == "LAST"){
		exec = "afficherCarre('" + element + "', response);remonterPage('top_commentaires');";
	}
	ajax("commentaires", data, exec);
}

function afficherCarre(div, response){
	element(div).innerHTML = response;
	element("enregistrement").style.paddingTop = "0px";
	element("enregistrement").style.width = "540px";
	element("enregistrement").style.height = (element("boite-totale").offsetHeight - element("hr-separateur").offsetTop - 15) + "px";
	element("envoi").style.marginTop = (element("hr-separateur").offsetTop + 5) + "px";
	element("enregistrement").style.marginTop = (element("hr-separateur").offsetTop + 5) + "px";
	Effect.Appear("enregistrement", {duration:0.2});
}

function afficherCommentaires2(nb, element, page, dossier){
	var data = "page=" + page + "&nb=" + nb + "&dossier=" + dossier;
	var exec = "element('" + element + "').innerHTML = response;";
	ajax("commentaires2", data, exec);
}

function afficherJournaux(nb, element, page, avoid){
	var data = "page=" + page + "&nb=" + nb + "&avoid=" + avoid;
	var exec = "element('" + element + "').innerHTML = response;remonterPage('top_reportages');";
	ajax("journaux", data, exec);
}

function voter(suggestion){
	var data = "suggestion=" + suggestion;
	var exec = 'element("boutonvote").innerHTML = "<a class=\'deja-vote\'>" + response + "</a>";';
	ajax("vote", data, exec);
}

function videoVoter(journal){
	var data = "journal=" + journal;
	var exec = 'element("boutonvote").innerHTML = "<a class=\'deja-vote\' style=\'margin:0 0 0 0;float:left;\'>" + response + "</a>";';
	ajax("video_vote", data, exec);
}

// ***************************************************************************
//	Cookie: volume des lecteurs vidéo
// ***************************************************************************
function getCookie(nom){
	if (document.cookie.length > 0){
		var debut = document.cookie.indexOf(nom+"=");
		if (debut != -1){
			debut += nom.length+1;
			var fin = document.cookie.indexOf(";", debut);
			if (fin == -1){
				fin = document.cookie.length;
			}
			return document.cookie.substring(debut, fin); 
		}
	}
	return null;
}

function setCookie(nom, valeur, jours){
	var expiration = new Date();
	expiration.setTime(expiration.getTime() + 60*60*24*jours);
	delCookie(nom);
	var nouveauCookie = nom + "=" + valeur + ((jours == null) ? "" : "; path=/; expires=" + expiration.toGMTString());
	document.cookie = nouveauCookie;
}

function delCookie(nom){
	if (getCookie(nom)) {
		document.cookie = nom + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}

function setCookieVolume(volume){
	setCookie("deeo_volume", volume, 1);	
}

//***************************************************************
//	Envoyer à un ami
//***************************************************************

var tErreurs = [];
var defini = 0;

function afficherErreursAmi(strErreurs, intPos, div){
	element("erreurs_ami").innerHTML = strErreurs;
	element("erreurs_ami").style.display = "block";
	
	// Repositionnement
	if (defini == 0){
		var intPositionY = intPos;
		defini = intPositionY;
	} else {
		intPositionY = defini;
	}
	var intHauteur = element(div).offsetHeight;
	
	element("validation_ami").style.left = "-6000px";
	element("validation_ami").style.display = "block";
	var intErreurs = element("validation_ami").offsetHeight;
	element("validation_ami").style.left = "0px";
	element("validation_ami").style.display = "none";
	
	element(div).style.marginTop = "0px";
	element(div).style.top = (intPositionY - intErreurs) + "px";	
		
	if (element("validation_ami").style.display == "none"){
		Effect.Appear("validation_ami", {duration:0.2});
	}
}

function marquerChampAmi(id, toggle){
	if (toggle == "on"){
		element(id).style.backgroundColor = "#FFDDDD";
	} else if (toggle == "off") {
		element(id).style.backgroundColor = "#FFFFFF";
	}
}

function validerAmi(champ){
	if (champ == "field_nomUsagerAmi" || champ == "field_nomAmi"){
		if (element(champ).value.length > 0){
			return true;
		}
	} else if (champ == "field_courrielAmi" || champ == "field_courrielUsagerAmi"){
		if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(element(champ).value) == true){
			return true;
		}
	}
	return false;
}

var posXDepart = 0;
var posYDepart = 0;

function afficherAmi(div, offsetleft, offsettop){
	element("envoi_ami").style.display = "none";
	element("confirmation_ami").style.display = "none";
	element("validation_ami").style.display = "none";
	element("erreur_ami").style.display = "none";
	marquerChampAmi("field_nomUsagerAmi", "off");
	marquerChampAmi("field_courrielUsagerAmi", "off");
	marquerChampAmi("field_nomAmi", "off");
	marquerChampAmi("field_courrielAmi", "off");
	element("field_nomUsagerAmi").value = "";
	element("field_courrielUsagerAmi").value = "";
	element("field_nomAmi").value = "";
	element("field_courrielAmi").value = "";
	element("field_messageAmi").value = "";
	
	element(div).style.display = "block";
	element(div).style.left = (offsetleft) + "px";
	element(div).style.top = (offsettop - element(div).offsetHeight) + "px";
	element(div).style.display = "none";

	Effect.Appear(div, {duration:0.3});
}

function envoyerAmi(div, type){
	tErreurs = [];
	if (!validerAmi("field_nomUsagerAmi")){
		tErreurs.push("Vous devez entrer votre nom.");
		marquerChampAmi("field_nomUsagerAmi", "on");
	} else {
		marquerChampAmi("field_nomUsagerAmi", "off");
	}
	if (!validerAmi("field_courrielUsagerAmi")){
		tErreurs.push("Votre adresse de courriel n'est pas valide.");
		marquerChampAmi("field_courrielUsagerAmi", "on");
	} else {
		marquerChampAmi("field_courrielUsagerAmi", "off");
	}
	if (!validerAmi("field_nomAmi")){
		tErreurs.push("Vous devez entrer le nom de votre ami.");
		marquerChampAmi("field_nomAmi", "on");
	} else {
		marquerChampAmi("field_nomAmi", "off");
	}
	if (!validerAmi("field_courrielAmi")){
		tErreurs.push("L'adresse de courriel de votre ami n'est pas valide.");
		marquerChampAmi("field_courrielAmi", "on");
	} else {
		marquerChampAmi("field_courrielAmi", "off");
	}
	
	if (tErreurs.length > 0){
		var strErreurs = "";
		for (var i = 0; i < tErreurs.length; i++){
			strErreurs += "<li>" + tErreurs[i] + "</li>";
		}
		afficherErreursAmi(strErreurs, element(div).offsetTop, div);
	} else {
		var data = "";
		data += "id=" + escape(element("field_id").value) + "&";
		data += "type=" + type + "&";
		data += "nom_ami=" + escape(element("field_nomAmi").value) + "&";
		data += "nom_usager=" + escape(element("field_nomUsagerAmi").value) + "&";
		data += "courriel_ami=" + escape(element("field_courrielAmi").value) + "&";
		data += "courriel_usager=" + escape(element("field_courrielUsagerAmi").value) + "&";
		data += "message=" + escape(element("field_messageAmi").value);
		var exec = 'confirmerAmi(response);';
		ajax("ami", data, exec);
		element("envoi_ami").style.height = (element(div).offsetHeight - 2) + "px";
		Effect.Appear('envoi_ami', {duration:0.2})
	}
}

function confirmerAmi(response){
	if (response == "ok"){
		Effect.Appear("confirmation_ami", {duration:0.3});
	} else {
		Effect.Appear("erreur_ami", {duration:0.3});
	}
}

//***************************************************************
//	Rapporter un message au moderateur
//***************************************************************

function resetRapporter(type, cible, itemid) {
	Effect.Appear("rapporter_form", {duration:0.2});
	element("envoi_rapporter").style.display = "none";
	element("validation_rapporter").style.display = "none";
	element("confirmer_rapporter").style.display = "none";
	element("erreur_rapporter").style.display = "none";
	marquerChampRapporter("field_nomUsager", "off");
	marquerChampRapporter("field_courrielUsager", "off");
	marquerChampRapporter("field_messageRapporter", "off");
	element("field_nomUsager").value = "";
	element("field_courrielUsager").value = "";
	element("field_messageRapporter").value = "";
	element("field_idCommentaireRapporter").value = "";
	var posLeft = cible.offsetLeft;
	var posTop = cible.offsetTop;
	if (type == "commentaire") {
		element("rapporter_form").style.marginLeft = (posLeft - 54) + "px";
		element("rapporter_form").style.marginTop = (posTop + 25) + "px";
		element("field_idCommentaireRapporter").value = itemid;
		element("field_idSuggestionRapporter").value = "";
	} else if (type == "suggestion") {
		element("rapporter_form").style.marginLeft = (posLeft - 580) + "px";
		element("rapporter_form").style.marginTop = (posTop - 35) + "px";
		element("field_idCommentaireRapporter").value = "";
		element("field_idSuggestionRapporter").value = itemid;
	}
}

function envoyerRapporter() {
	tErreurs = [];
	if (!validerRapporter("field_nomUsager")){
		tErreurs.push("Vous devez entrer votre nom.");
		marquerChampRapporter("field_nomUsager", "on");
	} else {
		marquerChampAmi("field_nomUsager", "off");
	}
	if (!validerRapporter("field_courrielUsager")){
		tErreurs.push("Votre adresse de courriel n'est pas valide.");
		marquerChampRapporter("field_courrielUsager", "on");
	} else {
		marquerChampRapporter("field_courrielUsager", "off");
	}
	if (tErreurs.length > 0){
		var strErreurs = "";
		for (var i = 0; i < tErreurs.length; i++){
			strErreurs += "<li>" + tErreurs[i] + "</li>";
		}
		afficherErreursRapporter(strErreurs);
	} else {
		var data = "";
		data += "id_suggestion=" + escape(element("field_idSuggestionRapporter").value) + "&";
		data += "id_commentaire=" + escape(element("field_idCommentaireRapporter").value) + "&";
		data += "nom_usager=" + escape(element("field_nomUsager").value) + "&";
		data += "courriel_usager=" + escape(element("field_courrielUsager").value) + "&";
		data += "message=" + escape(element("field_messageRapporter").value);
		var exec = 'confirmerRapporter(response);';
		ajax("rapporter", data, exec);
		element("envoi_rapporter").style.height = (element("rapporter_form").offsetHeight - 2) + "px";
		Effect.Appear('envoi_rapporter', {duration:0.2});
	}
}

function afficherErreursRapporter(strErreurs) {
	element("erreurs_rapporter").innerHTML = strErreurs;
	element("erreurs_rapporter").style.display = "block";
	if (element("validation_rapporter").style.display == "none"){
		Effect.Appear("validation_rapporter", {duration:0.3});
	}
}
function marquerChampRapporter(id, toggle) {
	if (toggle == "on"){
		element(id).style.backgroundColor = "#FFDDDD";
	} else if (toggle == "off") {
		element(id).style.backgroundColor = "#FFFFFF";
	}
}

function confirmerRapporter(response){
	if (response == "ok"){
		element("confirmer_rapporter").style.height = (element("rapporter_form").offsetHeight - 2) + "px";
		Effect.Appear("confirmer_rapporter", {duration:0.3});
	} else {
		element("erreur_rapporter").style.height = (element("rapporter_form").offsetHeight - 2) + "px";
		Effect.Appear("erreur_rapporter", {duration:0.3});
	}
}

function validerRapporter(champ) {
	if (champ == "field_nomUsager" || champ == "field_messageRapporter"){
		if (element(champ).value.length > 0){
			return true;
		}
	} else if (champ == "field_courrielUsager"){
		if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(element(champ).value) == true){
			return true;
		}
	}
	return false;
}

function toggleText(r){
	r.title = r.value;
	r.onfocus = function(){
		if (r.value == r.title){
			r.value = "";
		}
	}
	r.onblur = function(){
		if (r.value == ""){
			r.value = r.title;
		}
	}
}

function openAlbumWindow(){
	var slidewindow = window.open("/album/album.html", "album", "width=900,height=675,menubar=no,scrollbars=yes,status=no,toolbar=no,directories=no");
	slidewindow.focus();
	location.href = "/album/";
	
	slidewindow.onunload = function() {
		location.href = "/";
	}
}