// JavaScript Document

var pas_de_sous_menu = 0;
var current_slide;
var menu_ouvert;

/* Valeur pour la slide*/
var in_speed = 500;
var out_speed = 500;
var visible_left = 0;
var visible_left_realisation = 150;
var invisible_left = -700; //-565;

/* Valeur pour le sous-menu */
var in_speed_sous_menu = 500;
var out_speed_sous_menu = 300;
var visible_sous_menu_left = 154;
var invisible_sous_menu_left = -100;

var min_slide_height = 600; /* Hauteur minimum de la fenêtre */
var speed_height = 200;

var name_slide_default = "#default-slide";
var idname; 

var by_click;

/*------------------------------------------------------
	Ne doit fonctionner que pour un refresh ou un bookmark
*/
$(window).load(function() {
	showMenuRefresh();
	if(page_ajax) {
		showSheetRefresh();
	} else {
		slideAnim(name_slide_default);
	}
	createLinkPop();
});

/*-------------------------------------------------------
	Change la hauteur du menu et sous-menu en fonction du contenu
	Statut : ok
*/
function slideHeight(layer) {
	//get height of slide text
	layer = (layer == '') ? '#contents-box .slide-ajax' : layer;
	//alert(layer);
	var tmp_height = $(layer).innerHeight();
	//alert(tmp_height);
	// if height is less than min_slide_height value use that
	var slide_height = (tmp_height < min_slide_height) ? min_slide_height : tmp_height;
	
	//alert(layer+":"+slide_height);
	//set height of menu, submenu and contents box
	$('#menu-box').animate({height:slide_height},speed_height);
	$('.smenu-box').animate({height:slide_height},speed_height);
	$('#contents-box').animate({height:slide_height},speed_height);
}

/*------------------------------------------------------
	Retourne le nom de la page extrait du URL.
	Statut: Modifier pour le CMS
*/
function pageName(page_name_string){
	//var page_name_string = document.location.toString();		
	var page_name_array = page_name_string.split('/');
	var page_name = page_name_array[page_name_array.length - 1];
	/*-- kludge for ie6 --*/
	if( jQuery.browser.msie && (jQuery.browser.version < 7) ) {
		var page_name_array = page_name_string.split('/');
		var page_name = page_name_array[page_name_array.length - 1];
	}
	//  enleve le anchor du path ---->
	qstringpresent = page_name.split("#")
	if(qstringpresent.length>1){
		page_name = qstringpresent[0];
	}
	//page_name = trim_extension(page_name);
	return page_name
}





/*------------------------------------------------------------------
	Change la page affiché, après avoir fait la séquence animée
	Statut: Change de page mais ne fait pas l'animation
*/
function gotoPage(el){
	$url = $(el).attr('href');
	$id = $(el).attr('id');
	// Si la page demandé n'est pas la page active
	if($id != section){
		// Efface le sous-menu
		$('#contenant .smenu-box').animate({marginLeft: invisible_sous_menu_left, opacity: 0}, out_speed);
		
		if($('#'+current_slide).size()){
			$('#'+current_slide).animate({marginLeft: invisible_left, opacity: 0}, out_speed, function(){
				document.location = $url;
			});
		}else{
			$('#'+current_slide).animate({marginLeft: invisible_left, opacity: 0}, out_speed);
			document.location = $url;
		}
	}
}

/*----------------------------------------------------------------
	Affiche le sous-menu
	Statut: ok
*/
function showMenu(nom_du_lien){
	nom_du_lien = $(nom_du_lien).attr('id');
	
	if($(menu_ouvert).attr('id') != 'menu_'+nom_du_lien){
		$(menu_ouvert).animate({marginLeft: invisible_sous_menu_left, opacity: 0}, out_speed_sous_menu)
		$('#menu_'+nom_du_lien).animate({marginLeft: visible_sous_menu_left, opacity: 100}, in_speed_sous_menu, function(){
			// Bind le contenu à droite du menu pour le faire disparaitre si ont sort du menu
			$('#contents-box').bind('mouseover',function(){hideMenu();});
		});
	}else{
		$('#menu_'+nom_du_lien).animate({marginLeft: visible_sous_menu_left, opacity: 100}, in_speed_sous_menu, function(){
			$('#contents-box').bind('mouseover',function(){hideMenu();});
		});
	}
	//
	menu_ouvert = $('#menu_'+nom_du_lien);
	$('#smenu-box a').removeClass('active-menu');
	$('#'+nom_du_lien).addClass('active-menu');
}

