﻿var precnum ;
var conteneurWidth;
var bgmiddleWidth; 
var currentAnim = false ;
var url = document.location.href ;
var bgcolor ;
var alertcolor = true;

$(document).ready( function(){
	//initialisation des variables
	conteneurWidth = $("div#conteneur").css("width");
	bgmiddleWidth = $("div.bg_middle").css("width");

	$("div#reseaux_sociaux img").css("opacity",0.5);
	
	$("div#bg").css("backgroundPosition",'0pt 0pt');
	
	bgcolor = getRGB( $("div#bg").css("backgroundColor") );
	$(document).everyTime(3, "timerBackgroundColor", function() { 
		if( bgcolor[0] == 255 && bgcolor[1] == 0 && bgcolor[2] != 255 ) //Si on part du rouge
			bgcolor[2]++; //on va vers le rose
		else if( bgcolor[0] != 0 && bgcolor[1] == 0 && bgcolor[2] == 255 ) //Si on part du rose
			bgcolor[0]--; //on va vers le bleu
		else if( bgcolor[0] == 0 && bgcolor[1] != 255 && bgcolor[2] == 255 ) //Si on part du bleu
			bgcolor[1]++; //on va vers le cyan
		else if( bgcolor[0] == 0 && bgcolor[1] == 255 && bgcolor[2] != 0 ) //Si on part du cyan
			bgcolor[2]--; //on va vers le vert
		else if( bgcolor[0] != 255 && bgcolor[1] == 255 && bgcolor[2] == 0 ) //Si on part du vert
			bgcolor[0]++; //on va vers le jaune
		else if( bgcolor[0] == 255 && bgcolor[1] != 0 && bgcolor[2] == 0 ) //Si on part du jaune
			bgcolor[1]-- ; //on va vers le rouge
		$("div#bg").css("backgroundColor", "rgb("+bgcolor[0]+","+bgcolor[1]+","+bgcolor[2]+")");
	});

	
	//Animation selon l'url
	restant = url.lastIndexOf('/') + 1;
	page = url.substr( restant, url.length - restant );
	switch( page)
	{
		case "":
			precnum = 1;
		break;
		case "cv":
			precnum = 2;
		break;
		case "contact":
			precnum = 3;
		break;
	}
	$("div#menu a#1").removeClass("currentBG");
	$("div#menu a#"+precnum).addClass("currentBG");
	$("div#menu a#1").removeClass("current");
	$("div#menu a#"+precnum).addClass("current");
	
	//Initialisation des valeurs en javascript
	$("div.bg_middle").css("width","70px");
	$("div#contenu").css("width","116px");
	$("div#contenu").css("height",0);
	$("div#conteneur").css("margin-left",(30+(parseInt(precnum)-1)*70)+"px");
	$("div#reseaux_sociaux").css("display","none");
	
	extendContenu(precnum);
	
	
	//Liens du menu
	$("div#menu a").click( function() {
		rollBackground();
		if(currentAnim) 
			return false;
		currentAnim = true;
		var num = this.id.substr(3,1);
		if( parseInt(precnum) == parseInt(num)) return false;
		try {$(document).stopTime("timerScript");} catch(e){}
		$("div#contenu").animate({height:"0"},500,"",function(){
			$("div#contenu").css("display","none");
			$("div.bg_middle").animate({width:"70px"},500);
			$("div#conteneur").animate({width:"300px", marginLeft:(30+(parseInt(precnum)-1)*70)+"px"}, 500, "", function() {
				$("div#menu a#num"+precnum).animate({
					borderBottomWidth: "3px", 
					borderLeftWidth: "0", 
					borderRightWidth: "1px", 
					borderTopWidth: "0px", 
					marginTop: "3px",
					height: "20px"}
				, 100, "", function() {
					$("div#menu a#num"+precnum).removeClass("currentBG");
					$("div#menu a#num"+num).addClass("currentBG");
					$("div#menu a#num"+num).animate({
						borderBottomWidth: "0", 
						borderLeftWidth: "3px", 
						borderRightWidth: "3px", 
						borderTopWidth: "3px", 
						marginTop: "0",
						height: "23px"}
					,100);
					$("div#conteneur").animate({width:"300px", marginLeft: (30+(parseInt(num)-1)*70)+"px"}, 250, "", function(){ 
						precnum=num; 
						extendContenu(num);
					});
				});
			});
		});
		return false;
	});
	
	$("div#reseaux_sociaux img").mouseenter(
		function() {
			$("div#libelle_reseau").html("");
			$(this).animate({opacity:1},{duration:500,queue:false});
			var img = this ;
			$("div#libelle_reseau").animate({height:"20px"},{duration:250, queue:false, complete:function(obj){$("div#libelle_reseau").html(img.alt);}});
		}
	).mouseleave(
		function() {
			$(this).animate({opacity:0.5},{duration:500,queue:false});
			$("div#libelle_reseau").animate({height:"0px"},{duration:250, queue:false});
		}
	);
});

