
$(document).ready(function(){

	jQuery.easing.def = "easeOutQuad";

	var itemCenter = "#item_center";
	var itemLeft = "#item_left";
	var itemRight = "#item_right";
	var itemUp = "#item_up";
	var itemDown = "#item_down";
	var items = "#items";
	var projecttitle = "#projecttitle";
	var titre = "#titre";
	var titre_fond = "#titre_fond";
	var sstitre = "#sstitre";
	var sstitre_fond = "#sstitre_fond";
	var sstitre_in = "#sstitre_in";
	var leflash = "#leflash";
	var infos = "#infos";
	var cardinfo = "#cardinfo";
	var minis = "#minis";
	var btngrid = "#btngrid";
	var lienwww = "#lienwww";
	var fond = "#fond";
	var video = "#video";
	var dscrptf = "#dscrptf";
	var dscrptf_fond = "#dscrptf_fond";
	var musicimg = "#musicimg";
	var music = "#music";
	
	var currentItem = 0;
	var currentImage = 0;
	var duree = 500;
	var nbProjets = projects.length;
	var nbImages = 1;
	var leftShown = false;
	var rightShown = false;
	var sliding = false;
	var newWidth;
	var newHeight;
	var brwserWidth;
	var brwserHeight;
	var brwserRatio;
	var delaygrid = false;
	var flashset = false;
	var isfirstimage = true;
	var isdscrpt = false;
	var isflashset = false;
	var isflechescroll = true;
	var iscontact = false;
		
	
	// --------------------------------------------------------------------------------------------------------------------------------------------------
	// ------------------------------------------------       LET'S GO !       --------------------------------------------------------------------------
	// --------------------------------------------------------------------------------------------------------------------------------------------------
	
	if (page=='home') home();
	if (page=='work') debut();
	
	function home() {

		var ratio = 1600/900;
		var w = $(window).width();
		var h = Math.ceil($(window).width() / ratio);  
		var hb = $(window).height() - h - 6;
		
		var flashvars = {};
		var params = { wmode: "transparent", allowscriptaccess: "always" };
		var attributes = {};
		
		//$('#logohome').css({top:(h-150)/2});
		
		var vid = '<video src="video/gozen.ogg" src="video/gozen.mp4"  width="100%" height="'+ h +'" autoplay="true" loop="true"></video>';
		$('#intro').html(vid);
		
		$('#intro').css({height:h});
		$('#intro').css({top:(hb)/2});
		
		$('#infos').html('<img src="img/introtitle.jpg" />');
		
		setTimeout(function() { $('#logohome').fadeTo(1000, 1); }, 800);
		
		$("#infos_contact").mouseenter(function() { $("#infos_contact span").animate({ width: "50px", marginLeft: "82px" }, 400 ); });
		$("#infos_contact").mouseleave(function() { if(!iscontact) $("#infos_contact span").animate({ width: "104px", marginLeft: "28px" }, 400 );	});
		$("#infos_contact").click(function() { 
			if(!iscontact) $("#contactform").animate({bottom:100},400);	
			else $("#contactform").animate({bottom:-250},400);	
			iscontact = !iscontact;
		});
		
		setcontactvalidate();
		
	}
	
	function debut() {
		
		checkhash();
		
		setMoves();
	
		var imageSource = getCurrentImageSource();
		
		preloadImage(imageSource, debutComplete);	
		
	}
	
	function setMoves() {
	
		$('#nextbtn').click(function(e) { if(!sliding) nextItem(); });
		if(!$.browser.msie) {
			$('#nextbtn').mouseenter(function(e) { $("#nextbtn").animate({right:-120},100); $("#nextbtn .count_current").animate({left:50},100); $("#nextbtn .count_total").animate({left:50},100); });
			$('#nextbtn').mouseleave(function(e) { $("#nextbtn").animate({right:-140},100); $("#nextbtn .count_current").animate({left:90},100); $("#nextbtn .count_total").animate({left:90},100); });
		} else {
			$('#nextbtn').mouseenter(function(e) { $("#nextbtn").css({right:-120}); $("#nextbtn .count_current").css({left:50}); $("#nextbtn .count_total").css({left:50}); });
			$('#nextbtn').mouseleave(function(e) { $("#nextbtn").css({right:-140}); $("#nextbtn .count_current").css({left:90}); $("#nextbtn .count_total").css({left:90}); });
		}
		
		$('#prevbtn').click(function(e) { if(!sliding) prevItem(); });
		if(!$.browser.msie) {
			$('#prevbtn').mouseenter(function(e) { $("#prevbtn").animate({left:-125},100); $("#prevbtn .count_current").animate({left:137},100); $("#prevbtn .count_total").animate({left:137},100); });
			$('#prevbtn').mouseleave(function(e) { $("#prevbtn").animate({left:-145},100); $("#prevbtn .count_current").animate({left:90},100); $("#prevbtn .count_total").animate({left:90},100); });
		} else {
			$('#prevbtn').mouseenter(function(e) { $("#prevbtn").css({left:-125}); $("#prevbtn .count_current").css({left:137}); $("#prevbtn .count_total").css({left:137}); });
			$('#prevbtn').mouseleave(function(e) { $("#prevbtn").css({left:-145}); $("#prevbtn .count_current").css({left:90}); $("#prevbtn .count_total").css({left:90}); });
		}
		
		$(items).click(function(e) { 
			
			if(!sliding&&nbImages>1) { 
				currentImage++; 
				if(currentImage==nbImages && projects[currentItem][9]!="") if(!isdscrpt) toggledscrptf(true); else currentImage = 0;
				if(currentImage==nbImages && projects[currentItem][9]=="") currentImage = 0;
				if(currentImage==nbImages) currentImage = 0;
				if(currentImage<nbImages) {
					toggleminis(false);
					uncheck(currentImage);	
					nextImage(currentImage); 
				}
			}
			
		});
		
		$(leflash).css('display', 'none');

		fillCount();
	
	}
	
	function fillCount() {
		
		var tmp;
		var tmp2;
		
		tmp = currentItem+2; if(tmp > projects.length) tmp = 1; 
		if(tmp<10) tmp2 = '0' + tmp; else tmp2 = tmp;
		$("#nextbtn .count_total").html(projects.length);
		$("#nextbtn .count_current").html(tmp2);
		
		tmp = currentItem; if(tmp <=0 ) tmp = projects.length;
		if(tmp<10) tmp2 = '0' + tmp; else tmp2 = tmp;
		$("#prevbtn .count_total").html(projects.length);
		$("#prevbtn .count_current").html(tmp2);

	
	}
	
	function placeflash() {
		
		if(swfobject.hasFlashPlayerVersion("1")) {
			
			/*var flashvars = {};
			var params = { wmode: "transparent", allowscriptaccess:"always" };
			var attributes = {};
			
			swfobject.embedSWF("swf/logo.swf", "logo", "180", "180", "10.0.0","expressInstall.swf", flashvars, params, attributes);
			*/

			var flsh = '';
			flsh += '<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" WIDTH="180" HEIGHT="180" id="logoboom">';
			flsh += '<PARAM NAME=movie VALUE="swf/logo.swf"> ';
			flsh += '<PARAM NAME=quality VALUE=high> ';
			flsh += '<PARAM NAME=wmode VALUE=transparent>  ';
			flsh += '<PARAM NAME=allowScriptAccess VALUE=always>  ';
			flsh += '<EMBED src="swf/logo.swf" WIDTH="180" HEIGHT="180" WMODE="transparent" ALLOWSCRIPTACCESS="always" NAME="logoboom" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED> ';
			flsh += '</OBJECT>';
			$("#logo").html(flsh);	
		
			var flashvars = {};
			var params = { wmode: "transparent"};
			var attributes = {};
			
			swfobject.embedSWF("swf/thegrid2.swf", "btngrid", "150", "140", "10.0.0","expressInstall.swf", flashvars, params, attributes);
			
			flashset = true;
			
    	} else {
			
			$("#logo").html('<a href="http://www.theboomandthearty.com"><img src="img/logo.png" style="padding:10px;" /></a>');
			$(btngrid).html('<a href="#!thegrid" ><img src="img/thegridsmall.png" style="padding-top:11px;" /></a>');
			
    	}
	
		
		
	}
	
	function debutComplete() { 
		
		if(!flashset) placeflash();
		
		var imageSource = getCurrentImageSource();
	
		$(itemCenter)[0].src = imageSource;
		resizeImage();
		
		showTitle();
		
		checkmedias();
		
		if(delaygrid) gogrid();
		
	}
	
	function selectitemComplete() { 
	
		var imageSource = getCurrentImageSource();
		
		$(cardinfo).hide();
	
		$(itemCenter)[0].src = imageSource; 
		resizeImage();	

		showTitle();
		hideloading();
		checkmedias();
		
		if(!$.browser.webkit && !$.browser.safari) closegridfast();
		else closegrid();
		
	}
	
	function showloading() {
		
		$('#loadingicon').css('display', 'none');
		
		$('#loadingicon').css('z-index', '1001')
		$('#loadingicon').fadeTo(500, 1);
		
		$('#loadingzone').css('display', 'block');
	
	}
	
	function hideloading() {
	
		$('#loadingicon').stop().fadeTo(300, 0);
		
		$('#loadingzone').css('display', 'none');
	
	}
	
	// --------------------------------------------------------------------------------------------------------------------------------------------------
	// ------------------------------------------------       NAV       ---------------------------------------------------------------------------------
	// --------------------------------------------------------------------------------------------------------------------------------------------------
	
	$(document).mousemove(function(e){
	   
	   var mouseX = e.pageX;
	   var mouseY = e.pageY;
	   

	   if(mouseX < $(window).width()/3 + 100 && mouseY < newHeight && mouseY > 180 && !leftShown && !isgrid)  showLeftBtn();
	   if(mouseX > $(window).width()*2/3 - 100 && mouseY < newHeight && mouseY > 180 && !rightShown  && !isgrid) showRightBtn();
	   
	   if( ( (mouseX >= $(window).width()/3 + 100 && mouseX <= $(window).width()*2/3 - 100) || (mouseY > newHeight) || (mouseY < 180) ) && ( leftShown || rightShown)) hideBtns();

	   if(mouseX > 200 && mouseX < $(window).width()-200 && mouseY > 80 && mouseY < newHeight - 50 && !isgrid && isflechescroll && !isflashset) {
		   $("#flechescroll").css('top', e.clientY - 26).css('left', e.clientX - 10);
		   $("#flechescroll").show();
	   } else {
		   $("#flechescroll").hide();
	   }
	   
	});

	function showRightBtn() {

		if(!rightShown) {
		
			leftShown = false;
			rightShown = true;	
					
			if(!$.browser.msie) $("#nextbtn").animate({right:-140},200);
			else $("#nextbtn").css({right:-140});
			
		}
		
	}
	
	function showLeftBtn() {
	
		if(!leftShown) {

			leftShown = true;
			rightShown = false;		
			
			if(!$.browser.msie)	$("#prevbtn").animate({left:-145},200);
			else $("#prevbtn").css({left:-145});
			
		}
			
	}
	
	function hideBtns() { 

		leftShown = false;
		rightShown = false;	
		
		if(!$.browser.msie) {
		
			$("#nextbtn").animate({right:-200},200);
			$("#prevbtn").animate({left:-200},200);
			
		} else {
		
			$("#nextbtn").css({right:-200});
			$("#prevbtn").css({left:-200});
			
		}
			
	}
	
	function toggleBtns(show) {

		if(show) {
		
			sliding = false;
			
			//$(itemCenter).css('cursor', 'pointer');
		
			$("#nextbtn").fadeTo(400, 1);
			$("#prevbtn").fadeTo(400, 1);
			
		} else {
		
			//$(itemCenter).css('cursor', 'auto');
		
			$("#nextbtn").fadeTo(100, 0.2);
			$("#prevbtn").fadeTo(100, 0.2);
		
		}
			
	}
	
	function resizeImage() {
		
		// Browser
		// -------
		brwserWidth  = $(window).width();
		brwserHeight = $(window).height();
		brwserRatio  = brwserWidth / brwserHeight;
		
		$('#content').css({height: brwserHeight, width: brwserWidth});
		
		// Image
		// -----
		if ($('#item_center').width() > 1)  imgWidth  = $('#item_center').width(); 
		if ($('#item_center').height() > 1) imgHeight = $('#item_center').height();  
		
		imgRatio = 16/9;
		
		newWidth  = brwserWidth + 120;
		newHeight = newWidth/imgRatio;
		newTop = 0;
		newLeft =  -60; 
		
		if(parseFloat(newHeight/brwserHeight) < 0.84) { newWidth  = brwserWidth + 160; newLeft =  -80; }
		if(parseFloat(newHeight/brwserHeight) < 0.80) { newWidth  = brwserWidth + 180; newLeft =  -90; }
		if(parseFloat(newHeight/brwserHeight) < 0.76) { newWidth  = brwserWidth + 300; newLeft =  -150; }
		if(parseFloat(newHeight/brwserHeight) < 0.72) { newWidth  = brwserWidth + 400; newLeft =  -200; }
		
		newHeight = newWidth/imgRatio;

		if(newHeight>brwserHeight) $('body').css('height', newHeight+200 );

		$('#items').css({height: newHeight, width: brwserWidth});
		$('#items').css({visibility:"visible", display:"block"});
		$('.item').css({height: newHeight, width: newWidth});	
		
		$(itemCenter).css({top: newTop, left: newLeft});
		$(itemLeft).css({top: newTop, left: newLeft-newWidth});
		$(itemRight).css({top: newTop, left: newLeft+newWidth});
		$(itemUp).css({top: newTop-newHeight, left: newLeft});
		$(itemDown).css({top: newTop+newHeight, left: newLeft});
		
		resizefond();
		positionTitle();

	}
	
	$(window).resize(function(){
	
		if(page=='work') resizeImage();
		
	});
	
	function resizefond() {
			
		if(newHeight < brwserHeight-100) {
			
			$(fond).css({top:newHeight});
			$(fond).height(brwserHeight - newHeight);
			
		} else {
		
			$(fond).css({top:brwserHeight -100});
			$(fond).height(100);
		
		}

		$(fond).width(brwserWidth);
			
	}	
	
	function getCurrentImageSource(nb) {
		
		if(nb==null) nb = currentItem;
		else currentItem = nb;
		
		var nomImage = projects[nb][4].split('|')[currentImage];
		
		var chemin = '';
		
		if(checkSuffix(nomImage) == 'jpg') chemin = 'img/';
		if(checkSuffix(nomImage) == 'swf') chemin = 'swf/';
		
		var imageSource = chemin + nomImage;
		
		nbImages = projects[nb][4].split('|').length;

		return imageSource;
		
	}
	
	function checkSuffix(texte) {

		var sfx = texte.substr(texte.length-3, 3);
		
		return sfx;
	
	}
	
	function preloadImage(source, nextEvent) {
		
		/*var rand = '?random=' +  (new Date()).getTime(); 
		if(isfirstimage) { rand = ''; isfirstimage = false; }
		
		$('<img />').attr('src', source + rand).load(function(){
			$(this).oneTime(500, "preload", nextEvent);
		});*/
		
		$('<img />').attr('src', source).load(function(){
			$(this).oneTime(500, "preload", nextEvent);
		});

	}
	
	function positionTitle() {
		
		var position = $(fond).position();
		var top = position.top;
		
		$(titre).css({top:top - 38});
		$(titre_fond).css({top:top});
		$(sstitre).css({top:top+30});
		$(btngrid).css({top:top-73});
		$(music).css({top:top-10});
		$(musicimg).css({top:top-35});
		
		$("#nextbtn").css({top:top/2-30});
		$("#prevbtn").css({top:top/2-30});
		
		$(dscrptf).css({bottom:brwserHeight - top + 40}); 
		$(dscrptf_fond).css({height:newHeight});
		
		$(video).css('top', (top-450)/2);
		//$(lienwww).css({top:top + 10});
		
	}
	
	function setTitle() {
	
		var tmptitre = projects[currentItem][1].toUpperCase(); 
		if(projects[currentItem][5] != '') tmptitre = '<a href="http://' + projects[currentItem][5] + '" target="_blank">' + tmptitre + '</a>';
		
		$(titre).html(tmptitre);
		$(sstitre_in).html('<font class="infos">' + projects[currentItem][2] + ' / </font> ' + projects[currentItem][3]);
		
		$(titre).mouseenter(function(e) { if(projects[currentItem][5] != '') $(lienwww).fadeTo(100, 1); });
		$(titre).mouseleave(function(e) { if(projects[currentItem][5] != '') $(lienwww).fadeTo(100, 0); });
	
	}
	
	function setMinis() {
	
		var lesminis = '';
		var style='';
		isdscrpt = false;
		$('#minis').html('');
		
		if(nbImages>1) {
		
			for (i=0;i<nbImages;i++) {
				
				if(i==0) style='style="margin-left:10px" class="mini mini_1_on"'; else style = 'class="mini"';
				var mas = i + 1;
				lesminis += '<div nb="' + i + '" id="mini_' + mas + '" ' + style + '></div>';
			}
		} 
		
		if(nbImages>1) {  $(items).css('cursor', 'pointer'); isflechescroll = true; }
		else { $(items).css('cursor', 'auto'); isflechescroll = false; }

		if(projects[currentItem][9]!="") {
		
			if(nbImages==1) style='style="margin-left:5px"';
			$(dscrptf).css({left:-400});
			$(dscrptf_fond).css({left:-400});
			$(dscrptf).html(projects[currentItem][9]);
			lesminis += '<div nb="100" id="mini_dscr" '+ style +' class="mini"></div>';
			
		}
		
		$('#minis').html(lesminis);
		
		$('#minis .mini').click(function(e) { 
			
			var nb = $(this).attr('nb');
			
			if(nb!=currentImage&&nb!=100&&!sliding) {
			
				toggleminis(false);
				
				uncheck(nb);
				
				if(nb>currentImage) nextImage(nb); 
				else prevImage(nb);
				
			}
			
			if(nb==100) {
				
				if(!isdscrpt) {
					toggledscrptf(true);
				} else {
					toggledscrptf(false);
				}
				
			}
			
		});	

	}
	
	function toggledscrptf(boool) {
	
		if(boool) {
			isdscrpt = true;
			$("#mini_dscr").addClass('mini_dscr_on');
			$(dscrptf).animate({left:24},200);
			$(dscrptf_fond).animate({left:0},200);
			if(flashset) getFlashMovie("logoboom").swtlg('');
		} else {
			isdscrpt = false;
			$("#mini_dscr").removeClass('mini_dscr_on');
			$(dscrptf).animate({left:-300},200);
			$(dscrptf_fond).animate({left:-300},200);
			if(flashset) getFlashMovie("logoboom").swtlgbck('');
		}
	
	}
	
	function swtchlogoback() {
	
		if(flashset) getFlashMovie("logoboom").swtlgbck('');
		
	}
	
	function getFlashMovie(movieName) {
	
	  var isIE = navigator.appName.indexOf("Microsoft") != -1;
	  return (isIE) ? window[movieName] : document[movieName];
	  
	}
	
	function uncheck(idx) {
		
		 $("#minis .mini").each(function(i){
			var nb = parseInt($(this).attr('nb'));
			var mas = nb + 1;
			if(nb==idx) $(this).addClass('mini_'+mas+'_on');
			else $(this).removeClass('mini_'+mas+'_on');
		 });
	
	}
	
	
	function showTitle() {
		
		positionTitle() ;
		$(titre).css({left:-800});
		if(!$.browser.msie) $(titre).css({ opacity:1});
		$(titre_fond).css({left:-800});
		if(!$.browser.msie) $(titre_fond).css({ opacity:1});
		$(sstitre).css({left:-800});
		if(!$.browser.msie) $(sstitre).css({ opacity:1});
		$(btngrid).css('display', 'block');
		$(lienwww).css('display', 'none');
		
		setTitle();
		
		setMinis();
		
		fillCount();
		
		if($.browser.mozilla) $(titre_fond).width($(titre).width()/1.88 + 28); 
		else $(titre_fond).width($(titre).width() + 28);
		
		$(titre).animate({left:22},400);
		$(titre_fond).animate({left:0},400);
		$(sstitre).delay(300).animate({left:24},300);
		
		$(lienwww).css({top:newHeight + 11});
		$(lienwww).css({left:$(titre_fond).width() + 10});

	}
	
	function toggleminis(sens) {
	
		if(!sens) {
		
			$('#minis').fadeTo(200, 0.4);
			$("#flechescroll").stop().fadeTo(200, 0.2);
			sliding = true;
			
		} else {
			
			$('#minis').fadeTo(600, 1);
			$("#flechescroll").stop().fadeTo(400, 0.9);
			sliding = false;
		
		}
	
	}
	
	function hideTitle() {
		
		hideDscrptf();
		
		$(titre).fadeTo(100, 0);
		$(titre_fond).fadeTo(100, 0);
		$(sstitre).fadeTo(100, 0);
		$(sstitre_fond).fadeTo(100, 0);
	
	}
	
	function hideDscrptf() {
		
		$(dscrptf).css({left:-400});
		$(dscrptf_fond).css({left:-400});
	
	}
	
	
	
	
	function nextItem() {
	
		resetmedias();
		
		swtchlogoback();
		
		toggleBtns(false);
		sliding = true;
		
		currentItem += 1;		
		if(currentItem == nbProjets) currentItem = 0;
		
		currentImage = 0;
	
		var imageSource = getCurrentImageSource();  
		
		if(checkSuffix(imageSource) == 'jpg') preloadImage(imageSource, nextItemComplete);
		if(checkSuffix(imageSource) == 'swf') nextItemFlashComplete();
		
		histoire(currentItem, projects[currentItem][6]);	

	}
	

	function nextItemComplete() {
	
		if($.browser.webkit) {
		
			hideTitle();
		
			var imageSource = getCurrentImageSource();
			
			var centerLeftIni = $(itemCenter).position().left;
			var centerLeftEnd = $(itemCenter).position().left - $(itemCenter).width();
			var rightLeftIni  = $(itemRight).position().left;
			var rightLeftEnd  = $(itemCenter).position().left;
			
			$(itemRight)[0].src = imageSource;

			$(itemCenter).animate({left:centerLeftEnd}, duree);
			$(itemRight).animate({left:rightLeftEnd}, duree, function(){

				$(itemCenter)[0].src = imageSource;
				
				$(itemCenter).css({left:centerLeftIni});
				$(itemRight).css({left:rightLeftIni});
				
				showTitle();
				
				checkmedias();
				
				toggleBtns(true);
					
			});
			
		} else {
		
			var imageSource = getCurrentImageSource();
			$(itemCenter)[0].src = imageSource;
			showTitle();
			checkmedias();
			toggleBtns(true);

		}
				
	}

	
	function prevItem() {
	
		resetmedias();
		
		swtchlogoback();
		
		toggleBtns(false);
		sliding = true;
		
		currentItem -= 1;
		if(currentItem == -1) currentItem = nbProjets-1;
		
		currentImage = 0;
	
		var imageSource = getCurrentImageSource();
		
		if(checkSuffix(imageSource) == 'jpg') preloadImage(imageSource, prevItemComplete);
		if(checkSuffix(imageSource) == 'swf') prevItemFlashComplete();
		
		histoire(currentItem, projects[currentItem][6]);
		
	}
	
	
	function prevItemComplete() {
	
		if($.browser.webkit) {
		
			hideTitle();
		
			var imageSource = getCurrentImageSource();
			
			var centerLeftIni = $(itemCenter).position().left;
			var centerLeftEnd = $(itemCenter).position().left + $(itemCenter).width();
			var leftLeftIni  = $(itemLeft).position().left;
			var leftLeftEnd  = $(itemCenter).position().left;
			
			$(itemLeft)[0].src = imageSource;
			
			$(itemCenter).animate({left:centerLeftEnd}, duree);
			$(itemLeft).animate({left:leftLeftEnd}, duree, function(){
				
				$(itemCenter)[0].src = imageSource;
				
				$(itemCenter).css({left:centerLeftIni});
				$(itemLeft).css({left:leftLeftIni});
				
				showTitle();
				
				checkmedias();
				
				toggleBtns(true);
				
			});
			
		} else {
		
			var imageSource = getCurrentImageSource();
			$(itemCenter)[0].src = imageSource;
			showTitle();
			checkmedias();
			toggleBtns(true);

		}
				
	}
	
	
	function nextImage(idx) {
	
		resetmedias();
		
		currentImage = idx;
		
		var imageSource = getCurrentImageSource();

		preloadImage(imageSource, nextImageComplete);
	
	}

	function nextImageComplete() {
	
		if($.browser.webkit) {
		
			var imageSource = getCurrentImageSource();

			var centerTopIni = $(itemCenter).position().top;
			var centerTopEnd = $(itemCenter).position().top - $(itemCenter).height();
			var downTopIni   = $(itemDown).position().top;
			var downTopEnd   = $(itemCenter).position().top;
			
			$(itemDown)[0].src = imageSource;
			
			$(itemCenter).animate({top:centerTopEnd}, duree);
			$(itemDown).animate({top:downTopEnd}, duree, function(){
			
				$(itemCenter)[0].src = imageSource;
				$(itemCenter).css({top:centerTopIni});
				$(itemDown).css({top:downTopIni}); 
				
				toggleminis(true);
				
				checkmedias();
				
			});
			
		} else {
		
			var imageSource = getCurrentImageSource();
			$(itemCenter)[0].src = imageSource;
			checkmedias();
			toggleminis(true);

		}
		
	}

	function prevImage(idx) {
	
		resetmedias();
		
		currentImage = idx;
		
		var imageSource = getCurrentImageSource();	
		preloadImage(imageSource, prevImageComplete);
	
	}

	function prevImageComplete() {
	
		if($.browser.webkit) {

			var imageSource = getCurrentImageSource();

			var centerTopIni = $(itemCenter).position().top;
			var centerTopEnd = $(itemCenter).position().top + $(itemCenter).height();
			var upTopIni   = $(itemUp).position().top;
			var upTopEnd   = $(itemCenter).position().top;
			
			$(itemUp)[0].src = imageSource;
			
			$(itemCenter).animate({top:centerTopEnd},duree);
			$(itemUp).animate({top:upTopEnd}, duree, function(){
			
				$(itemCenter)[0].src = imageSource;
				$(itemCenter).css({top:centerTopIni});
				$(itemUp).css({top:upTopIni});
				
				toggleminis(true);
				
				checkmedias();
				
			});
			
		} else {
		
			var imageSource = getCurrentImageSource();
			$(itemCenter)[0].src = imageSource;
			checkmedias();
			toggleminis(true);

		}
		
	}
	
	function trace(texte) {
		
		$("#traces").css('display', 'block');
		$("#traces").html(texte);
	
	}
	
	
	
	
	
	// --------------------------------------------------------------------------------------------------------------------------------------------------
	// -------------------------------------------------       MEDIAS       -----------------------------------------------------------------------------
	// --------------------------------------------------------------------------------------------------------------------------------------------------
	
	function checkmedias() {
		
		isvideo();
		isflash();
		
	}
	
	function showvideo(id, type) {
	
		var iframe;
		
		if (type == 'vimeo')   iframe = '<iframe src="http://player.vimeo.com/video/' + id + '?title=0&amp;byline=0&amp;portrait=0" width="800" height="450" frameborder="0"></iframe>';
		if (type == 'youtube') iframe = '<iframe width="800" height="500" src="http://www.youtube.com/embed/' + id + '" frameborder="0" allowfullscreen></iframe>';
		
		$(video).css('top', (newHeight-450)/2);
		$(video).css('display', 'block');
		$(video).html(iframe);
	
	}
	
	function isvideo() {
		
		var vids = projects[currentItem][7];
		
		if (vids) {
		
			var id = vids.substr(0, vids.indexOf('|'));
			var position = vids.substr(vids.indexOf('|')+1, 1);
			
			if(position == currentImage) {
			
				if(id.charAt(0) == 'y') showvideo(id.substr(2, id.length-2), 'youtube');
				else showvideo(id, 'vimeo');
				
			}
		
		}
	
	}
	
	function isflash() {
		
		var swf = projects[currentItem][8];
		
		isflashset = false;
		
		if (swf) {
		
			var nom = swf.substr(0, swf.indexOf('|'));
			var position = swf.substr(swf.indexOf('|')+1, 1);
			
			if(position == currentImage) {
				
				$(leflash).css('display', 'block');
				
				var flashvars = {};
				var params = { wmode: "opaque", allowscriptaccess:"always" };
				var attributes = {};
				
				swfobject.embedSWF('swf/'+nom, "leflash", "100%", "90%", "10.0.0","expressInstall.swf", flashvars, params, attributes);
				
				isflashset = true;
			
			}
		
		}
	
	}
	
	function resetmedias() {
	
		$(video).html('');
		$(video).css('display', 'none');
		
		$(leflash).html('');
		$(leflash).css('display', 'none');
		
		$('#cardinfo').hide();

	}
	
	
	// --------------------------------------------------------------------------------------------------------------------------------------------------
	// ------------------------------------------------     GRID      -----------------------------------------------------------------------------------
	// --------------------------------------------------------------------------------------------------------------------------------------------------
	
	
	var MAX_X = 8;
	var MAX_Y = 16;
	var isgrid = false;
	var nbcards = 0;
	var tab = new Array(MAX_X);	

	function gogrid(fast) {
	
		resetmedias();
		
		MAX_Y = Math.ceil(1.7*MAX_X*($(window).height())/$(window).width());
		
		initGrid(); fillGrid(); displayGrid(fast);
		
		histoire(currentItem, 'thegrid');
		
	}
	
	window.gogridflash = function() {
	
        gogrid();
		
    };
	
	$(window).resize(function() {
							  
	  if(isgrid) gogrid();
	  
	});
	
	function initGrid() {
		
		for (i=0; i < MAX_X; i++) {
			
			tab[i] = new Array(MAX_Y);
		
			for (j=0; j < MAX_Y; j++) tab[i][j] = 1;
			
		}
			
	}
	
	function fillGrid() {
	
		for (i=0; i < MAX_Y; i++) {
			
			for (j=0; j < MAX_X; j++) {
				
				var nbCases = 1 + Math.floor(Math.random()*4);
				
				if(nbCases>3) nbCases = 1
				
				if(checkCase(nbCases, j, i)) {
									
					fillCases(nbCases, j, i);
				
				} else {
					
					//tab[i][j] = 0;
					
				}
			}
			
		}
		
	}
	
	function checkCase(nb, i, j) {
	
		var result = true;
		
		if(tab[i][j] != 1) {
			
			result = false;
			
		} else {
			
			for (k=0; k < nb; k++) {
				
				if((i+k>MAX_X-1)||(j+k>MAX_Y-1)) {
					
					result = false;
					
				} else {
					
					if (tab[i+k][j] != 1) result = false;
					
				}
				
			}
			
		}
		
		return result;
		
	}
	
	function fillCases(nb, i, j) {
		
		for (k=0; k < nb; k++) {
			
			for (l=0; l < nb; l++) {
				
				if((i+k<MAX_X)&&(j+l<MAX_Y)) tab[i+k][j+l] = nb;
				
				if((k>0)||(l>0)) tab[i+k][j+l] = 0;
			
			}
	
		}
		
	}
	
	function displayGrid(fast) {
	
		if(!$.browser.webkit && !$.browser.safari) fast = true;
		
		if(flashset&&isdscrpt) swtchlogoback();

		var w = Math.ceil($(window).width()/MAX_X);
		var h = Math.ceil($(window).height()/MAX_Y);
		
		var tmp = '';
		var index = 1;
		var images = new Array();
		
		for (i=0; i < projects.length; i++) {
			
			var nbImages = projects[i][4].split('|').length;
			if (nbImages>3) nbImages = 3;
			
			var nomProjet = projects[i][1];
			
			for (j=0; j < nbImages; j++) {
			
				var nomImage = projects[i][4].split('|')[j];
				var idx = projects[i][0]; 
				if(nomImage.substr(nomImage.length-3, 3) == 'jpg') images.push(idx + '@' + nomProjet+ '|' + nomImage);
			
			}
		
		} 
		
		shuffle(images);
		
		for (i=0; i < MAX_Y; i++) {
			
			for (j=0; j < MAX_X; j++) {
				
				var coef = tab[j][i];
				
				if(coef>0) {
				
					var t = i*h;
					var l = j*w;
					
					var wdth = w*coef-1;
					var hght = h*coef-1;
		 
					var style = 'width:' + wdth + 'px; height:' + hght + 'px; top:' + t + 'px; left:' + l + 'px;';
					
					var imgtmp;
					if(index<images.length) imgtmp = images[index];
					else imgtmp = images[Math.floor(Math.random()*images.length)];
					var idx = imgtmp.substr(0, imgtmp.indexOf('@')); 
					var img = imgtmp.substr(imgtmp.indexOf('|')+1, imgtmp.length-imgtmp.indexOf('|')); 
					var prjt = imgtmp.substr(imgtmp.indexOf('@')+1, imgtmp.length-imgtmp.indexOf('@')-img.length-2); 
					
					var classimage = '';
					if(!fast) classimage = 'class="transparent_0"';
					/*var image;
					if(index<images.length) image = '<img src="img/mini/' + img + '" />';
					else image = ''; */
					var image = '<img src="img/mini/' + img + '" ' + classimage + ' />';
					
					var classe = 'card';
					if(!fast) if(index%2==0) classe+= ' cardX'; else classe+= ' cardY';
					
					style += '';
					
					tmp += '<div nb="' + idx + '" prjt="' + prjt +'" wdth="' + wdth + '" hght="' + hght + '" id="card_' + index + '" class="' + classe + '" style="' + style +'">' + image + '</div>'; 
					
					index++;
					
				}
				
			}
			
			if(fast) isgrid = true;
			else setTimeout(function() { isgrid = true; }, 1000);
			
			
		} 
		
		nbcards = index;
		
		$('#grid').css('display', 'block');
		$('#grid').width($(window).width());
		$('#grid').height($(window).height());
		$('#grid').html(tmp);
		
		$('#grid .card').mouseover(function(e) { 
		
			var w = parseInt($(this).attr('wdth'));
			var h = parseInt($(this).attr('hght'));	
			var position = $(this).position();
			var t = position.top;
			var l = position.left;	
			
			if(isgrid) {
				
				$('#cardinfo').width(w);
				$('#cardinfo').height(h);
				$('#cardinfo').css({top:t});
				$('#cardinfo').css({left:l});
				$('#cardinfo').show();
				
				idxprojectover = parseInt($(this).attr('nb')); 
	
				$('#cardinfo .ptop').stop();
				$('#cardinfo .pbottom').stop();
				
				$('#cardinfo p').height(h/5);
				$('#cardinfo .ptop').css({top:-h/5});
				$('#cardinfo .pbottom').css({bottom:-h/5});
				$('#cardinfo .ptop').animate({top:0},400);
				$('#cardinfo .pbottom').animate({bottom:0},400);
				
				$('#cardinfo div').css('opacity', 0);
				$('#cardinfo div').stop().fadeTo(200, 0.5)
				
				var hh = 3*h/5 * 1;
				var nb = $(this).attr('prjt').length;
				$('#cardinfo span').css('fontSize', hh + 'px')
				//$('#cardinfo span').css('fontSize', w/nb*2.2 + 'px')
				
				$('#cardinfo span').html($(this).attr('prjt'));
				$('#cardinfo span').css({top:h/5 - h*0.06});
				$('#cardinfo span').css({left:w+10}); 
				$('#cardinfo span').stop().delay(400).animate({left:-$('#cardinfo span').width() - 100}, nb*300);
			
			}
					
		});
		
		$('#cardinfo').click(function(e) { cardclick(idxprojectover); });	
		
		$('#grid .card').mouseout(function(e) { 

		});
		
		$('#grid .card').click(function(e) { 	
			
			var nb = parseInt($(this).attr('nb'));
			cardclick(nb);
			
		});	
		
		function cardclick(nb) {
			
			if(isgrid) {
				
				showloading();
				
				isgrid = false;
		
				currentItem = nb;
				currentImage = 0;
				
				hideDscrptf();
				
				var imageSource = getCurrentImageSource();
				preloadImage(imageSource, selectitemComplete);
				
				histoire(currentItem, projects[currentItem][6]);
			
			}
			
		}

		tmptab = new Array();
		for (i=0; i < nbcards; i++) tmptab.push(i);
		shuffle(tmptab);
		
		idxtmp = 0;
		
		if(!fast) {
		
			for (i=0; i < tmptab.length; i++) {
				
				$('#card_' + tmptab[i]).oneTime(20*(i+1), function() {
					
					if(i%2==0) $(this).css('-webkit-transform', 'rotateX(0deg)');
					else $(this).css('-webkit-transform', 'rotateY(0deg)');
					
					$(this).find('img').css({opacity:0}).delay(800).fadeTo(200, 1);
				
				});
				
			}
		}

	}
	
	var idxprojectover = 0;	
	var idxtmp = 0;
	var tmptab;
	
	function closegrid() {
	
		var duree = 10;
		
		var tmptab = new Array();
		for (i=0; i < nbcards; i++) tmptab.push(i);
		shuffle(tmptab);
		
		$('#grid').find('img').css('display', 'none')

		for (i=0; i < tmptab.length; i++) {
				
			$('#card_' + tmptab[i]).oneTime(duree*(i+1), function() {
	
				$(this).css({opacity:0}).fadeTo(duree, 0);
			
			});
			
		}
		
		$('#grid').oneTime(duree*(nbcards*3), function() {
				
			$('#grid').css('display', 'none');
		
		});

	}
	
	function closegridfast() {
	
		$('#grid').css('display', 'none');
		
	}
	

	function shuffle(myArray) {
	
		var i = myArray.length;
		if ( i == 0 ) return false;
		
		while ( --i ) {
			var j = Math.floor( Math.random() * ( i + 1 ) );
			var tempi = myArray[i];
			var tempj = myArray[j];
			myArray[i] = tempj;
			myArray[j] = tempi;
		}
	
	}
	
	
	
	// --------------------------------------------------------------------------------------------------------------------------------------------------
	// ------------------------------------------------       HISTORY       -----------------------------------------------------------------------------
	// --------------------------------------------------------------------------------------------------------------------------------------------------


	function histoire(nb, texte) { 
		
		isback = false;
		location.hash = '!' + texte;
		
	}
	
	function checkhash() {
	
		var tmp = location.hash;
		
		if(retrieveindex(tmp)!=-1) currentItem = retrieveindex(tmp)
		
		if(tmp=='#!thegrid') delaygrid = true;
	
	}
	
	function retrieveindex(hash) {
	
		var retour = -1;
		var hsh = hash.substr(2, hash.length-2);
		
		for (var i = 0; i<projects.length; i++) if(hsh == projects[i][6]) retour = i;
		
		return retour;
		
	}
	
	var isback = true;
	
	$(window).bind('hashchange', function () {
	
		if(isback) {
		
			var hsh = window.location.hash;
			var nb = retrieveindex(hsh);
			
			if(isgrid) closegridfast();
			
			if(hsh=='#!thegrid') gogrid(true);
			if(hsh=='') nb = 0;
			
			if(nb>=0) {
				
				resetmedias();
				
				currentImage = 0;
				
				var imageSource = getCurrentImageSource(nb);
				$(itemCenter)[0].src = imageSource;
				resizeImage();
				showTitle();
				checkmedias();
				
			}

		}
		
		isback = true;

	});
	
	
	// --------------------------------------------------------------------------------------------------------------------------------------------------
	// ------------------------------------------------       CONTACT       -----------------------------------------------------------------------------
	// --------------------------------------------------------------------------------------------------------------------------------------------------
	
	function setcontactvalidate() {
		
		$("#contactform").validate({
				debug: false,
				submitHandler: function(form) {
					$.post('php/mailquery.php', $("#contactform").serialize(), function(data) {
						$('#contactform #message').val('Merci / Gracias / Thanks !');
						iscontact = false;
						setTimeout(function() { 
							$("#contactform").animate({bottom:-250},400);
							$("#infos_contact span").animate({ width: "104px", marginLeft: "28px" }, 400 );
						}, 1000);
					});
				}
			});
	
	}

	

});


	
