// JavaScript Document

//google.load("maps","2");
var map;
var markers = new Object();


function initMap(latitude,longitude){
	map = new GMap2($("map"));

	//if lat and long are 0, get the average of the places and set the ceter there.
	if(latitude == 0 && longitude == 0){
		var latSum = 0;
		var lngSum = 0;
		var i = 0;
		for(var thisPlace in places){
			latSum += places[thisPlace].lat;
			lngSum += places[thisPlace].lng;
			i++;
		}
		var latitude = latSum/i;
		var longitude = lngSum/i;
		map.setCenter(new GLatLng(latitude, longitude), 4);
	} else {
		map.setCenter(new GLatLng(latitude, longitude), 13);
	}

	map.addControl(new GSmallMapControl());
	var markers = new Object();
	for (var thisPlace in places){
		createMarker(places[thisPlace]);
	}


	test = true;

}
//google.setOnLoadCallback(initMap);

function createMarker(place){
	//takes a place object

	var point = new GLatLng(place.lat, place.lng);
	markers[place.id] = new PdMarker(point);
	markers[place.id].setTooltip(place.name);
	markers[place.id].setOpacity(100);
	GEvent.addListener(markers[place.id],"click", function(){
		window.location = "/place_view.cfm?placeID=" + place.id;
	})
	
	map.addOverlay(markers[place.id]);
}

function populateMap(pars){
	var url = '/ajax/search_resultsXml.cfm';
	new Ajax.Request(url,{method:'get',
						parameters:pars,
						onSuccess:function(transport){
							
							var resultsXML = transport.responseXML;
							var test = jQuery(resultsXML).find('latitude').text();
							
							var location = resultsXML.getElementsByTagName("location");
							var arrMessages = resultsXML.getElementsByTagName("messages");
							var arrResults = resultsXML.getElementsByTagName("place");
							
							map.clearOverlays();
							
							var centerLat = parseFloat(jQuery(resultsXML).find('latitude').text());
							var centerLng = parseFloat(jQuery(resultsXML).find('longitude').text());
							if (centerLat != 0 && centerLng != 0) {
								map.setCenter(new GLatLng(centerLat, centerLng), 13);
							} else {
								map.setCenter(new GLatLng(0, 0), 3);
							}
							
							markers = new Object();
							places = new Object();
							for (i=0; i<=arrResults.length; i++){
								var placeID = arrResults[i].attributes.getNamedItem("id").value;
								var placeName = jQuery(arrResults[i]).find('name').text();
								var lat = jQuery(arrResults[i]).find('lat').text();
								var lng = jQuery(arrResults[i]).find('long').text();
								
								places[placeID] = new Object();
								places[placeID].id = placeID;
								places[placeID].name = placeName;
								places[placeID].lat = lat;
								places[placeID].lng = lng;
								
								if(lat && lng){
									createMarker(places[placeID]);
								}
							}
							
							var test = true;
						}
					});
}

function toggleMore(placeID){
	if($('moreDescription_' + placeID).style.display != "inline"){
		//show the text
		$('moreDescription_' + placeID).style.display = "inline";
		$$('#moreLink_' + placeID + ' a')[0].innerHTML = "Less";
		
	} else {
		//hide the text
		$('moreDescription_' + placeID).style.display = "none";
		$$('#moreLink_' + placeID + ' a')[0].innerHTML = "More";
	}
}

