//////////////////////////////////////BEGINNING OF WINDOW ONLOAD LISTENER
function addListener(element, eventName, listener)
{
    if (typeof element.addEventListener !== "undefined")
	{
        // W3C-compliant browsers
        element.addEventListener(eventName, listener, false);
    }
	else if (typeof element.attachEvent !== "undefined")
	{
        // Internet Explorer
        element.attachEvent("on" + eventName, listener);
    }
}

addListener(window, "load", initAll);
//////////////////////////////////////END OF WINDOW ONLOAD LISTENER

//<![CDATA[
var map;
var geocoder;

var pageTop = 300;

function initAll()
{
	if (GBrowserIsCompatible()) {
	geocoder = new GClientGeocoder();
	map = new GMap2(document.getElementById('map'));
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());
	//map.setCenter(new GLatLng(31.015544, -118.446865), 4);
	 map.setCenter(new GLatLng(40, -100), 4);
  }
  else
  {
	 
  }
}

function searchLocations() {
 var address = document.getElementById('addressInput').value;
  //var radius = document.getElementById('radiusSelect').value;
 //var html = '<h2>Search Results for Facilities near <em>"' + address + '"</em> within a ' + radius + ' mile radius:</h2>';
 var html = '<h2>Search Results for Facilities near <em>"' + address + '"</em>:</h2>';
 document.getElementById('mapSearchResultsHead').innerHTML = html;
 geocoder.getLatLng(address, function(latlng) {
   if (!latlng) {
	 alert(address + ' not found');
   } else {
	 searchLocationsNear(latlng);
	//sidebar.innerHTML = (latlng);
   }
 });
}

var returnNum;


var host_address = 'http://www.realryder.com/html/';

function searchLocationsNear(center) {
// var radius = document.getElementById('radiusSelect').value;
var radius = 250;
 //alert (center.lng());
 var searchUrl = host_address + 'partners/facility-search/includes/gen_xml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
 GDownloadUrl(searchUrl, function(data) {
   var xml = GXml.parse(data);
   var markers = xml.documentElement.getElementsByTagName('marker');
   map.clearOverlays();
	returnNum = 0;
   //var sidebar = document.getElementById('sidebar');
   var sidebar = document.getElementById('sidebar');
   div = document.createElement('div');
   div.setAttribute('id', 'facilitiesContainer');
  
   sidebar.innerHTML = '';
   //var html = '';
   if (markers.length == 0) {
	 sidebar.innerHTML = '<p class="error">No matches found.</p>';
	 map.setCenter(new GLatLng(40, -100), 4);
	 return;
   }
	//sidebar.innerHTML += '<div id="facilitiesContainer">';
	//html += '<div id="facilitiesContainer">';
	//alert (sidebar.innerHTML);
   var bounds = new GLatLngBounds();
   
   //Limit 10
   var l = 10;
   if (markers.length < 10)
   {
	 l = markers.length; 
   }
   
   for (var i = 0; i < l; i++) {
	 var name = markers[i].getAttribute('name');
	 var address = markers[i].getAttribute('address');
	 var phone = markers[i].getAttribute('phone');
	 var website = markers[i].getAttribute('website');
	 var weblink = markers[i].getAttribute('weblink');
	 var distance = parseFloat(markers[i].getAttribute('distance'));
	 var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
							 parseFloat(markers[i].getAttribute('lng')));
	 
	 var marker = createMarker(point, name, address, phone, website, weblink);
	 map.addOverlay(marker);
	 var sidebarEntry = createSidebarEntry(marker, name, address, phone, website, weblink, distance);
	 //sidebar.appendChild(sidebarEntry);
	 //sidebar.innerHTML += sidebarEntry;
	 //alert (sidebarEntry);
	 //html += sidebarEntry;
	 div.appendChild(sidebarEntry);
	 bounds.extend(point);
   }
   //sidebar.innerHTML += '</div>';
   //html += '</div>';
   //sidebar.innerHTML = html;
   //div.innerHTML = html;
   //sidebar.appendChild(sidebarEntry);
   sidebar.appendChild(div);
   map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
 });
}

