/*
 * Librairie Javascript pour les scripts spécifiques au thème pour les zones du cégep Saint-Laurent
 *
 * Copyright (c) 2010 Cégep St-Laurent
 * Marc-Olivier Ouellet
 * Myriam Boisvert
 */

/*Script pour les coins arrondis sur l'entete*/
DD_roundies.addRule('.coins_arrondis', '7px', true);
DD_roundies.addRule('.coins_arrondis_top', '7px 7px 0px 0px', true);
DD_roundies.addRule('.coins_arrondis_bottom', '0px 0px 7px 7px', true);
DD_roundies.addRule('.coins_arrondis_right', '0px 7px 7px 0px', true);
DD_roundies.addRule('#boite_recherche', '4px', true);

// Remplacer les entêtes par des images
Cufon.replace('h1');
Cufon.replace('h2');
Cufon.replace('#nouvelles-home h3');

$(document).ready(function(){
	// Arranger les PNG dans IE6 seulement
	if ($.browser.msie && $.browser.version < 7) {
		//$('#cegep_entete').css({'background-color' : 'none', 'border-bottom' : 'none'});
		$('#cegep_entete').css('backgroundColor', 'transparent').css('borderBottom', 'transparent');
		$.getScript("http://www.cegep-st-laurent.qc.ca/wp-content/themes/cegepsl/js/DD_belatedPNG_0.0.8a-min.js", function(){
			DD_belatedPNG.fix('.pp_middle, .png_bg, .pp_left, .pp_right, .nivo-control');
		});	
	} else {
		/**/$(".menuadmission").attr('rel','shadowbox');
		$(".menuadmission").attr('href','#admission');
		$(".menuprogrammes").attr('rel','shadowbox');
		$(".menuprogrammes").attr('href','#programmes');
		$(".menuformation").attr('rel','shadowbox');
		$(".menuformation").attr('href','#formation');
		$(".menuvieetudiante").attr('rel','shadowbox');
		$(".menuvieetudiante").attr('href','#vieetudiante');
		$(".menulecegep").attr('rel','shadowbox');
		$(".menulecegep").attr('href','#lecegep');
		$(".menuetudiant").attr('rel','shadowbox');
		$(".menuetudiant").attr('href','#etudiant');
		$(".menuemploye").attr('rel','shadowbox');
		$(".menuemploye").attr('href','#employe');
		$(".menufutur_etudiant").attr('rel','shadowbox');
		$(".menufutur_etudiant").attr('href','#futur_etudiant');
		$(".menuentreprise").attr('rel','shadowbox');
		$(".menuentreprise").attr('href','#entreprise');
		// Ouvrir les menus de la navigation principale avec prettyPhoto
		$("a[rel^='shadowbox']").prettyPhoto({theme:'facebook', opacity: 0.75, animationSpeed: 'fast', callback: function(){ remppHover() } });
	}
	// Retirer le lien blanc sur les items cliqués
	// Ne pas appliquer le style CSS dans IE à cause du bug dans DD_Roundies
	if (!$.browser.msie) {
		$("#navigations").find('a').click(function() {
			$("#navigations").find('a').removeClass('hover');
				$(this).addClass('hover');
		})
		
		
	}
	// Afficher le menu prettyPhoto en haut
	$("#navigations").find('a').click(function() {
		$('.pp_pic_holder').addClass('prettyPhoto_nav');
	});
	// S'assurer que le menu prettyPhoto n'est pas en haut quand c'est un prettyPhoto régulier
	$("a[rel^='menu']").mouseup(function() {
		var test = $('.pp_inline').children().hasClass('panneaux_contenant');
		if (!test) {
			$('.pp_pic_holder').removeClass('prettyPhoto_nav');
		}
	});

	// Gérer le cas de la formation continue avec le module d'inscription en ligne
	// Ouvrir le menu à la bonne page lorsque le module est visualisé
	// Liste des ateliers de perfectionnement => Page ID = 100
	// Liste des formations aux municipalités => Page ID = 80
	var url_params = extractUrlParams();
	if (url_params['typeact'] == '1')
		$("li.page-item-100").addClass('current_page_item').parent().parent().addClass('current_page_parent').addClass('current_page_ancestor').parent().parent().addClass('current_page_ancestor');
	if (url_params['typeact'] == '2')
		$("li.page-item-80").addClass('current_page_item').parent().parent().addClass('current_page_parent').addClass('current_page_ancestor').parent().parent().addClass('current_page_ancestor');

	// Ouvrir le menu à la bonne page lorsqu'une page Symfony est affichée
	var page_id = $('body').attr('id');
	$("li.page-item-"+page_id).addClass('current_page_item').parent().parent().addClass('current_page_parent').addClass('current_page_ancestor').parent().parent().addClass('current_page_ancestor');
	
	//console.log(page_id);

	// Charge le menu principal
	initMenus();
	
	// Chargement de la feuille de style en cache (pour éviter de loader celle dans le cache du browser
	var style_active = getCookie('style');
	if (style_active)
		$('#stylesheet').attr('href','/wp-content/themes/cegepsl/css/' + style_active + '.css');

	// Changement de thème
	$('#style-switcher a').live("click", function(){ 
		loadStyleSheet(this);
		cssDummy.init();
		return false;
	});	
	
	// Affichage du tooltip tipsy
	$('#wp-calendar td a').tipsy({gravity: $.fn.tipsy.autoNS, html: true, fade: true, delayIn: 50, delayOut: 5000 });
	
	// Chargement de la feuille de style avec la taille du texte sélectionné (défini dans le cookie)
	var taille_texte_active = getCookie('taille_texte');
	//var taille_texte_active = $('body').css('font-size');	
	if (taille_texte_active) {
		$('body').css('font-size',taille_texte_active+'em');
		Cufon.refresh();		
	}
	else {
		setCookie('taille_texte', '0.75', 365);
	}

	// Fonction de la taille du texte
	$('#change_taille').click(function () { 
		var taille = getCookie('taille_texte');
		if (taille == "0.75") {
			$('body').css('font-size','0.85em');
			setCookie('taille_texte', '0.85', 365);
			Cufon.refresh();
		}
		if (taille == "0.85") {
			$('body').css('font-size','1em');
			setCookie('taille_texte', '1', 365);
			Cufon.refresh();
		}
		if (taille == "1") {
			$('body').css('font-size','0.75em');
			setCookie('taille_texte', '0.75', 365);
			Cufon.refresh();
		}
	});
	
	// Chargement des panneaux déroulants
	initPanneaux();
	
	// Ajout la class "externe" et ouvre une fenêtre externe dans le menu
	$('a[target=_blank]').addClass('externe');
	$('img').parent('a[target=_blank]').removeClass('externe');	
	
	// Ajoute un span pour IE 6 et 7
	if ($.browser.msie && $.browser.version <= 8) {
		//lien externe & privé
		$('.externe').append("<span class='ext'></span>");
		//$('.externe').css("backgroundImage", "none")
		$('.prive').append("<span class='prive'></span>");
		//les [+] des panneaux
		$('.panneaux_contenant').find('span').children('a').append("<span class='zone_plus'></span>");
		$('.panneaux_contenant').find('span').children('a').css("backgroundImage", "none");
	}
	
	$('a[title^=_]').addClass('externe').attr('target', '_blank');
	
	$('a[title^=_]').each(function(index) {
		v = $(this).html().replace(/_/i,'')
		$(this).html(v)
	})
	
	// Ajouter une classe aux titres des panneaux des barres de navigation.
	$('a[title^=_]').addClass('externe')
	
});
	
	
function initPanneaux() {
	// Affichage des panneaux déroulants
	// Cacher tous les dds
	// Sauf si le dd contient la class "v_show_first", dans ce cas, on ouvre le 1er dd
	$("body").find('dl').addClass('v_show_hide');
	$(".gallery-item").removeClass('v_show_hide');
	$("dl.v_show_hide dd").hide();
	$("dl.v_show_hide dt").addClass('dl_plus'); 
	// Pour les nouvelles sur la page d'accueil, on ouvre le 1er dd
	$("#nouvelles-home").find('dl').addClass('v_show_first');
	if ($("dl.v_show_first").length) {
		$("dl.v_show_hide dd:first").show();
		$("dl.v_show_hide dt:first").addClass('dl_moins');
	}	
		
	// When a dt is clicked, 
	$("dl.v_show_hide dt").click(function () { 
	// Toggle the slideVisibility of the dd directly after the clicked dt 
	$(this).removeClass('dl_plus').addClass('dl_moins').next("dd").slideToggle("slow") 
		// And hide any dds that are siblings of that "just shown" dd. 
		.siblings("dd").slideUp("slow").prev("dt").removeClass('dl_moins').addClass('dl_plus'); 
	});	
}

