/* 2008 > Gaetan Langhade < Equallia - pour Amaguiz */

/*
if (window.addEventListener) window.addEventListener("load",lancer,false);
else if (window.attachEvent) window.attachEvent("onload",lancer);
*/
// GUR : l'empilement des event dans le onload n'a pas d'ordre garantie suivant le navigateur
// la fonction Surface.preparePage se charge de lancer les évenements du load : 
// if (window.addEventListener) window.addEventListener("load",lancer,false);
// else if (window.attachEvent) window.attachEvent("onload",lancer);

var Equallia = {
	noEffectValues : new Array(),
	speedFade : 'slow',
	speedRide : 'slow',
	isImprovedValue : function( input ) {
		for ( var current =0; current <  Equallia.noEffectValues.length ; ++current) {
			if (Equallia.noEffectValues[current] == input) { return false; }
		}
		return true;
	}
}
Equallia.noEffectValues.push('0');
Equallia.noEffectValues.push(0);

var rideaux = new Array();
var fades = new Array();
var vaisseau = true;
function lancer(){
	var jqueryMode = true;
	if ( jqueryMode ) {
		lancerJQ();
	} else {
		lancerOriginal();
	}
}

function lancerOriginal() {
	vaisseau = navigator.userAgent.toLowerCase().indexOf("msie") < 0 ? vaisseau : false;
	
	//Conserver une cohesion entre les radio cliques et le DHTML subsequent (entre autre)
	var rideau = document.getElementsByTagName("form");
	for (i=0;i<rideau.length;i++) rideau[i].reset();
	
	//Gerer les effets rideau
	rideau = getElementsByClassName("rideau",document); /* ATTN ...byClassName(rider[i]) avec byClassName(rideau[i]) */
	for (i=0;i<rideau.length;i++){
		rideaux[i] = new Array(getElementsByClassName("rider",document)[i],rideau[i]);
		rideau[i].style.marginTop = "-4444px";
		rideaux[i][0].className += " " + i;
		if (rideaux[i][0].tagName.toLowerCase() == "a"){
			rideaux[i][0].href = "javascript:void(0);";
			rideaux[i].push(rideaux[i][0].innerHTML);
		}
		rideaux[i][0].onclick = function(){
			return tirer(this.className.split("rider ")[1],1);
		}
		//Gerer la mise en place des rideau au chargement de la page
		if (rideaux[i][0].checked) tirer(rideaux[i][0].className.split("rider ")[1],1);
		//Gerer le cas de boutons (radio) /* ATTN sans attribut class... */
		if (rideaux[i][0].name.length > 0){
			var boutons = rideaux[i][0].name;
			for (j=0;j<document.getElementsByName(boutons).length;j++){
				if (document.getElementsByName(boutons)[j] != rideaux[i][0]){
					document.getElementsByName(boutons)[j].className = i;
					document.getElementsByName(boutons)[j].onclick = function(){
						return tirer(this.className,this.value);
	}	}	}	}	}

	//Gerer les effets 'fade' /* ATTN 'return false' gene la transmission du focus au bouton radio clique */
				/* si plusieurs fadeurs pour un seul fadable, solutions :
				- repliquer le fadable dans le tableau fades ????
				- effectuer un controle a priori ?
					var ourlet = ""; 
					if (ourlet.indexOf(rideau[i].className.split(" ")[1].substring(0,3)) > -1) //recuperer l'iteration i appliquee au fadeur deja traite, et puis ?
					else rideau[i].className += " " + i; //etc.
				- plutot envisager un systeme de type reverzI ? */
	rideau = getElementsByClassName("fadeur",document);
	for (i=0;i<rideau.length;i++){
		rideau[i].className += " " + fades.length;
		//className.split(" ")[0] : chaine 'fadeur' //// ou bien radio complementaire
		//className.split(" ")[1] : chaine d'identification = lettre 'f' + rang d'iteration + lettre 'a'
		//className.split(" ")[2] : chaine pour l'evenement
		//className.split(" ")[3] : chaine pour la fonction
		//className.split(" ")[4] : binaire pour out ou on
		//className.split(" ")[5] : rang d'iteration du tableau 'fades' //// ou bien radio complementaire
		//className.split(" ")[6] : rang d'iteration du tableau 'fades' si le precedent est radio complementaire
		var tempo = rideau[i].className.split(" ")[1].substring(0,3);
		//Exclure une manipulation de type 'phraser'
		try{
			//Conserver l'element fadable
			fades.push(getElementsByClassName(tempo + "b",document)[0]);
			//Styliser l'element fadable
			if (vaisseau) fades[fades.length - 1].style.opacity = Math.abs(rideau[i].className.split(" ")[4] - 1);
			else{
				if (rideau[i].className.split(" ")[4] == 0) fades[fades.length - 1].style.filter = "alpha(opacity=100)";
				else fades[fades.length - 1].style.filter = "alpha(opacity=0)";
		}	}
		//Inclure une manipulation de type 'phraser'
		catch(e){
			//Neutraliser d'avoir try
			fades.pop();
			var intempo = tempo.substring(0,2);
			var intempo2 = "0";
			var intempo3 = 0;
			while(getElementsByClassName(intempo + intempo2 + intempo3,document)[0]){
				//Conserver l'element fadable
				fades.push(getElementsByClassName(intempo + intempo2 + intempo3,document)[0]);
				//Styliser l'element fadable
				if (vaisseau) fades[fades.length - 1].style.opacity = Math.abs(rideau[i].className.split(" ")[4] - 1);
				else{
					if (rideau[i].className.split(" ")[4] == 0) fades[fades.length - 1].style.filter = "alpha(opacity=100)";
					else fades[fades.length - 1].style.filter = "alpha(opacity=0)";
				}
				intempo3 ++;
				intempo2 = intempo3 < 10 ? "0" : "";
		}	}
		var tempo2 = rideau[i].className.split(" ")[2]; 
		//Gerer le fade a la soumission (formulaire)
		if (tempo2 == "onsubmit"){
			rideau[i].onsubmit = function(){
				eval(this.className.split(" ")[3])(this);
		}	}
		//Gerer le fade au clic (boutons radio...)
		else if (tempo2 == "onclick"){
			rideau[i].onclick = function(){
				eval(this.className.split(" ")[3])(this);
				//Gerer le fadeur complement aussi d'un autre fadeur
				var tempo = this.className.split("reverzI");
				for (i=1;i<tempo.length;i++){
					var tempo2 = getElementsByClassName(tempo[i].substring(0,4),document)[0];
					eval(tempo2.className.split(" ")[3])(tempo2,"contrapuntique");
			}	}
			//Gerer la mise en place des fade-au-clic au chargement de la page
			if (rideau[i].checked){
				var rempo = rideau[i].className.split(" ");
				var rempo2 = rempo[5] / 1 == rempo[5] ? rempo[5] : rempo[6];
				fades[rempo2].className = fades[rempo2].className.split("hors").join("");
				fades[rempo2].style.position = "relative";
				fades[rempo2].style.left = 0;
				eval(rideau[i].className.split(" ")[3])(rideau[i]);
			}
			//Gerer les complements simples aux fadeurs (pas d'equivalence au chargement de la page)
			var tempo3 = getElementsByClassName("reverzI",document);
			for (j=0;j<tempo3.length;j++){
				tempo3[j].onclick = function(){
					var tempo = this.className.split(" ");
					for (i=1;i<tempo.length;i++){
						var tempo2 = getElementsByClassName(tempo[i].substring(7,11),document)[0];
						eval(tempo2.className.split(" ")[3])(tempo2,"contrapuntique");
		}	}	}	}
		//Gerer le fade a la modification (listes de selection...)
		else if (tempo2 == "onchange"){
			rideau[i].onchange = function(){
				if ( Equallia.isImprovedValue(this.value) ) {
					eval(this.className.split(" ")[3])(this); //  this.value != 0;
				} else { 
					eval(this.className.split(" ")[3])(this,"contrapuntique");
				}
			}
			//Gerer la mise en place des fade-a-la-modification au chargement de la page
			if ( Equallia.isImprovedValue(rideau[i].value)  ){ // rideau[i].value != 0;
				var rempo = rideau[i].className.split(" ");
				var rempo2 = rempo[5] / 1 == rempo[5] ? rempo[5] : rempo[6];
				if (fades[rempo2]){ //Gerer le cas classique...
					fades[rempo2].className = fades[rempo2].className.split("hors").join("");
					fades[rempo2].style.position = "relative";
					fades[rempo2].style.left = 0;
				} 	else if (rempo[3] == "phraser" && rideau[i].value > 1) { //... mais je n'aime pas marcher sur les mains quand je le fais sans bien
					var rempo3 = rideau[i].value - 1;
					var rempo4 = getElementsByClassName("hors",rideau[i].parentNode.parentNode);
					for (j=0;j<rempo3;j++){
						rempo4[j].className = rempo4[j].className.split("hors").join("");
						rempo4[j].style.position = "relative";
						rempo4[j].style.left = 0;
					}	
				}
				eval(rideau[i].className.split(" ")[3])(rideau[i]);
			}
		}	
	}
	
	//Gerer les blocs qui n'apparaissent pas au chargement (l'a mis a la fin car certains de ce traitement precedents ont besoin de block en display block ??)
	rideau = getElementsByClassName("hors",document);
	for (i=0;i<rideau.length;i++){
		rideau[i].style.display = "none";
		rideau[i].style.position = "relative";
		rideau[i].style.left = 0;
	}

	//Gerer le survol sur les boutons
	var tempo = getElementsByClassName("bouton",document);
	for (i=0;i<tempo.length;i++){
		tempo[i].onmouseover = function(){
			this.style.backgroundPosition = "left bottom";
			this.getElementsByTagName("a")[0].style.backgroundPosition = "right bottom";
		}
		tempo[i].onmouseout = function(){
			this.style.backgroundPosition = "left top";
			this.getElementsByTagName("a")[0].style.backgroundPosition = "right top";
	}	}

	//Gerer le survol de la souris sur les boutons d'action sur IE 6
	if (navigator.userAgent.toLowerCase().indexOf("msie 6") > -1){
		tempo = getElementsByClassName("action",document);
		for (i=0;i<tempo.length;i++){
			tempo[i].getElementsByTagName("p")[0].onmouseover = function(){
				this.style.backgroundPosition = "right bottom";
				this.getElementsByTagName("input")[0].style.backgroundPosition = "left bottom";
			}
			tempo[i].getElementsByTagName("p")[0].onmouseout = function(){
				this.style.backgroundPosition = "right top";
				this.getElementsByTagName("input")[0].style.backgroundPosition = "left top";
}	}	}  }

