var ns4 = (document.layers);
var ie4 = (document.all && !document.getElementById);
var ie5 = (document.all && document.getElementById);
var ns6 = (!document.all && document.getElementById);

/*
**************************
* VERSION DU: 07/01/2004 *
**************************

Pour vérifier le contenu d'un formulaire avant de l'envoyer:

1°) Inclure le présent script dans le Head

		<script src="/ete2006/festivaldelacite/inc/scripts.js"></script>


2°) toujours dans le HEAD, créer un script qui précisera les vérifications à effectuer sur les champs:

! ATTENTION, pour les 3 premiers caratères, du texte, bien préciser la casse: un code "cp" ne fonctionnerapa, "CP" étant attendu !

les paramètres à donner à la fonction "validite" sont les suivants (dans l'ordre):
	- nom du formulaire
	- nom du chanp à tester
	-type du champ à tester, 
			A	: alphabetique
			ANP	: alphanumerique pur
			AN : alphanumerique complet (y compris tout les signes tels que: €¨£%)€[|\^]} .....
			ANNNE: 4 chiffres
			N	: numerique
			CP	: code postal francais (5 chiffres)
			D	: Date (xx/xx/xx ou xx/xx/xxxx ou xx-xx-xx ou xx-xx-xxxx)
			EMAIL	: email
	-longueur minimun en caractères.
		Un mini de 0 signifie que le champ n'est pas requis.
		Pour vérifier qu'un champ est bien remplis, il suffit de positionner ce paramètre sur 1 (ou +)
		
	-longueur maximum en caratères
		Un maxi de 0 signifie que l'on ne limite pas la taille du champ.

<SCRIPT language="JavaScript">
	function check_form()
	{
		if (!validite("form1","nom","A",1,0)) {return false;}				//Vérifier que le nom n'est pas vide est est uniquement constirué de caractères
		if (!validite("form1","cp","CP",0,0)) {return false;}				//Vérifier que le code postal, si rempli, est correct
		if (!validite("form1","email","EMAIL",0,0)) {return false;}			//Vérifier que l'email, si rempli, est correct
		if (!validite("form1","dat1","D",1,0)) {return false;}				//Vérifier que la date est biern remplie, et est correcte.
		if (!dropdownlist_choix_effectue("form1","liste_pays")) {return false;} //Vérifier qu'un choix a été effectué dans la liste déroulante des pays
		return true;
	}
</SCRIPT>

3°) Faire appel à la fonction définie en 2° dans  le bouton submit
		<INPUT type=submit OnClick="check_form();>

 ou bien dans le FORM:
		 <form ... onSubmit="return check_form();>

*/


/*
exemple de contenu pour le champ [features]: 
	'toolbar=no,status=no,menubar=no,scrollbars=yes,resizable=no,width=200,height=200'
*/
function popup(theURL,winName,features){ //v2.0
  window.open(theURL,winName,features);
}

function di(id,name){
  if (document.images) {document.images[id].src=eval(name+".src"); }
}

function isDateCorrecte(dat)
{
// VERY simple ...
// Cette fonction sera utilisée par la fonction "validité", afin de préciser si la date est correcte.
var first_slashe,second_slashe,j,m,a

	first_slashe=dat.indexOf("/");
	second_slashe=dat.indexOf("/",first_slashe+1);
	
	if(first_slashe==-1 || second_slashe==-1)
	{

		return false;
	}
	else
	{
		j=dat.substring(0,first_slashe);
		m=dat.substring(first_slashe+1,second_slashe);
		a=dat.substring(second_slashe+1,dat.length).valueOf();

		if(a=="" || m=="" || j=="" || isNaN(j) || isNaN(m) || isNaN(a))
		{
			
			return false;
		}
		j=parseInt(j,10);
		m=parseInt(m,10);				//JavaScript EST BETE !!	
		a=parseInt(a,10);				//De plus, il Faut préciser la base, car un 0x est pris pour un octal ou hexa ....

		if(j<1 || j>31) 	{return false;}
		if(m<0 || m>12)		{return false}
		if(m==2)
		{
			if(j>29) 		{return false;}
		}
		else
		{
			var modulo;
			modulo=(m<=7)?0:1;
			if ((m%2)==modulo && j>30) {return false;}
			
		}
	}
	return true;
}



