/**
 * Gestion d'affichage des blocs onglets
 * @param id :  identifiant du bandeau
 * */
function toggle_visibility(id) {
	$('#contenu-onglets > div').hide();

	var e = document.getElementById(id);

	if(e.style.display == 'block') {
		e.style.display = 'none';
	} else {
		e.style.display = 'block';
		$('div.tabs li').removeClass('active');
		var href = '#' + id;
		$('div.tabs a[href=' + href + ']').parent().addClass('active');
	}
	if (id=='contenu-onglet-4') {
		loadMap();
	}
}
/**
 * fonction pour vérifier les entrée utilisateur(numérique et .) "real"
 */
function CheckNumber(champ) {
	reg = new RegExp("[^0-9./]", "i");
	if (!reg.test(champ.value)){
	//
	}else{
		champ.value = champ.value.substring(0,(champ.value.length-1));
	}
}
/**
 * Chargement du bandeau en ajax
 * @param page : url de page d'affichage du bandeau
 * 		  id   : Identifiant du bandeau
 * */
function loadBandeau(page, id) {
	$.ajax({
		url: page + '?ajax=1',
		success: function(data) {
			defileBandeau(page, id, data, 0);
		},
		cache: false,
		type : 'GET',
		dataType : 'json'
	});
}
/**
 * Défilement du bandeau
 * @param url: url de page d'affichage du bandeau
 * 		  id : Identifiant du bandeau
 * 		  tbl: Liste de bandeau
 * 		  i  : compteur
 * */
function defileBandeau(url, id, tbl, i) {
	setTimeout(function(){
		var j = i;

		if(j == 10) {
			loadBandeau(url, id);
			return;
		}

		j = (j == tbl.length) ? 0 : (i + 1);

		$('#'+id).html(tbl[j]);
		defileBandeau(url, id, tbl, j);
	}, 5000);
}
/**
 * Redirection javascript
 * @param url : adresse url destination
 * */
function goToUrl(url, blank) {
	if(blank === true) {
		window.open(url);
		return;
	}

	document.location.href = url;
}

/**
 * Extraction les parametre d'une url
 * @param nom du paramètre à extraire
 * @param nom du paramètre à extraire
 */
function getValueFromUrl(url, name) {
	var idx = url.indexOf('?');
	
	//Si pas de paramètres
	if(idx==-1) {
		return null;
	}

	var query = "&" + url.substring(idx + 1);
	var qs = query.toLowerCase();
	var key = "&" + name.toLowerCase() + "=";
	var begin = qs.indexOf(key);

	if(begin==-1) {
		return null;
	} else {
		begin += key.length;
	}
	var end = qs.indexOf("&", begin);
	if (end == -1) {
		end = query.length;
	}

	return unescape(query.substring(begin, end));
}
/**
 * enregistrer l'état de la page
 * */
function viewport() {
	return {
		x: $(window).scrollLeft(),
		y: $(window).scrollTop(),
		cx: $(window).width(),
		cy: $(window).height()
	}
} 
/**
 * Vérification si une variable est vide, null, indifinie ... 
 * @param mixed_var: variable à vérifier
 * @returns booleen
 * */
function empty( mixed_var ) {
	if (mixed_var === ""
		|| mixed_var === 0
		|| mixed_var === "0"
		|| mixed_var === null
		|| mixed_var === false
		|| mixed_var === undefined
	) {
		return true;
	}

	if (typeof mixed_var == 'object') {
		for (var i in mixed_var) {
			return false;
		}

		return true;
	}

	return false;
}
/**
 * Envoi du formulaire d'authentification
 * */
function login() {
	$('#loginForm').submit();
}
/**
 * Envoi du formulaire credi
 * */
function credifin() {
	$('#credifin').submit();
}
/**
 * Vérification de la saisie du login et mot de passe
 * @param frm : formulaire
 * 		  msg_err : Le message à afficher en cas d'erreur
 * @returns booleen 
 * */
function verifLogin(frm, msg_err){
	var eml = frm.find('input[name="mail"]').val();
	var pass = frm.find('input[name="mdp"]').val();
	
	if(empty(eml) || empty(pass) || ( pass == defaultpassword || eml == defaultemail ) ) {
		alert(msg_err);
		return false;
	}

	return true;
}

/**
 * effacer les critères de recherche
 */
function resetSearch(id) {
	$('#' + id).find('select').val('');
	$('#' + id).find('input:text').val('');
	$('#' + id).find('input:checkbox').attr('checked', false);
	$('#' + id).find('select:first').trigger('change');
}

/**
 * Récupération des critères de recherche lot en cours
 * */
