
var map;
var gdir;
var animatedirflag = false;
var svp;
var svOverlay;
var panoClient;
var arrowmarker;
var spiraltimer;
var panoavailable;
var sfpanodata;

var cyosf_active = false;

var lastPoint;
var clickloc = false;
var trafficInfo;
var geocoder;
var reasons=[];
var globalproxdistance=5;
var defaultzoom = 13;
var destinationzoom = 16;
var mapclickactive = false;
var tbmapclickactive = false;
var currentYaw = 180;
var currentPitch = 0;
var spiralon = 1;
var currentZoom = 0;
var zoomingIn = true;
var langlocale='en';
var mapcenter_lat = 40.0447563;
var mapcenter_lng = -96.5773747;
var initzoom = 4;
var initmaptype;
var dynamicmarker;
var markericon = "cplanet_stand.png";
var markerpath  = "/globalgraphics/markers/";
var markerstandard = markerpath+markericon;
var markerimage = markerpath+markericon;
var markerimagesave = markericon;
var location_marker;
var linecolor = '#990000';

var locmarker;
var currentresponse;
var currentlocation=[];
var currenttourlocation = [];

var action;
var geopurpose = '';
var savestring;
var createmarker;
var mastercreatetype;
var locsearchtype;
var mod_searchstring='';
var api_inputstring='';
var search_locstring='';
var non_usaloc = false;
var mashup_searchstring='';
var mediamarker;
var globaldirectionpoint;

var activemarker;
var activedescription;
var activeevent=[];
var contextmenu;
var destinationloc;

var showsearchrad = false;
var CircleOverlay;
var circle = null;
var circleRadius = 50; // Miles
var tooltip;

var yahflash;
var animdirfrom;
var animationtype = 'poly';
var animationicon;
var whichanimicon;


// HIGHSLIDE FUNCTIONS USED
// highslidecontrol('agr') - args used: dynhtml, dynhtmloff, explore, pano, panooff, directions, 
function sendresponse(responsehtml, responseheader){
	displayMessage(responsehtml, responseheader)
}



//**************************************************MAP FUNCTIONS*************************************************
// CREATE THE GOOGLE MAP
function loadmap(){
	
	if (GBrowserIsCompatible()) {
		
		panoClient = new GStreetviewClient();
		trafficInfo = new GTrafficOverlay();
		geocoder = new GClientGeocoder();
		
		map = new GMap2(mapdiv);
		map.enableScrollWheelZoom();
		map.enableDoubleClickZoom();
		//map.addControl(new GLargeMapControl());
	  	//map.addControl(new GMapTypeControl());
		
		configmap(new GLatLng(mapcenter_lat,  mapcenter_lng), initzoom, initmaptype);
		//initcircle();
		
		var mapsetup = 'success';
		return mapsetup;
		
	}else{
		alert('Your Browser is not configured to use the Google Map API.');
		var mapsetup = 'failed';
		return mapsetup;
	}
	
}

function resetmap(){
	configmap(new GLatLng(mapcenter_lat,  mapcenter_lng), initzoom, initmaptype);
}

function addcustommarkers(){
	// Create our "standard" marker icon
		var DynamicIcon = new GIcon();
		DynamicIcon.image = "/globalgraphics/markers/cplanet_stand.png";
		DynamicIcon.shadow = "/globalgraphics/markers/standard_shadow.png";
		DynamicIcon.iconSize = new GSize(34, 45);
		DynamicIcon.shadowSize = new GSize(45, 45);
		DynamicIcon.iconAnchor = new GPoint(7, 45);
		DynamicIcon.infoWindowAnchor = new GPoint(12, 5);
	
	
// Create our "location" marker icon
		var LocationIcon = new GIcon();
		LocationIcon.image = "/globalgraphics/markers/location_marker.png";
		LocationIcon.shadow = "/globalgraphics/markers/location_shadow.png";
		LocationIcon.iconSize = new GSize(36, 45);
		LocationIcon.shadowSize = new GSize(60, 45);
		LocationIcon.iconAnchor = new GPoint(7, 45);
		LocationIcon.infoWindowAnchor = new GPoint(12, 5);
		
		location_marker = LocationIcon;
		dynamicmarker = DynamicIcon;
		
}


function setup_mapcontrols(){
//ADDS AND POSITIONS A DIV FOR EXTRA MAP CONTROLS
		var pos_mapcontrols = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(3,3));
		pos_mapcontrols.apply(mapcontrolsdiv);
		map.getContainer().appendChild(mapcontrolsdiv);
		
}

function setup_createcontrols(){
	//ADDS AND POSITIONS A DIV FOR CREATE CONTROLS
//		var pos_create = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(3,3));
//		pos_create.apply(mapcreatetoolsdiv);
//		map.getContainer().appendChild(mapcreatetoolsdiv);
	
	
//RIGHT CLICK MENU FUNCTIONALITY
	// === create the context menu div ===
	  contextmenu = document.createElement("div");
	  contextmenu.style.visibility="hidden";
	  contextmenu.style.background="#ffffff";
	  contextmenu.style.border="1px solid #8888FF";

	  contextmenu.innerHTML = '<div>'
	  						  +'<img id="mapclickbut_cur" src="globalgraphics/dmo_menu/dmo_mapclick.jpg" border="0" onclick="markthemap(\'click\')" onmouseover="this.style.cursor=\'pointer\'" />'
							  +'</div>';
							

	  map.getContainer().appendChild(contextmenu);
	  
	  
	  
	  radinfobox = document.createElement("div");
	  radinfobox.style.visibility="hidden";
	  radinfobox.style.background="#ffffff";
	  radinfobox.style.border="1px solid #8888FF";

	  radinfobox.innerHTML = '<div></div>';
	  map.getContainer().appendChild(radinfobox);

	  // === listen for singlerightclick ===
	  GEvent.addListener(map,"singlerightclick",function(pixel,tile) {
		// store the "pixel" info in case we need it later
		// adjust the context menu location if near an egde
		// create a GControlPosition
		// apply it to the context menu, and make the context menu visible
		clickedPixel = pixel;
		var x=pixel.x;
		var y=pixel.y;
		if (x > map.getSize().width - 120) { x = map.getSize().width - 120 }
		if (y > map.getSize().height - 100) { y = map.getSize().height - 100 }
		var pos_rightclick = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(x,y));  
		pos_rightclick.apply(contextmenu);
		contextmenu.style.visibility = "visible";
	  });
	  
	  GEvent.addListener(map, "click", function() {
		contextmenu.style.visibility="hidden";
		radinfobox.style.visibility="hidden";
	  });
	  
	  // ====== set up marker mouseover tooltip div ======
      tooltip = document.createElement("div");
      document.getElementById("map").appendChild(tooltip);
      tooltip.style.visibility="hidden";
}

function setup_intdirections(){
	
	//INTERNAL DIRECTIONS FUNCTIONS
		// === create a GDirections Object ===
		  gdir=new GDirections(map, mapdirectionsdiv);
	
		  // === Array for decoding the failure codes ===
		  
		  reasons[G_GEO_SUCCESS]            = "Success";
		  reasons[G_GEO_MISSING_ADDRESS]    = "Missing Address: The address was either missing or had no value.";
		  reasons[G_GEO_UNKNOWN_ADDRESS]    = "Unknown Address:  No corresponding geographic location could be found for the specified address.";
		  reasons[G_GEO_UNAVAILABLE_ADDRESS]= "Unavailable Address:  The geocode for the given address cannot be returned due to legal or contractual reasons.";
		  reasons[G_GEO_BAD_KEY]            = "Bad Key: The API key is either invalid or does not match the domain for which it was given";
		  reasons[G_GEO_TOO_MANY_QUERIES]   = "Too Many Queries: The daily geocoding quota for this site has been exceeded.";
		  reasons[G_GEO_SERVER_ERROR]       = "Server error: The geocoding request could not be successfully processed.";
		  reasons[G_GEO_BAD_REQUEST]        = "A directions request could not be successfully parsed.";
		  reasons[G_GEO_MISSING_QUERY]      = "No query was specified in the input.";
		  reasons[G_GEO_UNKNOWN_DIRECTIONS] = "The GDirections object could not compute directions between the points.";
	
		  // === catch Directions errors ===
		  GEvent.addListener(gdir, "error", function() {
			var code = gdir.getStatus().code;
			var reason="Code "+code;
			if (reasons[code]) {
			  reason = reasons[code]
			} 
	
			alert("Failed to obtain directions, "+reason);
		  });
		  
		  setupdiranimation();
		  
}

