// JavaScript Document

//populate the side bar with entries matching tag
function populateSideBarTag(tag){

  
	jQuery('iframe#track').attr('src', ROOT_URL+"/track/use-tag-cloud-for-"+tag);
	
	jQuery('iframe#track').load(function() 
	{
		//alert('done');
	});	  	
	
	clean_listeners();			
	populateSideBarTagOnly(tag);
	return;

  var searchUrl = 'index.php?cmd=getTagMatch&tag='+tag;
	showPreLoadListings();  
	
  GDownloadUrl(searchUrl, function(data) {
  
	var xml = GXml.parse(data);
	var markers = xml.documentElement.getElementsByTagName('marker');
	var sidebar = document.getElementById('sidebar');
	sidebar.innerHTML = '';
	if (markers.length == 0) {
	  sidebar.innerHTML = 'No results found.';
	  map.setCenter(new GLatLng(DEFAULT_LAT, DEFAULT_LNG), DEFAULT_ZOOM);
	  return;
	}
	
	for (var i = 0; i < markers.length; i++) {
	  var id = markers[i].getAttribute('id');
	  var name = markers[i].getAttribute('name');
	  var address = markers[i].getAttribute('address');
	  var file_name = markers[i].getAttribute('file_name');
	  var lat = markers[i].getAttribute('lat');
	  var lng = markers[i].getAttribute('lng');
	  var loc_profile_img = markers[i].getAttribute('loc_profile_img');	
	  var loc_user_name = markers[i].getAttribute('loc_user_name');	
	  var loc_user_id = markers[i].getAttribute('loc_user_id');	
	  var url_alias = markers[i].getAttribute('url_alias');		
	  var reference_url = markers[i].getAttribute('reference_url');			  
	
	  //var marker = createMarker(point, name, address);
	  
	  var sidebarEntry = createSidebarEntryTag(id, name, address,  file_name, lat, lng);
	  sidebar.appendChild(sidebarEntry);
	  //adjustSideBars('tag_cloud_content_result');
	}
	
  });
  
	listingsParams = {
					   cmd:'getTagMatchListings',
					   tag : tag,
					   offset:0
				   }
	
	jQuery.getJSON('index.php', 
				  listingsParams
				  ,
				   
					function(data) {
						generateNewListings(data);
			});

  
}

//populate the side bar with entries matching tag
function populateSideBarTagOnly(tag){

	hibernateSearch();
	jQuery('iframe#track').attr('src', ROOT_URL+"/track/use-marker-tag-for-"+tag);
	
	jQuery('iframe#track').load(function() 
	{
		//alert('done');
	});	  		
	
	clean_listeners();			
	showLoadingImage();
	markers_pointers	 = new Array();	
  var center = map.getCenter();  
  radius = getMapRadius();
  zoom = map.getZoom();	
	
  var searchUrl = '/index.php?cmd=getTagMatch&tag='+tag+'&zoom='+zoom+'&center_lat='+center.lat()+'&center_lng='+center.lng()+'&radius='+radius;
	showPreLoadListings();

  GDownloadUrl(searchUrl, function(data) {
  
	var xml = GXml.parse(data);
	//map.clearOverlays();	

	
	var markers = xml.documentElement.getElementsByTagName('marker');
	var sidebar = document.getElementById('sidebar');
	sidebar.innerHTML = '';
	if (markers.length == 0) {
	  sidebar.innerHTML = 'No results found.';
	  map.setCenter(new GLatLng(DEFAULT_LAT, DEFAULT_LNG), DEFAULT_ZOOM);
	  //adjustSideBars('tag_cloud_content_result');	  
	  return;
	}
	
	var bounds = new GLatLngBounds();	
	for (var i = 0; i < markers.length; i++) {
		
		
		var id = markers[i].getAttribute('id');
		var url_alias = markers[i].getAttribute('url_alias');		
		var cluster = markers[i].getAttribute('cluster');	


		if(cluster ==0){

			var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
							  parseFloat(markers[i].getAttribute('lng')));			
			var marker = addMarkerCatCord(id, parseFloat(markers[i].getAttribute('lat')), parseFloat(markers[i].getAttribute('lng')), map, url_alias);

		}
		else{
			//alert('cluster '+name );			
			var point1 = new GLatLng(parseFloat(markers[i].getAttribute('east_most')),
								  parseFloat(markers[i].getAttribute('north_most')));			
			var point2 = new GLatLng(parseFloat(markers[i].getAttribute('west_most')),
								  parseFloat(markers[i].getAttribute('south_most')));			
			
			var marker = addClusterCord(id, point1 , point2 , map, cluster );
		

		}		
	
	}
	


	//map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	
	//catches drag of map event
	myEvent = GEvent.addDomListener(map, 'dragend', function() {
		getLocationsTagMatchZoomed(tag);
	});		
		
	event_listeners.push(myEvent ); 			
	//catches zoom of map event	
	myEvent = GEvent.addDomListener(map, 'zoomend', function(oldLevel, newLevel) {
		//getLocationsCategory(id, map.getZoom());
		//alert(newLevel);
		getLocationsTagMatchZoomed(tag);
	});			
	event_listeners.push(myEvent ); 		
	 	
	
  });
  
	listingsParams = {
					   cmd:'getTagMatchListings',
					   tag : tag,
					   zoom:zoom,
					   center_lat:center.lat(),
					   center_lng:center.lng(),
					   radius:radius,
					   offset:0
				   }
	
	jQuery.getJSON('index.php', 
				  listingsParams
				  ,
				   
					function(data) {
						generateNewListings(data);
			});  
}	



