// JavaScript Document


var FormErreur = false;
var MsgErreur = "";
var	AllerRetour = true;

/// Extension Jquery Fonction AjouteErreur

(function( $ ){

  $.fn.AjouteErreur = function( Message ) {  
  
	if (Message!=null) { MsgErreur += Message + "\n" }

    return this.each(function() {
		FormErreur=true;
		var $this = $(this)
		if (!$this.hasClass('erreur')) { $this.addClass('erreur') }
	});
	
  };
})( jQuery );


jQuery(function($) {	// no conflict
				

		$('#f_devis').submit(function() {  // TESTS AVANT SOUMISSION
			
			// Initialisation
			FormErreur = false;
			MsgErreur = "";
			$('#form_al .erreur').removeClass("erreur");	
			
			// Test si les champs obligatoire ont été modifié (sauf #pays_depart qui est par defaut sur FRANCE (valeur possible))
			$('#form_al .obligatoire:not(.ChampVisiter,#pays_depart)').AjouteErreur();
			
			// Test si les champs texte obligatoires ne sont pas vides
			$('#form_al input[type="text"].obligatoire').each(function() {
				var v = $(this).val();								 
				if ( jQuery.trim(v)=="" ) { $(this).AjouteErreur(); }

			});
			
			
			///// Test Nbr de participant
			var $nb = $('#form_al #nb_personne');
			var nbp = parseInt(jQuery.trim($nb.val()));
			if (isNaN(nbp) || (nbp<1)) { $nb.AjouteErreur(); }

						
			//////////////// Test Date
			
			function TestDate(dateText) { // Test si format de date correct JJ/MM/AAAA
				var ds = dateText.split("/");
				if (ds.length==3 ) {
					return ((ds[0].length==2) && (parseInt(ds[0])<=31)
						&&	(ds[1].length==2) && (parseInt(ds[1])<=12)
						&&	(ds[2].length==4) && (parseInt(ds[2])>=2011))
				}
				return false
			}
			
			
			var TestDateAller = TestDate($("#date_aller").val());
			if ( !TestDateAller ) { $("#date_aller").AjouteErreur(); }
			
			if (AllerRetour) {
				var TestDateRetour = TestDate($("#date_retour").val());
				if ( !TestDateRetour ) { $("#date_retour").AjouteErreur(); }
				
				if ( TestDateAller && TestDateRetour ) {		
					// Test valeur date_aller <  date_retour
					if ( $("#date_aller").datepicker("getDate") > $("#date_retour").datepicker("getDate") ) {					
						$("#date_aller, #date_retour").AjouteErreur("- La date de retour doit être égale ou supérieure à la date de départ.");
					}
				}
			}
			
			/// Si heure ou minute renseigné, test si pas l'un sans l'autre
			if ( $("#heure_aller.ChampVisiter").length && $("#minute_aller:not(.ChampVisiter)").length ) { $("#minute_aller").AjouteErreur(); }
			if ( $("#minute_aller.ChampVisiter").length && $("#heure_aller:not(.ChampVisiter)").length ) { $("#heure_aller").AjouteErreur(); }
			if (AllerRetour) {
				if ( $("#heure_retour.ChampVisiter").length && $("#minute_retour:not(.ChampVisiter)").length ) { $("#minute_retour").AjouteErreur(); }
				if ( $("#minute_retour.ChampVisiter").length && $("#heure_retour:not(.ChampVisiter)").length ) { $("#heure_retour").AjouteErreur(); }
			}
			
			/// Test format du fichier 
			var FormatOK=false;
			var nf = jQuery.trim( $('#fichier_upload').val() );
			if (nf!="") {
				/// attention IE retourne tout le chemin, Firefox et safari seulement le nom du fichier
				
				/// Test si pas d'espace dans le nom du fichier
				nf_split = nf.split("/");
				nf_split_length = nf_split.length;
				nf_seul = nf_split[nf_split_length-1];
				
				nf_split = nf_seul.split(" ");
				nf_split_length = nf_split.length;
				if (nf_split_length==1) {
				
					/// Test Extension
					nf_split = nf.split(".");
					nf_split_length = nf_split.length;
					if (nf_split_length>1) {
						Ext = nf_split[nf_split_length-1];
						FormatOK = ( (Ext=="doc") || (Ext=="docx") || (Ext=="xls") || (Ext=="xlsx") || (Ext=="pdf") );
					}
				}
				
			} else FormatOK=true;
			if (!FormatOK) {
				$('#fichier_upload').AjouteErreur("- Le nom ou l'extension de la pièce jointe est incorrect.\n  » Le nom du fichier ne doit pas contenir d'espace\n  » L'extension doit être en : .doc .docx .xls .xlsx ou .pdf");
			}
			
			
			// Test Email 
			var StrEmail = jQuery.trim( $('#email').val() );
			if (StrEmail!="Email") {
				// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
				if ( ! /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(StrEmail) ) {
					$('#email').AjouteErreur("- L'adresse email n'est pas valide.");
				}
			}
			

			/// Affichage des erreurs
			if (FormErreur) {
					
				MsgErreur = "Merci de renseigner correctement les champs en rouge.\n\n" + MsgErreur;
				alert(MsgErreur);			
			} else {
				$("#actiondepart").val("jsOK");
				$("#ImageLoading").show();
				//$("#submit").hide();
				$("#submit").attr("disabled","disabled").css('opacity', 0.7);
			}
			return !FormErreur;
		});
		// ------ fin test soumission
		
		
		////////// Gestion des champs pré-rempli
		
		function ActiveChampVisiter(cV) {
			var $cV = $(cV)
			if ( !$cV.hasClass('ChampVisiter')) { $cV.addClass('ChampVisiter'); }
			if ( $cV.hasClass('erreur')) { $cV.removeClass('erreur'); }
		}
		
		// Détection champs cliqué et modifié
		
		$('#form_al input[type="text"]').each(function() {
			 // enregistre les valeurs par defaut au démarrage
			 // la valeur par defaut est l'attribut "title" 
			 titre = $(this).attr("title");
			 if ((titre!=undefined) && (titre!="") ) {  this.ValeurParDefaut= titre ; }								
			
		}).click(function() {
			if ( ! $(this).hasClass('ChampVisiter')) { $(this).val("");	}
			
		}).keydown( function() {
			ActiveChampVisiter(this);
		
		}).blur(function() {
			var cVal = $(this).val()
			if ( cVal == "" || cVal == this.ValeurParDefaut ) 	{ $(this).val(this.ValeurParDefaut).removeClass('ChampVisiter'); }
														else 	{  ActiveChampVisiter(this); }
		});
		
		$('#form_al select').change(function() {										
			ActiveChampVisiter(this);
			if ($("option:selected",this).hasClass('parDefaut') ) $(this).removeClass('ChampVisiter');
			
		});
		
		
		
		
		////////// Gestion des radios boutons pour affichage du formulaire
		
		function EtatChampObligatoire(NomChamp, Activer) {
			if (Activer)	{ 
				$(NomChamp+" .obligatoire").addClass("obligatoireDesactive").removeClass("obligatoire")
			} else { 
				$(NomChamp+" .obligatoireDesactive").addClass("obligatoire").removeClass("obligatoireDesactive")
			}
		}
		
		
		$( 'input[name="type_voyage"]' ).change(function() {
			AllerRetour = (! $("#type_voyage_aller:checked").length );
			$(".ZoneRetour").toggle(AllerRetour);
			EtatChampObligatoire(".ZoneRetour", !AllerRetour)
			ActiveChampVisiter( $(this).parent() )
		});

		$('input[name="id_juridique"]').change(function() {
			var nom = "";
			var VoirStructure = true;
			switch($(this).attr("value")) {
				case "1" : VoirStructure = false; break;
				case "2" : nom = "Nom de l'entreprise" ; break;
				case "3" : nom = "Nom de l'association" ; break;
				case "4" : nom = "Nom de la collectivité" ; break;
			}
			
			$("#ZoneStructure").toggle( VoirStructure );
			EtatChampObligatoire("#ZoneStructure", !VoirStructure)
			
			// Attribut nouvelle valeur par defaut
			$("#structure:not(.ChampVisiter)").val(nom).each( function() {
				this.ValeurParDefaut=nom;
			});
			ActiveChampVisiter( $(this).parent() )
		});
		
		
		$( 'input[name="id_civilite"]' ).change(function() {
			ActiveChampVisiter( $(this).parent() )
		});
		
		///////////////////////// Elements dynamiques

		////// autocomplete ville
		$( "#ville_depart, #ville_arrivee" ).autocomplete({
			source: "http://www.autocar-location.com/codespostaux3_json.php",
			minLength: 3
		});

		////// autocomplete pays
		// voir liste_pays.js

		// calendrier
		$( "#date_aller, #date_retour" ).datepicker( {
					minDate: 0,
					onClose: function(dateText) { 					
						if (dateText!=this.ValeurParDefaut) { ActiveChampVisiter(this); }
						
					}
		});
		

});
