$(document).ready(function(){
	var map;
	var geocoder;

	function createMarker(point, objName, objURL,address) {
		var marker = new GMarker(point);
		GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml("<div class=\"marker\"><h3>" + objName + "</h3><p><a href=\"" + objURL + "\" target=\"_blank\">More information about this point &rsaquo;</a><br />"+address+"</p></div>");
		});
		return marker;
	}

	function Load( panelID, IDstring ){
		if (GBrowserIsCompatible())
		{
			var map = new GMap2(document.getElementById('loadMapHere'));
			map.setCenter(new GLatLng(35.843715, -86.167054), 6);
			map.setMapType(G_PHYSICAL_MAP);
			map.setUIToDefault();

		//	geocoder = new GClientGeocoder();
			
		//	GDownloadUrl("/grouptours/touroperators/interactive-mapping/xml.php?type=" + pageLoaded + "&area=" + areaID, function(data) {
			GDownloadUrl("/green/xml/markers.php?panelID="+panelID+"&IDstring="+IDstring, function(data) {
				var xml = GXml.parse(data);
				var markers = xml.documentElement.getElementsByTagName("marker");
				var bounds = new GLatLngBounds();
				for (var i = 0; i < markers.length; i++) {
					var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
											parseFloat(markers[i].getAttribute("lon")));	
					map.addOverlay(createMarker(point,markers[i].getAttribute("name"),markers[i].getAttribute("website"),markers[i].getAttribute("address")));	
				//	bounds.extend(point);
				}
			/*
				map.setZoom(map.getBoundsZoomLevel(bounds));
				var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) /2;
				var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) /2;
				map.setCenter(new GLatLng(clat,clng));
				*/
			});
		}
	}
	
	function addAddressToMap(response){
		place = response.Placemark[0];
		point = new GLatLng( place.Point.coordinates[1] , place.Point.coordinates[0] );
		marker = new GMarker(point);
		map.addOverlay(marker);
		
	}
	
	function showAddress( mark ){
		geocoder.getLatLng(
			mark['address'],
			function(point) {
				if (!point) {
					alert(mark['address'] + " not found");
					
				} else {
					var marker = new GMarker(point);
					GEvent.addListener(marker, "click", function() {
						marker.openInfoWindowHtml("<div class=\"marker\"><h3>" + mark['pointName'] + "</h3><p>"+mark['address']+"<br /<a href=\"http://" + mark['pointURL'] + "/\" target=\"_parent\">View more information</a></p></div>");
					});
					map.addOverlay(marker);
				}
			}
		);
	}
	
	if( $('.directory-toggle .nav').length > 0 ){
		$('.directory-toggle .nav').tabs({
			cookie: {
				expires: 30,
				name: 'last-tab'
			},
			show: function(e, ui){
				i = ( ui.index );
				if( i == 2 ){
					$('select.horticulture-list').show();
				}else{
					$('select.horticulture-list').hide();
				}
				
				panelID = ui.panel.id;
				IDstring = $('.IDstring', '#'+panelID).text();
				//Load( panelID, IDstring );
				
				
				// comment out below
				/*
				GDownloadUrl("/green/xml/markers-"+ui.panel.id+".xml", function(data) {
					var xml = GXml.parse(data);
					var markers = xml.documentElement.getElementsByTagName("marker");
					for (var i = 0; i < markers.length; i++) {
					//	pName = markers[i].getAttribute("pointName");
					//	pUrl = markers[i].getAttribute("pointURL");
						var address = markers[i].getAttribute("address");
						mark = new Array();
						mark['address'] = markers[i].getAttribute("address");
						mark['pointName'] = markers[i].getAttribute("pointName");
						mark['pointURL'] = markers[i].getAttribute("pointURL");
						showAddress( address, mark );
						
						/*showAddress(pAddress,pName,pUrl)
						
						geo.getLatLng(
							pAddress,
							function(point){
								if(point){
									var marker = new GMarker(point);
									GEvent.addListener(marker, "click", function() {
										marker.openInfoWindowHtml("<div class=\"marker\"><h3>" + pName + "</h3><p>"+pAddress+"<br /<a href=\"http://" + pUrl + "/\" target=\"_parent\">View more information</a></p></div>");
									});
									map.addOverlay(marker);
								}
							}
						);
					}
				});*/
				
			}
		});
	}
	
	
	if( $('.section-nav-hidden h3 a').length > 0 )
	{
		$('.section-nav-hidden').hover( function()
		{
			$('.section-nav-hidden ul').slideDown();
		},
		function()
		{
			$('.section-nav-hidden ul').slideUp();
		});
	}
	
	if( $('#main-rotational .spinner').length > 0 ){
		$('#main-rotational .spinner').cycle({
			speed: 1250,
			timeout: 7000,
			pager:  '#main-rotational .nav ul', 
			pagerAnchorBuilder: function(idx, slide) {
				return '#main-rotational .nav ul li:eq(' + idx + ') a';
			}
		});
	}


	if( $("#twitter-feed #feed-wrap").length > 0 ){
		$.getJSON(
			"http://twitter.com/statuses/user_timeline/TnVacation.json?count=3&callback=?"
			,function (twitters) {
				  var statusHTML = [];
					  for (var i=0; i<twitters.length; i++){
					    var username = twitters[i].user.screen_name;
					    var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
					      return '<a href="'+url+'">'+url+'</a>';
					    }).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
					      return  reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
					    });
					    statusHTML.push('<div class="entry"><div class="inner">'+status+' <a style="font-size:85%" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id+'">'+relative_time(twitters[i].created_at)+'</a></div></div>');
					  }
					  document.getElementById('feed-wrap').innerHTML = statusHTML.join('');

			}
		);
	}
	
	function relative_time(time_value) {
  var values = time_value.split(" ");
  time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
  var parsed_date = Date.parse(time_value);
  var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
  var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
  delta = delta + (relative_to.getTimezoneOffset() * 60);

  if (delta < 60) {
    return 'less than a minute ago';
  } else if(delta < 120) {
    return 'about a minute ago';
  } else if(delta < (60*60)) {
    return (parseInt(delta / 60)).toString() + ' minutes ago';
  } else if(delta < (120*60)) {
    return 'about an hour ago';
  } else if(delta < (24*60*60)) {
    return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
  } else if(delta < (48*60*60)) {
    return '1 day ago';
  } else {
    return (parseInt(delta / 86400)).toString() + ' days ago';
  }
}



});