//function triggered on event place page load
function getLocationsTagMatchZoomed(tag) {


	update_main_selector_count();
	
	jQuery('iframe#track').attr('src', ROOT_URL+"/track/tag-reloaded-for-"+tag);
	
	jQuery('iframe#track').load(function() 
	{
		//alert('done');
	});	  	

	showLoadingImage();
	markers_pointers	 = new Array();	
  var center = map.getCenter();  
  radius = getMapRadius();
  zoom = map.getZoom();	
	
  var searchUrl = '/index.php?cmd=getTagMatch&tag='+tag+'&zoom='+zoom+'&center_lat='+center.lat()+'&center_lng='+center.lng()+'&radius='+radius;
	showPreLoadListings();

  GDownloadUrl(searchUrl, function(data) {
  
	var xml = GXml.parse(data);
	//map.clearOverlays();	
	
	var markers = xml.documentElement.getElementsByTagName('marker');
	var sidebar = document.getElementById('sidebar');
	sidebar.innerHTML = '';
	if (markers.length == 0) {
	  sidebar.innerHTML = 'No results found.';
	  map.setCenter(new GLatLng(DEFAULT_LAT, DEFAULT_LNG), DEFAULT_ZOOM);
	  //adjustSideBars('tag_cloud_content_result');	  
	  return;
	}
	
	var bounds = new GLatLngBounds();	
	for (var i = 0; i < markers.length; i++) {
		
		var id = markers[i].getAttribute('id');
		var url_alias = markers[i].getAttribute('url_alias');		
		var cluster = markers[i].getAttribute('cluster');	

		if(cluster ==0){
			//alert('single '+name );
			//var marker = createMarker(point, name, address);
			var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
							  parseFloat(markers[i].getAttribute('lng')));			
			var marker = addMarkerCatCord(id, parseFloat(markers[i].getAttribute('lat')), parseFloat(markers[i].getAttribute('lng')), map, url_alias);
		
		}
		else{
			//alert('cluster '+name );			
			var point1 = new GLatLng(parseFloat(markers[i].getAttribute('east_most')),
								  parseFloat(markers[i].getAttribute('north_most')));			
			var point2 = new GLatLng(parseFloat(markers[i].getAttribute('west_most')),
								  parseFloat(markers[i].getAttribute('south_most')));			
			
			var marker = addClusterCord(id, point1 , point2 , map, cluster );
			
		}		
		
	}
	

	
  });
  
	listingsParams = {
					   cmd:'getTagMatchListings',
					   tag : tag,
					   zoom:zoom,
					   center_lat:center.lat(),
					   center_lng:center.lng(),
					   radius:radius,
					   offset:0
				   }
	
	jQuery.getJSON('/index.php', 
				  listingsParams
				  ,
				   
					function(data) {
						generateNewListings(data);
			});  
  
}	