// Retirer le lien blanc sur les items cliqués
function remppHover() {	
	$("#navigations").find('a').removeClass('hover');
}

// Script pour afficher le menu principal de haut de page
function initMenus() {	
	$('ul.menu ul').hide();
	$('ul.menu ul').before("<a href='#' class='lien_bg png_bg'></a>");
	$.each($('ul.menu'), function(){
		$('li.current_page_ancestor ul').show();
		$('li.current_page_item ul').show();
		$('li.current-cat-parent ul').show();
		$('li.current-cat ul').show();
		
	});
	
	$('ul.menu ul ul').hide();
	
	$.each($('ul.menu ul'), function(){
		$('ul li.current_page_ancestor ul li.current_page_item ul').show();
		$('ul li.current_page_ancestor ul li.current_page_ancestor ul').show();
		$('ul li.current-cat-parent ul li.current-cat ul').show();
		$('ul li.cat-item ul li.current-cat-parent ul').show();
		$('ul li.cat-item ul li.current-cat-parent ul').parent().parent().show();
			
	});
	$('ul.menu ul ul ul').hide();
	$.each($('ul.menu ul ul'), function(){
		$('ul li.current_page_ancestor ul li.current_page_ancestor ul li.current_page_item ul').show();
		$('ul li.current_page_ancestor ul li.current_page_ancestor ul li.current_page_ancestor ul').show();
		
	});
	
	
	$('a.lien_bg').click(
		function() {
			var checkElement = $(this).next();
			var parent = "";
			var parent_depth = $(this).parents().map(function () { 
                                return this.tagName; 
                              })
                          .get().length;
			if (parent_depth == 10) {
				parent = this.parentNode.parentNode.id;
				$('#' + parent + ' ul:visible').addClass('collapsible');
			}
			if (parent_depth == 12) {
				parent = "menu_sidebar li ul";
				$('#' + parent + ' ul:visible').addClass('collapsible');
			}
			if (parent_depth == 14) {
				
				parent = "menu_sidebar li ul li ul";
				$('#' + parent + ' ul:visible').addClass('collapsible');
			}		
			if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
				if($('#' + parent).hasClass('collapsible')) {
					$('#' + parent + ' ul:visible').slideUp('normal');
					//$('.page_item' + ' ul:visible').slideUp('normal');
				}
				return false;
			}
			if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
				//$('.page_item' + 'ul:visible').slideUp('normal');
				$('#' + parent + ' ul:visible').slideUp('normal');
				checkElement.slideDown('normal');
				return false;
			}
		}
	);
}