/*-----------------------------------------------------------------
	Fait disparaître le sous-menu
	Statut : Ne permet que le fonctionnement de 1 sous-menu au total
*/
function hideMenu(){
	//pagename = trim_extension(pageName(document.location.toString()))
	$('.smenu-box').animate({marginLeft: invisible_sous_menu_left, opacity: 0}, out_speed_sous_menu);
	//$('#menu_'+pagename).animate({marginLeft: visible_sous_menu_left, opacity: 100}, in_speed_sous_menu);
	//menu_ouvert = $('#menu_'+pagename);
	$('#menu a').removeClass('active-menu');
	//$('#'+pagename).addClass('active-menu');
	$('#contents-box').unbind();
}

/*-------------------------------------------------------------------
	Highlight le sous-menu actif
	Statut: ok
*/
function highlightSousMenu(current_slide) {
	// Enlève la class 'active' sur le menu du portefolio
	$('.smenu-box ul li a').removeClass('active');
	// Enleve le onclick de la section précédente du menu
	$('.smenu-box ul li a').removeAttr('onclick');
	// Met la class 'active' à la section active du menu
	$('#'+current_slide).addClass('active');
// Ajoute un onclick pour retourner au contact sheet
	// Work: FF
	// Dont work : IE, Safari 
	//$('#'+current_slide).attr('onclick', 'gotoContactSheet(this); return false;');
	
}

	
/***********************************************************
	Glisse la slide dans l'écran
*/
function slideAnim(slide_id){
	//alert("Slideanim");
	/* Détermine si la slide à un sous-menu à gauche */
	pagename = section;//trim_extension(pageName(document.location.toString()));
	visible_left = ($('div').is('#menu_'+pagename)) ? visible_left_realisation : visible_left;
	// Agrandi le contenant au besoin
	slideHeight(slide_id);
	// Glisse l'écran
	$(slide_id).animate({marginLeft: visible_left, opacity: 100}, in_speed, function(){});
}

/*----------------------------------------------------------
	Affiche la pièce sélectionné dans la planche en AJAX seulement
	@el : identifiant de la piece
*/
function affichePiece(el) {
	//alert("AffcihePiece");
	current_sub = $(el).parents('dd').prev().attr('rel');
	current_piece = $(el).attr('rel');
	$('#contents-box').append('<div id="loader-message"><img src="fileadmin/templates/images/ajax-loader2.gif" width="32" height="32" /></div>');
	$('#ajax-item').load($(el).attr('href'));
	
	$('#ajax-item').ajaxComplete(function(event, XMLHttpRequest, ajaxOptions) {
		// Efface le loader
		$('#contents-box #loader-message').hide();
		// Affiche la fiche de l'item
		$('#pbci_realisations_item').fadeIn(400);
		// Efface le contact sheet et change le titre
		$('#pbci_realisations').fadeOut(150, function() {
			$('#pbci_realisations').css({display:'none'});
			slideHeight('#contents-box #ajax_l_'+subsection);
			changePageTitle('single');
		});
	});
	navState();
}

/*----------------------------------------------------------
	Change l'item affiché lorsque l'utilisateur clique sur la navigation (précédent et suivant)
	@el : Identifiant de la piece
	
*/
function changePiece(el) {
	//alert('ChangePiece');
	var action = $(el).attr('rel');
	var url;
	
	if(action == 'back' && current_piece > 1) {
		current_piece--;
	} else if (action == 'next' && current_piece < ss[current_sub][1][current_piece] ) {
		current_piece++;
	}
	
	urlId = ss[current_sub][1][current_piece-1];
	//alert(current_piece);
	url = 'index.php?id=52&tx_pbciportfolio_pi1[item]='+urlId;
	// Add loading gif !!!
	
	// Load le nouveau projet
	$('#contents-box').append('<div id="loader-message"><img src="fileadmin/templates/images/ajax-loader2.gif" width="32" height="32" /></div>');
	$('#ajax-item').load(url);
	
	// Change l'état de la navigation
	navState();
}

