////////////////////////////////////////////////////////////////////////////////
// BEGIN
//

	// -- Initialize ----------------------------------------------------------
	function initialize()
	{
		// Initialize Menu
		initializeMenu();
		
		// Initialize Slider
		initializeSlider();
		
		if( document.getElementById( "gMap" ) != undefined )
			initializeMap();
	}
	// ------------------------------------------------------------------------
	
	// -- Menu ----------------------------------------------------------------
	function initializeMenu()
	{
		var menu = document.getElementById( "menu" );
		var items = menu.getElementsByTagName( "img" );
		
		for( var i in items )
		if( items[i].className == "over" )
		{
			items[i].onmouseover = mnuOver;
			items[i].onmouseout = mnuOut;
		}
	}
	function mnuOver( e )
	{
		var parts = this.src.split( "." );
			parts[parts.length-2] += "_over";
			
		this.src = implode( ".", parts );
	}
	function mnuOut( e )
	{
		var parts = this.src.split( "." );
			parts[parts.length-2] = parts[parts.length-2].replace( "_over", "" );
		
		this.src = implode( ".", parts );
	}
	function implode( str, arr )
	{
		var s = "";
		for( var i = 0; i < arr.length; i++ )
		{
			s += arr[i];
			if( i < (arr.length - 1) )
				s += str;
		}
		
		return s;
	}
	// ------------------------------------------------------------------------
	// -- System --------------------------------------------------------------
	function callback( success )
	{
		if( success )
			alert( "good" );
		else
			alert( "bad" );
	}
	var reminderElem;
	function callbackRemind( success )
	{
		if( !success )
			alert( "An error has occurred while creating your reminder. Please ensure that you have entered a valid email address and that the event has not passed." );
		else
		{
			// Replace content
			if( reminderElem != undefined )
			{
				// Reminder
				while( reminderElem.className != "jsForm" )
					reminderElem = reminderElem.parentNode;
				
				// Reminder
				var reminder = reminderElem;
				while( reminder.className != "remind" )
					reminder = reminder.parentNode;
				
				// Slider
				var slider = reminderElem;
				while( slider.className != "slider" )
					slider = slider.parentNode;
					
				var slider_parts = slider.id.split( "_" );
				var slider_id = slider_parts[1];
				var func = function()
				{
					resetSliderButtons( slider );
					//close
					//closeReminder( reminder, slider );
					closeSlider( slider, slider_id );
				};
				reminderElem.innerHTML = '<div style="height: 50px;"><h1>REMINDER HAS BEEN SUCCESSFULLY SET.</h1></div>';
				setTimeout( func, 1000 );
			}
		}
	}
	var tellaElem;
	function callbackTell( success )
	{
		if( !success )
			alert( "An error has occurred while creating your reminder. Please ensure that you have entered a valid email address and that the event has not passed." );
		else
		{
			// Replace content
			if( tellaElem != undefined )
			{
				// Tella
				while( tellaElem.className != "jsForm" )
					tellaElem = tellaElem.parentNode;
				
				// Tella
				var tella = tellaElem;
				while( tella.className != "tell" )
					tella = tella.parentNode;
				
				// Slider
				var slider = tellaElem;
				while( slider.className != "slider" )
					slider = slider.parentNode;
				
				// Reminder
				var reminder;
				var sliderElems = slider.getElementsByTagName( "div" );
				for( var i = 0; i < sliderElems.length; i++ )
					if( sliderElems[i].className == "remind" )
						reminder = sliderElems[i];
				
				var slider_parts = slider.id.split( "_" );
				var slider_id = slider_parts[1];
				var func = function()
				{
					resetSliderButtons( slider );
					//close
					closeSlider( slider, slider_id );
					openReminder( reminder, slider );
				};
				tellaElem.innerHTML = '<div style="height: 50px;"><h1>NOTICE HAS BEEN SUCCESSFULLY SENT.</h1></div>';
				setTimeout( func, 1000 );
			}
		}
	}
	// ------------------------------------------------------------------------
	// -- Directions ----------------------------------------------------------

	// ------------------------------------------------------------------------
	// -- Slider --------------------------------------------------------------
	var sTween = new Array();;
	var isPlaying = new Array();
	function initializeSlider()
	{
		var imgs = document.getElementsByTagName( "img" );
		for( var i = 0; i < imgs.length; i++ )
			if( imgs[i].className == "btn" )
			{
				imgs[i].onclick = sliderClick;
				imgs[i].style.cursor = "pointer";
			}
	}
	function sliderClick( e )
	{
		// Slider
		// .. Element
		var slider = this;
		while( slider.className != "slider" )
			slider = slider.parentNode;
		// .. Elements
		var sliderElems = slider.getElementsByTagName( "div" );
		for( var i = 0; i < sliderElems.length; i++ )
		{
			// Remind Element
			if( sliderElems[i].className == "remind" )
				remindElem = sliderElems[i];
				
			// Tell Element
			if( sliderElems[i].className == "tell" )
				tellElem = sliderElems[i];
		}					
		// .. Slider ID
		var slider_parts = slider.id.split( "_" );
			slider_id = slider_parts[1];		
		
		// Event Element
		var eventElem = slider;
			while( eventElem.className != "event" )
				eventElem = eventElem.parentNode;
		
		if( sTween[slider_id] == undefined || !isPlaying[slider_id] )
		{
			// Initialize
			var show = true;
			var slidetype = this;
			while( slidetype.className != "tell" && slidetype.className != "remind" )
				slidetype = slidetype.parentNode;
			
			// Image Toggle
			// .. Reset
			show = true;
			if( this.src.indexOf( "_over" ) != -1 )
				show = false;
				
			resetSliderButtons( slider );
			
			// .. Toggle
			if( show )
			{
				var parts = this.src.split( "." );
					parts[parts.length-2] += "_over";
					this.src = implode( ".", parts );
			}
			//return;
			
			// Motion
			//alert( slidetype.className + " " + show );			
			var pos = findPosRelativeParent( slider, eventElem );
			//isPlaying[slider_id] = true;
			
			// TELL
			if( slidetype.className == "tell" )
			{
				// .. Show
				if( show )
				{
					// Open Slider
					openSlider( slider, slider_id, eventElem );
					
					// Close Reminder
					closeReminder( remindElem, slider );
					
					/*
					sTween[slider_id] = new Tween( slider.style, "left", Tween.strongEaseOut, parseInt( pos[0] ), 72, 1, "px" );
					sTween[slider_id].onMotionFinished = function()
					{
						isPlaying[slider_id] = false;
					}
					sTween[slider_id].start();
					
					var divElems = slider.getElementsByTagName( "div" );
					var remindElem;
					for( var i = 0; i < divElems.length; i++ )
						if( divElems[i].className == "remind" )
							remindElem = divElems[i];
					
					var rpos = findPosRelativeParent( remindElem, slider );
					var rTween = new Tween( remindElem.style, "left", Tween.strongEaseOut, rpos[0], 494, 1, "px" );
						rTween.start();
						*/
				}
				// .. Hide
				else
				{
					// Close Slider
					closeSlider( slider, slider_id );
					
					// Close Reminder
					openReminder( remindElem, slider );
				}
			}
			// REMIND
			else
			{
				// .. Show
				if( show )
				{
					// Open Slider
					openSlider( slider, slider_id, eventElem );
					
					// Open Reminder
					openReminder( remindElem, slider );
				}
				// .. Hide
				else
				{
					// Close Reminder
					closeReminder( remindElem, slider );
					
					// Tell Button
					var img = tellElem.getElementsByTagName( "img" );
					var img_parts = img[0].src.split( "." );
						img_parts[img_parts.length-2] += "_over";
						img[0].src = implode( ".", img_parts );
				}
			}
			/*
			var pos = findPosRelativeParent( slider, eventElem );
			isPlaying[slider_id] = true;
			sTween[slider_id] = new Tween( slider.style, "left", Tween.strongEaseOut, parseInt( pos[0] ), 72, 1, "px" );
			sTween.onMotionFinished = function()
			{
				isPlaying[slider_id] = false;
			}
			sTween[slider_id].start();*/
		}
	}
	function resetSliderButtons( slider )
	{
		// Get Buttons
		var elems = slider.getElementsByTagName( "img" );
		for( var i = 0; i < elems.length; i++ )
			if( elems[i].className == "btn" )
				elems[i].src = elems[i].src.replace( "_over.", "." );
	}
	function openSlider( slider, slider_id, eventElem )
	{
		isPlaying[slider_id] = true;
		
		var pos = findPosRelativeParent( slider, eventElem );
		
		sTween[slider_id] = new Tween( slider.style, "left", Tween.strongEaseOut, pos[0], 72, 1, "px" );
		sTween[slider_id].onMotionFinished = function()
		{
			isPlaying[slider_id] = false;
		}
		sTween[slider_id].start();
	}
	function closeSlider( slider, slider_id )
	{
		isPlaying[slider_id] = true;
		sTween[slider_id] = new Tween( slider.style, "left", Tween.strongEaseOut, 72, 512, 1, "px" );
		sTween[slider_id].onMotionFinished = function()
		{
			isPlaying[slider_id] = false;
		}
		sTween[slider_id].start();
	}
	function openReminder( reminder, slider )
	{
		var pos = findPosRelativeParent( reminder, slider );
		var rTween = new Tween( reminder.style, "left", Tween.strongEaseOut, pos[0], 54, 1, "px" );
			rTween.start();
	}
	function closeReminder( reminder, slider )
	{
		var pos = findPosRelativeParent( reminder, slider );
		var rTween = new Tween( reminder.style, "left", Tween.strongEaseOut, pos[0], 512-18, 1, "px" );
			rTween.start();
	}
	// ------------------------------------------------------------------------
	
//
// END
////////////////////////////////////////////////////////////////////////////////