function getSearchSelectedParamsLot() {
	var selected = {};
	
	divContext = $('#recherche-lot-top');

	//selected.fiscalite_id = $('#lot_fiscalite_id', divContext).val();
	selected.type_residence_id = $('#lot_type_residence_id', divContext).val();
	selected.rentabilite = $('#lot_rentabilite', divContext).val();
	selected.type_lot = $('#lot_type_lot', divContext).val();
	selected.region_id = $('#lot_region_id', divContext).val();
	selected.departement = $('#lot_departement', divContext).val();
	selected.annee_livraison = $('#annee_livraison', divContext).val();
	//selected.surface_mini = $('#surface_mini', divContext).val();
	//selected.surface_maxi = $('#surface_maxi', divContext).val();	
	selected.budget_min = $('#budget_min', divContext).val();
	selected.budget_max = $('#budget_max', divContext).val();
	selected.ville = $('#lot_ville', divContext).val();
	selected.annee_actabilite = $('#annee_actabilite', divContext).val();
	//les checkbox
	/*selected.parking = $('#parking', divContext)[0].checked;
	selected.plein_pied = $('#plein_pied', divContext)[0].checked;
	selected.jardin = $('#jardin', divContext)[0].checked;
	selected.terrasse = $('#terrasse', divContext)[0].checked;
	selected.garage = $('#garage', divContext)[0].checked;
	selected.cave = $('#cave', divContext)[0].checked;
	selected.box = $('#box', divContext)[0].checked;
	selected.cellier = $('#cellier', divContext)[0].checked;*/
	return selected;
}
/**
 * Récupération des critères de recherche en cours
 * @returns  Liste des paramétres séléctionnés en cours
 * */
function getSearchSelectedParams() {
	var selected = {};
	selected.type_lot = $('#type_lot').val();
	selected.region_id = $('#region_id').val();
	selected.ville = $('#recherche-top').find('#ville').val();
	selected.type_residence_id = $('#prog_type_residence_id').val();
	selected.promoteur_web = $('#promoteur_web').val();
	selected.programme_id = $('#programme_id').val();
	selected.departement = $('#departement').val();
	
	return selected;
}
/**
 * Construction des paramétres de cherche lot pour l'envoi dans l'url  
 * @param selected : Liste des paramétres séléctionnés en cours
 * @returns chaine d'url des paramétres sélectionnés
 * */
function getSearchRequestParamsLot(selected) {
	var lot_fiscalite_id = $('#lot_fiscalite_id').val();

	var request = '?ajax=1';

	if(!empty(lot_fiscalite_id)) {
		request += '&lot_fiscalite_id=' + lot_fiscalite_id;
	}
	if(!empty(selected.ville)) {
		request += '&lot_ville=' + selected.ville;
	}
	if(!empty(selected.annee_actabilite)) {
		request += '&lot_annee_actabilite=' + selected.annee_actabilite;
	}
	if(!empty(selected.type_residence_id)) {
		request += '&lot_type_residence_id=' + selected.type_residence_id;
	}
	/*if(!empty(selected.typologie)) {
		request += '&typologie=' + selected.typologie;
	}*/
	if(!empty(selected.rentabilite)) {
		request += '&lot_rentabilite=' + selected.rentabilite;
	}
	if(!empty(selected.type_lot)) {
		request += '&lot_type_lot=' + selected.type_lot;
	}
	if(!empty(selected.region_id)) {
		request += '&lot_region_id=' + selected.region_id;
	}
	if(!empty(selected.departement)) {
		request += '&lot_departement=' + selected.departement;
	}
	if(!empty(selected.annee_livraison)) {
		request += '&lot_annee_livraison=' + selected.annee_livraison;
	}
	/*
	if(!empty(selected.surface_mini)) {
		request += '&surface_mini=' + selected.surface_mini;
	}
	if(!empty(selected.surface_maxi)) {
		request += '&surface_maxi=' + selected.surface_maxi;
	}
	*/
	if(!empty(selected.budget_min)) {
		request += '&budget_min=' + selected.budget_min;
	}
	if(!empty(selected.budget_max)) {
		request += '&budget_max=' + selected.budget_max;
	}
//	if(!empty(selected.parking)) {
//		request += '&parking=' + selected.parking;
//	}
//	if(!empty(selected.plein_pied)){
//		request += '&plein_pied=' + selected.plein_pied;
//	}
//	if(!empty(selected.jardin)){
//		request += '&jardin=' + selected.jardin;
//	}
//	if(!empty(selected.terrasse)){
//		request += '&terrasse=' + selected.terrasse;
//	}
//	if(!empty(selected.garage)){
//		request += '&garage=' + selected.garage;
//	}
//	if(!empty(selected.cave)){
//		request += '&cave=' + selected.cave;
//	}
//	if(!empty(selected.box)){
//		request += '&box=' + selected.box;
//	}
//	if(!empty(selected.cellier)){
//		request += '&cellier=' + selected.cellier;
//	}

	return request;
}
/**
 * Construction des paramétres de cherche pour l'envoi dans l'url  
 * @param selected : Liste des paramétres séléctionnés en cours
 * @returns chaine d'url des paramétres sélectionnés
 * */