function navState() {
	var nombre_pieces = ss[current_sub][1].length;
	
	if(current_piece == 1 )
		$('#nav-precedent a').addClass('disable');
	else
		$('#nav-precedent a').removeClass('disable');
		
	if(current_piece >= nombre_pieces)
		$('#nav-suivant a').addClass('disable');
	else 
		$('#nav-suivant a').removeClass('disable');
}
/*-----------------------------------------------------------------
	Retourne à la planche des réalisations par le bouton Retour
*/
function gotoContactSheet(el) {
	var current_section_name = $(el).attr('id');
	//alert(current_section_name);
	displayContactSheet(current_section_name);
}

function displayContactSheet(el) {
	//alert("DisplayContactSheet");
	//alert(el);
	var current_section_name = el;
	var tmp_url = section_url + '#' + current_section_name;
	changePageTitle('contact_sheet');
	
	$('#pbci_realisations_item').fadeOut(200, function() {
		$('#pbci_realisations_item').css({display:"none"});											   
	});
	$('#pbci_realisations').fadeIn(300, function() {
		slideHeight('#contents-box #ajax_l_'+subsection);
	});
}
/*---------------------------------------------------------
/	Change le titre des pages pour les pages simples
/
*/
function changePageTitle(state) {
	spacer = ' :: ';
	if(state=='single') {
		$('p.surtitre').html(nomSection+spacer+nomCategorie);
		$('h1').html(ss[current_sub][0]);
	} else if (state=='contact_sheet') {
		$('p.surtitre').html(nomSection);
		$('h1').html(nomCategorie);
	}
}

/*---------------------------------------------------------
	Affiche la slide des planches contacts
	Statut:
*/
function showSheet(target,obj) {
//alert('showSheet');
	id_parent = '#contents-box';
	
	// Fait disparitre le loader
	$(id_parent+' #loader-message').hide();

	visible_left = visible_left_realisation;

	// Slide out the active slide
	var active_slide = $('#contents-box .active-slide').attr('id');
	
	var active_slide_section = (active_slide) ? active_slide.split('_') : '';//array[2]
	var new_slide_section = $(obj).attr('id').split('_'); // array[1]
	
	
	if(new_slide_section[1] != active_slide_section[2] || active_slide == undefined) {
		if(active_slide != undefined) {
			//alert('1');
		// Déjà du contenu dans la slide
			$('#'+active_slide).animate({marginLeft: invisible_left, opacity: 100}, out_speed, '', function(){
				$('#'+active_slide).removeClass('active-slide');
				
				// Empty slide
				$('#'+active_slide).html('');
				
				//Slide in the new slide
				displayContactSheet($(obj).attr('id'));
				
				slideHeight('#contents-box #ajax_'+$(obj).attr('id'));
				highlightSousMenu($(obj).attr('id'));
				changeUrl($(obj));
				$(target).animate({marginLeft: visible_left, opacity: 100}, in_speed, function(){
					$(target).addClass('active-slide');																		  	
				});
			});
		} else { 
		// Aucun contenu ou Reload
			//alert('reload')
			highlightSousMenu($(obj).attr('id'));
			changeUrl($(obj));
			//alert("ShowSheet");
			slideHeight('#contents-box #ajax_'+$(obj).attr('id'));
			
			$(target).animate({marginLeft: visible_left, opacity: 100}, in_speed, function(){
				$(target).addClass('active-slide');	
			});
		}
		
	} else {
	// Ajuste la hauteur lors du changement de section
		slideHeight('#contents-box #ajax_'+$(obj).attr('id'));
	}
}