function validite(formulaire,champ,format,mini,maxi) {
// Paramètres: nom du formulaire, nom du champ, format , taille mini, taille maxi
// Initialisation de la variable
var probleme;
	probleme = false;

	if ( format == "A" ) { RE = /^([A-Za-z\.]+[ ]*[-]*[A-Za-z\.]*)+$/;}
	if ( format == "ANP" ) { RE = /^[A-Za-zàâäéèêëîïôùûç&\.\s,'0-9\/\\<>\-_\'"]+$/;}
	if ( format == "AN" ) { RE = /^[A-Za-zàâäéèêëîïôùûç&\.\s,'0-9\/\\<>\-_\'"&~#{(\[|`^@\])°+=}%^¨$£¤*µ?!§:;´²€]+$/;}
	if ( format == "N" ) { RE = /^\d+$/;}
	if ( format == "ANNEE" ) { RE = /^\d{4}$/;}
	if ( format == "CP" ) { RE = /^\d{5}$/;}
	if ( format == "D" ) { RE = /^\d{2}([\/]|[\-])+\d{2}([\/]|[\-])+\d{2}(\d{2})*$/;}
	if ( format == "EMAIL" ) { RE = /^[A-Za-z0-9\.\-_]+[@][A-Za-z0-9\-\.]+[\.][A-Za-z][A-Za-z][A-Za-z]?$/;}

	var controle = eval('document.' + formulaire + '.' + champ);	// Creation d'un raccourci pour manipuler le champ a tester
	
	if(controle.value.length==0 && mini>0)							// si le champ est requis et vide
	{
		alert('Vous devez saisir ce champ.');
		bloque(formulaire,champ);								// On active le blocage du champ
		return false;
	}
	else
	{
		if (controle.value.length > 0)									// On ne fera les tests que si le champ est rempli d'au moins un caractere (pas vide)
		{
			if (!RE.test(controle.value))								// Si on ne trouve pas dans le champ l'expression reguliere recherchee
			{
				alert('Votre saisie est incorrecte.');
				bloque(formulaire,champ);								// On active le blocage du champ
				return false;
			}
		
			if ( mini != 0 )											// Tests de longueur du champ (nombre de caracteres saisis)
			{															// Si il a ete specifie '0', le test n'est pas effectue
				if ( controle.value.length < mini )
				{
					alert('Vous devez saisir au moins ' + mini + ' caracteres.');
					bloque(formulaire,champ);								// On active le blocage du champ
					return false;
				}
			}
		
			if ( maxi != 0 )											// Si il a ete specifie '0', le test n'est pas effectue
			{
				if ( controle.value.length > maxi )						// Si la longueur de la saisie est superieure au maximum demande
				{
					alert('Vous ne devez pas saisir plus de ' + maxi + ' caracteres.');
					bloque(formulaire,champ);								// On active le blocage du champ
					return false;
				}
			}
			if (format == "D" )											//test supplementaire pour la date, afin d'éliminer les cas les plus flagrants de mauvaises dates.
			{
				if (!isDateCorrecte(controle.value))
				{
					alert('La date que vous avez indiquée n\'est pas valide.');
					bloque(formulaire,champ);								// On active le blocage du champ
					return false;
				}
			}
		}
	}		
	return true;
}


function bloque(formulaire,champ)
{
	var controle = eval('document.' + formulaire + '.' + champ);			// Creation d'un raccourci pour manipuler le champ
	controle.focus();														// On se place sur le champ incrimine
	controle.select();														// On selectionne le contenu pour faciliter la reprise de la saisie
}


//Cette fonction permet de vérifier qu'un autre choix que le choix par défaut (valeur=0) a été sélectionné.
function dropdownlist_choix_effectue(formulaire,champ)
{
	var controle = eval('document.' + formulaire + '.' + champ);			// Creation d'un raccourci pour manipuler le champ
	if(controle.options[controle.selectedIndex].value==0)
	{
		alert('Vous devez effectuer un choix dans la liste déroulante.');
		bloque(controle);
		return false;
	}
	return true;
}

/*Cette fonction exécute le code [code_a_executer] si la touche appuyée est [ENTER]*/
function test_key(e,code_a_executer){
var keycode;
	if (window.event) {keycode = window.event.keyCode;}
	else
	{
		if (e) {keycode = e.which;}
		else {return true;}
	}
	
	if (keycode == 13)
	{
		eval(code_a_executer);
		return false;
	}
	else {return true;}
}

/*
	Cette fonction permet de redimensionner automatiquement une fenêtre popup d'affichage d'une image,
	en fonction de la taille de cette image.
	pour l'appeller: <BODY onload="cheksize();">
*/
function checksize(){
	if (document.images[0].complete)
	{ 
		window.resizeTo(document.images[0].width+50,document.images[0].height+100);
		window.focus();
	}
	else
	{
		setTimeout('checksize()',250)
	}
}

/*Cette fonction permet de déterminer la hauteur effective d'un calque*/
function hauteur(nom_calque)
{
	if (document.getElementById) {return document.getElementById(nom_calque).offsetHeight;}
	else {return document.layers[nom_calque].document.height;}
}

/*Cette fonction permet de déterminer la largeur effective d'un calque*/
function largeur(nom_calque)
{
	if (document.getElementById) {return document.getElementById(nom_calque).offsetWidth;}
	else {return document.layers[nom_calque].document.width;}
}


/*Lorsqu'elle est appellée, cette fonction vérifie que l'on se trouve bien dans un jeu de frame
Dans le cas contraire, on redirige vers la page passée en paramêtre*/
function ReParent(source) {
	if ( self==top)
	{
		alert('Ce site utilise des frames.\n Vous etes redirigés automatiquement vers la frame principale.'); 
		top.location = source ; 
	}
}

/*Lorsqu'elle est appellée, cette fonction vérifie que l'on ne se trouve pas dans un jeu de frame
Dans le cas contraire, on redirige le jeu de frame vers la page elle-même*/
function ReTop() {
	if ( self!=top) {top.location = document.location.href;}
}


function PopupCentrer(page,largeur,hauteur,options) {
  var top=(screen.height-hauteur)/2;
  var left=(screen.width-largeur)/2;
  window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
}

function PopupTopLeft(page,largeur,hauteur,options) {
  var top=10;
  var left=10;
  window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
}