var clickHandler;
var clickMarker;
var marker;
var gmarkers = [];
var point;
var map;
var locations;
var idStation;
var twmag;
var twpoi;
var bounds;
var url_img_magasin = "http://minisite.tw.mezcalito.net";
var url_img_server = "http://map.tw.mezcalito.net";
var ci_path = '/proxy.php?proxy_url=http://map.tw.mezcalito.net/index.php';
var traduction = new Array;
var traduction_fr = new Array('Louez dans ce magasin');
var traduction_en = new Array('Hire from this shop');
var traduction_nl = new Array('Huren in deze winkel');
var traduction_es = new Array('Alquile en este almac&eacute;n');
traduction['fr'] = traduction_fr;
traduction['en'] = traduction_en;
traduction['nl'] = traduction_nl;
traduction['es'] = traduction_es;
var infowindows = new Array();


function loadMap(){

	var mapLatlng = new google.maps.LatLng(45.1719932284, 6.65788650513);
        var myOptions = {
           
            scrollwheel : false,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            scaleControl: true,
            scaleControlOptions: {
                position: google.maps.ControlPosition.BOTTOM_LEFT
            }
//            ,
//            navigationControl: true,
//            navigationControlOptions: {
//                style: google.maps.NavigationControlStyle.DEFAULT,
//                position: google.maps.ControlPosition.TOP_LEFT
//            }
        }
       map = new google.maps.Map(document.getElementById("mapmap"), myOptions);


      twmag = new google.maps.MarkerImage(url_img_server+"/images/twmag-ombre.png",
      new google.maps.Size(72,36),
      new google.maps.Point(0,0),
      new google.maps.Point(12,36));

      twpoi = new google.maps.MarkerImage(url_img_server+"/images/icone-ombre.png",
      new google.maps.Size(42, 36),
      new google.maps.Point(0,0),
      new google.maps.Point(12,36));

      bounds = new google.maps.LatLngBounds();

         ChargerLaStation();

	}


function ChargerLaStation(){

		if(TheidStation == 55){
			$("#map").append('<div id="map_55" class="mygooglemap-surcouche" style="position:absolute; z-index:3000"><img src="'+url_img_server+'/images/carte-station/55.jpg" /></div>');
		} else {
			$('.mygooglemap-surcouche').remove();
			idMagasin = (idMagasin ? idMagasin : "non");
			window["idStation"] = TheidStation;
			this.lien_externe  = (lien_externe ? lien_externe : "default");
                        this.lien_externe = lien_externe;

			//$.get(ci_path+'/point/station/'+TheidStation ,	CenterOnStation );
			if(idMagasin != "non"){
				$.get(ci_path+'/point/getmag/'+TheidStation+'/print/'+idMagasin,	SetPointOnStation );
			} else {
				$.get(ci_path+'/point/getmag/'+TheidStation+'/print',	SetPointOnStation );
			}
			
		}
}

// zoom sur la station
function CenterOnStation(content) {
	eval("locations = "+content);
	// modif 04/09/2007 [servane]
	// j'enleve le for (var i in locations) car il y a une conflit avec la librairie xajax... 
	// il vaut donc mieux utiliser un for (var i=0 etc...
	//for (var i in locations) {
	for (var i=0; i<locations.length;i++) {
		var element = locations[i];
		map.setCenter(new google.maps.LatLng(element['latitude'], element['longitude']));
		map.setZoom(element['zoom']);
	}
}


// Creer un marker
function createMarker(point, iconename ,content) {

    var image = new google.maps.MarkerImage(url_img_server+'/images/icone-'+iconename+'.png',
      new google.maps.Size(29,36),
      new google.maps.Point(-5,0),
      new google.maps.Point(20,36));


var marker = new google.maps.Marker({
                        position: point,
                        icon: image,
                        shadow: twpoi,
                        map: map,
                        title:content,
                        zIndex: 20
                        });

  bounds.extend(point);
   return marker;
}

//function importanceOrder (marker) {
//  return google.maps.Overlay.getZIndex(marker.getPoint().lat()) + marker.importance*1000000;
//}

function createMarkerShop(point, iconename ,content, relais) {
	relais = (relais ? relais : "non");
        if(relais == "oui"){
		var imageurl = url_img_server+'/images/relais.png';
	} else {
	//	image = url_img_server+'/images/twmag-'+iconename+'.png';
		var imageurl = url_img_server+'/images/twmag.png';
	}
        var icon = new google.maps.MarkerImage(imageurl,
      new google.maps.Size(70,36),
      new google.maps.Point(-5,0),
      new google.maps.Point(20,36));
	

        var marker = new google.maps.Marker({
                        position: point,
                        icon: icon,
//                        zIndexProcess:importanceOrder,
                        shadow: twmag,
                        map: map,
                        zIndex: 50
                        });
  marker.importance = 50;
bounds.extend(point);
attachMessage(marker, content);
	
  return marker;
}


