Ext.onReady(function(e){
	
var doauth = function(){
alert("toto");
return false;
}

/**
 * ex&eacute;cute la validation des fomulaires
 */ 
var processSubmit = function(e){
	/**
	 * c'est ici que je valide le formulaire.
	 */
	var tabObligtoire = new Array("marque","modele","energie","version","version_text","categorieBien","categorie","moismenservice","anneemenservice","immatriculation");
	var tabNumeric = new Array("km","cvPuiss","cvfisc","Nbplaces","nbportes","prix");
	var tab = Ext.Ajax.serializeForm("vehicule_depot_form");
	
	// on remplace le caractére E2%82%AC par euro
	tab = tab.replace(/%E2%82%AC/g," euros");
		
	/**
	 * On extrait 
	 */
	
	urlElement1 = Ext.get("disponibilite");
	urlElement2 = Ext.get("disponibiliteField");
	if(urlElement1){
		dispo = urlElement1.dom.value;
		tab += "&disponibilite="+dispo;
	}
	if(urlElement2){
		dispo = urlElement2.dom.value;
		tab += "&disponibilite="+dispo;
	}
	
	var tabStr = tab.split("&");
	var doAlert = false;
	var date;
	var dateAn;
	var datemois;
	var immat;
	
	var message = "Des champs obligatoires du formulaire ne sont pas remplis.";
	
	for(var i = 0; i < tabStr.length ; i++){
		var tabParam = tabStr[i].split("=");
		var lab = "label_"+tabParam[0];
		
		
		if(tabObligtoire.indexOf(tabParam[0]) != -1){
			if(tabParam[0] == "version_text" || tabParam[0] == "version") lab = "label_version" ;
			Ext.get(lab).addClass("cObligatoire");
			
			if(tabParam[1] == "" || tabParam[1] == "choose"){
				doAlert = true;
				Ext.get(lab).addClass("cObligatoire_nvalide");
			}else{
				Ext.get(lab).removeClass("cObligatoire_nvalide");
			}
		}
		
		
		if(tabNumeric.indexOf(tabParam[0]) != -1){
			if(tabParam[1] != "" && isNaN(parseInt(tabParam[1],10))){
				message = "Les champs num&eacute;riques sont mal renseign&eacute;s !";
				doAlert = true;
				Ext.get(lab).addClass("cObligatoire_nvalide");
			}else{
				Ext.get(lab).removeClass("cObligatoire_nvalide");
			}
		}
		
		if(tabParam[0] == "anneemenservice") dateAn = tabParam[1];
		if(tabParam[0] == "moismenservice") datemois = tabParam[1];
		
		/**
		 * et pour l'immatriculation
		 */
		if(tabParam[0] == "immatriculation") immat = tabParam[1];
	}
	if(!doAlert){
	/**
	 * on v&eacute;rifie les dates
	 */
	 
	 	if(!datemois) datemois = "01"; 
	 	
	 	var rdate = new Date();
		
		var pdate = parseInt(dateAn,10);
		var pmdate = parseInt(datemois,10);
		
		var prdate = new Date(datemois+"/01/"+dateAn); 
		var debDate = new Date('01/01/1900');
		
		if(dateAn.length != 4){
	 		doAlert = true;
			message = "La date n'est pas dans un bon format !";
		}else if(isNaN(pdate)){
			message = "La date de mise en service n'est pas valide!";
			doAlert = true;
		}else if(!prdate.between(debDate,rdate)){
			message = "La date de mise en service n'est pas valide!";
			doAlert = true;
		}
		if(doAlert){
			if(Ext.get("label_moismenservice"))Ext.get("label_moismenservice").addClass("cObligatoire_nvalide");
			Ext.get("label_anneemenservice").addClass("cObligatoire_nvalide");
		}else{
			if(Ext.get("label_moismenservice"))Ext.get("label_moismenservice").removeClass("cObligatoire_nvalide");
			Ext.get("label_anneemenservice").removeClass("cObligatoire_nvalide");
		}
		
		// on Vérifie tout de même que l'on est dans un dêpot de vente de véhicule
		var transaction = Ext.get("transaction");
		var valueTransaction = "vente";
		
		if(transaction) valueTransaction = transaction.getValue();
		
		if(!doAlert && valueTransaction == "vente"){
			var reg=new RegExp("%20", "gi");
			
			immat = immat.replace(reg,"");
			
			//var exp_newimmat = "^([1-9]{1,4}|[a-zA-Z]{1,2})-?([a-zA-Z]{1,3}|[1-9]{2,3})-?(974|[a-zA-Z]{1,2})$";
			var exp_ncvo_moto = "^[0-9]{1,3}[a-zA-Z]{1,3}(NC|nc|nC|Nc)$";
			var exp_ncvo = "^[0-9]{6}(NC|nc|nC|Nc)?$";
			var exp_newimmat = "^([a-zA-Z]{1,2})-?([0-9]{2,3})-?([a-zA-Z]{1,2})$";
			var exp = "^[0-9]{1,4}[a-zA-Z]{1,3}97[1-4]{1}$";
			var exp_diplo = "^[0-9]{1,2}[a-zA-Z]{1,2}[1-9]{1}974$";
			var val1 = immat.match(exp);
			var val2 = immat.match(exp_newimmat);
			var val3 = immat.match(exp_diplo);
			var val4 = immat.match(exp_ncvo);
			var val5 = immat.match(exp_ncvo_moto);
			if(val1 || val3 || val2 || val4 || val5){
			 	//alert("oui !!");
			 	if(Ext.get("label_immatriculation"))Ext.get("label_immatriculation").removeClass("cObligatoire_nvalide");
				Ext.get("label_immatriculation").removeClass("cObligatoire_nvalide");
			 }else{
			 	//alert("non !! ");
			 	message = "Votre immatriculation n'est pas valide !<br/> Elle ne sera pas affich&eacute; sur le site mais est obligatoire lors du d&ecirc;pot d'annonce!";
				doAlert = true;
				if(Ext.get("label_immatriculation"))Ext.get("label_immatriculation").addClass("cObligatoire_nvalide");
				Ext.get("label_immatriculation").addClass("cObligatoire_nvalide");
			 }
		}
	}
	
	if(!doAlert){
		valideAnnonce(tab);
	}else{
//		 Ext.Msg.alert('status',"aucune Annonce compatible avec vos crit&egrave;res");
		//Ext.Msg.alert('Le formulaire n&rsquo;a pas &eacute;t&eacute; envoy&eacute;',"Des champs du formulaire n'ont pas &eacute;t&eacute; remplis, ou des champs ne comportent pas les bonnes donn&eacute;es.");
		Ext.MessageBox.show({
           title: 'Le formulaire n&rsquo;a pas &eacute;t&eacute; envoy&eacute;',
           msg: message,
           buttons: Ext.MessageBox.OK,
           icon: 'ext-mb-warning'
       });
		
 		//alert("Des champs du formulaire n'ont pas &eacute;t&eacute; remplis, ou des champs ne comportent pas les bonnes donn&eacute;es.");	
	}
} // Fin de la fonction processSubmit()



/**
 * fonction pour valider mon annonce !! 
 */ 
var valideAnnonce = function(tab){
//	tab = Ext.Ajax.serializeForm("vehicule_depot_form");
//	tabutil = Ext.Ajax.serializeForm("FormulaireUtilisateur");

	Ext.Ajax.request({
	url : '/Annonce/index/createAnnonce',
	params : tab,
	//method: "POST",
	//headers : {"Content-Type":"application/x-www-form-urlencoded;charset=utf-8"},
	success: function( result, request ) {
				c = Ext.get("description_annonce");
				hidden = Ext.get("authentifie");
				ret = result.responseText;
   				hidden.dom.value = ret;
   				/**
   				 * reste a faire les alertes pour notifier l'&eacute;tat de la validation de l'annonce.
   				 */
				var urlElement = Ext.get("url_nonconnect");
				var urlPhoto = Ext.get("url_photo");
				var urlconnect = Ext.get("url_connect");
				
				var splitRet = ret.split("_");
				
				/*if(typeof(splitRet)=='object'&&(ret instanceof Array)){
					alert("lé bon !!");
				}*/
				
   				if(splitRet[0] == 8){
   					//success on est identifié
//   					Ext.get("alert").update("votre message est valid&eacute;");
					var auth = Ext.get("authentifie");
					
					if(urlElement && ((auth && auth.dom.value == "") || !auth )){
						
						if(urlPhoto){
							document.location.href = urlPhoto.getValue();
						}else{	
							var url = urlElement.dom.value;	
   							document.location.href = url;
   						}
					}else{
						if(urlPhoto){
							document.location.href = urlPhoto.getValue()+"pdpra/"+splitRet[1];
						}else{
							var urlCon = urlconnect.getValue();
							document.location.href = urlCon;
						}
					}
					
   				}else if(splitRet[0] == 9){
//   					//failed on n'est pas identifié
						if(urlPhoto){
							document.location.href = urlPhoto.getValue();
						}else{
							var urlCon = urlElement.getValue();
							document.location.href = urlCon;
						}
   				}else if(splitRet[0] == 11){
   					alert("Vous avez atteint votre limite d'annonce pour le moment.");
   				}else{
   					alert("une erreur est survenue !");
   				}
   				
			},
			
	failure: function ( result, request) { 
//				Ext.MessageBox.alert('Failed',"une erreur est survenue");
 				alert("une erreur est survenue"); 
			} 
		});	
}

//var createSecondEtape = function(){
//	div = Ext.get("description_annonce");
//	div.load({
//				url: "/Vente/second",
//				text: "Updating...",
//			});		
//	div.show();
//}

var valideAnnonceEnAttente = function(idannonceur){
	Ext.Ajax.request({
	url : '/Annonce/index/valideAnnonceEnAttente' ,
	params : {idannonceur : idannonceur},
	success: function( result, request ) {
				Ext.get("alert").update("votre annonce est valid&eacute; enfin !!");
			},
			
	failure: function ( result, request) { 
				Ext.MessageBox.alert('Failed',"une erreur est survenue");
				alert("une erreur est survenue");  
			},
			
	callback: function (){
				url = Ext.get("url_nonconnect").dom.value;
				if(url)
 				document.location.href = url;
			}				 
		});
}

 
var inscrireUtilisateur = function(){
tab = Ext.Ajax.serializeForm("FormulaireUtilisateur");
tab += '&mode=ajax';

//for each(entry in f.dom.elements){
//	champname = entry.name; 
//	if(entry.name){
//		if(champname.indexOf("Form") != -1 && entry.value){
//			alert(entry.name+" | "+entry.value);
//			tab[entry.name] = entry.value;
//		}
//	}
//}
/**
 * on valide le formulaire d'inscription
 */
 Ext.Ajax.request({
	url : '/Utilisateurs/index/insertAndAuthenticate' ,
	params : tab,
	success: function( result, request ) {
				json = JSON.parse(result.responseText);
				c = Ext.get("bloc_inscription");
				if(json.status == 1){				
//					alert(result.responseText);
					/**
					 * on regarde si il y a des annonces en attente 
					 */
					 val = Ext.get("annonce_attente").dom.value;
					 if(val){
			
					 	// Annonce en attente;
					 	valideAnnonceEnAttente(json.idannonceur);
					 }
				}else{
					alert("Il y a des erreurs dans le formulaires d'inscription"); 
//					Ext.Msg.alert('Failed',"Il y a des erreurs dans le formulaires d'inscription"); 
				}
			},
			
	failure: function ( result, request) { 
				alert("une erreur est survenue");
//				Ext.MessageBox.alert('Failed',"une erreur est survenue"); 
			},
			
	callback: function (result , request){
//				valideAnnonce(); 
			}				 
		});
} 

/**
 * @return 
 * 	0 si l'utilisateur n'est pas inscrit et ne tente pas de s'inscrire (le bloc inscription est pli&eacute;).<br/>
 *  1 si l'utilisateur tente de se connecter
 * 	2 si l'utilisateur est d&eacute;ja inscrit. 
 * 
 */
var verifieUser = function(){
	login = Ext.get("login");
	pass = Ext.get("pass");
	
	tab = new Array();
	
	tab["login"] = login.dom.value;
	tab["pass"]  = pass.dom.value;
	tab["mode"]  = 'ajax';
	
	Ext.Ajax.request({
	url : '/Authentification/index/check' ,
	params : tab,
	success: function( result, request ) {
				json = JSON.parse(result.responseText);
//				alert("voila le status :: "+json.status);
				if(json.status == 1){
					form = Ext.get("authentification_form");
					div = form.findParentNode("div",10,true);
					div.update(json.content);
					c = Ext.get("bloc_inscription");
					c.update(json.message);
					valideAnnonceEnAttente(json.idannonceur);
				}else if(json.status == 0){
					/**
					 * si le bandeau est d&eacute;pli&eacute; !!.
					 */
					insc = Ext.get("incript_action");
					if(insc.dom.value){ 
						alors = inscrireUtilisateur();
					}else{
						alert("Vous devez vous inscrire pour continuer ou renseigner un email et un mot de passe valide");
//						Ext.MessageBox.alert('Failed',"Vous devez vous inscrire pour continuer ou renseigner un email et un mot de passe valide");
					}
				}else{
					alert("une erreur est survenue");
//					Ext.MessageBox.alert('Failed',"une erreur est survenue"); 
				}
			},
			
	failure: function ( result, request) {
				alert("une erreur est survenue");	 
//				Ext.MessageBox.alert('Failed',"une erreur est survenue"); 
			} 
		});
}


/*var createAction = function(){
	alert("Je doute que ca passe içi...");
	listenBoutonsVilles();
	creerLiensSpansVilles();
	listenVerificationChamps();
	Ext.get("button_submit").on('click', verifieUser); 
	insc = Ext.get("incript_action");
	insc.dom.value = "ok";
} */

var montreInscription = function(){
	var msg = Ext.get("bloc_inscription");
	msg.load({
				url: "/Utilisateurs/",
				text: "Updating...",
				callback:createAction
			});		
	msg.show();
} 


var form = Ext.get('form_submit');
if(form) form.on('click',processSubmit)
//Ext.get('lien_inscription').on('click',montreInscription);
});

//function annuleAnnonce(url){
//	Ext.Ajax.request({
//	url : '/Annonce/index/annuleDepot',
//	success: function( result, request ) {
//			if(!url){
//				document.location.href = "/";
//			}else if(url != ""){
//				document.location.href = url;
//			}
//			},
//			
//	failure: function ( result, request) {
//				alert("une erreur est survenue !! d&eacute;sol&eacute;"); 
//			} 
//		});	
//}

