// ===================================================================
// Title:       Javascript "carrefourHelper.js"
// Description:	Fonctions javascript utilitaires pour le projet carrefour.
//
// Copyright:	Copyright (c) 2007
// Company:		Progex Informatique Inc
// Author  		Marc Moreau
// ===================================================================

// Declaration des variables globales.
var CH_ATTRIBUT_IMG = "img";

var CH_TRUE = "true";
var CH_FALSE = "false";
var CH_VIDE = "";

var CH_MSG_ERR_VIDE = "";
var CH_BROWSER_TYPE_MSIE = "msie";

var CH_DISPLAY_VISIBLE = "inline";
var CH_DISPLAY_INVISIBLE = "none";

var	CH_ID_SECTION_PREFIXE = "section";
var	CH_ID_ACTION_MESSAGES = "actionMessageJS";
var	CH_ID_AFFICHER_IMG_BIG_STATUT = "afficherImgBigStatut";

var ch_popupWin;

var	CH_TEXTAREA_MAX_CHARACTER_BY_LINE = 90;


// ===================================================================
// Détermine si le type du fureteur est MicroSoft Internet Explorer.
// 
// param	none
//        
// return	none
// ===================================================================
function isBrowserTypeMSIE() {
	if (window.navigator.userAgent.toLowerCase().match(CH_BROWSER_TYPE_MSIE)) {
		return true;
	}
	return false;
}

// ===================================================================
// Création d'un cookie et de son contenu.
// 
// param	cookieName : le nom du cookie.
// param	value : valeur a conserver dans le cookie.
// param	expireDays : nombre de jours que le cookie doit etre conservé.
//        				 ( Si = -1, expirera immédiatement )
//        				 ( Si = zéro ou null, expirera à la fin de la session )
// return	none
// ===================================================================
function createCookie(cookieName, value, expireDays) {
	if (expireDays != null ) {
		var exdate = new Date();
		exdate.setDate(exdate.getDate() + expireDays);
	}
	document.cookie = cookieName + "=" + 
					  escape(value) + ((expireDays==null) ? "" : ";expires=" + exdate.toGMTString());
}

// ===================================================================
// Lire le contenu d'un cookie.
// 
// param	cookieName : le nom du cookie.
//
// return	contenu du cookie, chaine vide si inexistant
// ===================================================================
function readCookie(cookieName) {
	if (document.cookie.length > 0) {
		c_start = document.cookie.indexOf(cookieName + "=");
  		if (c_start != -1) { 
			c_start = c_start + cookieName.length + 1; 
			c_end = document.cookie.indexOf(";", c_start);
			if (c_end == -1) {
				c_end = document.cookie.length;
			}
			return unescape(document.cookie.substring(c_start, c_end));
    	} 
  	}
	return "";
}
 
// ===================================================================
// Lire le contenu d'un cookie.
// 
// param	cookieName : le nom du cookie.
//
// return	none
// ===================================================================
function eraseCookie(cookieName) {
	createCookie(cookieName, "", -1);
}


// ===================================================================
// Affiche un message au membre.
// 
// param	message : message qui sera affiché à l'écran.
//        
// return	none
// ===================================================================
function myAlert(message) {
	if (message == CH_MSG_ERR_VIDE) {
		document.getElementById(CH_ID_ACTION_MESSAGES).innerHTML = CH_MSG_ERR_VIDE;
		document.getElementById(CH_ID_ACTION_MESSAGES).style.display = CH_DISPLAY_INVISIBLE; 
	} else {
		document.getElementById(CH_ID_ACTION_MESSAGES).innerHTML = "<ul>" + "<li>" + message + "</li>" + "</ul>";
		document.getElementById(CH_ID_ACTION_MESSAGES).style.display = CH_DISPLAY_VISIBLE; 
	}
}

// ===================================================================
// Effectue une rediection sur le site fournis. 
// 
// param	host : le nom du site que l'on désire appeler.
//        
// return	none
// ===================================================================
function redirectionAuSite(host) {
	var newURL = window.location.protocol + "//" +
				 host +
				 window.location.port +
				 window.location.pathname +
				 window.location.search;
	window.location.assign( newURL );
}

// ===================================================================
// Rendre visible une section d'un groupe de section. Les autres sections
// du groupe seront invisible. 
// 
// param	idGroupe : ID du groupe contenant les sections
// param	idSection : ID de la section que l'on désire rendre visible
// param	elementHTML : Element html identifiant une section.
//						  (Permet de diminuer la liste d'élément HTML).
// return	none
// ===================================================================
function afficherSectionDossier(idGroupe, idSection, elementHTML) {
	var	listElement = document.getElementById(idGroupe).getElementsByTagName(elementHTML);
		
	for (var i = 0; i< listElement.length;i++) {
		// Filtrer les id "sectionXXX" que l'on désire traités.
		if (listElement[i].id.indexOf(CH_ID_SECTION_PREFIXE) != -1) {
			if (listElement[i].id == idSection) {
				listElement[i].style.display = CH_DISPLAY_VISIBLE; 
			} else {
				listElement[i].style.display = CH_DISPLAY_INVISIBLE; 
			}
		}
	}
}