//Fonction d'ecriture du texte
function suiteAnimations(numTexte) {
	var txt;
	var step1 = false ;
	currentAnim = false;
	
	if( $("div#reseaux_sociaux").css("display") != "block")
	{
		$("div#reseaux_sociaux").css("display","block");
		$("div#reseaux_sociaux img").css("display","none");
		$("div#reseaux_sociaux img").fadeIn(1000);
		$("div#texte_principal").html("");
	}
	
	numTexte = parseInt(numTexte);
	switch(numTexte) {
		//accueil
		case 1:
			$("div#texte_principal").append('<img class="float_left" src="/img/avatar.png"/>');
			txt = "Sébastien Corbin, 18 ans, étudiant nantais en ingénierie informatique, spécialisé dans le développement d'applications. Passionné par l'informatique en général, le web et les nouvelles technologies." ;
			$(document).everyTime(10, "timerScript", function(i) {
				$("div#texte_principal").append(txt.substr(i-1,1));
			}, txt.length);
		break;
		
		//cv
		case 2:
			txt = "Je ne suis actuellement pas à la recherche d'un emploi à l'année, mais n'hésitez pas à me contacter pour un job d'été ou un futur stage.<br/><br/>Mon CV est disponible :<ul><li>sous <a href=\"/docs/CV_SebastienCorbin.pdf\">format PDF</a></li><li>ou <a href=\"/docs/CV_SebastienCorbin.doc\">document Word</a></li><li>ou encore sur <a href='http://www.doyoubuzz.com/sebastien-corbin'><img id='doyoubuzz' src='http://www.doyoubuzz.com/images/css/base/configbar/badges/badge_08.gif' title='mon profil DoYouBuzz' alt='mon profil DoYouBuzz'/></a></li>" ;
			$("div#texte_principal").css("display", "none");
			$("div#texte_principal").append( txt );
			$("div#texte_principal").slideDown("slow");
		break;
		
		//contact
		case 3:
			txt = '<form method="post" action="?" id="form_contact">'
					+'<p>'
						+'<div class="input_text">'
							+'<label for="nom">Votre nom</label><input type="text" name="nom" id="nom"/>'
							+'<span id="validNom"></span>'
						+'</div>'
						+'<div class="input_text">'
							+'<label for="mail">Votre adresse mail</label><input type="text" name="mail" id="mail"/>'
							+'<span id="validEmail"></span>'
						+'</div>'
						+'<label>Votre message</label><textarea name="message" id="wysiwyg" rows="6" cols="69"></textarea>'
						+'<div id="submit"><input type="submit" value="Envoyer" id="envoyer" name="envoyer"/></div>'
					+'</p>'
				+'</form>';
			$("div#texte_principal").css("display", "none");
			$("div#texte_principal").append( txt );
			$("div#texte_principal").slideDown("slow");
			if( !$.browser.msie )
			$(function()
			{
				$('#wysiwyg').wysiwyg();
			});
			$("#mail").keyup(function(){
				var email = $("#mail").val();
				if(email != 0)
					if(isValidEmailAddress(email))
						$("#validEmail").css({ "background-image": "url('/img/validYes.png')" });
					else
						$("#validEmail").css({ "background-image": "url('/img/validNo.png')" });
				else
					$("#validEmail").css({ "background-image": "none" });
			});
			$('#form_contact').submit( function() {
				var form_ok = true;
				var nom = $("#nom").val();
				var email = $("#mail").val() ;
				if( nom == 0 )
				{
					$("#nom").css("border-width","3px");
					$("#nom").animate({borderRightColor:"red",borderLeftColor:"red",borderTopColor:'red',borderBottomColor:'red'},500)
					form_ok = false;
				}
				if( !isValidEmailAddress( email ))
				{
					$("#mail").css("border-width","3px");
					$("#mail").animate({borderRightColor:"red",borderLeftColor:"red",borderTopColor:'red',borderBottomColor:'red'},500)
					form_ok = false;
				}			
				if( form_ok )
				{
					$("#submit").html('<img src="/img/ajax.gif" />');
					$.post("/contact?ajax", { name: nom, mail: email, message: $("#wysiwyg").val() },function(data){
						$('#submit').addClass(data.status);
						$('#submit').html( data.message );
					}, "json");
				}
				return false;
			});
		break;
	}
	$(document).stopTime( "timerBackgroundposition" );
}

function extendContenu(numExtend) {
	$("div#texte_principal").html("");
	
	$("div#contenu").animate({width: (parseInt(conteneurWidth)-26)+"px"}, 1000)
	$("div#contenu").animate({height:"315px"},1000,"",function(){suiteAnimations(numExtend);});
	$("div.bg_middle").animate({width: bgmiddleWidth },1000);
	$("div#conteneur").animate({width:conteneurWidth, marginLeft:"0"},1000);
	
}

function rollBackground() {
	$(document).everyTime(1, "timerBackgroundposition", function() { 
		bgpos = $("div#bg").css("backgroundPosition");
		bgpos = bgpos.substr(0,bgpos.indexOf('pt'));
		//$("#contenu").append( bgpos + " / ");
		bgpos = parseInt(bgpos) + 1;
		$("div#bg").css("backgroundPosition", bgpos+'pt 0pt');
	});
}

// Parse strings looking for color tuples [255,255,255]
function getRGB(color) {
	var result;

	// Check if we're already dealing with an array of colors
	if ( color && color.constructor == Array && color.length == 3 )
		return color;

	// Look for rgb(num,num,num)
	if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
		return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])];

	// Look for rgb(num%,num%,num%)
	if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
		return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];

	// Look for #a0b1c2
	if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
		return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];

	// Look for #fff
	if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
		return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];

	// Otherwise, we're most likely dealing with a named color
	return colors[jQuery.trim(color).toLowerCase()];
}

function isValidEmailAddress(emailAddress) {
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	return pattern.test(emailAddress);
}
