/**************** init onload */
$(function(){
	createSwitchStyle();
	
	// Condition se
	if($('#menu').hasClass('menu-2011'))
		$('#menu').menu_hq2011();
	else
		$('#menu').menu_hq();
		//$('#menu').menu_hq2011();
		
	createLinkPop();
	$('#autres-liens').liens_hq();
	addIconLink($('#hq-contenu')) ;
	hackDOM();
});

/* Déclarations des variables */
dossierRacine = "/";

/**************** menu */
(function($) { 
	$.fn.menu_hq = function(options){
		var defaults = {
		animate_toggle: 'yes',
		highlight_selected_link: 'yes'
	};

	var opts = $.extend(defaults, options);
	
	/*-- add class of menu_selected to the link that matches the page being viewed --*/
	
	if ( defaults.highlight_selected_link == 'yes' ) {
		// Créer la possibilité d'exception, pour forcer le menu a etre ouvert sour une page specific
		// declarer dans la page 
		//force_menu_ouvert = "/arbres/entretien.html, /publications/en/test_profil/index.html"
		// Tient compte du URL complet (à la racine)
		// pour forcer le menu d'etre ouvert sur ce lien.
		if(typeof(force_menu_ouvert) != "undefined"){ 
			var patternUrl = /(\S*)/;
			var urlArray = force_menu_ouvert.match(patternUrl);
			var pathAndPage = urlArray[0];
		}else{
			var pageNameString = location.toString();
			var patternUrl = /(\w+):\/\/([\w.|\-]*)(\S*)/;
			// modifier pour ajouter le "-" 
			//var patternUrl = /(\w+):\/\/([\w.]*)(\S*)/;
			var urlArray = pageNameString.match(patternUrl);
			var pathAndPage = urlArray[urlArray.length-1];
			
			// Enlève le anchor du lien ou les variables passées dans url
			pathAndPage = pathAndPage.replace(/[#\?]\S+/, '');
			// Enlève le dossier racine si requis
			pathAndPage = pathAndPage.replace(dossierRacine, '');
			// Enlève le host si requis pour les sous-domaines
			//_host = 'hydroquebec.com';
			//pathAndPage = pathAndPage.replace(_host, '');
		}
		
		
		/* Change l'état du lien de la page active */
		if (pathAndPage) {
			$('#menu a[href$="/'+pathAndPage+'"]:first').parent("li").addClass('menu_selected');
		}
	}
	//alert(pathAndPage);
	// Change la classe du parent de cette page
	$(".menu_selected").parent("ul").parent("li").parent("ul").parent("li").addClass('mg-ouvert');
	
	// Todo: être disponible pour plusieurs ouvertures
	// Si une ouverture forcée de section est déclaré dans la page
	// Ajoute la classe 'mg-ouvert'
	if(typeof(section_ouverte) != "undefined")
		forceOuvertureSection(section_ouverte).addClass('mg-ouvert');
	
	
	/* Fait : Enlève l'utilisation de la classe section */
	/* Todo: Remplacer les toogle par des conditions parce que certain menu peuvent être forcé */
	$("#menu").children("li").children("a").each(function(){
		var $this = $(this);
		if($this.attr("href") == "#") {
			$this.parent().addClass("section");
			if($this.parent().hasClass('mg-ouvert')) {
				$this.toggle(function(){
					$this.next("ul").slideUp("fast");
					$this.parent().removeClass('mg-ouvert');
				}, function(){
					$this.next("ul").slideDown("fast");
					$this.parent().addClass('mg-ouvert');
				});
			} else {
				$this.toggle(function(){
					$this.next("ul").slideDown("fast");
					$this.parent().addClass('mg-ouvert');
				}, function(){
					$this.next("ul").slideUp("fast");
					$this.parent().removeClass('mg-ouvert');
				});
			}
		}
									   
		$this.next("ul").hide();
	});
	// Ouvre la section  laquel appartient la page courante
	$(".menu_selected").parent("ul").parent("li").parent("ul").show();
	
	// Si une ouverture forcée de section est déclaré dans la page
	// Ouvre le menu avec show()
	if(typeof(section_ouverte) != "undefined")
		forceOuvertureSection(section_ouverte).find('ul:first').show();
}
//end of closure
})(jQuery);

(function($) { 
	$.fn.menu_hq2011 = function(options){
		var defaults = {
			animate_toggle: 'yes',
			highlight_selected_link: 'yes'
		};

	var opts = $.extend(defaults, options);
		
	if ( defaults.highlight_selected_link == 'yes' ) {
		
		if(typeof(force_menu_ouvert) != "undefined"){ 
			var patternUrl = /(\S*)/;
			var urlArray = force_menu_ouvert.match(patternUrl);
			var pathAndPage = urlArray[0];
		}else{
			var pageNameString = location.toString();
			var patternUrl = /(\w+):\/\/([\w.|\-]*)(\S*)/;
			var urlArray = pageNameString.match(patternUrl);
			var pathAndPage = urlArray[urlArray.length-1];
			
			// Ajoute index.html s'il n'y pas de fichier html indiqué après le dernier /
			if(/\/$/.test(pathAndPage))
				pathAndPage = pathAndPage+"index.html";
				 
			pathAndPage = pathAndPage.replace(/[#\?]\S+/, '');
			pathAndPage = pathAndPage.replace(dossierRacine, '');
		}
		//alert(pathAndPage);
		/* Change l'état du lien de la page active */
		if (pathAndPage) {
			if(!$('#menu a[href$="/'+pathAndPage+'"]:first').parent("li").hasClass('section-lien'))
				$('#menu a[href$="/'+pathAndPage+'"]:first').parent("li").addClass('menu_selected');
			else
				$('#menu a[href$="/'+pathAndPage+'"]:first').parent("li").addClass('section-selected');
		}
	}
	
	// Change la classe du parent de cette page
	$(".menu_selected").parent("ul").parent("li").parent("ul").parent("li").addClass('mg-ouvert');
	
	// Si une ouverture forcée de section est déclaré dans la page
	// Ajoute la classe 'mg-ouvert'
	if(typeof(section_ouverte) != "undefined")
		forceOuvertureSection(section_ouverte).addClass('mg-ouvert');
	
	
	// Ajoute le pointeur si contenu ou pas
	
	$("#menu").children("li").children("a").each(function(){
		var $this = $(this);
		//alert($this.parent("li").children().is("ul"))
		if ($this.parent("li").children().is("ul")) {									  	
			$this.parent().addClass('section');
			$this.next("ul").hide();
		}
	});
	
	// Ouvre la section sélectionnée
	$('.section-selected').children('ul').show();
	$('.section-selected').addClass('mg-ouvert');
	
	// Ouvre la section  laquel appartient la page courante
	$(".menu_selected").parent("ul").parent("li").parent("ul").show();
	
	// Si une ouverture forcée de section est déclaré dans la page
	// Ouvre le menu avec show()
	if(typeof(section_ouverte) != "undefined")
		forceOuvertureSection(section_ouverte).find('ul:first').show();
}
//end of closure
})(jQuery);

function forceOuvertureSection(id) {
	// Todo : ajouter support pour plusieurs ouvertures ???
	// Si id est chiffre = ordre de la section à ouvrir (à partir de 1)
	if(/^\d+/.test(id)) {
		id=id-1; // index par a 0 sur les li
		return $('#menu').children('li:eq('+id+')');
	} else if(/s_\w+/.test(id)) {//Si id est un string = id de la section (id="")
		id='#'+id;
		return $('#menu '+id);
	}
}


/**************** Contrle Autres liens utiles */
(function($) { 
$.fn.liens_hq = function(options){
	addIconLink($(this));
	//TEST
	//force_autres_liens = true;
	
	var local = (typeof(force_autres_liens)=="undefined") ? "undefined" : force_autres_liens;
	var global = $(this).children("li").hasClass("alu-force");
	
	// Au départ regarde les variable pour déterminer si le menu doit être fermé
	if(!global) { // pas ouverture
		if((local==false) || (local=="undefined"))
			$(this).children("li").children("ul").hide();
		else if (local)
			$(this).children("li").addClass("alu-ouvert");
	} else { // ouvert
		if(local==false)
			$(this).children("li").children("ul").hide();
		else 
			$(this).children("li").addClass("alu-ouvert")
	}	
	
	$(this).children("li").children("span").bind("click", function(e) {
		if($(this).parent().hasClass("alu-ouvert")) {
			var $this = $(this);	
			$this.next("ul").slideUp("fast");
			$this.parent().removeClass('alu-ouvert');
			return false;
		} else {
			var $this = $(this);	
			$this.next("ul").slideDown("fast");
			$this.parent().addClass('alu-ouvert');
			return false;
		}
	});
	
}
//end of closure

/******* Images accueil *****/

	slider = function () {
		setInterval(function() {
			if($('#imgAccueilDD').css('display') == 'none')
			{
				$('#imgAccueilDD').fadeIn('slow');
				$('#imgAccueilDD2').fadeOut('slow');
				
			}
			else
			{			
				$('#imgAccueilDD2').fadeIn('slow');
				$('#imgAccueilDD').fadeOut('slow');
				
			}
		}, 5000);
	};
	
	slider();
})(jQuery);


/**************** Taille du texte */
function createSwitchStyle(){
	// cree l'image et la map pour inserer dans la page
	page_lang = $("html").attr("lang")
	var tool_title = (page_lang == "fr")? "Taille" : "Size";
	var small_title = (page_lang == "fr")? "Taille du texte - Normal" : "Normal text size";
	var medium_title = (page_lang == "fr")? "Taille du texte - Moyen" : "Medium text size";
	var large_title = (page_lang == "fr")? "Taille du texte - Gros" : "Large text size";
	var styleSwitchCode = '<div><span>'+tool_title+'&nbsp;:</span>'	
	styleSwitchCode += '<img src="'+dossierRacine+'images/hq_tt_normal.png" alt="" width="47" height="19" border="0" usemap="#icn_tt_map" id="icn_tt_img" />'	
	styleSwitchCode += '<map name="icn_tt_map" id="icn_tt_map">'	
	styleSwitchCode += '<area shape="rect" coords="0,0,16,20" href="#" rel="normal" class="bouton_tt" title="'+small_title+'" />'	
	styleSwitchCode += '<area shape="rect" coords="16,0,32,20" href="#" rel="medium" class="bouton_tt" title="'+medium_title+'" />'	
	styleSwitchCode += '<area shape="rect" coords="32,0,48,20" href="#" rel="gros" class="bouton_tt" title="'+large_title+'" />'	
	styleSwitchCode += '</map></div>'	
// insertion dans la page
	$("#et-taille-texte").addClass("actif");	
	$("#et-taille-texte").html(styleSwitchCode);	
	
// activer les liens
	$('#et-taille-texte .bouton_tt').click(function()
	{
		switchStyle(this.getAttribute("rel"));
		return false;
	});
// lire le cookie et activer le script si le cookie existe
	var c = readCookie('style');
	if (c) switchStyle(c);
}

function hackDOM(){
	if($.browser.msie && $.browser.version == 6){
		// Hack pour 3 colonnes côte à côte
		$(".contenu-3cols-marge + .contenu-3cols-marge").css("margin", "0px");
		// Hack pour 2 colonnes côte à côte
		$(".contenu-2cols-marge + .contenu-2cols-marge + .contenu-2cols-marge").css("margin", "0px");
	}
} 

function switchStyle(styleName)
{
// trouve toute les stylesheet avec un titre et les dsactives et active celle selectionner
	//$('link[@rel*=style][@title]').each(function(i)
	$('link[rel*=style][title]').each(function(i)
	{
		this.disabled = true;
		if (this.getAttribute('title') == styleName) this.disabled = false;
	});
// change le src de l'image pour mettre le highlight sur la bonne lettre 
	newImgSrc = ""
	oldImgSrc = $("#icn_tt_img").attr("src");
	temp = oldImgSrc.split("/");
	for(i=0; i<temp.length - 1; i++){
		newImgSrc += temp[i]+"/";
	}
	newImgSrc +=  "hq_tt_"+styleName+".png";
	$("#icn_tt_img").attr('src', newImgSrc);
// cree le cookie
	createCookie('style', styleName, 365);
}

/**************** Cookies */
function createCookie(name,value,days){
	if (days){
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/"
}
function readCookie(name){
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++){
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

/**************** Cration pop-ups */
function browserFix(split_attr){
	var sizeFix = new Array();
	var w = 0;
	var h = 0;
	// modifie la grosseur de la fenetre pour le browser en question
	if($.browser.msie){
		if($.browser.version >= 7){
			// toolbar
			if (split_attr[6]==1) {w += 0; h += 29;}
		}else{
			// menubar
			if (split_attr[9]==1) {w += 0; h += -19;}
		}
		
		// scrollbar
		if (split_attr[4]==1) {w += 16; h += 0;}
		
	}else if($.browser.mozilla){
		// scrollbar
		if (split_attr[4]==1) {w += 16; h += 0;}
		// location
		if (split_attr[5]==1) {w += 0; h += 6;}
		// toolbar
		if (split_attr[6]==1) {w += 0; h += -6;}
		
	}else if($.browser.safari){
		// scrollbar always on in safari / chrome
		w += 19; 
		h += 16;		
	}
	sizeFix[0] = w;
	sizeFix[1] = h;
	return sizeFix
}

function createLinkPop() {	
	var doc_loc = document.location+ " ";
	var hq = doc_loc.indexOf("hydroquebec.com")
	
	// trouve les liens avec la class popup
	popUpLinks = $("a.popup");
	
	for(i=0; i<popUpLinks.length; i++){	
		// Extrait la valeur du rel et fait un array avec
		
		attr = $(popUpLinks[i]).attr("rel");
		if(typeof attr=="undefined") attr = "";
		split_attr = attr.split(",");
		// modifier la taille de la fenetre pour les browser different
		sizeFix = browserFix(split_attr);
		// prpare les valeurs de rel
		dimensionFenetre = "width=" + ( parseInt(split_attr[0]) + sizeFix[0] ) + ",height=" + ( parseInt(split_attr[1]) + sizeFix[1] ) + ",top=" + split_attr[2] + ",left=" + split_attr[3] + ",scrollbars=" + split_attr[4] + ",location=" + split_attr[5] + ",toolbar=" + split_attr[6] + ",status=" + split_attr[7] + ",resizable=" + split_attr[8] + ",menubar=" + split_attr[9];
		//voted off the island by popular demand in a Steve led survey
		// montre les dimensions du pop up si pas sur hydroquebec.com
//		if(hq == -1){
//			var urlSplitter = "?"
//			if($(popUpLinks[i]).attr("href").indexOf("?") != -1){
//				urlSplitter = "&"
//			}
//			$(popUpLinks[i]).attr("href", $(popUpLinks[i]).attr("href") + urlSplitter + "POPUP=" + $(popUpLinks[i]).attr("rel"))
//		}
		// modifie le rel et ajoute le onclick
		$(popUpLinks[i]).attr("rel", dimensionFenetre)
		$(popUpLinks[i]).attr("name", "pop" + Math.round(100000 * Math.random()))
		$(popUpLinks[i]).click( function() {
			popupwin=window.open($(this).attr("href"), $(this).attr("name") , $(this).attr("rel"));
			return false;
		});
	}
}

//Permet de highliter une page en écrivant le url de la page dans la fonction  lors de l'appel.
//Exemple : pageOuverture("/affaires/efficacite/industriel/piste.html");
//Utile lorsque 2 pages partagent le même lien dans le menu.
function pageOuverture(url) {
    $('#menu a[href$="'+url+'"]').parents("ul").parents("ul").parent("li").addClass('mg-ouvert');
    $('#menu a[href$="'+url+'"]').parents("ul").parents("ul").show();
    $('#menu a[href$="'+url+'"]').parent().addClass('menu_selected');
}


/**************** Ouvre la carte du site */
var win= null;
function ouvreCarte(page,nom,w,h,scroll){
	window.location = page;
	// ce script devrait disparaitre bientot (12 aout, 2009)
	/*
  var winl = (screen.width-w)-12;
  //var wint = (screen.height-h);
  var settings  ='height='+h+',';
      settings +='width='+w+',';
      settings +='top='+20+',';
      settings +='left='+winl+',';
      settings +='scrollbars='+scroll+',';
      settings +='resizable=no';
  win=window.open(page,nom,settings);
  if(parseInt(navigator.appVersion) >= 4){
  	win.window.focus();
	}
	*/
}

function addIconLink(id) {
	if(typeof(id) != 'undefined') {
		var vBrowser;
		// Liens externes 
		var icn_lien_externe = '<img src="/images/hq_lien_externe.gif" width="10" height="10" border="0" align="top" class="lien-icn-ext" title="Lien externe" />';
		
		jQuery.each(jQuery.browser, function(i, val) {
			if(i=="msie" && jQuery.browser.version.substr(0,3)=="8.0") {
				vBrowser = "ie8";
			}
		});
		
		if ($.browser.msie && vBrowser != "ie8") {
			$(id).find("a[href^='http']:not([href*='hydroquebec.com'])").each(function() {
				var $this = $(this);
				if($($this).hasClass("ignore_ext") != true){
					$this.append(icn_lien_externe);
				}
			});
		}
	}
}

/**************** Fonction temporaire, ne pas utiliser sauf pour les A Signaler dans 4D */
// NOUVELLE FONCTION, PAREIL COMME openpopBase, SEULEMENT POUR LES A SIGNALER
function typeNavigateur()  {
	browserName = navigator.appName;
	browserVer = parseInt(navigator.appVersion);
	browserPlatform = navigator.platform;  
	if (browserName == "Netscape") {version = "n";}
	else{version = "e";}  
	if (browserPlatform == "MacPPC") {version += browserVer + 'M';}
	else if (browserPlatform == "Win32") {version += browserVer + 'W';}
	else {version += browserVer;}	
	return version;
}
function pop_a_signaler(page,largeur,hauteur,posy,posx,barreDefilement,chemin,barreOutils,status,redim,barreMenu)  {
  version = typeNavigateur();   
  var now = new Date();
	if (barreDefilement != 0) {		
		largeurTemp = parseInt(largeur) + 16;  		
  		if (version.charAt(0) == 'e' && version.charAt(2) == 'M') {
  			largeurTemp = largeur;
  		}  		
  	} else {largeurTemp = largeur;}  
  if (version.charAt(0) == 'e' && version.charAt(2) == 'W' && barreMenu == 1) {
  	hauteurTemp = parseInt(hauteur) - 20;
  }  else {
  	hauteurTemp = hauteur;
  }  
  var dimensionFenetre = "width=" + largeurTemp + ",height=" + hauteurTemp + ",top=" + posy + ",left=" + posx + ",scrollbars=" + barreDefilement + ",location=" + chemin + ",toolbar=" + barreOutils + ",status=" + status + ",resizable=" + redim + ",menubar=" + barreMenu;
  popup = now.getTime();
  if (version.charAt(0) != 'n') {
    popupwin=window.open(page, popup,dimensionFenetre);
  } else {
    popupwin=window.open(page, popup,dimensionFenetre);
    if (version.charAt(1) >= '3') {popupwin.focus();}
  }
}