function getSearchRequestParams(selected) {
	var budget = $('#budget').val();
	var fiscalite_id = $('#fiscalite_id').val();
	var annee_livraison = $('#annee_livraison_prog').val();
	var annee_actabilite = $('#annee_actabilite').val();
	var rentabilite = $('#rentabilite').val();
	var request = '?ajax=1';

	if(!empty(fiscalite_id)) {
		request += '&fiscalite_id=' + fiscalite_id;
	}
	if(!empty(budget)) {
		request += '&budget=' + budget;
	}
	if(!empty(rentabilite)) {
		request += '&rentabilite=' + rentabilite;
	}
	if(!empty(selected.type_lot)) {
		request += '&type_lot=' + selected.type_lot;
	}
	if(!empty(selected.region_id)) {
		request += '&region_id=' + selected.region_id;
	}
	if(!empty(selected.departement)) {
		request += '&departement=' + selected.departement;
	}
	if(!empty(selected.ville)) {
		request += '&ville=' + encodeURIComponent(selected.ville);
	}
	if(!empty(selected.promoteur_web)) {
		request += '&promoteur_web=' + encodeURIComponent(selected.promoteur_web);
	}
	if(!empty(selected.programme_id)) {
		request += '&programme_id=' + selected.programme_id;
	}
	if(!empty(annee_livraison)) {
		request += '&annee_livraison=' + annee_livraison;
	}
	if(!empty(selected.type_residence_id)) {
		request += '&type_residence_id=' + selected.type_residence_id;
	}
	if(!empty(annee_actabilite)) {
		request += '&annee_actabilite=' + annee_actabilite;
	}

	return request;
}
/**
 * Gestion du mot de passe oublié
 * @param email : adresse email de l'utilisateur
 * 		  el	: formulaire d'oulie mot de passe
 * */
function setPass(el, email) {
	url = './forgot.php?email=' + email;
	$.getJSON(url, function(data){
		var button_ok = el.children('input[name=yes]');
		var button_no = el.children('input[name=no]');
		var p = el.children('p');
		if(data.statut == 1) {
			p.html(data.msg);
			button_no.val('ok');
			button_ok.remove();
		} else {
			p.children('.error').html(data.msg);
		}
	});
}
/**
 * Gestion des messages des erreurs d'authentification
 * @param msg : Message à afficher en cas d'erreur d'authentification
 * */
function auth_errone(msg) {
	if($('#auth_err').size()>0 && $('#auth_err').html() != ''){
		alert(msg);
	}
	if($('#auth_error').size()>0 && $('#auth_error').html() == 'auth_error'){
		popupLogin('auth_error');
	}
	if($('#validation_step').size()>0 && $('#validation_step').html() == 'step_two'){
		popupLogin('step_two');
	}
	
}
/**
 * Vérification du code Siren
 * @param siren : code Siren
 * @returns booleen valide ou pas
 * */
function EstSirenValide(siren) {
	var estValide;
	if ( (siren.length != 9) || (isNaN(siren)) ){
		estValide = false;
	}else{
		// Donc le SIREN est un numérique à 9 chiffres
		var somme = 0;
		var tmp;
		for (var cpt = 0; cpt<siren.length; cpt++) {
			if ((cpt % 2) == 1) { // Les positions paires : 2ème, 4ème, 6ème et 8ème chiffre
				tmp = siren.charAt(cpt) * 2; // On le multiplie par 2
				if (tmp > 9){
					tmp -= 9; // Si le résultat est supérieur à 9, on lui soustrait 9
				}
				somme += parseInt(tmp);
			}else{
				tmp = siren.charAt(cpt);
				somme += parseInt(tmp);
			}
		}
		if ((somme % 10) == 0){
			estValide = true; // Si la somme est un multiple de 10 alors le SIREN est valide
		}else{
			estValide = false;
		}
	}
	return estValide;
}

// Diaporama
var timer = false;
var current;