/**
 * Fonction de récupération des paramètres GET de la page
 * @return Array Tableau associatif contenant les paramètres GET
 */
function extractUrlParams(){	
	var t = location.search.substring(1).split('&');
	var f = [];
	for (var i=0; i<t.length; i++){
		var x = t[ i ].split('=');
		f[x[0]]=x[1];
	}
	return f;
}

// Get cookie
function getCookie(Name) { 
	var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
	if (document.cookie.match(re)) //if cookie found
	return document.cookie.match(re)[0].split("=")[1] //return its value
	return null
}

// Set cookie with path of zone
function setCookie(name, value, days) {
	var expireDate = new Date()
	//set "expstring" to either future or past date, to set or delete cookie, respectively
	var expstring=(typeof days!="undefined")? expireDate.setDate(expireDate.getDate()+parseInt(days)) : expireDate.setDate(expireDate.getDate()-5)
	document.cookie = name+"="+value+"; expires="+expireDate.toGMTString()+"; path=/;"	
}

// Set cookie with path of zone
function setCookie(name, value, days, zone) {
	var expireDate = new Date()
	//set "expstring" to either future or past date, to set or delete cookie, respectively
	var expstring=(typeof days!="undefined")? expireDate.setDate(expireDate.getDate()+parseInt(days)) : expireDate.setDate(expireDate.getDate()-5)
	if ( zone ) 
		document.cookie = name+"="+value+"; expires="+expireDate.toGMTString()+"; path=/"+zone+"/;"
	else
		document.cookie = name+"="+value+"; expires="+expireDate.toGMTString()+"; path=/;"	
}

// Fonction requise pour le changement de thème
var cssDummy = {
	init: function(){
		$('<div id="dummy-element" style="display:none" />').appendTo('body');
	},
	check: function(callback) {
		if ($('#dummy-element').width()==2) callback();
		else setTimeout(function(){cssDummy.check(callback)}, 200);
	}
}

// Fonction qui exécute le changement de thème
function loadStyleSheet(obj) {
	$('body').append('<div id="overlay" />');
	var pathArray = obj.href.split( '/' );
	$('body').css({height:'100%'});
	$('#overlay')
		.css({
			display: 'none',
			position: 'absolute',
			top:0,
			left: 0,
			width: '100%',
			height: '100%',
			zIndex: 10003,
			background: 'black url(/wp-content/themes/cegepsl/images/loading.gif) no-repeat fixed center'
		})
		.fadeIn(500,function(){
			$.get( obj.href+'&js',function(data){
				$('#stylesheet').attr('href','/wp-content/themes/cegepsl/css/' + data + '.css');
				cssDummy.check(function(){
					$('#overlay').fadeOut(500,function(){
						$(this).remove();
					});	
				});
				setCookie('style', data, 365, pathArray[3]);
				$.prettyPhoto.close();
			});
		});
		return true;
}