function lancerJQ() {
	vaisseau = navigator.userAgent.toLowerCase().indexOf("msie") < 0 ? vaisseau : false;
	//Conserver une cohesion entre les radio cliques et le DHTML subsequent (entre autre);
	$j.each($j('form'), function(item, index) {
		this.reset();
	});
	
	//Gerer les effets rideau
	// général
	$j('.rideau').hide();
	$j('a.rider').attr('href', 'javascript:void(0);');
	// étape 1
	$j('#espa1').click( function() { $j('.rideau').slideDown(Equallia.speedRide); });
	$j('#espa2').click( function() { $j('.rideau').slideUp(Equallia.speedRide); });
	// étape 3
	$j('#rideGarantie').click( function() { $j('div.rideau').slideToggle(Equallia.speedRide);if($j("#garanties_p").attr("class")!="ouvert"){$j("#garanties_p").addClass("ouvert");$j('#rideGarantie').html("Fermer")}else{$j("#garanties_p").removeAttr("class");$j('#rideGarantie').html(text_garanties);}});
	$j('#rideOption').click( function() { $j('table.rideau').slideToggle(Equallia.speedRide);if($j("#options_p").attr("class")!="ouvert"){$j("#options_p").addClass("ouvert");$j('#rideOption').html("Fermer");}else{$j("#options_p").removeAttr("class");$j('#rideOption').html(text_options);} });
	
	// effets de fade;
	/* étape 1 */
	$j('#loge1, #loge2').click(function() {
		$j('#poss_title').parent().fadeIn(Equallia.speedFade);
	});
	$j('#loge3').click(function() {
		$j('#poss_title').parent().fadeOut(Equallia.speedFade);
	});
	$j('#type1').click(function() {
		$j('#piece').parent().parent().fadeIn(Equallia.speedFade);
		$j('#etage').parent().parent().fadeOut(Equallia.speedFade);
	});
	$j('#type2').click(function() {
		$j('#piece').parent().parent().fadeIn(Equallia.speedFade);
		$j('#etage').parent().parent().fadeIn(Equallia.speedFade);
	});
	$j('#type3').click(function() {
		$j('#piece').parent().parent().fadeOut(Equallia.speedFade);
		$j('#etage').parent().parent().fadeOut(Equallia.speedFade);
	});
	$j('#depe1').click(function() {
		$j('#dime_title').parent().fadeIn(Equallia.speedFade);
	});
	$j('#depe2').click(function() {
		$j('#dime_title').parent().fadeOut(Equallia.speedFade);
	});
	$j('#pisc1').click(function() {
		$j('#pisci').parent().fadeIn(Equallia.speedFade);
	});
	$j('#pisc2').click(function() {
		$j('#pisci').parent().fadeOut(Equallia.speedFade);
	});
	/* étape 2 */
	$j('#enfa1').click(function() {
		var enfantsZone = $j('#enfa_title').parent().next();
		enfantsZone.fadeIn(Equallia.speedFade);
	});
	$j('#enfa2').click(function() {
		var enfantsZone = $j('#enfa_title').parent().next();
		enfantsZone.fadeOut(Equallia.speedFade);
	});
	$j('#nenfa').change(function() {
		var nbEnfa = $j(this).val();
		var index = 1;
		while ($j('#mois'+index).size() > 0 ) {
			if (index <= nbEnfa) {
				$j('#mois'+index).parent().parent().fadeIn(Equallia.speedFade);
			} else {
				$j('#mois'+index).parent().parent().fadeOut(Equallia.speedFade);
			}
			++index;
		}
	});
	$j('#assur').change(function() {
		if ( Equallia.isImprovedValue($j(this).val()) ) {
			$j('#quand').parent().parent().fadeIn(Equallia.speedFade);
		} else {
			$j('#quand').parent().parent().fadeOut(Equallia.speedFade);
		}
	});
	
	// Gerer les blocs qui n'apparaissent pas au chargement (l'a mis a la fin car certains de ce traitement precedents ont besoin de block en display block ??);
	$j('.hors').css({ 'display' : 'none', 'position' : 'relative', 'left' : '0' });
	
	//Gerer le survol sur les boutons;
	$j('.bouton').mouseover( function() {
		this.style.backgroundPosition = "left bottom";
		this.getElementsByTagName("a")[0].style.backgroundPosition = "right bottom";
	});
	$j('.bouton').mouseout( function() {
		this.style.backgroundPosition = "left top";
		this.getElementsByTagName("a")[0].style.backgroundPosition = "right top";
	});
	
	//Gerer le survol de la souris sur les boutons d'action sur IE 6;
	if (navigator.userAgent.toLowerCase().indexOf("msie 6") > -1){
		$j('.action p').mouseover( function() {
			this.style.backgroundPosition = "right bottom";
			this.getElementsByTagName("input")[0].style.backgroundPosition = "left bottom";
		});
		$j('.action p').mouseout( function() {
			this.style.backgroundPosition = "right top";
			this.getElementsByTagName("input")[0].style.backgroundPosition = "left top";
		});
	}
}