/**
 * Affichage du diaporama depuis le bloc 'outil de vente' de la page programme
 * */
function eventDiapo() {
	$(".open-diaporama").colorbox({width:"750px", inline:true});

	$('#divDiapos').find('div.menu-diaporama').click(function(e){
		var el = e.target;
		if(el.tagName == 'A') {
			e.preventDefault();

			var divEl = $(this).parents('div:first');
			var src = divEl.find('img.principale').attr('src');

			if(el.id == 'viewAuto') {
				startDiapo(divEl);
			} else if(el.id == 'viewStop') {
				stopDiapo();
			} else if(el.id == 'viewPrev') {
				showPrev(src, divEl);
			} else if(el.id == 'viewNext') {
				showNext(src, divEl);
			} else if(el.id == 'printPic') {
				printPicture(divEl);
			}
		}
	});

	$('#divDiapos').find('ul.vignettes').click(function(e) {
		e.preventDefault();

		if(e.target.tagName == 'IMG') {
			el = $(e.target);
			var src = el.parent().attr('href');
			var titre = el.attr('alt');
			current = src;

			el.parents('ul.vignettes').prevAll('span.bigPic').find('img.principale').attr('src', src);
			el.parents('ul.vignettes').prevAll('p.caption').html(titre);
		}
	});

	$('#divDiapos').find(".open-diaporama").bind('cbox_cleanup', function(){
		stopDiapo();
		src = $('ul.vignettes a:first').attr('href');

		if ($('#principale').size() > 0) {
			$('#principale').attr('src',src);
		} else {
			/*
			Img = new Image();
			$(Img).attr('src',src).attr('id','principale');
			$('#diapoLoading').replaceWith($(Img));
			*/
		}
	});
}
/**
 * Commencer le diaporama
 * */
function startDiapo(el) {
	console.log(el);
	timer = setTimeout(function(){
		showDiapo(current, el);
	}, 5000);
}
/**
 * Reprendre le diaporama
 * @param url de diaporama
 * */
function showDiapo(url, el) {
	showNext(url, el);
}
/**
 * stopper le diaporama
 * */
function stopDiapo() {
	if(timer) {
		clearTimeout(timer);
		timer = false;
	}
}
/**
 * Afficher l'image suivante
 * @param url de diaporama
 * */
function showNext(url, el) {
	if(url == '') {
		url = el.find('ul.vignettes a:first').attr('href');
	}

	var nextLI = el.find('ul.vignettes a[href="' + url  + '"]').parents('li:first').next();
	if(nextLI.size() > 0) {
		src = nextLI.find('a').attr('href');
		title = nextLI.find('img').attr('alt');
	} else {
		src = el.find('ul.vignettes a:first').attr('href');
		title = el.find('ul.vignettes a:last').find('img').attr('alt');
	}

	setCurrent(src, title, el);
}
/**
 * Afficher un message de chargement en cours d'une image
 * @param src: chemin de l'image, titre: titre à afficher
 * 		  titre : titre d'image
 * */
function setCurrent(src, titre, el) {
	el.find('img.principale').replaceWith('<div id="diapoLoading">&nbsp;</div>');
	el.find('p.caption').html(titre);

	Img = new Image();
	$(Img)
	.load(function(){
		$('#diapoLoading').replaceWith($(this));
		$(this).css('opacity','0');
		$(this).animate({
				opacity:'100'
			},
			2000, function() {
			    if(timer) {
			    	startDiapo(el);
			    }
			}										
		);
	})
	.attr('src',src)
	.attr('class','principale');
	
	current = src;
}
/**
 * Afficher l'image précédente
 * @param url de l'image
 * */
function showPrev(url, el) {
	var prevLI = el.find('ul.vignettes a[href="' + url  + '"]').parents('li:first').prev();
	if(prevLI.size() > 0) {
		src = prevLI.find('a').attr('href');
		title = prevLI.find('img').attr('alt');
	} else {
		src = el.find('ul.vignettes a:last').attr('href');
		title = el.find('ul.vignettes a:last').find('img').attr('alt');
	}

	setCurrent(src, title, el);
}
/**
 * Imprimer une image
 * @returns false
 * */
function printPicture(el){
	el.find("span.bigPic").print();

	// Cancel click event.
	return( false );
}
/**
 * Gestion d'affichage des blocs de contenu
 * @param id1, id2 : les identifiants des bloc à afficher
 * */
