// JavaScript Document
// Global Variables
var folded = new Object();
var faded = new Object();

var newsItems = [];
var newsItemArrayLength = 0;
var newsItemArrayIndex = 0;

var isIE6 = ( window.external && typeof window.XMLHttpRequest == "undefined" );
var isHome = false;

// Locations
var locations = [];

// events
Event.observe(window, 'load', ini, false);
Event.observe(window, 'unload', garbageCollection, false);

// void Main()
function ini()
{
	faded['mapHelpWindow'] = 1;
	// slide('newsItem');
	// Load Tooltips
	$$('a').each(function(element)
	{
    	if(element.rel != '') new Tip(element, element.rel, { effect: 'blind' });
	});
	
	$$('img').each(function(element)
	{
    	if(element.alt != '') new Tip(element, element.alt, { effect: 'appear' });
	});
	
	// Event.observe('fbsubmit', 'click', , false);
	
	if (isHome)
	{
		newsItemsArrayLength = newsItems.size();
		
		$('newsFade').update(newsItems[0]);
		
		if (isIE6)
		{
			Element.show('newsFade');
			
			new PeriodicalExecuter(doNewsIE6, 5);
		}
		else
		{
			new Effect.Appear('newsFade');
			new PeriodicalExecuter(doNews, 5);
		}
	}
}

function garbageCollection()
{
}


function doNewsInit()
{
}

function doNews()
{
	if (newsItemsArrayLength > 1)
	{
		newsItemArrayIndex++
		
		if (newsItemArrayIndex >= newsItemsArrayLength)
			newsItemArrayIndex = 0;
			
		// alert(newsItemArrayIndex);
			
		new Effect.Fade('newsFade', { afterFinish: function() { $('newsFade').update(newsItems[newsItemArrayIndex]); new Effect.Appear('newsFade'); } });
	}
}

function doNewsIE6()
{
	if (newsItemsArrayLength > 1)
	{
		newsItemArrayIndex++
		
		if (newsItemArrayIndex >= newsItemsArrayLength)
			newsItemArrayIndex = 0;
			
		// alert(newsItemArrayIndex);
		$('newsFade').clear;
		
		$('newsFade').update(newsItems[newsItemArrayIndex])
	}
}

function slide(el)
{            
	if(folded[el])
	{
		if (isIE6)
		{
			Element.show(el);
		}
		else
		{
			Effect.SlideDown(el, { queue: 'end' });
		}
		
		folded[el] = 0;
	} 
	else 
	{
		if (isIE6)
		{
			Element.hide(el);
		}
		else
		{
			Effect.SlideUp(el, { queue: 'end' });
		}
		
		folded[el] = 1;
	}
}

function fade(el)
{
	if(faded[el])
	{
		if (isIE6)
		{
			Element.show(el);
		}
		else
		{
			Effect.Appear(el, { queue: 'end' });
		}
		
		faded[el] = 0;
	} 
	else 
	{
		if (isIE6)
		{
			Element.hide(el);
		}
		else
		{
			Effect.Fade(el, { queue: 'end' });
		}
		
		faded[el] = 1;
	}
}

function getFlashMovie(movieName)
{
	var isIE = navigator.appName.indexOf("Microsoft") != -1;
	return (isIE) ? window[movieName] : document[movieName];
}

var css_browser_selector = function()
{
	var 
		ua=navigator.userAgent.toLowerCase(),
		is=function(t){ return ua.indexOf(t) != -1; },
		h=document.getElementsByTagName('html')[0],
		b=(!(/opera|webtv/i.test(ua))&&/msie (\d)/.test(ua))?('ie ie'+RegExp.$1):is('gecko/')? 'gecko':is('opera/9')?'opera opera9':/opera (\d)/.test(ua)?'opera opera'+RegExp.$1:is('konqueror')?'konqueror':is('applewebkit/')?'webkit safari':is('mozilla/')?'gecko':'',
		os=(is('x11')||is('linux'))?' linux':is('mac')?' mac':is('win')?' win':'';
	var c=b+os+' js';
	h.className += h.className?' '+c:c;
}();

function loadLocationMap() 
{
	if (GBrowserIsCompatible())
	{
		loadLocationsData();
		
		var map = new GMap2(document.getElementById("locationsMap"));
		/* Hybrid mode is nice */
		/* map.setMapType(G_HYBRID_MAP); */
		/* So is THREE DEEEEEEE */
		map.addMapType(G_SATELLITE_3D_MAP);
		
		/* controls */
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		
		/* Load it */
		var lsc = new google.maps.LocalSearch();
		
		/* Local Search */
		map.addControl(new google.maps.LocalSearch(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,20)));
		
		map.enableScrollWheelZoom();
		
		GEvent.addDomListener(map.getContainer(), "DOMMouseScroll", function(oEvent) { if (oEvent.preventDefault) oEvent.preventDefault(); }); 
		
		var defaultLat = 1.0;
		var defaultLng = 1.0;
		var defaultZoom = 1;
		
		map.setCenter(new GLatLng(defaultLat, defaultLng), defaultZoom); //map.setCenter(new GLatLng(51.211318, -122.732391), 6);
		
		var x;
		
		var mapMarker = [];
	
		for (x = 0; x < locations.length; x++)
		{
			var LatLng = locations[x].point;
			
			mapMarker[x] = createLocation(LatLng, x, locations[x].infoWin, map, locations[x].Name);
			
			map.addOverlay(mapMarker[x]);
			
			$('locationSelect').insert('<option value="' + x + '">' + locations[x].Name + '</option>');
		}
		
		var selectLoc = $('locationSelect');
		var resetMapBtn = $('resetMap');
		
		Event.observe(resetMapBtn, 'click', function(e) {
			resetMap(map, defaultLat, defaultLng, defaultZoom);
		});
		
		Event.observe(selectLoc, 'change', function (e) {			
			if (this.value != -1)
			{
				GEvent.trigger(mapMarker[this.value], 'click');
			}
			else
			{
				resetMap(map, defaultLat, defaultLng, defaultZoom);
			}
		});
	}
}

function resetMap(map, defaultLat, defaultLng, defaultZoom)
{
	map.setCenter(new GLatLng(defaultLat, defaultLng), defaultZoom);
	map.closeInfoWindow();
	$('currentLoc').innerHTML = 'None';
	$('locationSelect').selectedIndex = 0;
}

function createLocation(point, number, markerHTML, map, name)
{
	var marker = new GMarker(point);
	
	GEvent.addListener(marker, "click", function() {
		map.setZoom(15);
		$('currentLoc').innerHTML = name;
		$('locationSelect').selectedIndex = number + 1;
		map.panTo(point);
		map.openInfoWindowHtml(point, markerHTML);
	});
	
	return marker;
}

function openMapHelp()
{
	fade('mapHelpWindow');
}