/*Inserts entry into the side bar*/
function createSidebarEntryTag(id, name, address, file_name, lat, lng) {
  var div = document.createElement('div');
  var html = "<table width=100%><tr><td width='50px' style='vertical-align:top'><img src='"+property_img_path+file_name+"' width='50px' height='50px'></td><td align='left'>";
  html += '<b>' + name + '</b> <br/>' + address;
  html += "</td></tr></table>";
  div.innerHTML = html;
  div.style.padding = '4px';
  div.style.width = '90%';	  
  
  div.style.cursor = 'pointer';
  div.style.marginBottom = '5px'; 
  GEvent.addDomListener(div, 'click', function() {
	searchLocationsNearTag(id, lat, lng) 		
  });
  
  GEvent.addDomListener(div, 'mouseover', function() {
	document.getElementById('tool_tip').innerHTML = "View this entry on the map?";
	move_toggle_box('tool_tip');
  });
  GEvent.addDomListener(div, 'mouseout', function() {
	fix_toggle_box();		
	toggle_insert_box('tool_tip')		
  });	  	  

  var sub_div = document.createElement('div');
  sub_div.style.textAlign="right";
  sub_div.style.fontSize='10px';
  
/*	  To be activated when useer rights have been built in
  var sub_del_icon = document.createElement('img');
  sub_del_icon.src='http://thingstodosingapore.com/images/delete.gif';
  sub_del_icon.style.cursor="pointer";
  sub_del_icon.style.width='20px';

  GEvent.addDomListener(sub_del_icon, 'mouseover', function() {
	super_div.style.backgroundColor = '#FFFFCC';
	document.getElementById('tool_tip').innerHTML = "Delete Entry?";
	move_toggle_box('tool_tip');
  });
  GEvent.addDomListener(sub_del_icon, 'mouseout', function() {
	super_div.style.backgroundColor = '#fff';
	fix_toggle_box();		
	toggle_insert_box('tool_tip')		
  });	
  GEvent.addDomListener(sub_del_icon, 'click', function() {
	removeMarker(id);
  });	  

  sub_div.appendChild(sub_del_icon);	
	*/


  var super_div = document.createElement('div');
  super_div.appendChild(div);
  super_div.appendChild(sub_div);	  
  super_div.setAttribute('id', 'side_entry_'+id); 	  
  
  GEvent.addDomListener(super_div, 'mouseover', function() {
	super_div.style.backgroundColor = '#FFFFCC';
  });
  GEvent.addDomListener(super_div, 'mouseout', function() {
	super_div.style.backgroundColor = '#fff';
  });	  
  
  return super_div;
}


/*Shows on map locations near orginal tag center*/
function searchLocationsNearTag(org_id, lat, lng) {
  markers_pointers	 = new Array();
  var radius = 5;
  var searchUrl = 'index.php?cmd=search&lat=' + lat + '&lng=' + lng + '&radius=' + radius+'&org_id='+org_id;



  GDownloadUrl(searchUrl, function(data) {


	var xml = GXml.parse(data);
	var sidebar = document.getElementById('sidebar');
	sidebar.innerHTML = '';

	var markers = xml.documentElement.getElementsByTagName('marker');
	//map.clearOverlays();

	var bounds = new GLatLngBounds();

	default_marker = null;
	for (var i = 0; i < markers.length; i++) {

		var id = markers[i].getAttribute('id');
		var url_alias = markers[i].getAttribute('url_alias');		
		var cluster = markers[i].getAttribute('cluster');	
	
	  //var marker = createMarker(point, name, address);
	  var marker = addMarkerCatCord(id, parseFloat(markers[i].getAttribute('lat')), parseFloat(markers[i].getAttribute('lng')), map, url_alias);

	  
	  //alert(org_id +" "+id)
	  if(org_id == id){

		default_marker = marker;
	  }

	   bounds.extend(point);
	}
	
	//map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));

	if(default_marker!=null){

		map.setCenter(default_marker.getPoint(), 19);
		GEvent.trigger(default_marker, 'click');

		default_marker.setImage(ROOT_URL+'/images/selected_marker.png');
	}
	else{

		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	}
	
	if(!justAddedMarker){
		setTimeout("addandactivatelisteners()", 5000);
	}

  });
}	


function addandactivatelisteners()
{
	//alert('cc');			
	//adds the mouse moving actions
	myEvent = GEvent.addDomListener(map, 'dragend', function() {
		getLocationsLatestZoomed();
	});		
	
	event_listeners.push(myEvent ); 	
		
	//catches zoom of map event	
	myEvent = GEvent.addDomListener(map, 'zoomend', function(oldLevel, newLevel) {
		//getLocationsCategory(id, map.getZoom());
		//alert(newLevel);
		getLocationsLatestZoomed();
	});			
	 	
	event_listeners.push(myEvent ); 		
}
