// JavaScript Document

$(document).ready(initDevis);

function initDevis(){
	if (!$("#formulaire_devis").length) return ;
	
	if ($("#formulaire_devis").hasClass("voir")){
		initDevisVoir();
	} else {
		initFormCookies();
		initFormChoix();
		initForme();
	}
}

function initDevisVoir(){
		$("#zoneForme .puces").show();
		$("#zoneForme .cotes").show();
}

function initFormCookies(){
	if ($("#formulaire_devis").hasClass("voir")) return;
	
	$("#formulaire_devis select, #formulaire_devis input").change(function(evt){
		memoriseDevis();
	});
	$("#formulaire_devis .editer_message textarea").change(function(evt){
		memoriseDevis();
	});
	
	var tab=recupereDevis();
	chargeDevis(tab);
}
function recupereDevis(){
	var chaine=$.cookie("devis");
	var message=$.cookie("devisMessage");
	if (chaine==null || message==null){
		initCookieDevis();
		chaine=$.cookie("devis");
		message=$.cookie("devisMessage");
	}
	return new Array(chaine,message);
}

function memoriseDevis(){
	var chaine=$("#formulaire_devis select, #formulaire_devis input").serialize();
	$.cookie("devis", chaine, { expires: 30 });
	var message=$("#formulaire_devis textarea").val();
	$.cookie("devisMessage", message, { expires: 30 });
}
function initCookieDevis(){
	var obj = {'choix1':'','choix2':'', 'forme':'0', 'cote0':'60', 'cote1':'240', 'cote2':'60', 'cote3':'180', 'cote4':'60', 'cote5':'120', 'bordure0':'0', 'bordure1':'0', 'bordure2':'0', 'bordure3':'0', 'bordure4':'0', 'bordure5':'0', 'bordure6':'0', 'bordure7':'0', 'message':'', 'civilite':'1','nom':'', 'prenom':'', 'type':'', 'societe':'', 'tel':'', 'teltype':'1', 'adresse':'', 'pays':'', 'cp':'', 'ville':'', 'email':'', 'newsletter':'ok'};
	chaine=serializeTab(obj); //hub mémoriser un choix de bordure à partir de la page des bordures

	var message=" ";
	
	$.cookie("devis", chaine, { expires: 30 });
	$.cookie("devisMessage", message, { expires: 30 });
}
function chargeDevis(tableau){
	var tab=deserialize(tableau[0]);
	$("#formulaire_devis select, #formulaire_devis input").each(function(){
		var id=$(this).attr("id");
		
		var valeur=""+tab[id];
		var valeur=unescape(valeur.replace(/\+/g,  " ")); // urldecodage
		if ($(this).is("input[type=text]")){
			$(this).val(valeur);
		} else if ($(this).is("input[type=checkbox]")){
			if (valeur==$(this).val()){
				$(this).attr("checked","checked");
			} else {
				$(this).attr("checked","");
			}
		} else if ($(this).is("select")){
			if (valeur!=""){
				$("option[value="+valeur+"]",this).attr("selected","selected");
			}
		}
	});
	var message=tableau[1];
	$("#formulaire_devis .editer_message textarea").val(message);
}

function deserialize(chaine){
	var tab=chaine.split('&');
	var nb=tab.length;
	var result=new Array();
	for(var i=0; i<nb; i++){
		var tabelt=tab[i].split('=');
		result[tabelt[0]]=tabelt[1];
	}
	return result;
}
function serializeTab(tab){
	var chaine="";
	
	for (ind in tab) {
		chaine+=ind+"="+tab[ind]+"&";
	}
	chaine=chaine.substring(0, chaine.length-1);
	return chaine;
}