//Aguiller vers les effets rideau
function tirer(a,b){
	try{
		var tempo = rideaux[a][1]; //l'element coulissant;
		var tempo2 = tempo.offsetHeight; //sa hauteur;
		//Aiguiller vers le rideau en apparition;
		if (b == 1 && parseInt(tempo.style.marginTop) != 0){
			if (rideaux[a].length == 3) tendre(a,0,"Fermer");
			return tirer2(tempo,tempo2);
		}
		//Aiguiller vers le rideau en disparition
		else if ((b == 0 && parseInt(tempo.style.marginTop) != "-4444") || (rideaux[a].length == 3 && parseInt(tempo.style.marginTop) == 0)){
			if (rideaux[a].length == 3) tendre(a,-4444,rideaux[a][2]);
			return tirer3(tempo,0,tempo2);
		}	
	} catch(e){}
}
//Creer l'effet rideau en apparition;
function tirer2(a,b){
	a.style.marginTop = - b + "px";
	if (b > 5) return setTimeout(function(){tirer2(a,b - 5);},1);
	else{
		a.style.marginTop = 0;
		return false;
	}
}	
//Creer l'effet rideau en disparition;
function tirer3(a,b,c){
	a.style.marginTop = b + "px";
	if (b > -c) return setTimeout(function(){tirer3(a,b - 5,c);},1);
	else{
		a.style.marginTop = "-4444px";
		return false;
	}
}	
//Adapter l'intitule du lien;
function tendre(a,b,c){
	if (parseInt(rideaux[a][1].style.marginTop) != b) return setTimeout(function(){tendre(a,b,c);},11);
	rideaux[a][0].innerHTML = c;
	if (b == 0) rideaux[a][0].parentNode.className = "ouvert";
	else rideaux[a][0].parentNode.className = "";
}



