/*
Name: Recherche de conseillers
Description: Gestion de la recherche des conseillers AGIPI par l'API Viamichelin
Version: 3.0
*/

var current_frm;

//On lance cette fonction pour levée l'ambiguïté
function fLaunchGeocoder(current_frm, templateDirectory){

$_id("result").innerHTML = '<img src="'+templateDirectory+'/img/map/ajax-loader.gif" alt="" />';
VMLaunch("ViaMichelin.Api.Geocoding", {//Simple address to geocode
   address: document.getElementById("rue").value,  
   zip: document.getElementById("code_postal").value,
   city: document.getElementById("ville").value,
   countryISOCode: 'FRA'
   //coords: {lon : 2.25096, lat : 48.94425}
		},{
		 //Is called when all geocoding have been performed
		onSuccess : function (results) {
			$_id("result").innerHTML = '';
			var out = '<select>';
			if(results.length!=0){
				//Si on a plusieurs résultat on affiche la liste correspondante
				if(results.length>1){
					var out = 'Plusieurs réponses peuvent correspondre à votre recherche. Merci de préciser votre choix dans la liste suivante :<br /><br /><ul class="data">';
					for(i=0; i< results.length; ++i){
						out += '<li><a href="#" onclick="selectResult(\''+results[i].coords.lat+'\', \''+results[i].coords.lon+'\', \''+current_frm.id+'\', this)">';
						if(results[i].formattedAddressLine) out += results[i].formattedAddressLine + ' - ';
						if(results[i].formattedCityLine) out += results[i].formattedCityLine;                
						if(!results[i].formattedAddressLine && !results[i].formattedCityLine) out += ' - (' + results[i].coords.lat + ', ' + results[i].coords.lon + ')';
						out += '</a></li>';
					}
					$_id("result").innerHTML = out+'</ul>';
				}
				//Sinon on donne aux champs "hidden" lat et lon du formulaire le résultat trouvé puis on soumet le formulaire
				else{
					$_id("lat").value = results[0].coords.lat;
					$_id("lon").value = results[0].coords.lon;
					var adresseViaMichelin = '';
					var tiret = '';
					if(results[0].formattedAddressLine){
						adresseViaMichelin += results[0].formattedAddressLine;
						tiret = ' - ';
					}
					if(results[0].formattedCityLine) adresseViaMichelin += tiret+results[0].formattedCityLine;
					$_id("adresseViaMichelin").value = adresseViaMichelin;
					
					//if(results[0].formattedAddressLine && results[0].formattedCityLine) $_id("adresseViaMichelin").value = results[0].formattedAddressLine + ' - ' + results[0].formattedCityLine;
					current_frm.submit();
				}
			}
			//else $_id("result").innerHTML = '<p class="data">Aucun conseiller n\'a été trouvé dans la limite de 50 km de l\'adresse '+document.getElementById("rue").value+' '+document.getElementById("code_postal").value+' '+document.getElementById("ville").value+'. Vous pouvez effectuer une nouvelle recherche ou utiliser le formulaire pour <a href="/espace-public/nous-contacter">nous contacter</a></p>';
			else $_id("result").innerHTML = '<p class="data">L\'adresse indiquée n\'a pu être localisée. Vous pouvez effectuer une nouvelle recherche ou <a href="/espace-public/nous-contacter">nous contacter</a></p>';
		},
		 onError : function (error) {
		  alert('Whoops' + error);
		 }});    
};

function selectResult(lat, lon, form, elem){
	$_id("lat").value = lat;
	$_id("lon").value = lon;
	$_id("adresseViaMichelin").value = $(elem).text();
	$('#'+form).submit();
}