function initFormChoix(){
	afficheBordure($("li.editer_choix1"));
	afficheBordure($("li.editer_choix2"));
	afficheForme();
	
	$("#choix1").change(function(evt){
		afficheBordure($("li.editer_choix1"));
	});
	$("#choix2").change(function(evt){
		afficheBordure($("li.editer_choix2"));
	});
	$("#choix1").keyup(function(evt){
		afficheBordure($("li.editer_choix1"));
	});
	$("#choix2").keyup(function(evt){
		afficheBordure($("li.editer_choix2"));
	});
	$("#forme").change(function(evt){
		afficheForme();
	});
	$("#forme").keyup(function(evt){
		afficheForme();
	});
	$("li.editer_choix1 a.next").click(function(evt){
		var next=selectOptionSuivant($("#choix1"));
		next.attr("selected","selected");
		$("#choix1").change();
		return false;
	});
	$("li.editer_choix2 a.next").click(function(evt){
		var next=selectOptionSuivant($("#choix2"));
		next.attr("selected","selected");
		$("#choix2").change();
		return false;
	});
	$("li.editer_choix1 a.prev").click(function(evt){
		var prev=selectOptionPrecedent($("#choix1"));
		prev.attr("selected","selected");
		$("#choix1").change();
		return false;
	});
	$("li.editer_choix2 a.prev").click(function(evt){
		var prev=selectOptionPrecedent($("#choix2"));
		prev.attr("selected","selected");
		$("#choix2").change();
		return false;
	});
	
	
	$("li.editer_forme a.next").click(function(evt){
		var next=selectOptionSuivant($("#forme"));
		next.attr("selected","selected");
		$("#forme").change();
		return false;
	});
	$("li.editer_forme a.prev").click(function(evt){
		var prev=selectOptionPrecedent($("#forme"));
		prev.attr("selected","selected");
		$("#forme").change();
		return false;
	});

}
function afficheBordure(elt){
	var id=$("select option:selected", elt).val();
	if (id!=""){
		$("div.photo", elt).load("spip.php?page=inc-photoBordure&id_mot="+id);
	} else {
		$("div.photo", elt).html("");
	}
}

function afficheForme(){
	var id=$("li.editer_forme select option:selected").val();
	if (id!=""){
		$("#zoneForme").attr("class","forme-"+id);
		initDevisVoir();
	} else {
		$("#zoneForme").attr("class","");
	}
	$("#zoneForme .bordures input").each(function(){
		var classe=$(this).attr("class");
		var valeur=$(this).val();
		if (valeur==""){
			valeur=0;
		}
		setPuce($("#zoneForme .puces a."+classe),valeur);
		
	});
}

function selectOptionSuivant(slt){
	var opt=$("option:selected", slt);
	var bool=false;
	
	var next=opt;
	$("option", slt).each(function(){
		if(bool && $(this).val()!="" && next.val()==opt.val()){
			next=$(this);
			bool=false;
		}
		bool=bool||($(this).val()==opt.val());
	});
	return next;
}
function selectOptionPrecedent(slt){
	var opt=$("option:selected", slt);
	var bool=false;
	
	var tab=new Array();
	$("option", slt).each(function(){
		tab.push($(this));
	});
	
	var next=opt;
	var nb=tab.length;
	for (var i=nb-1; i>=0; i--){
		if(bool && tab[i].val()!=""){
			next=tab[i];
			bool=false;
		}
		bool=bool||(tab[i].val()==opt.val());
	}
	return next;
}

function setChoix(rang,num){
	var tableau=recupereDevis();
	var chaine=tableau[0];
	var tab=deserialize(chaine);
	tab["choix"+rang]=num;
	chaine=serializeTab(tab); //hub mémoriser un choix de bordure à partir de la page des bordures
	$.cookie("devis", chaine, { expires: 30 });
}
function getChoix(rang){
	var tableau=recupereDevis();
	var chaine=tableau[0];
	var tab=deserialize(chaine);
	return tab["choix"+rang];
}

function initForme(){
	if (!$("#zoneForme").length) return;
	initPuces();
}

function initPuces(){
	$("#zoneForme .puces a").click(function(){
		var valeur=getPuce($(this));
		valeur=(valeur+1)%3;
		setPuce($(this),valeur);
		
		var classe=$(this).attr("class");
		$("#zoneForme .bordures input."+classe).val(valeur);
		
		memoriseDevis();
		return false;
	});
}
function getPuce(elt){
	var classe=$("img",elt).attr("class");
	switch(classe){
		case "puce-0": return 0;
		break;
		case "puce-1": return 1;
		break;
		case "puce-2": return 2;
		break;			
	}
}
function setPuce(elt,valeur){
	$("img",elt).attr("class","puce-"+valeur);
}


function formeSuivante(){
		var valeur=getForme();
		setForme((valeur+1)%4);
}
function formePrecedente(){
		var valeur=getForme();
		valeur=(valeur+4-1)%4;
		setForme(valeur);
}
function getForme(){
	var classe=$("#zoneForme").attr("class");
	switch(classe){
		case "forme-0": return 0;
		break;
		case "forme-1": return 1;
		break;
		case "forme-2": return 2;
		break;			
		case "forme-3": return 3;
		break;			
	}
}
function setForme(valeur){
	$("#zoneForme").attr("class","forme-"+valeur);
}


