var REQUEST_INTERVAL = 3000; //ms entre les requetes
var MAX_REQUEST = 14;		 //nombre de requetes max (X3 secondes)
var COUNT_REQUEST = 0;	     //initialisation du compteur

$(function(){

	/*$("#points_bouygues").attr("disabled", true);*/
	ws_bouygues_dispo = $("#ws_bouygues_dispo").val();
	
	if (ws_bouygues_dispo == 0)
		$('#points_bouygues_bloc').show();
		
	var idws;
	var searching;

// Gestion Select Custom
        $(".select-ren").live('click',function(){
                id_parent = $(this).parent().attr("id");
                $("#" + id_parent + " .option-js" ).toggle();
        });
        $(".option-js p").live('click',function(){
                id_parent = $(this).parent().parent().attr("id");
                $("#" + id_parent + " .select-ren p").html($(this).html());
                $("#" + id_parent + " .select-js").val( $(this).children("input").val() );
                $("#" + id_parent + " .option-js").hide();
        });
		
/** BOUYGUES **/

	$("#valider_bouygues").click(function(){
	
		erreur = "";
		emptyError();
     
		if( $("#telephone_bouygues").val().length == 0 )
			erreur += '<li>Veuillez remplir le champ "numéro de téléphone"</li>';
		else if( !$("#telephone_bouygues").regex(/^0[67][0-9]{8}$/) )
			erreur += "<li>Ce numéro de téléphone n'est pas valide</li>";
			
		if( $("#ininom_bouygues").val().length == 0 )
			erreur += '<li>Veuillez remplir le champ "3 premières lettres de votre nom"</li>';
		else if( !$("#ininom_bouygues").regex(/^[a-zA-Z]{3}$/) )
			erreur += "<li>Les 3 premières lettres de votre nom ne sont pas valides</li>";		
		
		if(ws_bouygues_dispo == 0){
			if( $("#points_bouygues").val().length == 0 )
				erreur += '<li>Veuillez remplir le champ "nombre de points"</li>';
			else if( !$("#points_bouygues").regex(/[0-9]/) )
				erreur += '<li>Votre nombre de points n\'est pas valide</li>';
		}

		if(erreur != ""){
			$('#error_b').html( erreur );
			return false;
		}else{
			if(ws_bouygues_dispo == 1){

			  tel = $('#telephone_bouygues').val();
			  operateur_id = 2;
			  operateur = getNomOperateur(operateur_id);
			  ini_nom = $('#ininom_bouygues').val();

			  initSearch(tel, operateur_id, ini_nom);

			}else{			
				var points = $('#points_bouygues').val();
				operateur_id = 2;
				operateur = getNomOperateur(operateur_id);
				if( points != null && points!= 0 ){
					$('#real_points_'+operateur).val(points);						
				}		
				var form = $("#form_"+operateur);
				$.ajax({
					url: form.attr('action'),
					data: form.serialize() +"&nb_points_s="+points,
					dataType: 'json',
					cache: false,
					type: 'POST',
					complete: function(data){
						$(".result-calcul .result").html(data.responseText);
						$(".result-calcul .result").css('opacity','1.0');
						$(".result-calcul .ajax-loader").hide();
					}
				});			
			}

		}
	return false;

	});

/** ORANGE **/

	$("#valider_orange").click(function(){
		erreur = "";
		emptyError();
		$("#valider_bouygues").show();
		
		if( $("#telephone_orange").val().length == 0 )
			erreur += '<li>Veuillez remplir le champ "numéro de téléphone"</li>';
		else if( !$("#telephone_orange").regex(/^0[67][0-9]{8}$/) )
			erreur += "<li>Ce numéro de téléphone n'est pas valide</li>";
			
		if( $("#points_orange").val().length == 0 )
			erreur += '<li>Veuillez remplir le champ "nombre de points"</li>';
		else if( !$("#points_orange").regex(/^[0-9]+$/) )
			erreur += "<li>Votre nombre de points n'est pas valide</li>";		

		if(erreur != ""){
			$('#error_o').html( erreur );
			return false;
		} else {
			var form = $(this).parents("form");
			$.ajax({
				url: form.attr('action'),
				data: form.serialize(),
				dataType: 'json',
				cache: false,
				type: 'POST',
				complete: function(data){
					$(".result-calcul .result").html(data.responseText);
					$(".result-calcul .result").css('opacity','1.0');
					$(".result-calcul .ajax-loader").hide();
				},
				beforeSend: function(data) {
					$(".result-calcul .result").css('opacity','0.2');
					$(".result-calcul .ajax-loader").show();
				}
			});
		}
	return false;
		
	});

/** SFR **/

	$('#select_forfait').hide();
	$('#select_bloque').hide();
	sfr_select($('#forfait_sfr option:selected').val());
	$('#forfait_sfr').change(function(){
		sfr_select($(this).val());
	});
	
	function sfr_select(valeur_select){	
		if (valeur_select == ''){
			$('#select_forfait').hide();
			$('#select_bloque').hide();
		}
		if (valeur_select == 'Forfait'){
			$('#select_bloque').hide();
			$('#select_forfait').show();
		}		
		if (valeur_select == 'Compte bloque'){
			$('#select_bloque').show();
			$('#select_forfait').hide();
		}	
	};


	$("#valider_sfr").click(function(){
	
		erreur = "";
		emptyError();
		$("#valider_bouygues").show();
		
		if( $("#forfait_actuel").val().length == 0 )
			erreur += '<li>Veuillez choisir votre forfait actuel</li>';
		
		if( $("#telephone_sfr").val().length == 0 )
			erreur += '<li>Veuillez remplir le champ "numéro de téléphone"</li>';
		else if( !$("#telephone_sfr").regex(/^0[67][0-9]{8}$/) )
			erreur += "<li>Ce numéro de téléphone n'est pas valide</li>";

		if( $("#points_sfr").val().length == 0 )
			erreur += '<li>Veuillez remplir le champ "nombre de points"</li>';
		else if( !$("#points_sfr").regex(/^[0-9]+$/) )
			erreur += "<li>Votre nombre de points n'est pas valide</li>";
/*
		if( $("#forfait_sfr").val().length == 0 )
			erreur += '<li>Veuillez choisir un type de forfait</li>';
*/
		if (($("#anciennete_sfr_bloque").val().length == 0) && ($('#select_bloque').is(":visible")))
			erreur += '<li>Veuillez choisir votre ancienneté"</li>';	
			
		if (($("#anciennete_sfr").val().length == 0)  && ($('#select_forfait').is(":visible")))
			erreur += '<li>Veuillez choisir votre ancienneté"</li>';	

		if(erreur != ""){

			$('#error_s').html( erreur );
			return false;
		}else{
			var form = $(this).parents("form");
			$.ajax({
				url: form.attr('action'),
				data: form.serialize(),
				dataType: 'json',
				cache: false,
				type: 'POST',
				complete: function(data){
					$(".result-calcul .result").html(data.responseText);
					$(".result-calcul .result").css('opacity','1.0');
					$(".result-calcul .ajax-loader").hide();
					return false;
				},
				beforeSend: function(data) {
					$(".result-calcul .result").css('opacity','0.2');
					$(".result-calcul .ajax-loader").show();
				}
			});
		}
	return false;

	});


// FONCTIONS
	
	//validation par expressions regulieres
	$.fn.regex = function(pattern) { 
  		return ($(this).val().match(pattern)) ? true : false; 
	}
	//validation par expressions regulieres
	function regexx(value, pattern) { 
		return (value.match(pattern)) ? true : false; 
	}
	// vide les messages erreurs
	function emptyError(){
		$('#error_b').empty();
		$('#error_o').empty();
		$('#error_s').empty();
		$('ul.error').empty();
	}
	
	function getNomOperateur(operateur_id){
		switch(operateur_id){
			case 1:
				return "orange";
				break;
			case 2:
				return "bouygues";
				break;
			case 3:
				return "sfr";
				break;
		}
	}

	// initialise une recherche
	function initSearch(tel, operateur_id, iniNom){
	  operateur = getNomOperateur(operateur_id);
	  $(".result-calcul .result").css('opacity','0.2');
	  $(".result-calcul .ajax-loader").show();
	  $("#valider_bouygues").hide();
	 
	//  alert('INIT '+operateur);
	  $.get("/points_initialisationV2.php",
		{telephone: tel, operateur_id: operateur_id, ini_nom: iniNom},
		function(data){
			// toujours disponible
			if(data != "nondispo"){
				idws = data;
				if(!regexx(idws,/[0-9]/))
					initSearch(tel, operateur_id, iniNom);
				else
					searching = setInterval(checkResult, REQUEST_INTERVAL);
				$("#"+operateur+" .loader").show();
				
			}else{
				modeOffLine();
			}
		}
	  );	
	
	}
	
	// fonction d'appel au webservice
	function checkResult(){
	
		$.getJSON('/points_verificationV2.php',
		    {
			telephone: $('#telephone_'+operateur).val(), 
			operateur_id: operateur_id,
			ini_nom: ini_nom,
			idwspts: idws
			 },
			function(callback){
				responseWS = parseInt(callback.responseWebService);
				points = parseInt(callback.points);
				msg = callback.msg;
				eligibility = parseInt(callback.eligibility);

				if(responseWS != -1){
					clearInterval(searching);
					$('#'+operateur+' .loader').hide();
					$("#valider_bouygues").show();
				}
				if(responseWS == -1){
					COUNT_REQUEST++;
					if (COUNT_REQUEST == MAX_REQUEST)
						modeOffLine();
				}
				if( responseWS == 1 ){
					if( points != null && points!= 0 ){
						$('#real_points_'+operateur).val(points);						
					}
					$('#eligibility_'+operateur).val(eligibility);
					
					var form = $("#form_"+operateur);
					$.ajax({
						url: form.attr('action'),
						data: form.serialize() + "&eligibility="+eligibility+"&nb_points_s="+points,
						dataType: 'json',
						cache: false,
						type: 'POST',
						complete: function(data){
							$(".result-calcul .result").html(data.responseText);
							$(".result-calcul .result").css('opacity','1.0');
							$(".result-calcul .ajax-loader").hide();
							$("#valider_bouygues").show();
						}
					});
				}				
				else if( responseWS == 0 ){
					modeOffLine();
				}
				if ((responseWS == 3) || (responseWS == 4) || (responseWS == 2)){
					modeOffLine();
				}
			}
		);
			
	}
	
	
	function modeOffLine(){
		clearInterval(searching);
		if(operateur_id == 2){
				ws_bouygues_dispo = 0;
				var msg = "Echec de la consultation, composez le 607 pour connaitre votre nombre de points. Saisissez le ci-dessus pour consulter nos offres.";
				$('#points_bouygues_bloc').show();
				$('#error_b').html( msg );		
				$(".result-calcul .ajax-loader").hide();
				$("#valider_bouygues").show();
				$(".result-calcul .result").css('opacity','1.0');
		}
		if(operateur_id == 1 || operateur_id == 3){
				$("#form_"+operateur).submit();
		}
	}
	
			
if ($('.renouv_operateur').val() != ""){
	$("#valider_"+$('.renouv_operateur').val()).click();
	}

});