//Variable pour récupérer l'objet map. Dans notre cas on a un tableau car il faut une variable pour chaque carte donc on incrémente une case du tableau pour chaque carte
var myMap = new Array();
function open_map(id, lat, lon, myMap){
	VMLaunch("ViaMichelin.Api.Map", {//Service parameters
		container : $_id("map_canvas_"+id),
		center : { coords : {lon: lon, lat: lat}},
		zoom : 16,
		mapTypeControl : false,
		mapToolsControl :  false,
		scrollwheel : false,
		mapTypeControlOptions : {type: ViaMichelin.Api.Constants.Map.TYPE.ROADMAP}
	},{
			onInit: function(serviceMap){
				myMap = serviceMap;
			},
			onSuccess: function(){
				//Loads Marker
				var marker = new ViaMichelin.Api.Map.Marker({
						coords : {lon: lon, lat: lat},
						icon : {url: "http://www.agipi.com/wp-content/themes/agipi/img/map/map-point.gif", offsetX : -10, offsetY: -44}
				});
				
				//Le petit icone qui indique la position trouvé
				var groundImage = new ViaMichelin.Api.Map.GroundImage({
						bounds : {sw:{lon: 0, lat: 0}, ne:{lon: 0, lat: 0}},
						url: "http://www.agipi.com/wp-content/themes/agipi/img/map/map-point.gif"
				});
				myMap.addLayer(marker);
				myMap.addLayer(groundImage);
				myMap.resizeTo(545, 300);
				
				//Les évènements qui seront appelés sur clique des flèches ou pour le zoom
				$('#zp-map_'+id).click(function(){
					myMap.mapZoomIn();
				});
				
				$('#zm-map_'+id).click(function(){
					myMap.mapZoomOut();
				});
				
				$('#sh-map_'+id).click(function(){
					myMap.moveNorth();
				});
				
				$('#sg-map_'+id).click(function(){
					myMap.moveWest ();
				});
				
				$('#sd-map_'+id).click(function(){
					myMap.moveEast();
				});
				
				$('#sb-map_'+id).click(function(){
					myMap.moveSouth();
				});
				
				$("#map_canvas_"+id).append($("#menuPerso_"+id).show());
				$("#map_canvas_"+id).slideDown();
				$("#fermer_"+id).slideDown();
				$("#conseiller_lien_plan_"+id).hide();
				
				$('.ui-marker').parent().css('cursor', '');
			},
			onInitError: function(){
				alert('Whoops Map cannot be loaded!');
			}
		});
		//$_id("status").innerHTML = data.photos.length + " POI are loaded.";
};//fLoadMap

// cacher le premier popup
function rc_cacher(is_submit, poiCode, templateDirectory)
{
	if($('#AGIPIOuiNon'))
	{
		$('#AGIPIOuiNon').hide();
		// si c'est l'utilisateur qui ferme le popup, le formulaire est automatiquement validé pour lancer la recherche
		if(is_submit == true) rc_submit_search(poiCode, templateDirectory);
	}
}

// cacher le second popup
function rc_cacher_popup(is_submit, poiCode, templateDirectory)
{
	if($('#AGIPIOui'))
	{
		$('#AGIPIOui').hide();
		// si c'est l'utilisateur qui ferme le popup, le formulaire est automatiquement validé pour lancer la recherche
		if(is_submit == true) rc_submit_search(poiCode, templateDirectory);
	}
}

function allPngToIeByClass(classN, child){
	$('.'+classN).each(function(){
		if(child==true) png2ie6(this.firstChild);
		else png2ie6(this);
	});
}

//Initalisé la position des popup en fonction du champ de recherche
function init_Pop(){
	var ouiNon = document.getElementById('AGIPIOuiNon');
	var oui = document.getElementById('AGIPIOui');
	
	//Taille div OuiNon
	var ouiNonWidth = ouiNon.offsetWidth;	
	var ouiNonHeight = ouiNon.offsetHeight;	
	//Taille div Oui
	var ouiWidth = oui.offsetWidth;
	var ouiHeight = oui.offsetHeight;
	

/*	ouiNon.style.left =(ouiNon.offsetLeft-ouiNonWidth+document.getElementById('loupeTrouver').offsetWidth)+'px';
	oui.style.left = (oui.offsetLeft-ouiWidth+document.getElementById('loupeTrouver').offsetWidth)+'px';*/
	/*ouiNon.style.left =ouiNon.offsetLeft+'px';
	oui.style.left = oui.offsetLeft+'px';*/

	/*ouiNon.style.top = ouiNon.offsetTop-ouiNonHeight+'px';
	oui.style.top = oui.offsetTop-ouiHeight+'px';*/
	
}

var alreadyPopOuiNon = false;
var alreadyPopOui = false;

// afficher le premier popup
function rc_montrer(frm, poiCode, templateDirectory)
{
	if(alreadyPopOuiNon == false){
		alreadyPopOuiNon = true;
		current_frm = frm;
		if($('#AGIPIOuiNon')) $('#AGIPIOuiNon').show();
		else $('AGIPIOuiNon').show();
		return false;
	}
	else return rc_submit_search(poiCode, templateDirectory);
}

