/*#################################################
# Projet			: VALL FLY													#
# Date Début	: 29/04/2008												#
# Last Modif	:																		#
# Auteur			: Emmanuel CEGO											#
# Description	: JS permettant de vérifier les			#
#								soumissions de formulaires.				#
###################################################*/


//******************************************************************************//
// FONCTION PERMETTANT DE VÉRIFIER LES ARGUMENTS ET DE SOUMETTRE LE FORMULAIRE	//
//******************************************************************************//
function CheckCotation(){	
	if ($('societe').value == ''){ alert('Le nom de votre Société doit être renseigné !'); $('societe').focus(); return;}	
	if ($('civilite').selectedIndex == 0){ alert('Vous devez choisir la civilité de l\'interlocuteur !'); $('civilite').focus(); return;}	
	if ($('nom').value == ''){ alert('Le nom de l\'interlocuteur doit être renseigné !'); $('nom').focus(); return;}	
	if ($('adresse').value == ''){ alert('Votre adresse doit être renseignée !'); $('adresse').focus(); return;}	
	if ($('ville').value == ''){ alert('Votre ville doit être renseignée !'); $('ville').focus(); return;}	
	if ($('cp').value == ''){ alert('Votre Code Postal doit être renseigné !'); $('cp').focus(); return;}		
	if ($('cp').value.length < 5){ alert('Le Code Postal doit comporter 5 chiffres !'); $('cp').focus(); return;}		
	if ($('tel').value == ''){ alert('Vous devez indiquer un numéro de téléphone !'); $('tel').focus(); return;}	
	if ($('tel').value.length < 10){ alert('Le numéro de téléphone doit comporter 10 chiffres !'); $('tel').focus(); return;}	
	if ($('fax').value != '' && $('fax').value.length < 10){ alert('Le numéro de fax doit comporter 10 chiffres !'); $('fax').focus(); return;}	
	if ($('email').value == ''){ alert('Vous devez indiquez un email !'); $('email').focus(); return;}		
	if (!checkEmail($('email').value)){ alert('L\'Email indiqué est dans un format incorrect !'); $('email').focus(); return;}
	if ($('type_appareil').selectedIndex == 0){ alert('Vous devez choisir le type d\'appareil qui vous intéresse !'); $('type_appareil').focus(); return;}
	
	// La destination n°1 est obligatoire et doit être complète
	if ($('lieu_depart_1').value == '' && $('date_depart_1').value == '' && $('heure_depart_1').value == '' && $('lieu_arrivee_1').value == '' && $('nb_passagers_1').value == ''){ alert('Les informations de la destination n°1 sont obligatoires !'); $('lieu_depart_1').focus(); return;}
	
	// On vérifie qu'il n'y a pas de destination à moitié complétée	
	for (i = 1; i < 5; i++){
		if (($('lieu_depart_' + i).value != '' || $('date_depart_' + i).value != '' || $('heure_depart_' + i).value != '' || $('lieu_arrivee_' + i).value != '' || $('nb_passagers_' + i).value != '') && ($('lieu_depart_' + i).value == '' || $('date_depart_' + i).value == '' || $('heure_depart_' + i).value == '' || $('lieu_arrivee_' + i).value == '' || $('nb_passagers_' + i).value == '')){
			alert('Attention, tous les champs de la destination n°' + i + ' ne sont pas complètement renseignés !');
			$('lieu_depart_' + i).focus();
			return;			
		}		
	}
	
	if (!document.form_cotation.taxi_limousine[0].checked && !document.form_cotation.taxi_limousine[1].checked){ alert('Indiquez si vous désirer un taxi / limousine dans votre prestation !'); $('taxi_limousine').focus(); return;}	;
	if (!document.form_cotation.hotel[0].checked && !document.form_cotation.hotel[1].checked){ alert('Indiquez si vous désirer un hôtel dans votre prestation !'); $('hotel').focus(); return;}	;
	if (!document.form_cotation.catering[0].checked && !document.form_cotation.catering[1].checked){ alert('Indiquez si vous désirer un catering spécial dans votre prestation !'); $('catering').focus(); return;}	;
	if (!document.form_cotation.presse[0].checked && !document.form_cotation.presse[1].checked){ alert('Indiquez si vous désirer une presse spéciale dans votre prestation !'); $('presse').focus(); return;}	;
	
		
	// Une fois que toutes ces conditions sont remplies, on soumet le formulaire
	window.open('','popup','top='+top_centre(175)+',left='+left_centre(345)+',height=175,width=345,scrollbars=no,status=no,toolbar=no,menubar=no');
	$('form_cotation').submit();
	//$('form_cotation').reset();
}


//****************************************************************//
// FONCTION PERMETTANT D'AUTORISER QUE LES CHIFFRES DANS UN CHAMP //
//****************************************************************//
function NumMask(e){	
	var IE5 = false;

	if (!e) var e = window.event;
	if (e.keyCode){
		IE5= true; code = e.keyCode;}
	else if (e.which) code = e.which ;

	//test du code
	if (code < 48 || code > 57) {
		if(IE5){
			e.returnValue = false;
		}
		else
			e.preventDefault();
	} 
}


