var colors =[
	"#d1d3d3","#dddedd","#d1f1ec",
	"#E60042","#CCF600","#AC2B50",
	"#A1B92E","#95002B","#85A000",
	"#969192","#F23D70","#DAFB3F",
	"#969293","#F23D70","#E3FB71"];
var nombre;
var bg=-1;
var a = 50;
var postsID =  new Array ();
var nPosts=0;
var currentPost = -1;
jQuery().ready(function(){
		if (IE){
			$("#nav").hide();
			$("#wrap").hide();
			$(".share").hide();
			$("#IE").show();
		}
	$(window).load(function(){

	
		loader(0);	
		positionH1();
		positionH2();
		resize($(window).width(), $(window).height());
		colorize();
		$("h2").animate({opacity : 1.0},2000, function(){
				$("#nav").animate({opacity : 1.0}, 500, function(){
					if(typeof $.address.parameter("post")!="undefined"){
						if($.address.parameter("post")!=-1){
							if($.address.parameter("image")!=-1){
								bg = $.address.parameter("image");
							}
							var tempnPost = $.address.parameter("post") % nPosts;
							openOrClose(postsID[tempnPost]);
							
						}
					}
				});	
			
			resize($(window).width(), $(window).height());			
		});
		nPosts = $("#nav ul li").length
		postsID =  new Array (nPosts);
		$("#nav ul li").each(function(i){
			 postsID[i]=$(this).children("a").attr('id');
		});
	});
	
	$(".hide").click(function(){
		contractPost();
		return false;
	});	
	$(".next").click(function(){
		bg++;
		bg = bg % nombre;
		background($('#post img').eq(bg), bg); 
		return false;
	});
	$(".prev").click(function(){
		bg--;
		if(bg<0)bg=nombre-1	;
		bg = (bg) % nombre;
		background($('#post img').eq(bg), bg); 
		return false;
	});
	$(".nextPost").click(function(){
		currentPost++;
		currentPost = currentPost % nPosts;
		openOrClose(postsID[currentPost]);
		var urlTemp = "?post="+postsID[currentPost];
		return false;
	});
	$(".prevPost").click(function(){
		currentPost--;
		if(currentPost<0)currentPost=nPosts-1	;
		currentPost = (currentPost) % nPosts;
		openOrClose(postsID[currentPost]);
		var urlTemp = "?post="+postsID[currentPost];
		
		return false;
	});	
	
	$("#nav ul li a").hover(function() { 
	   
		$(this).animate({'color': col()}, 200);
	},function() { //mouseout
		if($(this).attr('open')!="true"){
			$(this).animate({'color': "#eee"},500);
		}
	});	
	$("#controlPost a").hover(function() { 
		$(this).animate({'color':colors[Math.floor(Math.random() * 15)]},200);
	},function() { //mouseout
		$(this).animate({'color':'#fc0'},200);
	});	
	$("#nav ul li a").click(function(){
		openOrClose($(this).attr("id"));
	});
	$(window).resize(function() {
		resize($(window).width(), $(window).height());
	});
	$(".share").hover(function() { 
		$(this).animate({'left': 13},250);
	},function() { //mouseout
		$(this).animate({'left': 0},250);
	});	
});


function contractPost(){
		$("#controlPost").children("p").toggle();
		$("#post").toggle(750);
		
		a=55-a;
		$("#wrap").animate({'top': a},750);
		if(a>10){
		
			$('#post img').each(function(i){
				var thisImage = $('#post img').eq(i);
				reposition(thisImage);
			});
		}else{
			
		}
		if(bg==-1){ 
			bg=0;
			background($('#post img').eq(bg), bg);
		}
}

function urlIt(){
	$.address.value('');
	$.address.strict (0);
	if(currentPost!=-1){
		$.address.parameter('post',  ""+currentPost+"", true);
		if(bg!=-1){
			$.address.parameter('image', ""+bg+"", true);	
		}	 
	}
	changeHref("FB", escape($.address.baseURL()+"/#"+$.address.value()));
	changeHref("TW", escape($.address.baseURL()+"/#"+$.address.value()));
}
function changeHref(name, url){
	if(name=="FB"){
		var titre = $("#wrap").children("#controlPost").children("p").children("#over_titre").html(titre);
		var link = ("http://www.facebook.com/sharer.php?u="+url);
		$("#shareFacebook").children("a").attr("href", link);
	}else if(name=="TW"){
		var titre = $("#wrap").children("#controlPost").children("p").children("#over_titre").html(titre);
		var link = ("http://twitter.com/home?status=Currently reading : "+url);
		$("#shareTwitter").children("a").attr("href", link);
	}
}