// cacher le premier popup et afficher le second popup
function rc_montrer_oui()
{
	var nb = rc_montrer_oui.arguments;
	if(alreadyPopOuiNon == false || alreadyPopOui == false){
		current_frm = nb[2];
		alreadyPopOuiNon = true;
		alreadyPopOui = true;
		if($('#AGIPIOuiNon') && $('#AGIPIOui')){
			$('#AGIPIOui').show();
			$('#AGIPIOuiNon').hide();
		}
		return false;
	}
	else return rc_submit_search(nb[0], nb[1]);
}

// supprimer le texte par défaut du champ de recherche
function rc_clean_recherche(fld)
{
	if(fld.value == 'adresse code postal et ville') fld.value = '';
	if(fld.value == 'rue + code postal + ville') fld.value = '';
	if(fld.value == 'code postal et ville') fld.value = '';
	if(fld.value == 'adresse') fld.value = '';
}

// remettre le texte par défaut du champ de recherche
function rc_default_recherche(fld, txt)
{
	if(fld.value == '')
	{
		fld.value = txt;
		fld.blur();
	}
}

// valider le formulaire
function rc_submit_search(current_frm, poiCode, templateDirectory, is_adherent)
{
	var nb = rc_submit_search.arguments;
	var isSuite = '';
	if(nb[4] && nb[4]=='no') isSuite = 'no';
	
	if(is_adherent!='no' && isSuite!='no'){
		if(is_adherent=='true' && alreadyPopOui == false){
			$('#AGIPIOuiNon').hide();
			$('#AGIPIOui').show();
			alreadyPopOui = true;
			return false;
		}
		else if(alreadyPopOuiNon == false && is_adherent == 'false'){
			$('#AGIPIOui').hide();
			$('#AGIPIOuiNon').show();
			alreadyPopOuiNon = true;
			return false;
		}
	}

	$('#AGIPIOui').hide();
	$('#AGIPIOuiNon').hide();
	
	var reg = new RegExp('^[0-9]{5}$');
	var regVide = new RegExp('[A-Za-z]');
	if($('#rue')){
		if(!regVide.test($('#rue').val()) || !regVide.test($('#ville').val())){
			alert('Veuillez renseigner tous les champs : rue, code postal et ville. ');
			return false;
		}
		else if(!reg.test($('#code_postal').val())){
			alert('Le code postal n\'est pas valide. Veuillez saisir un code postal à 5 chiffres.');
			return false;
		}
	}
	else{
		if($('rue').value == '' || $('code_postal').value == '' || $('ville').value == ''){
			alert('Veuillez renseigner tous les champs : rue, code postal et ville. ');
			return false;
		}
	}
	
	if(current_frm){
		fLaunchGeocoder(current_frm, templateDirectory);
		//current_frm.submit();
	}
	return false;
}

// cacher les deux popups
init_Pop();
rc_cacher();
rc_cacher_popup();

function allPngToIeByClass(classN, child){
	$('.'+classN).each(function(){
		if(child==true) png2ie6(this.firstChild);
		else png2ie6(this);
	});
}

function format_Num(numb){
	if(!numb) return '';
	if(numb.length!=10) return numb;
	var tmpReturn = '';
	for(var i=0; i<numb.length; i++){
		tmpReturn += numb.charAt(i);
		if(i%2!=0) tmpReturn += ' ';	
	}
	return tmpReturn;
}
			
//Transforme les degrès en radian
function degToRag(deg){
	return deg*Math.PI/180;
}

function replaceByReg(chaine){
	var regR=new RegExp("(&lt;)", "g");
	var regRR=new RegExp("(&gt;)", "g");
	
	chaine = chaine.replace(regR, '');
	chaine = chaine.replace(regRR, '');
	
	return chaine;
}

function in_array (needle, haystack, argStrict) {
	var key = '', strict = !!argStrict;

	if (strict) {
		for (key in haystack) {
			if (haystack[key] === needle) {
				return true;
			}
		}
	} else {
		for (key in haystack) {
			if (haystack[key] == needle) {
				return true;
			}
		}
	}

	return false;
}


closeCustom = function() {
	oldMarker.closePopUp();
}

var changeMode = function() {
	var selected = $("input[name=mode]:checked").val();
	if(selected == "burst") {
		burster();
	} else if(selected == "cluster") {
		if(map.getZoomLevel() < 10) clusterize();
	}
}