//Aguiller vers les effets fade /* ATTN 'return false' gene la transmission du focus au bouton radio clique */
function fader(a,b){
	try{
		var tempo = a.className.split(" ");
		var lequel = tempo[5] / 1 == tempo[5] ? tempo[5] : tempo[6];
		//Aiguiller vers fade en disparition;
		if ((! b && tempo[4] == 0) || (b == "contrapuntique" && tempo[4] == 1)){
			if (vaisseau && fades[lequel].style.opacity == 1) fader2(lequel,.9);
			else if (! vaisseau && fades[lequel].style.filter == "alpha(opacity=100)") faisander2(lequel,90);
		} 
		//Aiguiller vers fade en apparition
		else if ((! b && tempo[4] == 1) || (b == "contrapuntique" && tempo[4] == 0)){
			if (vaisseau && fades[lequel].style.opacity == 0){
				fades[lequel].style.display = "block";
				fader3(lequel,.1);
			}
			else if (! vaisseau && fades[lequel].style.filter == "alpha(opacity=0)"){
				fades[lequel].style.display = "block";
				faisander3(lequel,10);
			}
		}	
	} catch(e){}
}
//Aguiller vers des effets de fade multiple (a partir d'une liste de selection...
function phraser(a){
	try{
		var tempo = parseInt(a.value) - 1;
		var tempo2 = a.className.split(" ")[1].substring(0,2);
		var lequel = parseInt(a.className.split(" ")[a.className.split(" ").length - 1]);
		//Aiguiller les premiers elements vers fade en apparition;
		for (k=0;k<tempo;k++){
			var tempo3 = k < 10 ? "0" : "";
			getElementsByClassName(tempo2 + tempo3 + k,document)[0].style.display = "block";
			if (vaisseau) fader3(lequel,.1);
			else faisander3(lequel,10);
			lequel ++;
		}
		//Aiguiller les elements suivants vers fade en disparition
		for (k=tempo;k<1000;k++){
			var tempo3 = k < 10 ? "0" : "";
			if (getElementsByClassName(tempo2 + tempo3 + k,document)[0]){
				if (vaisseau) fader2(lequel,.9);
				else faisander2(lequel,90);
				lequel ++;
			} else break;
		}
	} catch(e){}
}
//Creer l'effet fade en disparition (out) standard;
function fader2(a,b){
	fades[a].style.opacity = b;
	if (b > 0) setTimeout(function(){fader2(a,b - .1)},36);
	else{
		fades[a].style.opacity = 0;
		fades[a].style.display = "none";
	}
}
//Creer l'effet fade en apparition (on) standard;
function fader3(a,b){
	fades[a].style.opacity = b;
	if (b < 1) setTimeout(function(){fader3(a,b + .1)},36);
	else fades[a].style.opacity = 1;
}
//Creer l'effet fade en disparition (out) sur IE;
function faisander2(a,b){
	fades[a].style.filter = "alpha(opacity=" + b + ")";
	var tourmient = fades[a].all;
	for (z=0;z<tourmient.length;z++) tourmient[z].style.filter = "alpha(opacity=" + b + ")";
	if (b > 0) setTimeout(function(){faisander2(a,b - 10)},36);
	else{
		fades[a].style.filter = "alpha(opacity=0)";
		fades[a].style.display = "none";
	}
}	
//Creer l'effet fade en apparition (on) sur IE;
function faisander3(a,b){
	fades[a].style.filter = "alpha(opacity=" + b + ")";
	var tourmient = fades[a].all;
	for (z=0;z<tourmient.length;z++) tourmient[z].style.filter = "alpha(opacity=" + b + ")";
	if (b < 100) setTimeout(function(){faisander3(a,b + 10)},36);
	else fades[a].style.filter = "alpha(opacity=100)";
}


