// JavaScript Document

/****** IMPLANTATIONS SYSTEM ******/

var list_id = new Array();
var markers = [];
var list_adress = new Array();
var list_title = new Array();
var list_content = new Array();

var current_lg;
var rpc_url;

var img_url = "images/";
var gmaps_picto = "gmaps_picto.png";

var map;
var geocoder;
var infowindow;

function initialize_map(){
	var myLatlng = new google.maps.LatLng(48.8, 2.33);
	infowindow = new google.maps.InfoWindow(
	  { 
		size: new google.maps.Size(150,50)
	  });


	var myOptions = {
	  zoom: 2,
	  center: myLatlng,
	  mapTypeId: google.maps.MapTypeId.ROADMAP
	};
	
	map = new google.maps.Map(document.getElementById("page_gmaps"), myOptions);
	geocoder = new google.maps.Geocoder();
	
	init_all_markers();
}


//Fonction who init all the markers, and the arrays for the management of the filters !
function init_all_markers(){
	var datas = 'action=get_all_markers_for_init'
	+ '&lg='+current_lg;
	
	
	//JQUERY AJAX
	$.ajaxSetup ({  
		cache: false  
	 });

	var response = $.ajax({
	   async: false,
	   url: rpc_url,
	   data: datas,
	   error: function(msg){
			
			alert('error');
			
	   }
	}).responseText;
	
	var json = eval('(' + response + ')');
	
	if (json.response == 'ok'){
		
		//Success !
		list_id = json.all_ids;
		list_adress = json.all_posts_adress;
		list_title = json.all_posts_title;
		list_content = json.all_posts_content;
		list_lat = json.all_posts_lat;
		list_lng = json.all_posts_lng;
		
		
		/*var myIcon = new GIcon();
		myIcon.image = "/img/maker.png";
		myIcon.shadow = "/img/shadow.png";
		myIcon.iconSize = new GSize(30, 30);
		myIcon.shadowSize = new GSize(30, 30);
		myIcon.iconAnchor = new GPoint(15, 30);
		myIcon.infoWindowAnchor = new GPoint(20, 15);
		var markerOptions = {
			icon: myIcon
		};*/
		
		for(var i=0;i<list_id.length;i++){
			
			var id = list_id[i];
			
			if(list_lat[i] != -1 && list_lng[i] != -1){
				
			var lat = list_lat[i][0];
		 	var lng = list_lng[i][0];
			
			
			
				var point = new google.maps.LatLng(lat,lng);
				var html = list_title[i]+"<br/><br/>"+list_content[i];
				//var html = "test";
				createMarker(point,id,html);
			
			}
			
			
			/*var address = list_adress[i];
			geocoder.geocode( { 'address': address}, function(results, status) {
			  if (status == google.maps.GeocoderStatus.OK) {
					var marker = new google.maps.Marker({
					position: results[0].geometry.location
				});
				}
			});*/
		}
	}else{
		
		//Error
		
	}
}

function createMarker(latlng,name,html){
	
	var contentString = html;
	var marker = new google.maps.Marker({
		position: latlng,
		icon: getMarkerImage(),
		map: map,
		zIndex: Math.round(latlng.lat()*-100000)<<5
	});
	// === Store the category and name info as a marker properties ===                           
	marker.myname = name;
	markers[name] = marker;
	
	google.maps.event.addListener(marker, 'click', function() {
	infowindow.setContent(contentString); 
	infowindow.open(map,marker);
	});
}

function getMarkerImage() {
	var url_marker = img_url+gmaps_picto;
	var gicons = new google.maps.MarkerImage(url_marker,
	// This marker is 20 pixels wide by 34 pixels tall.
	new google.maps.Size(28, 29),
	// The origin for this image is 0,0.
	new google.maps.Point(0,0),
	// The anchor for this image is at 6,20.
	new google.maps.Point(9, 34));
  	return gicons;
}



//get all ID to set visible the posts who stay, with filters activated or not
function get_markers_with_filters(){
	
	var f1 = document.getElementById('zone_select').options[document.getElementById('zone_select').selectedIndex].value;
	var f2 = document.getElementById('country_select').options[document.getElementById('country_select').selectedIndex].value;
	var f3 = document.getElementById('activity_select').options[document.getElementById('activity_select').selectedIndex].value;
	
	var filters = "";
	
	if(f1 != 0){
		filters += f1;
	}
	
	if(f1 != 0 && (f2 != 0 || f3 != 0)){
		filters += ",";
	}
	
	if(f2 != 0){
		filters += f2;
	}
	
	if((f1 != 0 || f2 != 0) && (f2 != 0 && f3 != 0) ){
		filters += ",";
	}
	
	if(f3 != 0){
		filters += f3;
	}
	
	//
	var datas = 'action=get_all_markers_with_filters'
	+ '&lg='+current_lg
	+ '&filter='+encodeURIComponent(filters);
	
	
	//JQUERY AJAX
	$.ajaxSetup ({  
		cache: false  
	 });

	var response = $.ajax({
	   async: false,
	   url: rpc_url,
	   data: datas,
	   error: function(msg){
			
			alert('error');
			
	   }
	}).responseText;
	
	var json = eval('(' + response + ')');
	
	if (json.response == 'ok'){
		
		//Success !
		var filter_ids = json.filter_ids;
		
		hide_all_markers();
		
		for(var i=0;i<filter_ids.length;i++){
			
			show_one_marker(filter_ids[i]);

		}
		
		
	}else{
		
		//Error
		
	}
	
}

//Verify filters, before getting posts
function filters_update(){
	
	var f1 = document.getElementById('zone_select').options[document.getElementById('zone_select').selectedIndex].value;
	var f2 = document.getElementById('country_select').options[document.getElementById('country_select').selectedIndex].value;
	var f3 = document.getElementById('activity_select').options[document.getElementById('activity_select').selectedIndex].value;
	
	if(f1 == 0 && f2 == 0 && f3 == 0){
		
		//No filters activated !
		show_all_markers();
		return(true);
		
	}else{
		
		//One or more filters, let's go !
		get_markers_with_filters();
		return(true);
		
	}
	
}

//Hide all markers (Use GoogleAPI)
function hide_all_markers(){
	
	for(var i=0;i<list_id.length;i++){
			
		var id = list_id[i];
		
		//Hide marker
		markers[id].setVisible(false);
		
	}
	
	return(true);
		
}

//Show all markers (Use GoogleAPI)
function show_all_markers(){
	
	for(var i=0;i<list_id.length;i++){
			
		var id = list_id[i];
		
		//Show marker
		markers[id].setVisible(true);
		
		
	}
		
	return(true);
		
}

//Show on particulary marker (Use GoogleAPI)
function show_one_marker(id){
	
	markers[id].setVisible(true);
	return(true);
	
}
