/*
 * MiniBox
 * Copyright : SIF 2008
 * Inspired by ThickBox 3.1
*/

var mb_pathToImage = "minibox/loadingAnimation.gif";

var mb_tempo = new Array();
var currentId;
var IdArray = new Array();

//on page load call mb_init
$(document).ready(function(){
	mb_init('a.minibox');//pass where to apply thickbox
	imgLoader = new Image();// preload image
	imgLoader.src = mb_pathToImage;
});

//add thickbox to href elements that have a class of .minibox
function mb_init(domChunk){
	$(domChunk).mouseover(function(e){
		if(!this.id) {var date=new Date(); this.id = date.valueOf(); IdArray.push(this.id)} 
		clearTimeout(mb_tempo[this.id]);
		if($("#MB_window").css("display")=="none" || $("#MB_window").css("display")==undefined || currentId!=this.id) {
			//On annule toutes les tempos
			for(var i=0; i < IdArray.length; i++)
				clearTimeout(mb_tempo[IdArray[i]]);
			//On efface le div
			mb_remove();
			//
			currentId = this.id;
			var mousex = e.pageX;
			var mousey = e.pageY;
			var a = this.href || this.alt;
			var g = this.rel || false;
			//alert(g.lastIndexOf(']',0));
			var date = g.substring(g.indexOf('[',0)+1,g.lastIndexOf(']',g.length));
			var img = this.childNodes[0].src;
			img = img.substring(0,img.lastIndexOf('/',img.length)+1)+"zoom_"+img.substring(img.lastIndexOf('/',img.length)+1,img.length);
			var t = this.childNodes[0].alt;
			mb_show(t,a,img,date,mousex,mousey,this.id);
			//this.blur();
		}
		return false;
	});
	$(domChunk).mouseout(function(e){
		mb_tempo[this.id] = setTimeout(mb_remove, 100);
		this.blur();
		return false;
	});
	$(domChunk).click(function(e){
		this.blur();
		return true;
	});
}

function mb_show(caption, url, img, imageGroup, Xpos, Ypos, idElement) {//function called when the user clicks on a minibox link
	try {
		if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
			$("body","html").css({height: "100%", width: "100%"});
			$("html").css("overflow","hidden");
			if (document.getElementById("MB_window") === null) {//iframe to hide select elements in ie6
				$("body").append("<div id='MB_window'></div>");
			}
		}else{//all others
			if(document.getElementById("MB_overlay") === null){
				$("body").append("<div id='MB_window'></div>");
			}
		}
	
		
		imgPreloader = new Image();
		imgPreloader.onload = function(){
			imgPreloader.onload = null;
			$("#MB_load").hide();
			$("#MB_divimage").append("<img src=\""+img+"\" alt=\""+caption+"\" width=\"300\" height=\"170\" style=\"margin: 0;\" />");
		};
		
		//$("#MB_window").append("<a href='' id='MB_ImageOff' title='Fermer'><img id='MB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='MB_caption'>"+caption+"<div id='MB_secondLine'>" + MB_imageCount + MB_PrevHTML + MB_NextHTML + "</div></div><div id='MB_closeWindow'><a href='#' id='MB_closeWindowButton' title='Fermer'>Fermer</a></div>");
		$("#MB_window").append("<div style=\"width: 300px; height: 170px; padding: 0;\" id=\"MB_divimage\"><img id=\"MB_load\" src=\""+imgLoader.src+"\" alt=\"\" style=\"margin-left: 135px; margin-top: 70px;\" /></div><p class=\"nomsite\">"+caption+"</p><p class=\"creationsite\">Réalisation : "+imageGroup+"</p><p class=\"liensite\"><a href=\""+url+"\" target=\"_blank\">voir le site</a></p>");

		$("#MB_window").mouseover(function(e){
			clearTimeout(mb_tempo[idElement]);
			$("#MB_window").css({display:"block"});
		});
		$("#MB_window").mouseout(function(e){
			mb_tempo[idElement] = setTimeout(mb_remove, 100);
		});

		//Calcul de la position du cadre à afficher
		var pagesize = mb_getPageSize();
		var pagescroll = mb_getPageScroll();
		MB_WIDTH = $("#MB_window").width();
		MB_HEIGHT = $("#MB_window").height();
		
		var bottomspace = pagesize[1]+pagescroll[1]-Ypos;
		var topspace = pagesize[1] - bottomspace;
		var rightspace = pagesize[0]+pagescroll[0]-Xpos;
		var leftspace = pagesize[0] - rightspace;
		
		//Rectification des positions en fonction de l espace dispo
		if((bottomspace-30)>MB_HEIGHT) {
			;
		} else if(topspace>MB_HEIGHT) {
			Ypos = Ypos-MB_HEIGHT;
		} else {
			Ypos = pagescroll[1]+(pagesize[1]-MB_HEIGHT)/2;
		}
		
		if((rightspace-50)>MB_WIDTH) {
			;
		} else {
			Xpos = Xpos-MB_WIDTH;
		}
		
		mb_position(Xpos,Ypos);
		
		$("#MB_window").css({display:"block"}); //for safari using css instead of show
		
		imgPreloader.src = img;
		
	} catch(e) {
		alert(e);
		//nothing here
	}
}

//helper functions below
function mb_showIframe(){
	clearTimeout(mb_tempo);
	$("#MB_window").css({display:"block"});
}

function mb_remove() {
	$('#MB_window').trigger("unload").unbind().remove();
	$("#MB_window").css({display: "none"});
	if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
		$("body","html").css({height: "auto", width: "auto"});
		$("html").css("overflow","");
	}
	return false;
}

function mb_position(X,Y) {
	$("#MB_window").css({top: Y + 'px', left: X + 'px'});
}

function mb_parseQuery ( query ) {
   var Params = {};
   if ( ! query ) {return Params;}// return empty object
   var Pairs = query.split(/[;&]/);
   for ( var i = 0; i < Pairs.length; i++ ) {
      var KeyVal = Pairs[i].split('=');
      if ( ! KeyVal || KeyVal.length != 2 ) {continue;}
      var key = unescape( KeyVal[0] );
      var val = unescape( KeyVal[1] );
      val = val.replace(/\+/g, ' ');
      Params[key] = val;
   }
   return Params;
}

function mb_getPageSize(){
	var de = document.documentElement;
	var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
	var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
	arrayPageSize = [w,h];
	return arrayPageSize;
}


function mb_getPageScroll() {
	var yScroll;
	var xScroll;
	if (self.pageXOffset) {
		xScroll = self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollLeft){ // Explorer 6 Strict
		xScroll = document.documentElement.scrollleft;
	} else if (document.body) {// all other Explorers
		xScroll = document.body.scrollLeft;
	}
	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){ // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array(xScroll,yScroll)
	return arrayPageScroll;
}