


var DM_Googlemaps = new Class.create();

DM_Googlemaps.prototype = {
	initialize: function() {
		/* @author : Demyio
			em@il : alexandre.leblanc@demyio.com
		*/
		this.map = null;
		this.idmap="map";
	    this.mm=null;
		this.bounds =null;
		this.geocoder = null;
		this.adresse_autoload = null;//
		this.autoload_idmag = 0;//
		
		
		/* utilisé?*/
		this.testPt=0;
		this.points=new Array();
		this.keys=new Array();
		this.ordreIdmag=new Array();
		this.kmMin=9999999999;
		this.kmMax=0;
	    this.bool0=true;
	    this.actif=null;
	    this.centre = 0;
	    this.bonpt = null; //le point le plus proche
		this.deridmag= null;
		this.modeoffre=false;
		this.classCp=new Array();
	},		
	load: function()
	{
		var this_object=this;
		if (GBrowserIsCompatible()) {
			this_object.map = new GMap2(document.getElementById(this_object.idmap));
			this_object.map.setCenter(new GLatLng(48.68, 6.1), 9);
			this_object.map.addControl(new GMapTypeControl());
			//map.addControl(new GSmallMapControl());
			var ovcontrol = new GOverviewMapControl(new GSize(150,150));
			this_object.map.addControl(ovcontrol);
			var omap = ovcontrol.getOverviewMap();
			this_object.map.addControl(new GLargeMapControl());
			this_object.map.enableDoubleClickZoom();
			this_object.mm = new GMarkerManager(this_object.map); 
			
			this_object.bounds = new GLatLngBounds();
			
			//map.setMapType(G_SATELLITE_MAP); // Vue satelite
			this_object.map.setMapType(G_NORMAL_MAP); // Vue carte
			//map.setMapType(G_HYBRID_MAP); // Vue mixte
			this_object.geocoder = new GClientGeocoder();
		}
		if(this_object.adresse_autoload){
			this_object.markerDepuisAdresse(
				this_object.adresse_autoload.adresse,
				this_object.adresse_autoload.onglet1,
				this_object.adresse_autoload.adresse_alt,
				this_object.id
			);
		}
		if(this_object.geo_autoload){
			this_object.markerDepuisLatlng(
					this_object.geo_autoload.lat,
					this_object.geo_autoload.lon,
					this_object.geo_autoload.onglet1,
					this_object.geo_autoload.id
			);
			this_object.calculZoom();
		}
		/*markerDepuisLatlng: function(lat,lng,html,id)
		dm_googlemaps_object.lat_autoload={lat:46,lon:4,onglet1:'yop',id:1};*/
	},		
	calculZoom: function(){
		var this_object=this;
		nb = 0;
		totalkm = 0;
		this_object.map.checkResize();
		this_object.points.each(function(p){
	       this_object.bounds.extend(p);
            var clat = (this_object.bounds.getNorthEast().lat() + this_object.bounds.getSouthWest().lat()) /2;
			var clng = (this_object.bounds.getNorthEast().lng() + this_object.bounds.getSouthWest().lng()) /2;
	    });	
	    zoombn=this_object.map.getBoundsZoomLevel(this_object.bounds);
	    if(zoombn<5){
	    	zoombn=5;
	    }
	    if(zoombn>11){
	    	zoombn=11;
	    }
	   var centrebn=this_object.bounds.getCenter();
	   if(centrebn.x!=180){
	   		this_object.map.setCenter(centrebn, zoombn);
	   }
	},
	//creer marker depuis adresse et cr� un taleau de point avec leurs markers
    markerDepuisAdresse: function(address,adresse,adresse_secour,idmag,picto) { 
		var this_object=this;
		deridmag=idmag ; 
		geocoder=this_object.geocoder;
       if (geocoder) {
         geocoder.getLatLng(
           address,
           function(point) { 
             if (!point) {
               if(adresse_secour!=0){
               		this_object.markerDepuisAdresse(adresse_secour,adresse,0,idmag,picto);
               		/*le dernier magasin celui qui devient non-trouv�... (pour le zoom)*/ 
               		deridmag=idmag ; 
               	}else{
               	 if (deridmag==idmag)
					this_object.calculZoom();
               	}
             } else { 
             	 point.addresse=address;
             	 
             	 if($('destination')){
             		 $('destination').value=address;
             	 }
             	 if($('destination_'+idmag)){
             	 	$('destination_'+idmag).value=address;
             	 }
             	 
             	// alert(address+point+'yop'+adresse+adresse_secour);
             	 var marker = this_object.creerMarker(point,null,adresse,picto,idmag );
             	
             	 point.markMoi=marker;

       			this_object.mm.addMarker(marker,0,17); 
               	this_object.points.push(point);
               	
               	/*
               	if (this_object.autoload_idmag==idmag){
             		this_object.map.addOverlay(marker);
               		//marker.openInfoWindowHtml('yop');
               		//log('yop');
               		GEvent.trigger(marker,"click");
               	}
				if (deridmag==idmag && this_object.autoload_idmag==0){
					this_object.calculZoom();
               	}*/
               	      
             }
           }
         );
       }
     },
     markerDepuisLatlng: function(lat,lng,html,id) { 
 		var this_object=this;
 		idmag=id ; 
 		//console.log(lat);
 		if(lat==undefined){
 			return false;
 		}
 		lat=''+lat;
 		lng=''+lng;
 		latnum=parseFloat(lat.replace(/,/,"."));
 		lngnum=parseFloat(lng.replace(/,/,"."));
 		point = new GLatLng(latnum,lngnum);
      	 
      	 if($('destination')){
      		 $('destination').value=address;
      	 }
      	 if($('destination_'+idmag)){
      	 	$('destination_'+idmag).value=address;
      	 }
      	 
      	// alert(address+point+'yop'+adresse+adresse_secour);
      	 var marker = this_object.creerMarker(point,null,html,null,idmag );

		this_object.mm.addMarker(marker,0,17); 
    	this_object.points.push(point);
    	
/*
    	if (this_object.autoload_idmag==idmag){
  		this_object.map.addOverlay(marker);
    		//marker.openInfoWindowHtml('yop');
    		//log('yop');
    		GEvent.trigger(marker,"click");
    	}*/
      },
	//creer un marker avec plusieurs onglet depuis un point
	creerMarker: function(point, onglet1, onglet2, picto,idmag) {

		/*var pic = new GIcon();
			      pic.iconSize=new GSize(26,61);
		          pic.shadowSize=new GSize(56,32);
		          pic.iconAnchor=new GPoint(24,59);
		          pic.infoWindowAnchor=new GPoint(17,10);
		var pic = new GIcon(pic, "/images/restaurant/brochette.png");*/


		var marker = new GMarker(point);
		var i = marker.length;

    	var directions='<br>Directions: <b>To here<\/b> - <a href="javascript:fromhere(' + i + ')" onclick="this.hide();">From here<\/a>' +
        '<br>Start address:<form action="javascript:getDirections()">' +
        '<input type="text" SIZE=40 MAXLENGTH=40 name="saddr" id="saddr" value="" /><br>' +
        '<INPUT value="Get Directions" TYPE="SUBMIT"><br>' +
        'Walk <input type="checkbox" name="walk" id="walk" /> &nbsp; Avoid Highways <input type="checkbox" name="highways" id="highways" />' +
        '<input type="hidden" id="daddr" value="@'+ point.lat() + ',' + point.lng() + '"/>';
		if ((onglet1!='')&&(onglet1!=undefined)){
			var infoTabs = [
			  new GInfoWindowTab("Contact", '<div style="width:280px;">'+onglet2+'</div>'),
			  new GInfoWindowTab("Infos", '<div style="width:280px;">'+onglet1+'</div>')  
			  ];
		}else{
			var infoTabs = [
			  new GInfoWindowTab("Contact", '<div style="width:280px;">'+onglet2+'</div>') 
			  ];
		}
		  marker.idmag=idmag;
		if(onglet2!=''){
			GEvent.addListener(marker, "click", function() {
			  marker.openInfoWindowTabsHtml(infoTabs);
	          //$('destination').value=point.addresse;
	          //choisirMag(marker.idmag);
			  // marker . openInfoWindowHtml ( html, { maxWidth : '100px' } ) 
			  });
		}

		return marker;
	},		
	//destructeur
	destruct: function()
	{
		var this_object=this;
	}
};

	

	function load_offres(partenaires){
		if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById('map_offre'));
			map.setCenter(new GLatLng(48.68, 6.1), 9);
			map.addControl(new GMapTypeControl());
			map.addControl(new GSmallMapControl());
			//map.addControl(new GLargeMapControl());
			map.enableDoubleClickZoom();
			mm = new GMarkerManager(map); 
			
			bounds = new GLatLngBounds();
			
			//map.setMapType(G_SATELLITE_MAP); // Vue satelite
			map.setMapType(G_NORMAL_MAP); // Vue carte
			//map.setMapType(G_HYBRID_MAP); // Vue mixte
			geocoder = new GClientGeocoder();
			
			modeoffre=true;
			partenaires.each(function(s) {
				adresse1=(s.ch_adr1!=undefined?s.ch_adr1:(s.ch_nom_contact!=undefined?s.ch_nom_contact:s.ch_adr2))+', '+s.ch_ville+', '+s.ch_cp+', France';
				adresse2=s.ch_ville+', '+s.ch_cp+', France';
				boite=s.ch_nom+'<br\/>';
				if(s.ch_civilite!=undefined || s.ch_nom_contact!=undefined || s.ch_prenom_contact!=undefined){
					boite+=(s.ch_civilite!=undefined?s.ch_civilite+' ':'')+
						(s.ch_nom_contact!=undefined?s.ch_nom_contact+' ':'')+
						(s.ch_prenom_contact!=undefined?s.ch_prenom_contact+' ':'')+'<br\/>';
				}
				if(s.ch_adr_voie!=undefined){
					boite+=s.ch_adr_voie+', ';
				}
				//if(s.ch_adr1!=undefined && (s.ch_adr1!=(s.ch_civilite+' '+s.ch_nom_contact+' '+s.ch_prenom_contact))){
				if(s.ch_adr1!=undefined){
					boite+=s.ch_adr1+'<br\/>';
				}
				if(s.ch_adr2!=undefined){
					boite+=s.ch_adr2+'<br\/>';
				}
				boite+=s.ch_ville+' '+s.ch_cp;
				markerDepuisAdresse(adresse1,
						boite,adresse2,
						s.idprestataires
				);	
			});

		}
	}
	
dm_googlemaps_object=new DM_Googlemaps();
    

Event.observe(window, 'load', function() {
	//dm_googlemaps_object.load();
});
Event.observe(window, 'unload', function() {
	//GUnload();
});
     
     