function setupdiranimation(){
	if(animatedirflag == true){
			 
		 //alert('loading the scripts');
		 addjspage('animated_directions');
		 addjspage('epoly');
		 
		 setanimationmarkers();
		 
		 GEvent.addListener(gdir,"load", function() {
			//document.getElementById("controls").style.display="none";
			poly=gdir.getPolyline();
			eol=poly.Distance();
			map.setCenter(poly.getVertex(0),17);
			map.addOverlay(new GMarker(poly.getVertex(0),G_START_ICON));
			map.addOverlay(new GMarker(poly.getVertex(poly.getVertexCount()-1),G_END_ICON));
			admarker = new GMarker(poly.getVertex(0),{icon:animationicon});
			map.addOverlay(admarker);
			GEvent.addListener(admarker, "click", function(marker, point) {
				alert('Hello World');
			});
			var steptext = gdir.getRoute(0).getStep(stepnum).getDescriptionHtml();
			document.getElementById("step").innerHTML = steptext;
			//poly2 = new GPolyline([poly.getVertex(0)]);
			//map.addOverlay(poly2);
			highslidecontrol('animadir');
			//setup_yahcursor();
			setTimeout("startanimatedir()",2000);  // Allow time for the initial map display
		});
		 
		//getyahchar();

	 }	
	
}

function setanimationmarkers(){
	
	switch(whichanimicon){
		case 'car':
			var car = new GIcon();
			  car.image="globalgraphics/markers/sambus.png"
			  //car.shadow = "globalgraphics/markers/tennisball_shadow.png";
			  car.iconSize=new GSize(200,200);
			  //car.shadowSize=new GSize(50,30);
			  car.iconAnchor=new GPoint(100,100);
	  
			animationicon = car;
		break;
		
		case 'bus':
			var bus = new GIcon();
			  bus.image="globalgraphics/markers/sambus.png"
			  //car.shadow = "globalgraphics/markers/tennisball_shadow.png";
			  bus.iconSize=new GSize(200,200);
			  //car.shadowSize=new GSize(50,30);
			  bus.iconAnchor=new GPoint(100,100);
			  
			animationicon = bus;
		break;
		
		case 'plane':
			var plane = new GIcon();
			  plane.image="globalgraphics/markers/samsonflying.png"
			  //car.shadow = "globalgraphics/markers/tennisball_shadow.png";
			  plane.iconSize=new GSize(239,142);
			  //car.shadowSize=new GSize(50,30);
			  plane.iconAnchor=new GPoint(100,100);
			  
			animationicon = plane;
		break;
		
		default:
			var car = new GIcon();
			  car.image="globalgraphics/markers/sambus.png"
			  //car.shadow = "globalgraphics/markers/tennisball_shadow.png";
			  car.iconSize=new GSize(200,200);
			  //car.shadowSize=new GSize(50,30);
			  car.iconAnchor=new GPoint(100,100);
	  
			animationicon = car;
		break;
	}
	
	
}


function startcthereanimdir(){
	animationtype = 'dir';
	changetabstrip('map');
	highslideajax('http://www.cplanet.com/Users/2008911153725625/pleszurefoodgroup155C7A394689424DA425790FB290B8D6D/gethere.html', 'gethere', '', 'Get Directions to Inspired School', '800', '450');
}

function triggeranimation(frompoint, customname){
	
	animatedirflag = true;
	setupdiranimation();
	
	if(customname){
		try{
			birthdayname = customname;
		}catch(err){
			//No Action
		}
	}
	
	if(animationtype == 'dir'){
		//alert(dir +' , '+ frompoint);
		whichanimicon = 'car';
		var directionpoints = parseFloat(destarray[0].lat)+','+parseFloat(destarray[0].lng);
		animdirfrom = document.getElementById(frompoint).value;
		//alert(directionpoints +' , '+ animdirfrom);
		getdirections('to', directionpoints);
	}else{
		geopurpose = 'animatealongpoly';
		whichanimicon = 'plane';
		setanimationmarkers();
		if(frompoint){
			changetabstrip('map');
			animdirfrom = frompoint;
		}else{
			animdirfrom = document.getElementById(frompoint).value;
		}
		
		callgeocode(animdirfrom);
	}
	
	try{
		closeactiveexpander();
	}catch(err){
		//no action	
	}
	
}


function getyahchar(){
	
	if (navigator.appName.indexOf("Microsoft Internet")==-1)
	  {
		  yahflash=document.embeds.yahlocator;
	  }else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
	  {
		 yahflash=window.document.yahlocator;
	  }
}

function createstreetview(){
	svp = new GStreetviewPanorama(mappanodiv);	
}

function init_streetview(){
		
		if(!svp){
			createstreetview();
		}
			
      	GEvent.addListener(svp, "error", handleNoFlash);
		svOverlay = new GStreetviewOverlay();

//STREETVIEW LOCATOR
		var guyIcon = new GIcon(G_DEFAULT_ICON);
		  guyIcon.image = "http://maps.google.com/intl/en_us/mapfiles/cb/man_arrow-0.png";
		  guyIcon.transparent = "http://maps.google.com/intl/en_us/mapfiles/cb/man-pick.png";
		  guyIcon.imageMap = [
				26,13, 30,14, 32,28, 27,28, 28,36, 18,35, 18,27, 16,26,
				16,20, 16,14, 19,13, 22,8
			 ];
		  guyIcon.iconSize = new GSize(49, 52);
		  guyIcon.iconAnchor = new GPoint(25, 35);  // near base of guy's feet
		  guyIcon.infoWindowAnchor = new GPoint(25, 5);  // top of guy's head

		arrowmarker = new GMarker(new GLatLng(90,0),{icon:guyIcon});
      	map.addOverlay(arrowmarker) ;	
	  
	  	map.addOverlay(svOverlay);
		
		GEvent.addListener(map,"click",function(overlay,point) {
			if (!overlay) {
			  svp.remove();
			  svp.setLocationAndPOV(point);
			  arrowmarker.setLatLng(point);
			  lastPoint = point;
			}
			if(overlay==null){
				panoClient.getNearestPanorama(point, handlepanoreponse);
			}
		  });
	
		  GEvent.addListener(svp,"yawchanged",function(yaw) {
 			  var GUY_NUM_ICONS = 16;
			  var GUY_ANGULAR_RES = 360/GUY_NUM_ICONS;
			  if (yaw < 0) {
				yaw += 360;
			  }
			  guyImageNum = Math.round(yaw/GUY_ANGULAR_RES) % GUY_NUM_ICONS;
  			  guyImageUrl = "http://maps.google.com/intl/en_us/mapfiles/cb/man_arrow-" + guyImageNum + ".png";
  			  arrowmarker.setImage(guyImageUrl);
			//var dir = Math.round(yaw/3) * 3;
			//while (dir >= 120) {dir -= 120;}
			//arrowmarker.setImage("http://maps.google.com/intl/en_us/mapfiles/cb/man_arrow-"+dir+".png");
		  });
	
		  GEvent.addListener(svp,"initialized",function(a) {
			arrowmarker.setLatLng(a.latlng);
			map.addOverlay(new GPolyline([lastPoint,a.latlng], '#990000', 8));
			map.setCenter(a.latlng, 17);
			lastPoint = a.latlng;
		  });
		  
		  panotoggleState = 1;
}

function handleNoFlash(errorCode) {
	if (errorCode == 603) {    
		alert("Error: Flash doesn't appear to be supported by your browser");
		toggletraffic();
		return;  
	}
} 


function clearmap(){
	try{
		tooltip.style.visibility="hidden";
		circle.remove();
	}catch(err){
	}
	
	map.clearOverlays();
	if(traffictoggleState==1){
		map.addOverlay(trafficInfo);
	}
	
	if(panotoggleState==1){
		map.addOverlay(svOverlay);
		map.addOverlay(arrowmarker);
	}
	
	//alert('clearing overlays');
}

function createmenu(){
	var offset=map.getSize().width - 225
	var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(50,70));  
    pos.apply(contextmenu);
	contextmenu.style.visibility = "visible";
}