// ===================================================================
// Rendre invisible la section "actionMessage"
// 
// param	none
//        
// return	none
// ===================================================================
function effacerActionMessage() {
	if (document.getElementById("actionMessage") != null) {
		var	listElement = document.getElementsByTagName("span");
		for (var i = 0; i< listElement.length;i++) {
			if (listElement[i].id == "actionMessage") {
				listElement[i].style.display = CH_DISPLAY_INVISIBLE; 
			}
		}
	}
}

// ===================================================================
// Permet de bloquer la fonction "copier/coller" du clavier.
// 
// param	ev : événement qui a été lancé par le clavier
// param	msgAvertissement : message d'avertissement qui doit être lancé.
//        
// return	Si fonction "cntrl-c" retourner false, sinon true
//			
// ===================================================================
function bloquerCopierClavier(ev, msgAvertissement) {
	var keynum;
	var keychar;
	var numcheck;

	// Déterminer la clef du clavier qui a été appuyée.
	if(window.event) { // IE
		keynum = ev.keyCode;
	} else if (ev.which) { // Netscape/Firefox/Opera
  		keynum = ev.which;
	}
	keychar = String.fromCharCode(keynum);
	// Si la clef est "ctrl-c" retourner l'avertissement.
	numcheck = /c/i;
	if (ev.ctrlKey && numcheck.test(keychar)) {
		alert(MSG_DROIT_RESERVE_TEXTE);
		return false;
	}
	return true;
}

// ===================================================================
// Ouvrir une fenêtre de type "popup".
// 
// param	pageURL : page que l'on désire afficher dans le "popup"
// 			message : message a afficher
// 			w : largeur de la popup
// 			h : hauteur de la popup
//        
// return	none
//			
// ===================================================================
function openPopupWin(pageURL, message, w, h) {
	var left = (screen.width/2)-(w/2);
	var top = (screen.height/2)-(h/2);
	ch_popupWin = window.open(pageURL, "", 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, titlebar=no, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
	if (message != "") {
		ch_popupWin.document.write("<br>" + message);
		ch_popupWin.document.body.style.textAlign="center";
	}
	ch_popupWin.focus();
}


// ===================================================================
// Fermer une fenêtre de type "popup".
// 
// param	none
//        
// return	none
//			
// ===================================================================
function closePopupWin() {
	if (typeof(ch_popupWin) != 'undefined') {
		ch_popupWin.close();
	}
}


// ===================================================================
// Set un champ de type "counter".
// 
// param	field : champ contenant le texte
// 			counterField : champ representant le counter
// 			maxLimit : limite permise pour le texte
//        
// return	none
//			
// ===================================================================
function setCounter(field, counterField, maxLimit) {
	counterField.value = field.value.length + " / " + maxLimit;
}


// ===================================================================
// Avance dans la liste des oeuvres vers la prochaine/précédente oeuvre.
// 
// param	step : valeur du "pas" que l'on désire faire( +1, 0 ou -1 )
//        
// return	none
//			
// ===================================================================
function avancerOeuvre(step) {
	var indexOeuvreId = "indexOeuvre" + document.getElementById('sectionDossierMembrePortfolio').value;
	var listOeuvre = document.getElementById('infoIndexImageRegion').getElementsByTagName(CH_ATTRIBUT_IMG);
	var indexCurrent = 0;
		
	for (var i = 0; i< listOeuvre.length; i++) {
		if (listOeuvre[i].id == indexOeuvreId) {
			indexCurrent = i;
			break;
		}
	}

	if (step == 1) {
		if ((indexCurrent + 1) < listOeuvre.length) {
			listOeuvre[indexCurrent+1].onclick(); 
		};
	} else if (step == -1) {
		if (indexCurrent > 0) {
			listOeuvre[indexCurrent-1].onclick(); 
		};
	} else {
		listOeuvre[indexCurrent].onclick(); 
	}
}


// ===================================================================
// Permet d'afficher ou non l'image Big. 
// 
// param	indAfficher : Indique si l'on desire afficher ou non l'image Big
// param	idSection : ID de l'image Big
//
// return	none
// ===================================================================
function afficherImgBig(indAfficher, idImgBig) {
	if (indAfficher == CH_VIDE) {
		indAfficher = document.getElementById(CH_ID_AFFICHER_IMG_BIG_STATUT).value;
	}

	if (indAfficher == CH_TRUE) {
		document.getElementById(idImgBig).style.display = CH_DISPLAY_VISIBLE;
	} else {
		document.getElementById(idImgBig).style.display = CH_DISPLAY_INVISIBLE;
	}
	document.getElementById(CH_ID_AFFICHER_IMG_BIG_STATUT).value = indAfficher;
}


// ===================================================================
// Set l'attribut "rows" du champ reçu en paramètre.
// 
// param	field : champ contenant le texte
//        
// return	none
//			
// ===================================================================
function setTextareaRows(field) {
	var nbrRows = 3;
	var arrayElem = field.innerHTML.split("\n");
	for (x = 0; x < arrayElem.length; x++) {
		if (arrayElem[x] == "") {
			nbrRows++;
		} else {
			nbrRows += Math.ceil(arrayElem[x].length / CH_TEXTAREA_MAX_CHARACTER_BY_LINE);
		}
	}
	field.rows = nbrRows;
}