/* ******************************* > WEDIA */
//equivalent de la fonction de controle d'authentification sur l'ecran 1 - logement (<form action="#" method="get" class="fadeur onsubmit controler 0">);
function controler(a){
	if (confirm("mot de passe correct ?")) return fader(a);
	else return false;
}

/* a : nom du selecteur - b : perimetre */
function getElementsByClassName(a,b){
	var laClasse = new RegExp("(^|\\s)" + a + "(\\s|$)");
    var base = (b.all) ? b.all : b == document ? document.body.getElementsByTagName("*") : b.getElementsByTagName("*");
    var resultats = new Array();
	try{ //IE 5
		for (ww=0;ww<base.length;ww++) if (laClasse.test(base[ww].className)) resultats.push(base[ww]);
	} catch(e){ return false; }
	return (resultats);
}
/* qui : element a creer et a inserer - donnees : son contenu - cadre : parent + attributs... */
function ceerAvant(qui,donnees,cadre){
	var tempo = document.createElement(qui);
	if (donnees) tempo.innerHTML = donnees;
	for (ww=3;ww<arguments.length;ww++){
		var tempo2 = document.createAttribute(arguments[ww].split("~")[0]);
		tempo2.nodeValue = arguments[ww].split("~")[1];
		tempo.setAttributeNode(tempo2);		
	}
	cadre.insertBefore(tempo,cadre.firstChild);
}
