// JavaScript Document
var map = null;
var geocoder = null;
var directions;
var mgr; //marker manager
var markers;
var numMarkers;

function initialize(num) {
  if (GBrowserIsCompatible()) {
  	numMarkers = num;
	map = new GMap2(document.getElementById("map_canvas"));
	map.setCenter(new GLatLng(37.4419, -122.1419), 1);
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	geocoder = new GClientGeocoder();
	
	mgr = new MarkerManager(map);		
	markers = []; //marker array	
	
	var directionsPanel = document.getElementById('g_directions');	
	directions = new GDirections(map, directionsPanel);	
  }
}
function addslashes(str){
	str=str.replace(/\\/g,'\\\\');
	str=str.replace(/\'/g,'\\\'');
	str=str.replace(/\"/g,'\\"');
	str=str.replace(/\0/g,'\\0');
	return str;
}

function showAddress(business) {

	if (geocoder) {		
		var destloc = business.streetaddress;
		geocoder.getLocations(destloc, function(resp) {
			if (!resp) {
				//alert(" not found"); 
			} else {
				if (resp.Status.code==620){
					setTimeout(function() {showAddress(business);},100,business);
				}else if (resp.Status.code==200){
					var coord = resp.Placemark[0].Point.coordinates;
					var point = new GLatLng(coord[1],coord[0]);
					map.setCenter(point, 15);
					var marker = new GMarker(point, {draggable: false});
					
					//mgr.addMarker(marker);
					map.addOverlay(marker);
					//mgr.refresh();
					
					var bubbleinfo = '';
					var businesses = business.businesses;
					
					for (var n=0; n<businesses.length; n++){
						bubbleinfo += '<h3>'+businesses[n].name+'</h3><div class="info-bubble"><b>Address: </b>'+businesses[n].address+
						'<br /><b>Phone: </b>'+businesses[n].phone+'<br />';
						
						if ((businesses[n].email != 'None')&&(businesses[n].email != null)&&(businesses[n].email != '')){
							bubbleinfo += '<b>Email: </b><a href="mailto:' + businesses[n].email+'">'+businesses[n].email+
							'</a><br />';
						}
						if ((businesses[n].website != null)&&(businesses[n].website != '')){
							bubbleinfo += '<b>Website: </b><a target="_blank" href="' + businesses[n].website+'">'+
							businesses[n].website+'</a><br />';
						}
						if (businesses[n].description != null){ 
							bubbleinfo += '<i>'+businesses[n].description+'</i><br />';
						}		
						bubbleinfo += '</div>';				
					}
					bubbleinfo += 
					'<div class="info-bubble"><a href="javascript:void(0)" onclick="directPanel()">Find Directions</a><br /></div>'
					+'<div id="direction_panel">'
					+'<label for="g_from">From: </label><input type="text" id="g_from" class="field" />'
					+'<input type="button" class="button" value="Get Directions" onclick="showDirections(\'' + destloc + '\')" />'
					+'<div class="instruct">Please Include Your City In the Address</div>'
					+'</div>';
					
					GEvent.addListener(marker, "mouseover", function() {
						marker.openInfoWindowHtml(bubbleinfo);
					});
					GEvent.addListener(marker, "click", function() {
						marker.openInfoWindowHtml(bubbleinfo);
					});
					
					//mgr.addMarker(marker);
					//alert(mgr.getMarkerCount(15));	
				}/*else{
					alert(resp.Status.code);
				}*/
			}
		});		
	}
}
function directPanel(){
	var dpanel = 'direction_panel';
	if (YAHOO.util.Dom.getStyle(dpanel,'visibility')=='hidden'){
		YAHOO.util.Dom.setStyle(dpanel, 'visibility', 'visible');
	}else{
		YAHOO.util.Dom.setStyle(dpanel, 'visibility', 'hidden');
	}
}
function showDirections(destination){
	var from = document.getElementById('g_from').value;	
		
	directions.clear();
	directions.load('from: ' + from + ' to: ' + destination);
}
function subForm(elmnt){
	if(elmnt == "login"){
		var p=document.getElementById("aform");
		p.action="membersOnly.php";
		p.submit();	
	}else{
		if(elmnt == "type"){
			if(document.getElementById('busType').value == ""){
				alert("Please select a business type first");
				return;
			}
		}else if (elmnt == "letter"){
			if(document.getElementById('busLetter').value == ""){
				alert("Please select a letter");
				return;
			}
		}else if(elmnt == "keyword"){
			if((document.getElementById('keyword').value == "") || (document.getElementById('keyword').value == document.getElementById('keyword').title)){
				alert("Please enter a keyword first");
				return;
			}
		}
		businessSearch.searchFunc(elmnt, document.getElementById('keyword').value, 
		document.getElementById('busType').value, document.getElementById('busLetter').value, function (result) { 
			if(result != "null"){				
				//result is returned as a JSON string divided by
				// {'tables':<html>,'adresses':array
				// ['streetaddress':'','businesses':array[address,name,website,email,phone,description]]}
				
				try { 				
			 	   var info = YAHOO.lang.JSON.parse(result);
				} 
				catch (e) { 
				    alert("Invalid data"); 
				}

				document.getElementById('busContent').innerHTML = info.table;
				//document.getElementById('busContent').innerHTML = result;
				
				initialize(info.addresses.length);
				//alert(info.addresses);
				for(x in info.addresses){								
					showAddress(info.addresses[x]);
				}
				/*while (numMarkers > 0){
					
				}*/
				//alert(markers.length);
				//refresh marker manager
				//mgr.AddMarkers(markers);
				//mgr.refresh();
			}
																		 
		});
	}
}
function clickCategory(linkcat){
	document.getElementById('busType').value=linkcat;
	subForm('link');
}
function adminCategoryCheck(sel){
	if(document.getElementById(sel).value == ''){
		alert('Please select a category value.');
		return false;
	}
}