/*****************************************************
*	Simule le clique dans le sous-menu pour
*	afficher la page 
*	Statut: OK
*/

function showSheetRefresh() {
	tmp_section = (extractAnchor('#')) ? extractAnchor('#') : '';
	showMenuRefresh();
	// Simule le click du sous-menu (fonction jqShowsheet !!Merci
	$('#l_'+tmp_section).trigger('click');
}
/*---------------------------------------------------
	Active le menu en fonction du URL lors d'un reload ou lien direct
	Statut: ok
*/
function showMenuRefresh() {
	
	pagename = section;//pageName(document.location.toString());
	selected_menu = $('#menu-box a[href$="' + pagename + '"]');
	
	selected_menu.addClass('active');
	/* Affiche le sous-menu */
	$('#menu_'+selected_menu.attr('id')).css('margin-left',visible_sous_menu_left);
	menu_ouvert = $('#menu_'+selected_menu.attr('id'));
}

/*---------------------------------------------------
	Attribut 
	Statut:
*/
(function($) {
	$.fn.jqShowSheet = function(options){
		var defaults = $.extend({}, $.fn.jqShowSheet.defaults, options);
		var z_index = 20;
		$('#contents-box').append('<div id="loader-message"><img src="fileadmin/templates/images/ajax-loader2.gif" width="32" height="32" /></div>');
		return this.each(function(){
			
			
			var $obj = $(this);
			var o = $.metadata ? $.extend({}, defaults, $obj.metadata()) : defaults;
			var $target = 'ajax_'+$obj.attr('id'); //ex: ajax_l_design
			$('#contents-box').append('<div class="slide-ajax" id="'+$target+'" style="z-index:'+z_index+';"></div>');
			var $target_id = '#ajax_'+$obj.attr('id');
			z_index++;
			$obj.bind('click', function(e) {
				// Fait apparaitre le loader
				$('#contents-box #loader-message').show();						
				
				$.ajax({
					async:'true',
					url:$obj.attr('href'),
					cache:'false',
					beforeSend:function(){
						if(typeof o.beforeSend == 'function'){
							o.beforeSend($obj,$target_id);
							}
					},
					success: function(msg){ 
						$($target_id).html(msg);
						if(typeof o.success == 'function'){
							//alert('complete');
    						o.success($obj,$target_id,msg);
    					} 						
    				},
					complete: function(msg){ 
						if(typeof o.complete == 'function'){
							//alert('complete');
    						o.complete($obj,$target_id);
    					} 						
    				},
					error: function(){
						$target_id.html("<p>" + o.errorMsg + "</p>");
						if(typeof o.error == 'function'){
    						o.error($target_id);
    					}  						
					}
				});
				return false;
			});
		});
	}
})(jQuery);

$.fn.jqShowSheet.defaults = {
	target: '#contents-box',
	success:function(obj,target){ showSheet(target,obj) },	
	errorMsg:'An error occured durign the page requesting process!'
};



/*--------------------------------------------------
	Enlève l'extension du nom de la page
*/
function trim_extension(pagename){
	pagename = pagename.split('.')
	return pagename[0];
}

/*---------------------------------------------------------
	Extrait la section du URL
*/
function extractAnchor($car) {
	anchor_name = document.location.toString().split($car);
	return anchor_name[1];
}

/*--------------------------------------------------------
 	Ajoute la section à la fin du URL
	Facilite le bookmark
*/
function changeUrl(obj) {
	idname = obj.attr('id').split('_');
	document.location = section_url+'#'+idname[1];
}

/*--------------------------------------------------------
	
*/
function rebuildLink($car) {
	tmpId = document.location.toString().split($car);
	tmpId_ = '#lien_'+tmpId[1];
	return tmpId_;
}


/**************** 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
		if (split_attr[4]==1) {w += 16; h += 0;}
		
	}
	sizeFix[0] = w;
	sizeFix[1] = h;
	return sizeFix
}


function createLinkPop() {	
	var doc_loc = document.location+ " ";
	var hq = doc_loc.indexOf("fitzback.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");
		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];
		// 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;
		});
	}
}