// Chargement des points de la station
function SetPointOnStation(content) {
    
	eval("locations = "+content);
	var a = 1;
	// modif 04/09/2007 [servane]
	// j'enleve le for (var i in locations) car il y a une conflit avec la librairie xajax... 
	// il vaut donc mieux utiliser un for (var i=0 etc...
	//for (var l in locations) {
	for (var l=0; l<locations.length;l++) {
		var element = locations[l];
		var i = element['id_point'];
		var point = new google.maps.LatLng(element['lat_point'], element['long_point']);
		if(element['id_tpoint'] == 1 || element['id_tpoint'] == 15){
			if(element['id_tpoint'] == 15){
				content = '<div style="font-weight:bold; background-color:#9EC735; color:#fff; padding:3px; margin-bottom:4px; width:450px">'+element['name_point']+'</div>';
				content += '<div>'+element['detail_point']+'</div>';
				if(lien_externe == 'station' || lien_externe == 'oui'){
					content += '<div style="clear:both;"><a href="/rent/etape1/index/id_magasin/'+element['id_magasin']+'">'+traduction['fr'][0]+'</a></div>';
				} else if(lien_externe == 'groupe') {
					content += '<div style="clear:both;"><a href="#" onclick="SelectionneMagasinPourGroupe('+element['id_magasin']+')">'+traduction['fr'][0]+'</a></div>';
                                }
                                else if(lien_externe == 'hide') {
					content += '<div style="clear:both;"></div>';
				}
                                else{
					content += '<div style="clear:both;"><a href="#box-reserver" onclick="SelectionneMagasinDepuisCarte('+element['id_magasin']+')">'+traduction['fr'][0]+'</a></div>';
				}
				
				gmarkers[i] = createMarkerShop(point,a,content,'oui');
			} else {
				content = '<div style="font-weight:bold; background-color:#9EC735; color:#fff; padding:3px; margin-bottom:4px;  width:450px">'+element['name_point']+'</div>';
				if(element['photo_magasin'] != undefined){ 
					content += '<div style="float: left; width:150px; height: 150px;margin-right:5px"><img src="'+url_img_magasin+element['photo_magasin']+'"/></div>';
				}
				if(element['phrase'] != undefined){
					content += '<div style="font-weight:bold; background-color:#F2EFE9">'+element['phrase']+'</div>';
				} 
				content += '<div>'+element['detail_point']+'</div>';
				if(lien_externe == 'station' || lien_externe == 'oui'){
					content += '<div style="clear:both;"><a href="/rent/etape1/index/id_magasin/'+element['id_magasin']+'">'+traduction['fr'][0]+'</a></div>';
				} else if(lien_externe == 'groupe') {
					content += '<div style="clear:both;"><a href="#" onclick="SelectionneMagasinPourGroupe('+element['id_magasin']+')">'+traduction['fr'][0]+'</a></div>';
				}else if(lien_externe == 'hide') {
					content += '<div style="clear:both;"></div>';
				} else{
					content += '<div style="clear:both;"><a href="#box-reserver" onclick="SelectionneMagasinDepuisCarte('+element['id_magasin']+')">'+traduction['fr'][0]+'</a></div>';
				}
				gmarkers[i] = createMarkerShop(point,a,content);
			}
			a++;
		} else {
			gmarkers[i] = createMarker(point,element['id_tpoint'],element['name_point']);
		}
		
	}
        map.fitBounds(bounds);
}

function SelectionneMagasinDepuisCarte(id_magasin){
	window.parent.jQuery('select[name=id_magasin] > option[selected]').removeAttr('selected');
	window.parent.jQuery('select[name=id_magasin] > option[value='+id_magasin+']').attr('selected', 'selected');
	//window.parent.xajax_chargeInfos('magasin',window.parent.xajax.getFormValues('formEtape1'));
	window.parent.afficheMagasin(id_magasin);
	window.parent.jumpToResa();
}
function SelectionneMagasinPourGroupe(id_magasin){
	window.parent.jQuery('select[name=id_magasin] > option[selected]').removeAttr('selected');
	window.parent.jQuery('select[name=id_magasin] > option[value='+id_magasin+']').attr('selected', 'selected');
}


function attachMessage(marker, html)  {
    var infowindow = new google.maps.InfoWindow(
      {content: html,
        maxWidth : 460
      });
  google.maps.event.addListener(marker, 'mouseover', function() {
    
    for (var l=0; l < (infowindows.length);l++) {
            infowindows[l].close();
    }
    infowindow.open(map,marker);
  });
  google.maps.event.addListener(marker, 'click', function() {
    infowindow.open(map,marker);
  });
      google.maps.event.addListener(infowindow, 'closeclick', function() {
         var zoom1 = map.getZoom();
        map.fitBounds(bounds);
        map.setZoom(zoom1);
      });
  google.maps.event.addListener(map, 'zoom_changed', function() {
      infowindow.close();
    });
//  google.maps.event.addListener(map, 'center_changed', function() {
//      infowindow.close();
//    });

infowindows.push(infowindow);

}

//fonction callback apelé une fois que l'api est chargé et appelle en callback elle même la fonction qui va charger la map.
function loadMaps() {
  google.load("maps", "3",  {other_params:"sensor=false", "callback" : loadMap});
}

//chargement de l'api en de façon asyncrone
function initLoaderMap() {
  var script = document.createElement("script");
  script.src = "http://www.google.com/jsapi?callback=loadMaps";
  script.type = "text/javascript";
  document.getElementsByTagName("head")[0].appendChild(script);
}