function openOrClose(thisIdPost){
	if(!loader("visible")){
		var pOpen= $(".open");
		if(typeof pOpen.attr("id")=="undefined"){
			open(thisIdPost);
		}else{
			if(checkOpenPost(pOpen)){
				close(pOpen);
			}
			if(pOpen.attr("id")!= thisIdPost){	
				open(thisIdPost);
			}
		}
		urlIt();
	}
}




function checkOpenPost(POST){ 
	var retour = false;
	var checkOpen = POST.attr('class');
	if(checkOpen=="open"){
		retour = true;
	}
	return retour;
} 
 
function close(post){
	$("#wrap").animate({opacity : 0.0},200, function(){
		post.removeClass('open');
		post.animate({'color': "#eee"},200);
		bg=-1;
		background ("rest", bg);
	});
}

function open(post){
	for(var i=0; i<nPosts;i++){
		if(post==postsID[i]){
			currentPost=i;
			break;
		}
	}
	var temp = "#"+post;
	$(temp).addClass('open');
	loadAjax(post, $("#post"));
}		

function loadAjax(elem, monPost){
	loader(1);
	var monID = elem;//.attr("id")
	$.get("", { p: monID }, function(data){
		monPost.empty();
		monPost.prepend(data);
		var titre = $('#post').children("blockquote").children("h3").text();
		$("#wrap").children("#controlPost").children("p").children("#over_titre").html(titre);	
		$('#post img').unwrap();
		nombre = $('#post img').length;
		$("#post blockquote a").attr({
			"onMouseOver":"$(this).addClass('hover');$(this).animate({'color':colors[Math.floor(Math.random() * 15)]},200)",
			"onMouseOut":"$(this).removeClass('hover')"
		});
		$('#post img').each(function(i){
			var thisImage = $('#post img').eq(i);
			var entier = thisImage.attr("src");
			thisImage.attr({
				"entier": entier,
				"onLoad":"if($(this).attr('perfor')==null){$(this).attr('perfor', grayscaleImage($(this)[0]));var temp = $(this).attr('perfor');$(this).attr('src', temp);reposition($(this))}",
				"onClick":"background($('#post img').eq("+i+"), "+i+") ",
				"onMouseOver":"var entier = $(this).attr('entier'); $(this).attr('src', entier)",
	    		"onMouseOut":"var perfor = $(this).attr('perfor'); $(this).attr('src', perfor);"
			});
		});				
		if(!$("#post").is(':visible'))background($('#post img').eq(0), 0)	
		$('#wrap').animate({opacity : 1.0},1000, loader(0)) 
		if(typeof $.address.parameter("image")!="undefined"){
			if($.address.parameter("image")!=-1){
				var tempnImage = $.address.parameter("image")%nombre;
				background($('#post img').eq(tempnImage), tempnImage);
/* 				if(typeof $.address.parameter("open")!="undefined"){
					if(typeof $.address.parameter("open")==false){
						contractPost();		
					}					
				} */
			}
		}
	});
}

function background (value, i){ 
	var b;
	if(value =="rest"){
	bg = i;
	$("#wrap").children("#controlPost").children("p").children("#cImage").empty();
		$("#video").empty();
		$("html").css("background" ,"url() no-repeat center center fixed"); 
		$("html").css("-webkit-background-size", "cover");
		$("html").css("-moz-background-size", "cover");
		$("html").css("-o-background-size", "cover");
		$("html").css("background-size", "cover"); 

	}
	else if(typeof value.attr("video")!="undefined"){
	bg = i;
	loader(1);
		$("#wrap").children("#controlPost").children("p").children("#cImage").html((bg+1)+"/"+(nombre));
		b = value.attr("video");
		$("#video").empty();
		$("#video").html('<iframe src="http://player.vimeo.com/video/'+b+'?title=0&amp;byline=0&amp;portrait=0&amp;color=ff9933&amp;autoplay=1" width="100%" height="100%" frameborder="0" class="video"></iframe>');
		loader(0);

	}
	else if(typeof value.attr("hd")!="undefined"){	
		bg = i;
		loader(1);
		$("#wrap").children("#controlPost").children("p").children("#cImage").html((bg+1)+"/"+(nombre));
		b = value.attr("hd");
		$("#video").empty();
		$("#video").html('<img style="opacity:0.0" src="'+b+'" width="100%" class="video" onLoad="putInBackground($(this));loader(0)"></img>');
	} 
urlIt();	
}

