/**
 * @author jeremy@eolas.fr
 */
//<![CDATA[

	menucarto = {
		menu_id	: 'cartoMenu',
		initialize : function() {
			menuC = document.getElementById(menucarto.menu_id);
			YAHOO.util.Event.addListener(menuC.getElementsByTagName('DT'), 'click', function() {menucarto.toggle(this.id.substr(2));});
			YAHOO.util.Dom.setStyle(menuC.getElementsByTagName('UL'), 'display', 'none');
			YAHOO.util.Dom.removeClass(menuC.getElementsByTagName('DT'), 'dton');
			YAHOO.util.Dom.setStyle(menuC, 'visibility', 'visible');
		},
		
		toggle : function(idtf) {
			if (YAHOO.util.Dom.getStyle('ul' + idtf, 'display') == "none") {
				menucarto.show(idtf);
				carto.showMarkers('ul' + idtf) ;
			} else {
				menucarto.hide(idtf);
			}
		},
		
		show : function(idtf) {
			YAHOO.util.Dom.setStyle('ul' + idtf, 'display', 'block'); 
			if (!YAHOO.util.Dom.hasClass('dt' + idtf, 'dton')) {
				YAHOO.util.Dom.addClass('dt' + idtf, 'dton');
			}
		},		
		
		hide : function(idtf) {
			YAHOO.util.Dom.setStyle('ul' + idtf, 'display', 'none'); 
			YAHOO.util.Dom.removeClass('dt' + idtf, 'dton');
		}
		
	
	}

	carto = {
		map_id				:	'cartoMap',
		wait_id				:	'cartoWait',
		edit_id				:	'cartoEdit',
		container_id		:	'cartoMain',
		map					:	null,
		bounds				:	null,
		list_marker			:	[],
		id_carto			:	0,
		
		initialize : function(idtf, lng, lat, zoom) {
			map = new google.maps.Map2(document.getElementById(carto.map_id), {backgroundColor:'#9CB2CE'});
			map.addControl(new GLargeMapControl());
			map.addControl(new GHierarchicalMapTypeControl());
			map.addMapType(G_PHYSICAL_MAP);
			map.setMapType(G_NORMAL_MAP); 
			map.disableDoubleClickZoom();
			map.disableScrollWheelZoom();
     
	    	carto.map = map;		
			menucarto.initialize();
			carto.id_carto = idtf ;
			

			
			GDownloadUrl(SERVER_ROOT + 'include/tpl/tpl_cartographieAjax.php?action=getMarker&idtf=' + carto.id_carto , function(data, responseCode) {
				oXML = GXml.parse(data);
				cM = oXML.getElementsByTagName('m');
				if (cM.length > 0) {
					var bounds = new GLatLngBounds();
					for (i=0;cM[i];i++) {
						idtf = cM[i].getAttribute('idtf');
						aM = [];
						aM['lat'] = cM[i].getAttribute('lat');
						aM['lng'] = cM[i].getAttribute('lng');
						aM['type'] = cM[i].getAttribute('type');
						aM['icon'] = cM[i].getAttribute('icon');
						aM['titre'] = GXml.value(cM[i].getElementsByTagName('titre')[0]);
						aM['desc'] = GXml.value(cM[i].getElementsByTagName('desc')[0]);
						
						oM = carto.list_marker['m' + idtf];
						oM = carto.createMarker(idtf, aM);
						carto.list_marker['m' + idtf] = oM;
						carto.map.addOverlay(carto.list_marker['m' + idtf]);
						//GEvent.trigger(oM,'click');
						bounds.extend(oM.getLatLng());
					}
					//carto.map.setCenter(bounds.getCenter(), carto.map.getBoundsZoomLevel(bounds));	
				}
				carto.stopLoading();
			});
			if(!isNaN(lng) && !isNaN(lat) ){
				carto.map.setCenter(new GLatLng(lat, lng), 11);
			}else{
				carto.map.setCenter(new GLatLng(45.1878443805053, 5.72662353515625), 11);
			}
			 map.setZoom(zoom);	
		},

		
		startLoading : function () {
			document.getElementById(carto.wait_id).style.display = 'block';
		},
		
		stopLoading : function () {
			document.getElementById(carto.wait_id).style.display = 'none';
		},
		

		
		showMarker : function(idtf) {
			oM = carto.list_marker['m' + idtf];
			if (oM) {
				GEvent.trigger(oM,'click');
				return oM ;
			}
		},
		
		showMarkers : function(idUl) {
			listeLi = YAHOO.util.Dom.getChildren(document.getElementById(idUl)) ;
			carto.map.clearOverlays() ;
			var bounds = new GLatLngBounds();
			for (i=0;listeLi[i];i++) {
				marker = carto.showMarker(listeLi[i].id.substr(2)) ;
				bounds.extend(oM.getLatLng());
			}
			carto.map.setCenter(bounds.getCenter(), carto.map.getBoundsZoomLevel(bounds));
		},
		

		
		getIcon : function(url) {
			icon = new GIcon(G_DEFAULT_ICON);
			icon.image = url;
			icon.iconSize = new GSize(16,16);
			icon.iconAnchor = new GPoint(8,8);
			icon.imageMap = [0,0, 15,0, 15,15, 0,15];
			icon.shadowSize= new GSize(0,0);
			return icon;
		},
		
		// aM = lat, lng, type, icon, titre, desc
		createMarker : function(idtf, aM) {
			point = new GLatLng(aM['lat'], aM['lng']);
			var marker = new GMarker(point, {icon:carto.getIcon(aM['icon']),title:aM['titre'],draggable: false});
			marker.idtf = idtf;
			marker.aM = aM;
			GEvent.addListener(marker, 'click', function() {
				//carto.map.setCenter(new GLatLng(this.aM['lat'], this.aM['lng']));
				carto.map.addOverlay(carto.list_marker['m' + idtf]);
				marker.openInfoWindowHtml(this.aM['titre'] + " <br /> " + this.aM['desc']);
			});
			

			
			return marker;
		},
		
		search : function(){
			var text = escape(document.getElementById("mapSearch").value);
			if(text.length > 0){
				GDownloadUrl(SERVER_ROOT + 'include/tpl/tpl_cartographieAjax.php?action=search&idtf=' + carto.id_carto + '&text=' +text, function(data, responseCode) {
					oXML = GXml.parse(data);
					cM = oXML.getElementsByTagName('m');
					var container = document.getElementById("cartoResultSearch") ;
					container.innerHTML = "" ;
					if (cM.length > 0) {
						oUl = document.createElement('ul') ;
						for (i=0;cM[i];i++) {
							oLi = document.createElement('li') ;
							oLink = document.createElement('a') ;
							oLink.setAttribute("href" , "javascript:void(0)") ;
							oLink.idtf = cM[i].getAttribute('idtf') ;
							YAHOO.util.Event.addListener(oLink, 'click', function() {
								carto.showMarker(this.idtf) ;
							});
							oImage = document.createElement('img') ;
							oImage.setAttribute("src", cM[i].getAttribute('icon')) ;
							oLink.appendChild(oImage) ;
							oLink.appendChild(document.createTextNode(GXml.value(cM[i].getElementsByTagName('titre')[0]))) ;
							oLi.appendChild(oLink) ;
							oUl.appendChild(oLi) ;
						}
						container.appendChild(oUl) ;
					}else{
						container.appendChild(document.createTextNode("Aucun résultat")) ;
					}
				});
			}
		}
	}
		
//]]>