/*
// Create our "tiny" marker icon
//var rrIcon = new GIcon(G_DEFAULT_ICON);
var rrIcon = new GIcon();
//blueIcon.image = "http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png";
//var rrIcon = new GIcon ();
rrIcon.image = 'http://www.creativegenus.ca/REALRYDER/HTML/TWO/images/rr-map-marker.png';
rrIcon.shadow = 'http://www.creativegenus.ca/REALRYDER/HTML/TWO/images/rr-map-shadows.png';
rrIcon.iconSize = new GSize(32, 32);
rrIcon.shadowSize = new GSize(32, 32);
rrIcon.iconAnchor = new GPoint(6, 20);
rrIcon.infoWindowAnchor = new GPoint(5, 1);
//rrIcon.iconSize = new GSize(32, 32);
                
// Set up our GMarkerOptions object
markerOptions = { icon:rrIcon };
*/
function createMarker(point, name, address, phone, website, weblink) {
  //var marker = new GMarker(point, markerOptions);
  var marker = new GMarker(point);
  var html = '<b>' + name + '</b> <br/>' + address + '<br />';
  if (phone != '' && phone != null)
  {
  	html += phone + '<br />';
  }
  if (website != '' && website != null && website != ' ')
  {
  	html += '<img src="../../images/dash-block.png" class="dashBlock" alt="RealRyder Facility Link Image" /><a href="' + weblink + '" target="_blank">' + website + '</a>';
  }
  GEvent.addListener(marker, 'click', function() {
	marker.openInfoWindowHtml(html);
  });
  return marker;
}

var t;
var b;
var c;
var dur = 10;

function createSidebarEntry(marker, name, address, phone, website, weblink, distance) {
	 returnNum += 1;
  var div = document.createElement('div');
  div.setAttribute('id', 'facilityBlock' + returnNum);
  div.setAttribute('class', 'facilityBlock');
  //var html = '<b>' + name + '</b> (' + distance.toFixed(1) + ')<br/>' + address;
 
	var html = '';
  html += '<h2 class="facName"><span class="facNum">' + returnNum + '.</span> ' + name + '</h2><p class="facAddress">' + address + '</p><p class="facPhone">' + phone + '</p>';
  if (website != '' && website != null && website != ' ')
  {
	 html +=  '<p class="facLink"><img src="../../images/dash-block.png" class="dashBlock" alt="RealRyder Facility Link Image" /><a href="' + weblink + '" target="_blank">' + website + '</a></p>';
  }
	var d = Math.round(distance * 100) / 100;
  html += '<p>Distance from you: <strong>' + d  + ' miles</strong>.</p>';
  //html += '</div>';
  
	div.style.padding = '0 10px 0 10px';
	div.style.borderTop = '1px solid #333';
	div.style.borderBottom = '1px solid #000';
  //alert (div);
 
  div.innerHTML = html;
  //div.style.cursor = 'pointer';
  //div.style.marginBottom = '5px'; 
  GEvent.addDomListener(div, 'click', function() {
	 if( typeof( window.pageYOffset ) == 'number' )
	 {
		if (window.pageYOffset > pageTop)
		{
			//alert ('yes');
			//to = setTimeout ("animateScroll()", 33);
			//t = 0;
			//b = window.pageYOffset;
			//c = 0 - window.pageYOffset - pageTop;
			//to = setTimeout ("animateScroll()", 33);
			t = 0;
			b = window.pageYOffset;
			c = b - pageTop;
			//var p = (c - b) / d * t;
			//alert (dur);
			to = setTimeout ("animateScroll()", 33);
		}
	}
	else
	{
		//alert (document.documentElement.scrollTop);
		if (document.documentElement.scrollTop > pageTop)
		{
			//alert ("HERE");
			t = 0;
			b = document.documentElement.scrollTop;
			c = b - pageTop;
			to = setTimeout ("animateScroll()", 33);
		}
	}
	//alert (window.pageYOffset);
	//window.scrollTo(0, 0);
	GEvent.trigger(marker, 'click');
  });
  GEvent.addDomListener(div, 'mouseover', function() {
	div.style.backgroundColor = '#111';
  });
  GEvent.addDomListener(div, 'mouseout', function() {
	div.style.backgroundColor = '#000';
  });
  //alert (div);
  return div;
  // return html;
}

function animateScroll()
{
	var p = pagePos(b, c, dur);
	//var newY = pagePos (t, b, c, d);
	window.scrollTo (0, p);
	if (p > pageTop)
	{
		to = setTimeout ("animateScroll()", 33);
	}
}

function pagePos (b, c, dur)
{
	t += 1;
	//alert (t);
	//return c * Math.pow (t / d, 4) + b;
	//if ((t/=d/2) < 1)
	/*p = t / d;
	if (p / 2 < 1)
	{
		return c / 2 * Math.pow (t, 5) + b;
	}
	else
	{
		return c / 2 * (Math.pow (t - 2, 5) + 2) + b;
	}*/
	//return c * Math.pow (t/d, 5) + b;
	//var p = b + (c - b) / dur * t;
	var p = (c - b) * Math.pow (t/dur, 4) + b;
	
	//alert (p);
	return p;
}
//]]>