function showBloc(id1,id2) {
	
	var e1 = document.getElementById('bloc_'+id1);
	var e2 = document.getElementById('bloc_'+id2);

	if(e2.style.display == 'block') {
		e2.style.display = 'none';
		e1.style.display = 'block';
	} 
	
	if(e1.style.display == 'none') {
		e1.style.display = 'block';
	} 
	var b1 = document.getElementById(id1);
	var b2 = document.getElementById(id2);
	if(b2.checked){
		b2.checked = false;
	}	
	
}
/**
 * Vérification et contrôl de la saisie des champs du formulaire centrale resa
 * @param Message à afficher en cas d'erreur de saisie
 * @returns si tous les champs sont renseignés retourne true sinon retourne false
 * */
function verifFormCentralResa(message,messageMontant,msg_nom,msg_prenom,msg_email,msg_confirm_email,msg_adresse,msg_cp,msg_ville,msg_tel,msg_gsm,msg_societe,msg_siren,msg_ape){
	$retour = true;
	var msg = "";
	if($('#option').is(':checked')){
		return $retour;
	}else{
		if($('#nom').val() == '' || $('#nom_client_re').val() == '' || $('#cp_client_re').val() == '' || $('#prenom').val() == ''|| $('#email').val() == ''|| $('#confirm_email').val() == ''|| $('#adresse').val() == ''|| $('#cp').val() == ''|| $('#ville').val() == ''|| ($('#tel').val() == '' && $('#gsm').val() == '' )){
			if($('#nom').val() == '' || $('#nom_client_re').val() == ''){
				msg += "\n"+msg_nom;
			}
			if($('#prenom').val() == ''){
				msg += "\n"+msg_prenom;
			}
			if($('#email').val() == ''){
				msg += "\n"+msg_email;
			}
			if($('#confirm_email').val() == ''){
				msg += "\n"+msg_confirm_email;
			}
			if($('#adresse').val() == ''){
				msg += "\n"+msg_adresse;
			}
			if($('#cp').val() == '' || $('#cp_client_re').val() == ''){
				msg += "\n"+msg_cp;
			}
			if($('#ville').val() == ''){
				msg += "\n"+msg_ville;
			}
			if($('#tel').val() == ''){
				msg += "\n"+msg_tel;
			}
			if($('#gsm').val() == ''){
				msg += "\n"+msg_gsm;
			}
			$retour = false;
		}
		if(($('#resa')[0].checked == false) && ($('#option')[0].checked == false)) {
			$retour = false;
		}
		if($('#resa')[0].checked == true) {
			if(($('#nom_client_re').val() == '' && $('#societe_client_re').val() == '') || $('#cp_client_re').val() == ''){
				$retour = false;
			}else{
				if(isNaN($('#montant_cheque').val())){
					$retour = false;
					message=messageMontant;
				}
			}
		}
		if(!$retour)
			alert(message+msg);
		return $retour;
	}
}
/**
 * construit l'objet 
 * @param id de l'element de la page
 * @return Objet 
 */
function getElement(id) {
	if (document.getElementById)
	    // Moz, IE5+, Opera, NN6+
		return document.getElementById(id);
	else if (document.all)
	    // IE4
		return eval("document.all."+id);
	else if (document.layers)
	    // NN4
	    return eval("document."+id);
  else return 0;
}
/**
 * @brief fonction qui vérifie les champs obligatoires et execute l'envoie de demande de rappel du visiteur
 * @param url url du script php qui envoie la demande de rappel
 * @param saisirmail libelle "saisir mail" valeur par défaut de l'input mail
 * @param saisirTel  libelle "saisir tel" valeur par défaut de l'input tel
 * @param messageCd  message de demande de remplir les champs tel et mail
 * @param messageConf messsage de confirmation d'envoi de demande de rappel
 */
function demande_rappel(url,saisirmail,saisirTel,messageCd,messageConf){
	var mail_visit = $.trim($('#mail_visit').val());
	var tel_visit = $.trim($('#tel_visit').val());
	var re1=    /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;    /*expr regul pour l'email */   
	var message = "";
	if((empty(mail_visit) || empty(tel_visit)) ||(mail_visit == saisirmail || tel_visit == saisirTel)){
		alert(messageCd[0]);
	}else{
		if(!mail_visit.match(re1)){ 
			message = messageCd[1]+'\n'; 
        } 
		if ((tel_visit.length < 10) || (isNaN(tel_visit)) ){			
			message += messageCd[2]+'\n'; 
		}
		if(!empty(message)){
			alert(message);
		}else{
			$.ajax({
				url: url,
				type : "GET",
				data : "tel="+tel_visit+"&mail="+mail_visit,
				async : false,
				success: function(retour) {
					if(retour == 1){
						alert(messageConf);
					}
				}
			});
		}
	}
}