function toggletraffic() {
      if (traffictoggleState == 1) {
        map.removeOverlay(trafficInfo);
        traffictoggleState = 0;
      }else{
        map.addOverlay(trafficInfo);
        traffictoggleState = 1;
      }
}

function togglepano() {
	if(includepano == 1){
	  if (panotoggleState == 1) {
		map.removeOverlay(svOverlay);
		arrowmarker.hide();
		highslidecontrol('panooff');
		panotoggleState = 0;
	  } else {
		  if(!svp){
			 alert('initalizing streetview');
			init_streetview();
		  }else{
			map.addOverlay(svOverlay);
			arrowmarker.show();
			panotoggleState = 1;
		  }
	  }
	}
}

function handlepanoreponse(panoData){
	if (panoData.code != 200) {
		showPanoData('off');
	}else{
		showPanoData('show', panoData);
	}
}

function panocheck(){
	panoClient.getNearestPanorama(currentlocation[0].point, ispanoavailable);	
}

function ispanoavailable(panoData){
	//alert('inside pano');
	if (panoData.code != 200) {
		 panoavailable = false;
	}else{
		 panoavailable = true;
		 sfpanodata = panoData;
		 
		 try{
			 //alert('pano is available');
		 	document.getElementById("panobutton").innerHTML = '<img src="globalgraphics/general/streetview_on.jpg" border="0" onclick="showsfpano()" onmouseover="this.style.cursor=\'pointer\'" />';			
		 }catch(err){
			//Handle errors here
		}
		 
			 
		if(!svp){
			createstreetview();
		}
		
	}
	
}

function showsfpano(){
	
	highslidecontrol('pano');
	poppano();

}

function poppano(){
	
	svp.setLocationAndPOV(sfpanodata.location.latlng);	
	
	mappanodetailsdiv.innerHTML = sfpanodata.location.description;
	
	spiraltimer = window.setInterval(spiral, 200);

}

function showlocpano(){
	showPanoData(state, panoData)	
}


function showPanoData(state, panoData) {
	if (state=='off') {
		try{
			highslidecontrol('panooff');
			arrowmarker.hide();
			//alert('showPanoData: Server rejected with code: ' + panoData.code);    
			return;  
		}catch(err){
			highslidecontrol('panooff');
			return;  
		}
		
	}else{  
		//alert('showPanoData: Server rejected with code: ' + panoData.code);   
		arrowmarker.show();
		highslidecontrol('pano');		
		
//		var displayString = '<div id="streetinfo" style="width:250px;">'
//							+'Panorama ID: ' + panoData.location.panoId    
//							+'<br>LatLng: ' + panoData.location.latlng    
//							+'<br>Copyright: ' + panoData.copyright    
//							+'<br>Description: ' + panoData.location.description; 
//							+'</div>';
		
		mappanodetailsdiv.innerHTML = panoData.location.description;
		setTimeout("resizepano()", 600);
		//map.openInfoWindowHtml(panoData.location.latlng, displayString);      
		//GLog.write('Viewer moved to' + panoData.location.latlng); 
		svp.setLocationAndPOV(panoData.location.latlng);
		svp.show();
		spiraltimer = window.setInterval(spiral, 200);
		
		setTimeout("sendpanoagain("+panoData.location.latlng+")", 1000);
	}
}

function sendpanoagain(panopoint){
	svp.setLocationAndPOV(panopoint);
}

function resizepano(){
	
	var panowidth=highslidepanodiv.offsetWidth;
	var panoheight=highslidepanodiv.offsetHeight;
	//mappanodetailsdiv.innerHTML = panowidth+'  ,  '+panoheight;
	mappanodiv.style.width=(panowidth-35)+'px';
	mappanodiv.style.height=(panoheight-70)+'px';
	
	svp.checkResize();
	svp.show();
}


function spiral() {
	if(spiralon==1){
		currentYaw += 2;
  		svp.panTo({yaw:currentYaw, pitch:currentPitch});
	}
}

function restartspiral(){
	spiralon=1;
	spiraltimer = window.setInterval(spiral, 400);
}


function stopspiral(){
	window.clearInterval(spiraltimer);
	spiraltimer=null;
	spiralon=0;
}


function zoom() {
	
	  if (zoomingIn) {
		currentZoom++;
	  } else {
		currentZoom--;
	  }
	
	  svp.panTo({yaw:currentYaw, pitch:currentPitch, zoom:currentZoom});
	  if (currentZoom == 2) {
		zoomingIn = false;
	  }
	  if (currentZoom == 0) {
		clearInterval(timer);
		timer = window.setInterval(spiral, 200);
	  }
	  
}


//CONFIGURES THE MAP TYPE THEN CENTERS AND ZOOMS THE MAP.
function configmap(point, zoom, type){
	
	if (type){
		
		switch (type){
			case 'Map':
				map.setMapType(G_NORMAL_MAP);
			break;
		
			case 'Hybrid':
				//alert('setting map type');
				map.setMapType(G_HYBRID_MAP);
			break;
		
			case 'Satellite':
				map.setMapType(G_SATELLITE_MAP);
			break;
		}		
	}
	
	if(zoom){
		map.setCenter(point, zoom);
	}else{
		map.setCenter(point, destinationzoom);
	}
	
}


//MAP LOCATION SEARCH FUNCTION 1 - CALLED FROM SEARCHBOXES - SORTS AND SUBMITS
function callgeocode(loc){
	//alert(loc);
	geocoder.getLocations(loc, processgeoresponse);
	
}

function setmarkeratlocation(address){
	locsearchtype='location';
	geocoder.getLocations(address, addAddressToMap);	
}

function setsearchcenter(address){
	geopurpose = 'comguide';
	callgeocode(address);	
}

function setsearchcenterpoint(lat, lng){
	var point = new GLatLng(lat,lng);
	//alert(point);
	geopurpose = 'comguide';
	clickloc = true;
	geocoder.getLocations(point, processgeoresponse);	
}

function cleansearchstring(searchstring){
	var newstring=searchstring.replace(/,/g, '');
	newstring=newstring.replace(/'/g, '\'');
	
	//alert(newstring);
	return newstring;
}