function reposition(_this){
	_this.css({marginLeft:(220-_this.width())/2,marginBottom:5 })
}
function grayscaleImage(imgObj){
    var canvas = document.createElement('canvas');
    var canvasContext = canvas.getContext('2d');
    var imgW = imgObj.width;
    var imgH = imgObj.height;
    canvas.width = imgW; 
    canvas.height = imgH;
    	    
    canvasContext.drawImage(imgObj, 0, 0);
    var imgPixels = canvasContext.getImageData(0, 0, imgW, imgH);
          
    for(var y = 0; y < imgPixels.height; y++){
        for(var x = 0; x < imgPixels.width; x++){
            var i = (y * 4) * imgPixels.width + x * 4;
			
			if(imgPixels.data[i + 3]==0){
				imgPixels.data[i + 3] = 0;
			}else{
				if(imgPixels.width%2==1){
					if((y*imgPixels.width+x)%2==0)imgPixels.data[i + 3] = 0;
					else imgPixels.data[i + 3] = 255;
				}
				else if(y%2==0){
					if((y*imgPixels.width+x)%2==0)imgPixels.data[i + 3] = 0;
					else imgPixels.data[i + 3] = 255;
				}
				else {
					if((y*imgPixels.width+x)%2==1)imgPixels.data[i + 3] = 0;
					else imgPixels.data[i + 3] = 255;
				}
			}
		}
    } 
    canvasContext.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
    return canvas.toDataURL();
}
function loader(value){
	if(value==0){		//fadeOut
		$("#wait").fadeOut(500,function(){
			$("#wait").attr("visibility","false");
		});
	}
	else if(value==1){	//fadeIn 
		$("#wait").fadeIn(200,function(){
			$("#wait").attr("visibility","true");
		});
	}
	else if(value=="unvisible"){//return false if is loading
		if($("#wait").attr("visibility")=="false"){
			return true;
		} 
		else if($("#wait").attr("visibility")=="true"){
			return false;
		}
	}
	else if(value=="visible"){	//return true if is loading
		if($("#wait").attr("visibility")=="true"){
			return true;
		} 
		else if($("#wait").attr("visibility")=="false"){
			return false;
		}
	}
}
function putInBackground(myImage){
	$("html").css("background" ,"url("+myImage.attr("src")+") no-repeat center center fixed");  
	$("html").css("-webkit-background-size", "cover");
	$("html").css("-moz-background-size", "cover");
	$("html").css("-o-background-size", "cover");
	$("html").css("background-size", "cover");  
}
function positionH1(){
	$("h1 .o").css("left", 0);
	$("h1 .g").css("left", 220 - $("h1 .g").width());
	$("h1 .r").css("left", 440 - $("h1 .g").width() - $("h1 .r").width());
	$("h1 .e").css("left", 660 - $("h1 .g").width() - $("h1 .r").width() - $("h1 .e").width());
	var WH1 =  660 + $("h1 .e").width();
	$("h1").css("width",  WH1 );
	$("h1").animate({opacity : 1.0},2000);
}
function positionH2(){
 	$("h2 .design")		.css("left", 0);
	$("h2 .web")		.css("left", 220 - $("h2 .design").width() + $("h2 .web").width() / 2);
	$("h2 .generative")	.css("left", 440 - $("h2 .design").width() - $("h2 .generative").width() / 2);
	var WH2 =  440 + ($("h2 .design").width() / 2) + ($("h2 .generative").width() / 2);
	$("h2").css("width",  WH2 );
}                                
function resize(W,H){
	$("h1")		.css({  //positionnement
		left	: W / 2 - $("h1").width() / 2,
		top		: H / 2 - $("h1 span").eq(1).height() / 2
	});
	$("h2")		.css({  //positionnement
		left	: W / 2 - 220 - $("h2 .design").width() / 2,
		top		: H / 2 - $("h2 span").eq(1).height() / 2 + $("h1 span").eq(1).height() / 2
	});
	$("#wrap")	.css({ 	//positionnement
		left	: W / 2 - $("#wrap").width() / 2
	});
	var heightUl = $("#nav ul").height();
	if(heightUl>150)heightUl=150;	
	$("#nav").css({		//positionnement & padding
		left	: W / 2 - $("#nav").width() / 2,
		paddingTop : H - heightUl, 
		paddingBottom : H - heightUl
	});
	
	$(".r_1").css("left", W / 2 - 110);
	$(".r_2").css("left", W / 2 + 110);
	$(".r_3").css("left", W / 2 - 330);
	$(".r_4").css("left", W / 2 + 330);
}
function colorize(){
	$("h1 .o").animate({"color":colors[Math.floor(Math.random() * 15)]},2000, function(){
		$("h1 .g").animate({"color":colors[Math.floor(Math.random() * 15)]},2000, function(){
			$("h1 .r").animate({"color":colors[Math.floor(Math.random() * 15)]},2000, function(){
				$("h1 .e").animate({"color":colors[Math.floor(Math.random() * 15)]},2000, function(){
					colorize();
				});
			});
		});
	});
}
function col (){
	return colors[3+Math.floor(Math.random() * 12)];
}
