/*
*	Marker UI functions
*/

Markers = {
	classes : ['sp-none', 'sp-sleep', 'sp-food', 'sp-drink', 'sp-shop', 'sp-old', 'sp-nature', 'sp-landscape', 'sp-activity', 'sp-culture', 'sp-ent', 'sp-airport', 'sp-transport'],
	s_markers : new Object(),  //special markers
	
	init : function(){
		Markers.s_markers.new_item = new GMarker(new GLatLng(1000,1000));
		Markers.s_markers.hilight_item = new GMarker(new GLatLng(1000,1000));
  		MS.map.addOverlay(Markers.s_markers.new_item);
		MS.map.addOverlay(Markers.s_markers.hilight_item);
	},
	
	/*
	*	Remove all markers -- well actually move them off the screen
	*/
	clearAllMarkers : function(){
		for (var i =0; i< Items.markers.length; i++){
			Markers.updateMarker(Items.markers[i], -1 , '', 1000,1000, '',0);
		}
	},
	
	/*
	*	Update all markers to their correct position and redraw
	* 	required on zoom etc...
	*/
	postionAllMarkers : function(){
		for (var i =0; i< Items.markers.length; i++){
			Items.markers[i].setPosition(Items.markers[i].point);
		}
	},
	
	// Turn off hover for all markers
	stopHoverOverAll : function() {
		for (var  i = Items.markers.length-1; i >= 0 ; i--){
			if (Items.markers[i].selected) Markers.unhilightItem(i);	
		}
	},
	
	// Hover by tag
	hilightByTag : function(tag){
		if (tag == ''){
			for (var  i = Items.items.length-1; i >= 0; i--){
				Markers.hilightItem(Items.getMarkerIndex(Items.items[i].item_id));
			}
			return;
		}
		
		tag = ','+tag+' ,';
		
		for (var  i = Items.items.length-1; i >= 0; i--){
			if (Items.items[i].tags.indexOf(tag) != -1) {
				Markers.hilightItem(Items.getMarkerIndex(Items.items[i].item_id));
			} 
		}
	},
	
	// Hover by author
	hilightByAuthor : function(user_id){
		for (var  i = Items.items.length-1; i >= 0; i--){
			if (Items.items[i].user_id == user_id) {
				Markers.hilightItem(Items.getMarkerIndex(Items.items[i].item_id));
			}
		}
	},
	
	//Set hover on a marker
	hilightItem : function(marker_id){ 
		var marker = Items.markers[marker_id];
		var spans = marker.div_;
		
		marker.selected = true;
		
		if (marker.type == SPEECH_MARKER_TEXT){
			spans.childNodes[1].childNodes[0].innerHTML = '&nbsp;'+marker.fullTitle;
		}
		
		spans.style.zIndex = 3;	
		//spans.style.fontWeight = 'bold';	
		spans.className = marker.hClass;
		
		var itm = Items.getItemById(Items.markers[marker_id].ms_item_id);
		if (typeof itm != 'undefined') {
			if (typeof itm.dom_element != 'undefined') itm.dom_element.className = 'image-bar-tmb selected';
			if (typeof itm.dom_element2 != 'undefined') itm.dom_element2.className = 'selected';
		}
	},
	
	//Set hover off on a marker
	unhilightItem : function(marker_id){ //marker_id
		var marker = Items.markers[marker_id];
		var spans = marker.div_;
		
		marker.selected = false;
		
		if (marker.type == SPEECH_MARKER_TEXT){
			spans.childNodes[1].childNodes[0].innerHTML = marker.trunTitle;
		}
		spans.style.zIndex = 2;	
		//spans.style.fontWeight = 'normal';	
		spans.className = marker.nClass;
		//marker.spans.style.color = 'black';
		
		var itm = Items.getItemById(marker.ms_item_id);
		if (typeof itm != 'undefined') {
			if (typeof itm.dom_element != 'undefined') itm.dom_element.className = 'image-bar-tmb';
			if (typeof itm.dom_element2 != 'undefined') itm.dom_element2.className = '';
		}
	},
	
	//Marker hover fn... highlight other bits (authors, tags)
	//TODO: Make author hilight
	hoverOver : function(marker_id){
		Markers.hilightItem(marker_id);
		
		//Hilight tags
		var itm = Items.getItemById(Items.markers[marker_id].ms_item_id);
		TagCloud.hilightTags(itm.tags);
	},
	
	//Marker stop hover fn... de-highlight other bits (authors, tags)
	stopHoverOver : function(marker_id){
		Markers.unhilightItem(marker_id);
		
		
		TagCloud.unhilightTags();
	},
	
	/*
	*	Update marker, positon, text, icon, item_id
	*/
	updateMarker : function(marker, item_id,  title, lng, lat, icon_url, type, cat){
		marker.ms_item_id = parseInt(item_id);
		
		var cls = 'sp-misc';
		if (type ==1) 
			cls = 'sp-city';
		else {
			cls = Markers.classes[cat];
			if (cat ==0) cls = 'sp-misc';;
		}
		
		if (MS.MS_MODE == MS_MINI)
			marker.trunTitle = '&nbsp;'+substring_dots(title,10);
		else
			marker.trunTitle = '&nbsp;';//substring_dots(title,10); //'&nbsp;';
		
		marker.fullTitle = substring_dots(title,25);
		
		if ((icon_url != '') && (UIConfig.allow_image_markers)){
			marker.setType(SPEECH_MARKER_IMAGE);
			marker.setContent('<img onmouseover="Markers.hoverOver('+marker.id+')" onmouseout="Markers.stopHoverOver('+marker.id+')" onclick="Explore.markerClicked('+marker.id+')" src="'+icon_url+'" width="30" height="30" title="'+marker.fullTitle+'" />');

		} else {
			marker.setType(SPEECH_MARKER_TEXT);
			marker.setContent('<span class="l">&nbsp;&nbsp;</span><span class="m"><span class="'+cls+'" onmouseover="Markers.hoverOver('+marker.id+')" onclick="Explore.markerClicked('+marker.id+')" onmouseout="Markers.stopHoverOver('+marker.id+')">'+marker.trunTitle+'</span></span><span class="r">&nbsp;</span>');
			
			//onclick="Explore.markerClicked('+marker.id+')"
		} 
		marker.div_.style.zIndex = 2;	
		marker.setPosition(new GLatLng(lat, lng));
	},
	
	openWindow : function(marker_id, html) {
		Explore.suppressLoadingTemp();
		Markers.hilightItem(marker_id);
		//Items.last_item_id = parseInt(Items.markers[marker_id].ms_item_id);
		//MS.map.openInfoWindowHtml(Items.markers[marker_id].point, html);
		ItemInfo.openInfoWindowHtml(Items.markers[marker_id].point, html);
	},
	
	closeWindow : function(){
		Markers.stopHoverOverAll();
		//if ($chk(Wizard)) Explore.cancelAddItem();

		ItemInfo.closeInfoWindow();
	}
}