function cleanstring(searchstring){
	var newstring=searchstring.replace(/'/g, "\\'");
	newstring=newstring.replace(/|/g, '');
	
	//alert(newstring);
	return newstring;
}

//MAP LOCATION SEARCH FUNCTION - CALLED FROM SEARCHBOXES
function processgeoresponse(response) {
		var responsehtml;
      	currentresponse = response;
		if (response.Status.code == G_GEO_SUCCESS) {
			if ((response.Placemark.length > 1) && (clickloc == false)) { 
				//alert(response.Placemark.length);
				responsehtml = "<b>Did you mean:</b>";
				for (var i=0; i<response.Placemark.length; i++) {
					
				  var accuracy = response.Placemark[i].AddressDetails.Accuracy;
				  //alert(accuracy);
				  var lng = response.Placemark[i].Point.coordinates[0];
				  var lat = response.Placemark[i].Point.coordinates[1];
				  
				  try{
					  var county = response.Placemark[i].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName;
				  }catch(err){
					  var county = "";  
				  }
					
				  responsehtml += "<hr />"+(i+1)+": <a href='javascript:resultfromlist(" +accuracy+", "+lat+", "+lng+", \""+response.Placemark[i].address+ ", "+county+"\")'>"+ response.Placemark[i].address+"</a>";
				  
				}
				
				responsetitle = '<span class="cpfontheading"><i>Cplanet found multiple results</i></span>';
				
				sendresponse(responsehtml, responsetitle);
				
			}else {
				var i=0;
				var accuracy = response.Placemark[i].AddressDetails.Accuracy;
				var lng = response.Placemark[i].Point.coordinates[0];
				var lat = response.Placemark[i].Point.coordinates[1];
				
				if (accuracy==3){
					//alert(response.Placemark[i].address);
					var county = response.Placemark[i].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName;
					parselocation(accuracy, lat, lng, response.Placemark[i].address, county);
				}else{
					parselocation(accuracy, lat, lng, response.Placemark[i].address);
				}
				
				clickloc = false;
			}
		}
		// ====== Decode the error status ======
		else {
		  var reason="Code "+response.Status.code;
		  if (reasons[response.Status.code]) {
			reason = reasons[response.Status.code]
		  } 
		  mod_searchstring='';
		  alert('Could not find the location you entered \n' + reason);
		}
			
}

function resultfromlist(accuracy, lat, lng, address, county){
	//alert(accuracy +" ,  "+ lat +" ,  "+ lng +" ,  "+ address +" ,  "+ county);
	closeactiveexpander();
				
	parselocation(accuracy, lat, lng, address, county)	
}

function parselocation(accuracy, lat, lng, address, county){
	var blank='';
	var currentlocation_country =  blank;
	var currentlocation_state =  blank;
	var currentlocation_county =  blank;
	var currentlocation_city =  blank;
	var currentlocation_zip =  blank;
	var currentlocation_address =  blank;
	var currentlocation_point =  blank;
	
	var temp_mod_searchstring;
	var temp_search_locstring;
	
	switch (accuracy){
		case 0:
			var locstring = address.split(', ');
			//alert(locstring.length);
			if(locstring.length==2){
				currentlocation_country=locstring[1];
				currentlocation_state=locstring[0];
			}
			mod_searchstring=currentlocation_state;
			
			currentlocation_country = address;
			temp_mod_searchstring=currentlocation_country;
			temp_search_locstring=temp_mod_searchstring;
			//alert('Country: '+address);
		break;
		
		case 1:
			var locstring = address.split(', ');
			//alert(locstring.length);
			if(locstring.length==2){
				currentlocation_country=locstring[1];
				currentlocation_state=locstring[0];
			}
			mod_searchstring=currentlocation_state;
			
			currentlocation_country = address;
			temp_mod_searchstring=currentlocation_country;
			temp_search_locstring=temp_mod_searchstring;
			//alert('Country: '+address);
		break;
		
		case 2:
			var locstring = address.split(', ');
			//alert(locstring.length);
			if(locstring.length==2){
				currentlocation_country=locstring[1];
				currentlocation_state=locstring[0];
			}
			temp_mod_searchstring=currentlocation_state;
			temp_search_locstring=temp_mod_searchstring;
			//alert('Accuracy:'+accuracy+'\n 1:'+locstring[0]+'\n 2:'+locstring[1]+'\n 3:'+locstring[2]+'\n 4:'+locstring[3]+'\n 5:'+locstring[4]);
		break;
		
		case 3:
			var locstring = address.split(', ');
			//alert(locstring.length);
			if(locstring.length==2){
				currentlocation_country=locstring[1];
				currentlocation_state=locstring[0];
				temp_mod_searchstring=currentlocation_county+' '+currentlocation_state;
				temp_search_locstring=temp_mod_searchstring;
			}
			if(locstring.length==3){
				currentlocation_country=locstring[2];
				currentlocation_state=locstring[1];
				currentlocation_city=locstring[0];
				temp_mod_searchstring=currentlocation_city+' '+currentlocation_state;
				temp_search_locstring=temp_mod_searchstring;
			}
			
			//alert('Accuracy:'+accuracy+'\n 1:'+locstring[0]+'\n 2:'+locstring[1]+'\n 3:'+locstring[2]+'\n 4:'+locstring[3]+'\n 5:'+locstring[4]+'\n County:'+county);
		break;
		
		case 4:
			var locstring = address.split(', ');
			//alert(locstring.length);
			if(locstring.length==2){
				currentlocation_country=locstring[1];
				currentlocation_city=locstring[0];
				temp_mod_searchstring=currentlocation_city;
				temp_search_locstring=temp_mod_searchstring;
			}
			if(locstring.length==3){
				currentlocation_country=locstring[2];
				currentlocation_state=locstring[1];
				currentlocation_city=locstring[0];
				temp_mod_searchstring=currentlocation_city+' '+currentlocation_state;
				temp_search_locstring=temp_mod_searchstring;
			}
			if(locstring.length==4){
				currentlocation_country=locstring[3];
				currentlocation_state=locstring[2];
				currentlocation_city=locstring[0];
				temp_mod_searchstring=currentlocation_city+' '+currentlocation_state;
				temp_search_locstring=temp_mod_searchstring;
			}
			//alert('Accuracy:'+accuracy+'\n 1:'+locstring[0]+'\n 2:'+locstring[1]+'\n 3:'+locstring[2]+'\n 4:'+locstring[3]+'\n 5:'+locstring[4]);
		break;
		
		case 5:
			var locstring = address.split(', ');
			//alert(locstring.length);
			if(locstring.length==3){
				currentlocation_country=locstring[2];
				var splitzip=locstring[1].split(' ');
				currentlocation_state=splitzip[0];
				currentlocation_zip=splitzip[1];
				currentlocation_city=locstring[0];
				temp_mod_searchstring=currentlocation_city+' '+currentlocation_state;
				temp_search_locstring=temp_mod_searchstring;
			}else{
				
				currentlocation_address = getgeoaddress();
				currentlocation_city = getgeocity();
				currentlocation_state = getgeostate();
				currentlocation_zip = getgeozip();
				currentlocation_country = getgeocountry();
				
				temp_mod_searchstring=currentlocation_city+' '+currentlocation_state;
				temp_search_locstring=currentlocation_address+' '+temp_mod_searchstring;
				
			}
			//alert('Accuracy:'+accuracy+'\n 1:'+locstring[0]+'\n 2:'+locstring[1]+'\n 3:'+locstring[2]+'\n 4:'+locstring[3]+'\n 5:'+locstring[4]);
		break;
		
		case 6:
			var locstring = address.split(', ');
			//alert(locstring.length);
			if(locstring.length==4){
				currentlocation_country=locstring[3];
				ziptest=locstring[2].search(' ');
				if (ziptest!= -1){
					var splitzip=locstring[2].split(' ');
					currentlocation_state=splitzip[0];
					currentlocation_zip=splitzip[1];
				}else{
					currentlocation_state=locstring[2];
				}	
				currentlocation_city=locstring[1];
				currentlocation_address=locstring[0];
			}
			
			temp_mod_searchstring=currentlocation_city+' '+currentlocation_state;
			temp_search_locstring=currentlocation_address+' '+temp_mod_searchstring;
			//alert('Accuracy:'+accuracy+'\n 1:'+locstring[0]+'\n 2:'+locstring[1]+'\n 3:'+locstring[2]+'\n 4:'+locstring[3]+'\n 5:'+locstring[4]+'\n County:'+county);
		break;
		
		case 7:
			var locstring = address.split(', ');
			//alert(locstring.length);
			if(locstring.length==4){
				currentlocation_country=locstring[3];
				ziptest=locstring[2].search(' ');
				if (ziptest!= -1){
					var splitzip=locstring[2].split(' ');
					currentlocation_state=splitzip[0];
					currentlocation_zip=splitzip[1];
				}else{
					currentlocation_state=locstring[2];
				}	
				currentlocation_city=locstring[1];
				currentlocation_address=locstring[0];
				
				
			}
			
				temp_mod_searchstring=currentlocation_city+' '+currentlocation_state;
				temp_search_locstring=currentlocation_address+' '+temp_mod_searchstring;
			//alert('Accuracy:'+accuracy+'\n 1:'+locstring[0]+'\n 2:'+locstring[1]+'\n 3:'+locstring[2]+'\n 4:'+locstring[3]+'\n 5:'+locstring[4]+'\n County:'+county);
		break;
		
		case 8: case 9:
			var locstring = address.split(', ');
			//alert(locstring.length);
			
			switch(locstring.length){
				case 3:
					currentlocation_country=locstring[2];	
					currentlocation_city=locstring[1];
					currentlocation_address=locstring[0];
					
					temp_mod_searchstring=currentlocation_city+' '+currentlocation_state;
					temp_search_locstring=currentlocation_address+' '+temp_mod_searchstring;
				break;
				
				case 4:
					currentlocation_country=locstring[3];
					ziptest=locstring[2].search(' ');
					if (ziptest!= -1){
						var splitzip=locstring[2].split(' ');
						currentlocation_state=splitzip[0];
						currentlocation_zip=splitzip[1];
					}else{
						currentlocation_state=locstring[2];
					}	
					currentlocation_city=locstring[1];
					currentlocation_address=locstring[0];
					
					temp_mod_searchstring=currentlocation_city+' '+currentlocation_state;
					temp_search_locstring=currentlocation_address+' '+temp_mod_searchstring;
				break;
				
				case 5:
					currentlocation_country=locstring[3];
					ziptest=locstring[2].search(' ');
					if (ziptest!= -1){
						var splitzip=locstring[2].split(' ');
						currentlocation_state=splitzip[0];
						currentlocation_zip=splitzip[1];
					}else{
						currentlocation_state=locstring[2];
					}	
					currentlocation_city=locstring[1];
					currentlocation_address=locstring[0];
					
					temp_mod_searchstring=currentlocation_city+' '+currentlocation_state;
					temp_search_locstring=currentlocation_address+' '+temp_mod_searchstring;
				break;
				
				default:
					currentlocation_address = getgeoaddress();
					currentlocation_city = getgeocity();
					currentlocation_state = getgeostate();
					currentlocation_zip = getgeozip();
					currentlocation_country = getgeocountry();
					
					temp_mod_searchstring=currentlocation_city+' '+currentlocation_state;
					temp_search_locstring=currentlocation_address+' '+temp_mod_searchstring;
				break;
				
			}
			
			//alert('Accuracy:'+accuracy+'\n 1:'+locstring[0]+'\n 2:'+locstring[1]+'\n 3:'+locstring[2]+'\n 4:'+locstring[3]+'\n 5:'+locstring[4]+'\n County:'+county);
		break;
	}
	
	
	var currentlocation_fulladdress = address.replace(/\./g,"");
	var currentlocation_lat = lat;
	var currentlocation_lng = lng;
	var currentlocation_point = new GLatLng(lat, lng);
	
	if((currentlocation_country != 'USA') && (currentlocation_country != 'US')){
		temp_mod_searchstring = currentlocation_city+' '+currentlocation_country;
		non_usaloc = true;
	}else{
		non_usaloc = false;
	}
	
	
	temp_mod_searchstring=temp_mod_searchstring.replace(/\./g,"");
	temp_search_locstring=temp_search_locstring.replace(/\./g,"");
	
	
	currentlocation[0] = new popcurrentlocation(accuracy, currentlocation_fulladdress, currentlocation_lat, currentlocation_lng,  currentlocation_point, currentlocation_country, currentlocation_state, county, currentlocation_city, currentlocation_zip, currentlocation_address);
	
	mod_searchstring = temp_mod_searchstring;
	search_locstring = temp_search_locstring;
	
	//alert(accuracy+'  ,  '+mod_searchstring+'  ,  '+search_locstring+'  ,  '+currentlocation_fulladdress);
	
	var chekcmodstring = isWhitespace(mod_searchstring);
	if(chekcmodstring){
		api_inputstring = currentlocation_fulladdress;
	}else{
		api_inputstring = mod_searchstring;
	}
	
	handleresult();
	
}


function getgeoaddress(){
	try{
		var currentlocation_address = currentresponse.Placemark[i].AddressDetails.Country.AdministrativeArea.Locality.Thoroughfare.ThoroughfareName;
	}catch(err){
		var currentlocation_address = '';
	}
	
	return currentlocation_address;
}

function getgeocountry(){
	try{
		var currentlocation_country = currentresponse.Placemark[0].AddressDetails.Country.CountryNameCode;
	}catch(err){
		var currentlocation_country = '';
	}
	
	return currentlocation_country;
}

function getgeostate(){
	try{
		var currentlocation_state = currentresponse.Placemark[i].AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
	}catch(err){
		var currentlocation_state = '';
	}
	
	return currentlocation_state;
}

function getgeocity(){
	try{
		var currentlocation_city = currentresponse.Placemark[i].AddressDetails.Country.AdministrativeArea.Locality.LocalityName;
	}catch(err){
		var currentlocation_city = '';
	}
	
	return currentlocation_city;
}

function getgeozip(){
	try{
		var currentlocation_zip = currentresponse.Placemark[i].AddressDetails.Country.AdministrativeArea.Locality.PostalCode.PostalCodeNumber;
	}catch(err){
		var currentlocation_zip = '';
	}
	
	return currentlocation_zip
}


function handleresult(){
	
	switch (geopurpose){
		case 'create':
			markaddress();
		break;
		
		case 'createcthere':
			markctherelocsearch('locsearch');
		break;
		
		case 'createctherehome':
			changetabstrip('map');
			markctherelocsearch('locsearch');
		break;
		
		case 'createctherebiz':
			globallocation = currentlocation[0].fulladdress;
			searchyahoo('search', 'initial', 'storefront');
		break;
		
		case 'storefront':
			storefrontaddress();
		break;
		
		case 'animatealongpoly':
			buildappoly();
		break;
		
		case 'bizsearch':
			globallocation = currentlocation[0].fulladdress;
			searchyahoo('search', 'initial', 'business');
		break;
		
		case 'comguide':
			globallocation = currentlocation[0].fulladdress;
			setcurrentlocation(true, true, true);
		break;
		
		case 'locsearch':
			globallocation = currentlocation[0].fulladdress;
			setcurrentlocation(true, true, false);
		break;
		
		case 'adddesttopp':
			globallocation = currentlocation[0].fulladdress;
			setcurrentlocation(true, false, false);
		break;
		
		case 'tripbuilder':
			tb_active = true;
			globallocation = currentlocation[0].fulladdress;
			setcurrentlocation(true, true, true);
			closeextajax();
		break;
		
		case 'sponsor':
			globallocation = currentlocation[0].fulladdress;
			setcurrentlocation(true, false, false);
		break;
		
		default:
			globallocation = currentlocation[0].fulladdress;
			setcurrentlocation(true, true, true);
		break;
	}
	geopurpose = '';
	
}


function popcurrentlocation(accuracy, fulladdress, lat, lng, point, country, state, county, city, zip, address){
	
	this.accuracy=accuracy;
	this.fulladdress=fulladdress;
	this.lat = lat;
	this.lng = lng;
	this.point=point;
	this.country=country;
	this.state=state;
	this.county=county;
	this.city=city;
	this.zip=zip;
	this.address=address;
}


function setcurrentlocation(plantflag, openpanel, comguidesetup){
	
	var uslocation = true;
	
	globallocation=currentlocation[0].fulladdress;
	settextfields();
	
	//Builds the Venue Structure if the location is inside the USA
	if(non_usaloc == false){
		setexploretabs('usaloc');
	}else{
		setexploretabs('non_usaloc');
		openpanel = true;
		uslocation = false;
	}
	
	if(openpanel == true){
		//highslidecontrol('explore');
		getlayout('cpmidnavexplore');
	}
	
	
	if(plantflag == true){
		locationbubble();
//THE FOLLOWING FUNCTION MAKES THE CALL TO THE CPLANET DATABASE TO FIND ANY CPLANET DESTINATIONS WITHIN THE GLOBALPROXDISTANCE
		//getdestinations('', '', 'prox_storefronts');
	}
	
	if(comguidesetup == true){
		setexplorelocation();
	}
	
	
	
}

//BUILDS THE LAYOUT OF THE LOCATION BUBBLE BASED ON CURRENTLOCATION
function locationbubble(restore){
	
	var label1 = 'Info';
	var label2 = 'Directions';
	
	var directiontitle = cleanstring(currentlocation[0].fulladdress);
	
	locbubble = buildlocbubble(directiontitle);
	
	var directionstab ='<div class="bubble" ><span class="titlefont">DIRECTIONS:<br><br><a href="javascript:setdirectionbubble(\'to\', \''+directiontitle+'\' )">To Here  </a>   OR   <a href="javascript:setdirectionbubble(\'from\', \''+directiontitle+'\')">  From Here</a></span></div>';	
	
	if(restore!=true){
		//map.clearOverlays();
		clearmap();
		map.setCenter(currentlocation[0].point, defaultzoom);
	}
	
	locmarker = new GMarker(currentlocation[0].point, location_marker);
	locmarker.tooltip;
	map.addOverlay(locmarker);
	activemarker=locmarker;
	
	GEvent.addListener(locmarker, "click", function() {
		activemarker=locmarker;
		createtype='location';
		setmastercreatetype(createtype);
		locmarker.openInfoWindowTabsHtml([new GInfoWindowTab(label1,locbubble), new GInfoWindowTab(label2,directionstab)]);
    });
	
	if(restore!=true){
		locmarker.openInfoWindowTabsHtml([new GInfoWindowTab(label1,locbubble), new GInfoWindowTab(label2,directionstab)]);
	}
	
	panoClient.getNearestPanorama(currentlocation[0].point, ispanoavailable);
	
}

function buildlocbubble(directiontitle){
	
	locbubble = '<div style="width:275px; min-height:200px;">';
	locbubble += '<div align="left" class="cpfont"><span class="cpfontheading" style="font-style:italic;">';
	
	var templocstring = "";
	
	if (currentlocation[0].address!=""){
		templocstring += currentlocation[0].address+'<br /> ';
	}
	if (currentlocation[0].city!=""){
		templocstring += currentlocation[0].city;
	}
	if (currentlocation[0].state!=""){
		templocstring += ', '+currentlocation[0].state;
	}
	if (currentlocation[0].zip!=""){
		templocstring += ', '+currentlocation[0].zip;
	}
	if (currentlocation[0].country!=""){
		templocstring += ' '+currentlocation[0].country;
	}
	
	if(templocstring != ''){
		locbubble += templocstring;
	}else{
		locbubble += globallocation;
	}
	
	locbubble += '</span></div>';
	
	if(non_usaloc == false){
		
		locbubble += '<hr><div class="cpfont"><table width="100%" border="0" cellpadding="0" class="minifont">';
		
		locbubble += '<tr><td valign="middle"><img src="globalgraphics/general/lodging_icon.jpg" border="0" onclick="cgsearch(\'Lodging\')" onmouseover="this.style.cursor=\'pointer\'" /></td>';
		locbubble += '<td align="left" valign="middle"><a href="javascript:cgsearch(\'Lodging\')">Where to Stay</a></td>';
		locbubble += '<td valign="middle" style="padding-left:5px;"><img src="globalgraphics/general/restaurant_icon.jpg" border="0" onclick="cgsearch(\'Restaurants\')" onmouseover="this.style.cursor=\'pointer\'" /></td>';
		locbubble += '<td align="left" valign="middle"><a href="javascript:cgsearch(\'Restaurants\')">Where to Eat</a></td>';
		
		if(sponsoractive == true){
			locbubble += '<td align="right" rowspan="3"><img src="globalgraphics/general/sponsor_mcds.jpg" border="0" onclick="sponsorareasearch(\'mcdonalds\')" onmouseover="this.style.cursor=\'pointer\'" /></td></tr>';
		}else{
			locbubble += '</tr>';	
		}
		
		locbubble += '<tr><td valign="middle"><img src="globalgraphics/general/events_icon.jpg" border="0" onclick="callgetevents()" onmouseover="this.style.cursor=\'pointer\'" /></td>';
		locbubble += '<td align="left" valign="middle"><a href="javascript:callgetevents()">Events</a></td>';
		locbubble += '<td valign="middle" style="padding-left:5px;"><img src="globalgraphics/general/shopping_icon.jpg" border="0" onclick="cgsearch(\'Shopping\')" onmouseover="this.style.cursor=\'pointer\'" /></td>';
		locbubble += '<td align="left" valign="middle"><a href="javascript:cgsearch(\'Shopping\')">Where to Shop</a></td></tr>';
		
		locbubble += '<tr><td valign="middle"><img src="globalgraphics/general/entertainment_icon.jpg" border="0" onclick="cgsearch(\'Entertainment and Arts\')" onmouseover="this.style.cursor=\'pointer\'" /></td>';
		locbubble += '<td align="left" valign="middle"><a href="javascript:cgsearch(\'Entertainment and Arts\')">Entertainment</a></td>';
		locbubble += '<td valign="middle" style="padding-left:5px;"><img src="globalgraphics/general/taxi_icon.jpg" border="0" onclick="cgsearch(\'Taxi Services\')" onmouseover="this.style.cursor=\'pointer\'" /></td>';
		locbubble += '<td align="left" valign="middle"><a href="javascript:cgsearch(\'Taxi Services\')">Getting Around</a></td></tr>';
		
		locbubble += '</table></div>';
		
	}
	
	
	
	if(tb_active == false){
		if(geopurpose == 'adddesttopp'){
			locbubble += '<hr><div class="cpfont" align="center"><div style="width:125px; padding:2px; background-color:#103194; border:solid 1px #666666;">';
			locbubble += '<table border="0" width="100%" cellpadding="2" class="cpfontreg" bgcolor="#FFFFFF">';
			locbubble += '<tr><td align="center" valign="middle"><img src="globalgraphics/general/passport_icon.jpg" /></td>';
			locbubble += '<td align="left" valign="middle"><a href="javascript:verifiedaddpassport(\'location\')">Add to Passport</a></td>';
			locbubble += '</tr></table></div></div>';
			locbubble += '</div>';
		
		}else{
			locbubble += '<hr><div class="cpfont"><table border="0" width="100%" cellpadding="5" class="cpfontreg">';
			locbubble += '<tr><td align="left" valign="middle"><img src="globalgraphics/general/passport_icon.jpg" /></td>'
			locbubble += '<td align="left" valign="middle"><a href="javascript:verifiedaddpassport(\'location\')">Add to my Passport</a></td>';
			locbubble += '<td align="left" valign="middle"><img src="globalgraphics/general/tripbuilder_icon.jpg" /></td>'
			locbubble += '<td align="left" valign="middle"><a href="javascript:tripbuilder(false);">Build a Trip Here!</a></td>';
			locbubble += '</tr></table></div>';
			
			locbubble += '<div align="center" id="panobutton"><img src="globalgraphics/general/streetview_off.jpg" border="0" /><script type=""text/javascript"">panocheck()</script></div>';
			
			locbubble += '</div>';
		}
	}else{
		locbubble += '<hr><div class="cpfont" align="center"><div style="width:125px; padding:2px; background-color:#F9AF6C; border:solid 1px #666666;">';
		locbubble += '<table border="0" width="100%" cellpadding="2" class="cpfontreg" bgcolor="#FFFFFF">';
		locbubble += '<tr><td align="center" valign="middle"><img src="globalgraphics/general/tripbuilder_icon.jpg" /></td>';
		locbubble += '<td align="left" valign="middle"><a href="javascript:verifiedaddpassport(\'location\')">Add to Trip</a></td>';
		locbubble += '</tr></table></div></div>';
		
		locbubble += '<div align="center" id="panobutton"><img src="globalgraphics/general/streetview_off.jpg" border="0" /><script type=""text/javascript"">panocheck()</script></div>';
		
		locbubble += '</div>';	
	}
	
	
	
	return locbubble;
	
}


function markbizresult(biz){
	
	//expandmappane();
	activeresult=biz;
	//changemarkerimage('/globalgraphics/markers/marker_test.png');
	
	var markonmap = false;
	var htmltab2="";
	var label1='Info';
	var label2='Directions';
	var point = new GLatLng(currentbusinesses[biz].lat,currentbusinesses[biz].lng);
    var selectedbiz = new GMarker(point, {icon:dynamicmarker, draggable: true});
	map.setCenter(point, destinationzoom);
	activemarker = selectedbiz;
	buildhtml(biz, false);	
	
	var businesstext='<div style="width:350px;" class="cpfont"><span class="cpfontbold"><u>BUSINESS SEARCH RESULT</u></span><br>'
				+bizbubble+'<br><span class="minifont"><b>'
				+'Note:</b>To adjust the marker\'s location, close this bubble and drag the marker.'
				+'Click the marker to reopen the bubble.</span>'
				+'<hr><div class="cpfont"><table align="center" border="0" cellpadding="5" class="cpfontreg">'
				+'<tr><td align="right" valign="middle"><img src="globalgraphics/general/passport_icon.jpg" /></td>'
				+'<td align="left" valign="middle"><a href="javascript:verifiedaddpassport(\'business\')">Add to my Passport</a></td>'
				+'</tr></table></div></div>';
		
		map.addOverlay(selectedbiz);
		
		selectedbiz.enableDragging();
		
		GEvent.addListener(selectedbiz, "drag", function(){
			map.closeInfoWindow();
		});
					
		GEvent.addListener(selectedbiz, "click", function(marker, point) {
			markertype='create';
			createtype='business';
			activemarker = selectedbiz;
			whatcreatemarker(markertype, createtype);
		});
					
		selectedbiz.openInfoWindowHtml(businesstext);
}


//BUILDS THE LAYOUT OF THE DESTINATION SEARCH BUBBLE BASED ON CURRENTLOCATION
function buildlocationseach(address){
	var locsearchlayout='<div id="business_search" style="padding-left:5px; padding-top:1px" runat="server">'
		+'<span style="font-weight:bold;">Destination Search</span><br />'
		+'<span class="minifont">Business Name or Business Catagory</span><br />'
		+'<input type="text" id="txtBusinessSearchBubble" name="textfield" size="25" onfocus="setthefocus(this.id)" /><br />'
		+'<span class="minifont">City, State, Zip</span><br />'
		+'<input type="text" id="txtBusinessSearchLocationBubble" name="textfield" size="25" value="'+address+'"/><br />'
		+'<input id="btnBusinessSearchBubble" type="button" value="Search" onclick="processinput(\'txtBusinessSearchBubble\')" />'
		+'<span style="padding-right:10px;"></span><a href="javascript:processinput(\'bubbleeverything\')">Search All</a>'
		+'</div>';	
	
	activemarker.openInfoWindowHtml(locsearchlayout);
	
}

//BUILDS THE TO AND FROM DIRECTIONS BUBBLE
function setdirectionbubble(whichway, directionpoint, name){
	
	//alert(name);
	
	globaldirectionpoint=directionpoint;
	
	if(!name){
		//alert('No Name');
		name=directionpoint;
	}

	// The info window version with the "to here" form open
	if(whichway=='to'){
		var tohtml = '<div class="bubble"><form action="javascript:processinput(\'saddr\')"><table width="100%" border="0" cellspacing="1" cellpadding="0">'
		+'<tr><td><b>Directions:</b></td></tr>'
		+'<tr><td> <b>To:'+name+'</b><br> OR <a href="javascript:setdirectionbubble(\'from\', \''+directionpoint+'\')">From here</a><br><br></td></tr>'
		+'<tr><td style="font-size:10px;">Start address:</td></tr>'
		+'<tr><td><input type="text" SIZE=28 MAXLENGTH=40 name="topointtext" id="saddr" value="" onfocus="setthefocus(this.id)" /><br></td></tr>'
		+'<tr><td valign="middle"><span style="font-size:10px;">Select a language:</span><br /><select id="langlocale" name="langlocale" onchange="setlocale()"><option value="en" selected>English</option><option value="fr">French</option>'
		+'<option value="de">German</option><option value="ja">Japanese</option><option value="es">Spanish</option></select></td></tr>'
		+'<tr><td align="center" style="padding-top:4px;"><INPUT value="Get Directions" TYPE="SUBMIT"></td></tr></table></form></div>';
		   
		activemarker.openInfoWindowHtml(tohtml);   
	}
	
	if(whichway=='from'){
        // The info window version with the "to here" form open
        var fromhtml = '<div class="bubble"><form action="javascript:processinput(\'daddr\')"><table width="100%" border="0" cellspacing="1" cellpadding="0">'
		+'<tr><td><b>Directions:</b></td></tr>'
		+'<tr><td> <b>From:'+name+'</b><br> OR <a href="javascript:setdirectionbubble(\'to\', \''+directionpoint+'\')">To here</a><br><br></td></tr>'
		+'<tr><td style="font-size:10px;">End Address:</td></tr>'
		+'<tr><td><input type="text" SIZE=28 MAXLENGTH=40 name="frompointtext" id="daddr" value="" onfocus="setthefocus(this.id)" /><br></td></tr>'
		+'<tr><td valign="middle"><span style="font-size:10px;">Select a language:</span><br /><select id="langlocale" name="langlocale" onchange="setlocale()"><option value="en" selected>English</option><option value="fr">French</option>'
		+'<option value="de">German</option><option value="ja">Japanese</option><option value="es">Spanish</option></select></td></tr>'
		+'<tr><td align="center" style="padding-top:4px;"><INPUT value="Get Directions" TYPE="SUBMIT"></td></tr></table></form></div>';
		   
		activemarker.openInfoWindowHtml(fromhtml);
	}
	
}


function setlocale(){
	langlocale=document.getElementById('langlocale').value;
	//alert(langlocale);
}

//SUBMITS THE TO AND FROM POINTS TO THE GDIR GOOGLE GEOCODING FUNCTIONS
function getdirections(whichway, directionpoint) {
	
	document.getElementById('directionscontent').InnerHtml = '';
	
	if(animatedirflag == false){
	
		if (whichway == 'to'){
			var frompoint = document.getElementById("saddr").value;
			gdir.load("from: "+frompoint+" to: "+directionpoint, { "locale": langlocale });
		}
		
		if (whichway == 'from'){
			var topoint = document.getElementById("daddr").value;
			gdir.load("from: "+directionpoint+" to: "+topoint, { "locale": langlocale });	
		}
		
		map.closeInfoWindow();
		//expandmappane();
		highslidecontrol('directions');
	}else{
		//alert('getting animated directions');

		var frompoint = animdirfrom;
		gdir.loadFromWaypoints([frompoint,directionpoint],{getPolyline:true,getSteps:true});	
	}
}


function clickdirections(whichway, directionpoint, clickevent){
	
	if(whichway=='to'){
		var clickdirhtml='Click another marker or a point on the map<br>to get the directions to this destination.<br><br>Please click now...'
	}else{
		var clickdirhtml='Click another marker or a point on the map<br>to get the directions from this destination.<br><br>Please click now...'	
	}
	
	activemarker.openInfoWindowHtml(clickdirhtml);
	
	GEvent.addListener(map, "click", function(marker, point) {
		if(clickevent=='true'){
			if(marker){
				var clickdirpoint=marker.getPoint().y+','+marker.getPoint().x;
				//alert(directionpoint+', '+clickdirpoint);
				if(whichway=='to'){
					gdir.load("from: "+clickdirpoint+" to: "+directionpoint, { "locale": langlocale });
				}else{
					gdir.load("from: "+directionpoint+" to: "+clickdirpoint, { "locale": langlocale });	
				}
				
				map.closeInfoWindow();
				//expandmappane();
				highslidecontrol('directions');
			}
			
			if(point){
				if(whichway=='to'){
					gdir.load("from: "+point+" to: "+directionpoint, { "locale": langlocale });
				}else{
					gdir.load("from: "+directionpoint+" to: "+point, { "locale": langlocale });	
				}
				map.closeInfoWindow();
				//expandmappane();
				highslidecontrol('directions');
			}
			
			clickevent=false;
		}
	});
		
}

function testconnections(){
	var waypoint1=currentdestinations[2].lat+','+currentdestinations[2].lng;
	var waypoint2=currentdestinations[0].lat+','+currentdestinations[0].lng;
	var waypoint3=currentdestinations[3].lat+','+currentdestinations[3].lng;
	
	var waypoints = new Array (waypoint1, waypoint2, waypoint3);
	
	gdir.loadFromWaypoints(waypoints);
	
	//setlayout('standard');
	//expandmappane();
	
	swapcontent('content');
	
}


function plotevent(eventarray){
	
	try{
		closeactiveexpander();
	}catch(err){
		//NO ACTION	
	}
	
	var mediapoint = new GLatLng(parseFloat(eventarray[1]), parseFloat(eventarray[2]));
	
	activeevent[0] = new popactiveevent(eventarray[0], eventarray[1], eventarray[2], mediapoint, eventarray[3], eventarray[4], eventarray[5], eventarray[6], eventarray[7], eventarray[8], eventarray[9], eventarray[10], eventarray[11], eventarray[12]);
	
	//alert(eventarray[0]+' , '+eventarray[1]+' , '+eventarray[2]+' , '+eventarray[3]);
	markericon = "eventmarker.png";
	mediamarkerimage=markerpath+markericon;
	
	var eventhtml = buildeventhtml();
	
	mediamarker=new GMarker(mediapoint, {icon:dynamicmarker});
	map.setCenter(mediapoint, defaultzoom);
	map.addOverlay(mediamarker);
	GEvent.addListener(mediamarker, "click", function(marker, point) {
		mediamarker.openInfoWindowHtml(eventhtml);
	});
	mediamarker.setImage(mediamarkerimage);
	
	mediamarker.openInfoWindowHtml(eventhtml);
	activemarker = mediamarker;
	
	//expandmappane();
	
}

function popactiveevent(name, lat, lng, point, startdate, starttime, enddate, endtime, address, city, state, country, zip, description){
	
	this.name=name;
	this.lat = lat;
	this.lng = lng;
	this.point=point;
	this.startdate=startdate;
	this.starttime=starttime;
	this.enddate=enddate;
	this.endtime=endtime;
	this.address=address;
	this.city=city;
	this.state=state;
	this.country=country;
	this.zip=zip;
	this.description=description;
	
}

function buildeventhtml(){
	
	var eventaddrress = activeevent[0].address+' '+activeevent[0].city+' '+activeevent[0].state+' '+activeevent[0].country+' '+activeevent[0].zip;
	
	activeevent[0].description = cleanstring(activeevent[0].description);

	var eventhtml='<div class="bubble"><span class="cpfont">';
	
	eventhtml+='<b>' + activeevent[0].name+'</b>';
	eventhtml+='<br /><b>Date: </b>' + activeevent[0].startdate + ', <b>Time: </b>'+activeevent[0].starttime;
	eventhtml+='<br />' + activeevent[0].address;
	eventhtml+='<br />' + activeevent[0].city+', '+activeevent[0].state+', '+activeevent[0].country+', '+activeevent[0].zip;
	eventhtml+='<br /><br /><table width="100%" border="0" cellpadding="3" style="font-size:11px;"><tr>'
	if(activeevent[0].description != ''){
		eventhtml+='<td colspan="2" align="center"><a href="javascript:displayMessage(\''+activeevent[0].description+'\')">Show Description</a></td></tr>'
	}
	
	eventhtml+='<tr><td align="left"><img src="globalgraphics/general/loc_marker_mini_icon.jpg" /><a href="javascript:setsearchcenterpoint('+activeevent[0].lat+','+activeevent[0].lng+')">Set Explore Center</a></td>';
	
	eventhtml+='<td align="right"><a href="javascript:verifiedaddpassport(\'event\')">Add to my Passport</a></td></tr>';
	
	var directionstab ='<tr><td colspan="2" align="left"><div ><span style="font-size:12px;"><br><b>DIRECTIONS:</b><br><a href="javascript:setdirectionbubble(\'to\', \''+activeevent[0].point+'\' )">To Here  </a>   OR   <a href="javascript:setdirectionbubble(\'from\', \''+activeevent[0].point+'\')">  From Here</a></span></div></tr>';
	
	eventhtml += directionstab;
	
	
	eventhtml+='</table></span></div>';
	
	return eventhtml;
}


function markthemap(choice){
	
	try{
		contextmenu.style.visibility="hidden";
	}catch(err){
		//No Action
	}
	
	switch (choice){
		case 'click':
		
			try{
				//document.getElementById('mapsetflagicon').src = 'globalgraphics/mapcontrols/clickmap_mapicon.png';
				document.getElementById('mapsetflagglobal').src = 'globalgraphics/general/cpexloremapclick_active.png';
				document.getElementById('mapclickbut').src = 'globalgraphics/dmo_menu/dmo_mapclick_waiting.jpg';
			}catch(err){
				//Error catch goes here.
			}
			//tb_active = false
			mapclickactive=true;
			clickmap();
		break;
		
		case 'clickfortour':
			try{
				document.getElementById('mapsetflagglobal').src = 'globalgraphics/general/cpexloremapclick_active.png';
				document.getElementById('mapclickbut').src = 'globalgraphics/dmo_menu/dmo_mapclick_waiting.jpg';
				//document.getElementById('tourmapclickbut').src = 'globalgraphics/general/tour_clickmap.png';
			}catch(err){
				//Error catch goes here.
			}
			
			try{
				changetabstrip('map');
				configmap(new GLatLng(mapcenter_lat,  mapcenter_lng), initzoom, initmaptype);
			}catch(err){
				//No Action
			}
			
			try{
				closeactiveexpander();
			}catch(err){
				//No Action
			}
			
			tbmapclickactive=true;
			clickmapexact();
		break;
	}
	
}

function clickmap(){
	
	GEvent.addListener(map, "click", function(overlay, latlng) {
			if(mapclickactive==true){
				if (latlng != null) {
					geopurpose = 'comguide';
					clickloc = true;
					//alert(latlng);
					
					try{
						//document.getElementById('mapsetflagicon').src = 'globalgraphics/mapcontrols/setflag_mapicon.png';
						document.getElementById('mapsetflagglobal').src = 'globalgraphics/general/cpexloremapclick.png';
						document.getElementById('mapclickbut').src = 'globalgraphics/dmo_menu/dmo_mapclick.jpg';
					}catch(err){
						//Error catch goes here.
					}
					geocoder.getLocations(latlng, processgeoresponse);
					mapclickactive = false;
				}
			}
		});
	
}
						

function plotmedia(type, lat, lng, description){
	
	var mediamarkerimage;
	
	//description=cleanstring(description);
	
	switch (type){
			case 'photo':
					markericon = "photomarker.png";
					
			break;
			
			case 'info':
					markericon = "infomarker.png";
			break;
			
			case 'event':
					markericon = "eventmarker.png";
					cleanvenuname
					
			break;
			
			case 'video':
					markericon = "videomarker.png";
			break;
	}
	
	mediamarkerimage=markerpath+markericon;
	
	if(mediamarker){
		map.closeInfoWindow();
		mediamarker.remove();
	}
	
	description += '<div align="center"><br /><img src="globalgraphics/general/loc_marker_mini_icon.jpg" /><a href="javascript:setsearchcenterpoint('+lat+','+lng+')">Set Explore Center</a></div>';
	
	var mediapoint = new GLatLng(lat, lng);
	
	var directionstab ='<div class="bubble" ><span style="font-size:12px;"><br><b>DIRECTIONS:</b><br><a href="javascript:setdirectionbubble(\'to\', \''+mediapoint+'\' )">To Here  </a>   OR   <a href="javascript:setdirectionbubble(\'from\', \''+mediapoint+'\')">  From Here</a></span></div>';
	
	description += directionstab;
	
	mediamarker=new GMarker(mediapoint, {icon:dynamicmarker});
	activemarker = mediamarker;
	map.setCenter(mediapoint, defaultzoom);
	map.addOverlay(mediamarker);
	GEvent.addListener(mediamarker, "click", function(marker, point) {
		mediamarker.openInfoWindowHtml(description);
	});
	mediamarker.setImage(mediamarkerimage);
	
	mediamarker.openInfoWindowHtml(description);
	
}


//FUNCTIONS TO CONNECT THE DESTINATIONS ON THE MAP WITH A POLYLINE
function connecttoone(i){
	var numberintour = currentdestinations.length
	var hubpoint = currentdestinations[i].point;
	
	for (var a = 0; a < numberintour; a++) {
		var polyOptions = {geodesic:true};
		var polyline = new GPolyline([  
			hubpoint,  
			currentdestinations[a].point  
		], "#ff0000", 4, 0.6, polyOptions);  
		
		map.addOverlay(polyline);
	}
}

function connecttodest(lat,lng){
	var bounds = new GLatLngBounds();
	var numberintour = currentdestinations.length
	var sfhubpoint = new GLatLng(lat,lng);
	//alert('HubPoint='+hubpoint);
	bounds.extend(sfhubpoint);
	
	for (var a = 0; a < numberintour; a++) {
		//alert('Point'+a+' = '+currentdestinations[a].point);
		var polyOptions = {geodesic:true};
		var polyline = new GPolyline([  
			sfhubpoint,  
			currentdestinations[a].point
		], linecolor, 4, 0.6, polyOptions);  
		
		map.addOverlay(polyline);
		bounds.extend(currentdestinations[a].point);
	}
	
	//var newzoom = (map.getBoundsZoomLevel(bounds)+1);
	//var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) /2;
	//var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) /2;
	
	//configmap(new GLatLng(clat,  clng), newzoom);
}

function connectall(){
	var numberintour = currentdestinations.length
	var hubpoint = currentdestinations[i].point;
	var polyOptions = {geodesic:true};
	var pts = [];
	for (var a = 0; a < numberintour; a++) {
		pts[a] = currentdestinations[a].point;
	}
	
	var polyline = new GPolyline(pts, "#ff0000", 4, 0.6, polyOptions);  
	
	map.addOverlay(polyline);
}