function showPlace(placeID, theLink){
	theLink.focus();
	thisPlace = places[placeID];
	if(thisPlace && thisPlace.lat != 0 && thisPlace.lng != 0 && markers[placeID]){

		markers[placeID].showTooltip();
		var point = new GLatLng(thisPlace.lat, thisPlace.lng);
		map.panTo(point);

	}
}
function hidePlace(placeID){
	if(thisPlace && thisPlace.lat != 0 && thisPlace.lng != 0){
		markers[placeID].hideTooltip();
	}
}
function submitForm(){
	var searchString = $('txtSearchString').value;
	var location = $('txtLocation').value;
	var categoryID = $('categoryID').value;
	
	var pars="searchstring=" + searchString + "&location=" + location + "&categoryID=" + categoryID;
	var url = '/ajax/search_results.cfm';
	new Ajax.Updater('resultsContainer', url, {
		method: 'get',
		parameters: pars
	});
	populateMap(pars);
	
	return false;	
}
/*
var searchParams = new Object();
searchParams.tag = '';
searchParams.loc = '';
searchParams.name = '';
searchParams.cat = '';
searchParams.page = 1;
var qString = '';


var map;
var markers = new Array();

function updateSearch(searchType,val){
	if (searchType == 'tag'){
		searchParams.tag = val;
		$('tag').value = val;
	}
	if (searchType == 'cat'){
		searchParams.cat = val;
	}
	if (searchType == 'name'){
		searchParams.name = val;
		$('placeName').value = val;
	}
	if (searchType == 'loc'){
		searchParams.loc = val;
		$('location').value = val;
	}
	if (searchType == 'page'){
		if (val == "+"){
			searchParams.page ++;
		} else {
			searchParams.page --;
		}
		
	}
	setQstring();
	$('sandbox').innerHTML =qString;
	
	$('criteria').innerHTML = setCriteria();
	url = '/ajax/search_results.cfm';
	new Ajax.Updater('searchResults',url,{method:'get',parameters:qString});
	new Ajax.Request('/search/xml.cfm',{parameters:qString,method:'get',onSuccess:function(transport){
																																								updateMap(transport.responseXML);
																																								}
									 });
}

//update the map based on the xml request
function updateMap(x){//xml
	var n = parseFloat(x.getElementsByTagName('n')[0].textContent) + .5;
	var s = parseFloat(x.getElementsByTagName('s')[0].textContent) - .5;
	var e = parseFloat(x.getElementsByTagName('e')[0].textContent) + .5;
	var w = parseFloat(x.getElementsByTagName('w')[0].textContent) - .5;
	var placesArr = x.getElementsByTagName('place');
	var sw = new GLatLng(s,w);
	var ne = new GLatLng(n,e);
	var mapBounds = new GLatLngBounds(sw,ne);
	var center = new GLatLng((n+s)/2,(e+w)/2);
	var z =	map.getBoundsZoomLevel(mapBounds);
	map.setCenter(center, z);
	for (var i=0;i<=placesArr.length;i++){
		var placeID = placesArr[i].getElementsByTagName('id')[0].textContent;
		var lat = placesArr[i].getElementsByTagName('lat')[0].textContent;
		var lng = placesArr[i].getElementsByTagName('lng')[0].textContent;
		var name = placesArr[i].getElementsByTagName('name')[0].textContent;
		var pic = placesArr[i].getElementsByTagName('pic')[0].textContent;
		if(lat != ''){
			createMarker(lat,lng,placeID,name,pic);
		}
	}
  var x = 0;
}

function hideMapTip(){
	
}

function createMarker(lat,lng,id,name,pic){
	markers[id] = new PdMarker(new GLatLng(lat,lng));
	var html = name;
	markers[id].setTooltip(html);
	markers[id].setOpacity(100);
	map.addOverlay(markers[id]);
	GEvent.addListener(markers[id],"mouseover",function(){
																											markers[id].showTooltip();
																											})
																												
																												
		//markX = markers[id].ej.x;<img src='/images/places/"+pic+"' height='70' align='left' style='padding-right:4px'>
		//markY = markers[id].ej.y;
		//var test=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom()); 
		//var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(markers[id].getPoint(),map.getZoom()); 
		//var markerOffset = map.fromLatLngToDivPixel(new GLatLng(lat,lng));
		
		
		// 

		/*toolTipTimeout = setTimeout(function(dv,url,pars){
										//alert(dv+url+pars);
																	url = '/ajax/home_placeToolTip.cfm';
							pars = 'placeID='+id;
							
							new Ajax.Request(url,{parameters:pars,method:'get',onSuccess:function(transport){
																														
																														map.openInfoWindow(map.getCenter(),transport.responseText);
																														}});

										var markerOffset = map.fromLatLngToDivPixel(new GLatLng(lat,lng));
										$('sandbox').innerHTML = markerOffset.x+600;
										$('toolTip').style.display = 'block';
										//$('toolTip').style.position = 'relative';
										$('toolTip').style.left = (markerOffset.x+530) + 'px';
										$('toolTip').style.top = (markerOffset.y+150) + 'px';
										//$('toolTip').style.backgroundColor = "#000000";
										$('toolTip').style.zIndex = "500";

										new Ajax.Updater(dv,url,{parameters:pars,method:'get'});

										//var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.getBounds().getSouthWest(),map.getZoom());
										//var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(markers[id].getPoint(),map.getZoom());
										//var anchor=markers[id].getIcon().iconAnchor;
										//var width=markers[id].getIcon().iconSize.width;
										//var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(markerOffset.y+150,markerOffset.x+700));
										
										//pos.apply($('toolTip'));

									},500,'toolTip',url,pars});
									)*/

		
		//showTip('/ajax/home_placeToolTip.cfm','placeID='+id,event);
	
	
/*

}

function showMapTip(id){
	markers[id].showTooltip();
}
function hideMapTip(id){
	markers[id].hideTooltip();
}
function setCriteria(){
	var criteria = '<h4>Places:</h4><ul>';
	
	if (searchParams.tag != ''){
		criteria = criteria + '<li>Tagged as "'+searchParams.tag + "\" <a href='javascript:updateSearch(\"tag\",\"\")'>[remove]</a> </li>";
	}
	if (searchParams.cat != ''){
		criteria = criteria + '<li>In the "'+searchParams.cat + "\" category <a href='javascript:updateSearch(\"cat\",\"\")'>[remove]</a> </li>";
	}
	if (searchParams.loc != ''){
		criteria = criteria + '<li>In or near '+searchParams.loc + " <a href='javascript:updateSearch(\"loc\",\"\")'>[remove]</a> </li>";
	}
	if (searchParams.name != ''){
		criteria = criteria + '<li>With "'+searchParams.name + "\" in the name <a href='javascript:updateSearch(\"name\",\"\")'>[remove]</a> </li>";
	}

	criteria += '</ul>';
	return criteria;
	
}

// set the query string for the search results ajax page
function setQstring(){
	qString = "p="+searchParams.page+"&tag="+searchParams.tag+"&loc="+searchParams.loc+"&name="+searchParams.name+"&cat="+searchParams.cat;
}


// set up the map
function setMap(n,s,e,w){
	if (GBrowserIsCompatible()) {
		var sw = new GLatLng(s,w);
		var ne = new GLatLng(n,e);
		var mapBounds = new GLatLngBounds(sw,ne);
		//var z = map.getBoundsZoomLevel(mapBounds);
		var z = '';
		var center = new GLatLng((n+s)/2,(e+w)/2);
		$('sandbox').innerHTML = center.lat() + " " + z;
		map = new GMap2(document.getElementById("map"));
		map.setCenter(center, map.getBoundsZoomLevel(mapBounds));
		map.addControl(new GSmallMapControl());
		//updateSearch();
		//var g = new GGeoXml("http://www.thisplaceiknow.com.com/search/xml.cfm?loc=02356");
		//map.Overlays.Add(g);
	}
	GEvent.addListener(map, "dragend", function() {
		$('sandbox').innerHTML = map.getCenter().lat();
		$('sandbox').innerHTML += " " + map.getCenter().lng();
	});
}
*/




