/* 
Signature
Dév: AB
Rév: 005, 20 octobre 2009
*/

signatureBP = 
{
	
	'lx' : 0,
	'ly' : 0,
	'nombreDeclenchements': 0,
	'arreterDeclencheur' : false,


// mise en place effective de la signature
'miseEnPlaceSignature' : function (sourceSignature, largeur, hauteur)
{
	//console.log('miseEnPlaceSignature: Fonction appelee, largeur='+largeur+', hauteur='+hauteur);
	document.getElementById("signature").innerHTML = ["\x3C\x69\x66\x72\x61\x6D\x65\x20\x61\x6C\x6C\x6F\x77\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x63\x79\x3D\x22\x74\x72\x75\x65\x22\x20\x66\x72\x61\x6D\x65\x62\x6F\x72\x64\x65\x72\x3D\x22\x30\x22\x20\x77\x69\x64\x74\x68\x3D\x22"]+largeur+["\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22"]+hauteur+["\x22\x20\x73\x63\x72\x6F\x6C\x6C\x69\x6E\x67\x3D\x22\x6E\x6F\x22\x20\x73\x72\x63\x3D\x22"]+sourceSignature+["\x22\x3E\x3C\x2F\x69\x66\x72\x61\x6D\x65\x3E"]+document.getElementById("signature").innerHTML;
},

// fonction avec déclencheur, elle va chercher la signature dans le répertoire courant si aucune signature n'a pu être trouvée
// s'il n'est pas stoppé à temps, le déclencheur est désactivé au bout de 30 secondes
'signatureRepCourant' : function (sourceSignature)
{
	signatureBP.nombreDeclenchements++;
	if (signatureBP.nombreDeclenchements<60 && !signatureBP.arreterDeclencheur)
	{
		// se déclenche 2x par seconde
		setTimeout('signatureBP.signatureRepCourant(\''+sourceSignature+'\')', 500);
	}
	
},



// fonction appelée lors de l'évolution du chargement de données en AJAX
'evolutionChargementDonnees' : function (etatConnexion, statutHttp, sourceSignature)
{
	//console.log('evolutionChargementDonnees->etatConnexion='+etatConnexion);
	//console.log('evolutionChargementDonnees->statutHttp='+statutHttp);
	// on a obtenu une réponse
	if (etatConnexion==4)
	{
		// le code de retour http est 200, la page signature existe
		if (statutHttp==200) 
		{
			// on arrête le déclencheur
			signatureBP.arreterDeclencheur=true;
			// mise en place effective de la signature
			//console.log('evolutionChargementDonnees: Mise en place effective de la signature');
			signatureBP.miseEnPlaceSignature(sourceSignature, signatureBP.lx, signatureBP.ly);
		}
		// on teste à la racine du site
		else if (statutHttp==404 && repertoireNiv0==false)
		{
			// on arrête le déclencheur
			signatureBP.arreterDeclencheur=true;
			// mise en place effective de la signature
			signatureBP.miseEnPlaceSignature(signatureBP.sourceSignatureBase, signatureBP.lx, signatureBP.ly);
		}
	}
},



/* Appel de la signature et test AJAX */
/* l: largeur du cadre */
/* h: hauteur du cadre */
/* sourceAlternative: modifie le nom du fichier signature appelé dans le cadre */
'chargerSignature' :  function (l, h, sourceAlternative)
{
	var chemin=document.location.href.split(/[\/]+/g);
	var sourceSignatureBase='/signature.html';
	var sourceSignature='';
	var _0x25b0=["\x74\x65\x73\x74","\x2F","\x5F\x74\x65\x6D\x70\x6C\x61\x74\x65"];
	var repertoireNiv0=true;
	this.lx=l;
	this.ly=h;
	//console.log('chargerSignature: lx='+this.lx+', ly='+this.ly);

	// on remplace le nom du fichier appelé dans le cadre
	if (sourceAlternative!=undefined && sourceAlternative!='')
	{
		sourceSignatureBase='/'+sourceAlternative;
	}

	// expression régulière permettant d'évaluer les répertoires de test
	var RepTest = new RegExp("^[a-z]{1}[0-9]{0,1}$", "g"); 
	var cheminTestVariable=RepTest.test(chemin[2]);

	// évalue l'emplacement où se trouve le document, se situe-t'il dans un répertoire de test
	if ( chemin[2]==_0x25b0[0x0] || chemin[2]==_0x25b0[0x2] || (/*chemin[2].length<3 &&*/ cheminTestVariable ) || (chemin[1]=='www.ledns.net' && chemin[2].split(/[\.]+/g).length==2))
	{

		// cas particulier des gabarits		
		if (chemin[2]==_0x25b0[0x2])
		{
			sourceSignature=_0x25b0[0x1]+chemin[2]+_0x25b0[0x1]+chemin[3]+sourceSignatureBase;
		}
		// cas général
		else
		{
			//document.write("cas général<br>");
			
			// dépile le dernier élément du tableau représentant le chemin actuel, de façon à ne garder que le chemin d'accès mais pas le nom du fichier servi
			if(navigator.appName!='Microsoft Internet Explorer' || chemin[chemin.length-1].length>2)
			{
				chemin.pop();
			}

			// ajoute un / après http:/
			chemin[0]=chemin[0]+'/';
			sourceSignature=chemin.join('/')+sourceSignatureBase;
			//document.write('sourceSignature: '+sourceSignature+'<br>');

		}

		repertoireNiv0=false;

	}
	else
	{
		sourceSignature=sourceSignatureBase;
	}

	// test AJAX
	signatureBP.sigXmlHttp='';
	try
	{
		// FF3, Opera8, Safari
		signatureBP.sigXmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		// IE 7&8
		try
		{
			signatureBP.sigXmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			// IE 6
			try
			{
				signatureBP.sigXmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{
				// ne rien faire
			}
		}
	}	

	if (navigator.appName!='Opera')
	{	
		signatureBP.sigXmlHttp.open("HEAD", sourceSignature, true);
		
		var self = signatureBP.chargerSignature;
		
		signatureBP.sigXmlHttp.onreadystatechange=function()
		{
			//console.log('sourceSignature: '+sourceSignature);
			//console.log('signatureBP.evolutionChargementDonnees: '+signatureBP.evolutionChargementDonnees);
			//console.log('signatureBP.sigXmlHttp: '+signatureBP.sigXmlHttp);			
			try{
				//console.log('signatureBP.sigXmlHttp.readyState / signatureBP.sigXmlHttp.status : '+signatureBP.sigXmlHttp.readyState + " / " + signatureBP.sigXmlHttp.status);
			
				signatureBP.evolutionChargementDonnees
				(
					signatureBP.sigXmlHttp.readyState,
					signatureBP.sigXmlHttp.status,
					sourceSignature
				);

			}
			catch (e) 
			{
			}		
				
		} // fin function()
		
		
		signatureBP.sigXmlHttp.send(null);
		signatureBP.signatureRepCourant(sourceSignature);

	}
	else
	{
		signatureBP.miseEnPlaceSignature(sourceSignature, signatureBP.lx, signatureBP.ly);
	}

				
}
	
	
}