//***************************************************************//
// FONCTION PERMETTANT DE VÉRIFIER LE FORMAT D'UNE ADRESSE EMAIL //
//***************************************************************//
function checkEmail(email){	
	var i;
	
	// Recherche de @
	i = email.indexOf("@");
	if (i == -1) return false;	
	
	// Séparation du nom de l'utilisateur et du nom de domaine.
	var username = email.substring(0, i);
	var domain = email.substring(i + 1, email.length)

	// Recherche des espaces au début du nom de l'utilisateur.
	i = 0;
	while ((username.substring(i, i + 1) == " ") && (i < username.length)){
		i++;
	}
	
	// Les enlève s'il en trouve.
	if (i > 0) username = username.substring(i, username.length);
	
	// Recherche d'espaces à la fin du nom de domaine.
	i = domain.length - 1;
	while ((domain.substring(i, i + 1) == " ") && (i >= 0)) {
		i--;
	}
	
	// Les enlève s'il en trouve.
	if (i < (domain.length - 1)) domain = domain.substring(0, i + 1);
	
	// Vérifie que le nom de l'utilisateur et du domaine ne soit pas vide.
	if ((username == "") || (domain == ""))	return false;
	
	// Vérifie s'il n'y a pas de caractères interdits dans le nom de l'utilisateur.
	var ch;
	for (i = 0; i < username.length; i++){
		ch = (username.substring(i, i + 1)).toLowerCase();
		if (!(((ch >= "a") && (ch <= "z")) || ((ch >= "0") && (ch <= "9")) ||	(ch == "_") || (ch == "-") || (ch == "."))) return false;		
	}
	
	// Vérifie s'il n'y a pas de caractères interdits dans le nom de domaine
	for (i = 0; i < domain.length; i++){
		ch = (domain.substring(i, i + 1)).toLowerCase();
		if (!(((ch >= "a") && (ch <= "z")) || ((ch >= "0") && (ch <= "9")) ||	(ch == "_") || (ch == "-") || (ch == "."))){
			return false;
		}
	}

	// Ajouter ci-dessous de nouveaux noms de domaine (une liste sur http://www.toulouse-renaissance.net/c_outils/c-nom-domaine.htm)
	var aSuffix = new Array("com","net","int","aero","biz","museum","name","info","coop","pro","eu","edu","org","gov","gouv","mil","bj","dz","de","ad","be","ca","bf","bi","cm","cf","cg","cd","ci","cn","dj","fr","ga","gp","gf","jp","lu","mg","ml","ma","mq","mr","mc","nc","pf","re","pm","sn","ch","td","tf","tn");
	var bFoundSuffix = false;
	i = 0;
	while (i < aSuffix.length){
		if (("." + aSuffix[i]) == domain.substring(domain.length - aSuffix[i].length - 1, domain.length))	return true;		
		i++;
	}
	
	// Si le nom de domaine est inconnu  : return false
	return false;	
}


//******************************************//
// FONCTION PERMETTANT LE CENTRAGE VERTICAL //
//******************************************//
function top_centre(hauteur){	 
	var top=(screen.height-hauteur)/2;	 
	return top;
}
	

//********************************************//
// FONCTION PERMETTANT LE CENTRAGE HORIZONTAL //
//********************************************//
function left_centre(largeur){	 
	var left=(screen.width-largeur)/2;	 
	return left;
}


//******************************************************************//
// FONCTION PERMETTANT DE RACCOURCIR ET AMÉLIORER LE GETELEMENTBYID //
//******************************************************************//
/* 
La dernière innovation en la matière est la fonction baptisée $(), issue du projet Prototype
et qui sert de remplacement efficace à getElementById(). En effet, grâce à elle, un développeur
peut remplacer ces appels de la forme var el = document.getElementById('id'); en var el = $('id').
C'est bien sûr plus court, mais $() va plus loin, en donnant la possibilité d'appeller plusieurs id
différents pour obtenir un tableau d'éléments à parcourir ensuite : var el = $('id1', 'id2', 'id3');.
La version que nous présentons ici est celle de Matthew Pennell.

L'idée de cette version est d'offrir un raccourci non seulement pour getElementById(),
mais également getElementsByTagName() et getElementsByClass(), le tout en une seule fonction.
En somme, une boîte à outils entière en une seule fonction simple d'usage : l'auteur la surnomme
d'ailleurs getElementsByAnything().
*/
	 
function $(){ 
	var elements = new Array(); 
  for (var i=0,len=arguments.length;i<len;i++){ 
  	var element = arguments[i]; 
    if (typeof element == 'string'){ 
    	var matched = document.getElementById(element); 
      if (matched){ 
      	elements.push(matched); 
      }
      else{ 
      	var allels = (document.all) ? document.all : document.getElementsByTagName('*'); 
        var regexp = new RegExp('(^| )'+element+'( |$)'); 
        for (var i=0,len=allels.length;i<len;i++) if (regexp.test(allels[i].className)) elements.push(allels[i]); 
      } 
      if (!elements.length) elements = document.getElementsByTagName(element); 
      if (!elements.length){ 
      	elements = new Array(); 
        var allels = (document.all) ? document.all : document.getElementsByTagName('*'); 
        for (var i=0,len=allels.length;i<len;i++) if (allels[i].getAttribute(element)) elements.push(allels[i]); 
      } 
      if (!elements.length){ 
      	var allels = (document.all) ? document.all : document.getElementsByTagName('*'); 
        for (var i=0,len=allels.length;i<len;i++) if (allels[i].attributes) for (var j=0,lenn=allels[i].attributes.length;j<lenn;j++) if (allels[i].attributes[j].specified) if (allels[i].attributes[j].nodeValue == element) elements.push(allels[i]); 
      } 
    }
    else{ 
    	elements.push(element); 
    } 
  } 
  if (elements.length == 1){ 
  	return elements[0]; 
  }
  else{ 
  	return elements; 
  } 
}
