
window.addEvent("domready", function () 
{
    var emailOpen = false;
	var currentBackgroundImage = countBackgroundImages;
    var tweetWidth = 400;
	var buttonHandleWidth = 80;
    var animating = false;	
  
	var NEXT = 0;
	var PREVIOUS = 1;
	
	var INTRO_NB = "introViewNextButton";
	var INTRO_PB = "introViewPreviousButton";
	var INTRO_CB = "introViewCloseButton";
	
	var INTRO_VIEW = "introView";
	var TWEET_VIEW = "twitterView";
	
	var TWEET_NB = "twitterViewNextButton";
	var TWEET_PB = "twitterViewPreviousButton";
	var TWEET_CB = "twitterViewCloseButton";
	var TWEET_CAL = "twitterViewCalendar";
	
	var EMAIL = "emailDiv";
	
	var LEFT_X = -1;
	var RIGHT_X  = -1;
	var CENTER_X = -1;
	var LEFT_HIDDEN_X = -1;
	var RIGHT_HIDDEN_X = -1;
	
	var DURATION_BG = 500;
	var DURATION_SLIDE = 500;
	var DURATION_HIDE = 250;
	var DURATION_FADE = 125;
	var DURATION_RESIZE = 125;
	
	var TRANSLATION_SLIDE = Fx.Transitions.Expo.easeIn; // Fx.Transitions.Elastic.easeIn; //Fx.Transitions.linear; 
	var TRANSLATION_FADE = Fx.Transitions.linear;
		    
	CalculateX();
	
	currentTweetClosed = false;	  
				
	function changeBackground(direction, onComplete)
	{
		if(tweetIndex == 0 || tweetIndex == 1 && (direction == PREVIOUS))
		{
			onComplete();
			return;
		}	
		
		currentBackgroundImage = (direction == NEXT ?  getNextBackgroundNumber() : getPreviousBackgroundNumber());
		
		var newBackground = "img/bg-" + currentBackgroundImage + ".jpg";		
				
		fade('loadingDiv', 0.0, 1.0, DURATION_FADE).chain(
		function()
		{				
			var $active = $('bgdiv').getElement('IMG.active');
			$active.addClass('last-active');
			$active.removeClass('active');
							
			var loader = new Asset.image(newBackground, { 
				onload: function() { 										
					fade('loadingDiv', 1.0, 0.0, DURATION_FADE).chain(
					function()
					{
						var newBg = new Element('img',{  'id': 'bg' + currentBackgroundImage, 'src':newBackground, 'class':'active'});
						newBg.setStyle('opacity',0.0);
						newBg.inject($('bgdiv'));
						fade('bg' + currentBackgroundImage, 0.0, 1.0, DURATION_BG).chain(
							function() { 
							$active.dispose();
							onComplete();
						});
					});
				}
			});
		});
	}
				
	function slide(tweet_id, startPos, endPos, duration)
	{
	  if(!$chk(tweet_id))
	  {
		return fade(INTRO_VIEW, 1.0, 1.0, 0);
	  }
	  
	  var target = $(tweet_id);
	  if(!$chk(target))
	  {
		return fade(INTRO_VIEW, 1.0, 1.0, 0);								 
	  }
	  
	  target.removeClass('center');
	  target.removeClass('leftSide');
	  target.setStyle("left", startPos);
	  var fx = new Fx.Tween(target, {
		property: 'left',
		duration: duration,
		transition: TRANSLATION_SLIDE,
		link: 'chain'
	  });
				
	  return fx.start(endPos);
	}	
	
	function fade(element_id, startOpacity, endOpacity, duration)
	{
	  var target = $(element_id);
	  
	  if(!$chk(target))
	  {
		return fade(INTRO_VIEW, 1.0, 1.0, 0);								 
	  }	  
	  
	  target.setStyle("opacity", startOpacity);
	  var fx = new Fx.Tween(target, {
		property: 'opacity',
		duration: duration,
		transition: TRANSLATION_FADE,
		link: 'chain'
	  });
				
	  return fx.start(endOpacity);
	}		
	
	window.addEvent('domready', function() 
	{
		new Element('img',{ 'id': 'bg' + currentBackgroundImage, 'src':'img/bg-' + currentBackgroundImage + '.jpg', 'class':'active' }).inject($('bgdiv'));	
		loadTwitterFeed(function(){setEvents(); $(INTRO_VIEW).setStyle("left",CENTER_X + (tweetWidth / 2)); if(!browserIE6) {fade(INTRO_VIEW, 0.0, 1.0, DURATION_SLIDE); } }); 
	}); 		

   window.addEvent('resize', function (){
		var id = setTimeout(function() {
			if(animating)
			{
				setTimeout(arguments.callee, 200);
				return;
			}
							
			animating = true;
			
			CalculateX();
			
			var leftTweet = $(TWEET_VIEW + (tweetIndex));
			var centerTweet = (tweetIndex == 0 ?  $(INTRO_VIEW) :  $(TWEET_VIEW + (tweetIndex - 1)));
			var rightTweet = (tweetIndex == 1 ?  $(INTRO_VIEW) : $(TWEET_VIEW + (tweetIndex - 2)));
			var rightHiddenTweet =  (tweetIndex == 2 ? $(INTRO_VIEW) :  $(TWEET_VIEW + (tweetIndex - 3)));
			
			doNothing = function() { return fade(INTRO_VIEW, 1.0, 1.0, 0) };
			slideHiddenLeft = function() { return slide(TWEET_VIEW + (tweetIndex + 1), $(TWEET_VIEW + (tweetIndex + 1)).getStyle('left'), LEFT_HIDDEN_X, DURATION_RESIZE) };
			slideLeft = function() { return slide(leftTweet, leftTweet.getStyle('left'), LEFT_X, DURATION_RESIZE) };
			
			(function(){return ((tweetIndex + 1 < tweetCount) ? slideHiddenLeft() : doNothing()) })().chain( 
			//slide(TWEET_VIEW + (tweetIndex + 1), $(TWEET_VIEW + (tweetIndex + 1)).getStyle('left'), LEFT_HIDDEN_X, DURATION_RESIZE).chain(
				function() {
					(function(){return ((tweetIndex < tweetCount) ? slideLeft() : doNothing()) })().chain( 
					//slide(leftTweet, leftTweet.getStyle('left'), LEFT_X, DURATION_RESIZE).chain(
						function() {
							slide(centerTweet, centerTweet.getStyle('left'), CENTER_X, DURATION_RESIZE).chain(
								function() {
									if(tweetIndex > 0)
									{
										slide(rightTweet, rightTweet.getStyle('left'), RIGHT_X, DURATION_RESIZE).chain(
											function() {
												if(tweetIndex > 1)
												{
													slide(rightHiddenTweet, rightHiddenTweet.getStyle('left'), RIGHT_HIDDEN_X, DURATION_RESIZE).chain(
														function() {
															animating = false;
															return;
														}
													)
												}
												else
												{
													animating = false;
													return;
												}
											}
										)
									}
									else
									{
										animating = false;
										return;
									}
								}
							)
						}
					)
				}
			)
		}, 200);
    });
	
	
	function windowResize(timerID)
	{
		if(animating)
			return;
		
		animating = true;
		
		CalculateX();
		
		var leftTweet = $(TWEET_VIEW + (tweetIndex));
		var centerTweet = (tweetIndex == 0 ?  $(INTRO_VIEW) :  $(TWEET_VIEW + (tweetIndex - 1)));
		var rightTweet = (tweetIndex == 1 ?  $(INTRO_VIEW) : $(TWEET_VIEW + (tweetIndex - 2)));
		var rightHiddenTweet =  (tweetIndex == 2 ? $(INTRO_VIEW) :  $(TWEET_VIEW + (tweetIndex - 3)));
		
		doNothing = function() { return fade(INTRO_VIEW, 1.0, 1.0, 0) };
		slideHiddenLeft = function() { return slide(TWEET_VIEW + (tweetIndex + 1), $(TWEET_VIEW + (tweetIndex + 1)).getStyle('left'), LEFT_HIDDEN_X, DURATION_HIDE) };
		
		(function(){return ((tweetIndex + 1 < tweetCount) ? slideHiddenLeft() : doNothing()) })().chain( 
		//slide(TWEET_VIEW + (tweetIndex + 1), $(TWEET_VIEW + (tweetIndex + 1)).getStyle('left'), LEFT_HIDDEN_X, DURATION_HIDE).chain(
			function() {
				slide(leftTweet, leftTweet.getStyle('left'), LEFT_X, DURATION_HIDE).chain(
					function() {
						slide(centerTweet, centerTweet.getStyle('left'), CENTER_X, DURATION_HIDE).chain(
							function() {
								if(tweetIndex > 0)
								{
									slide(rightTweet, rightTweet.getStyle('left'), RIGHT_X, DURATION_HIDE).chain(
										function() {
											if(tweetIndex > 1)
											{
												slide(rightHiddenTweet, rightHiddenTweet.getStyle('left'), RIGHT_HIDDEN_X, DURATION_HIDE).chain(
													function() {
														animating = false;
														//slide(TWEET_VIEW + (tweetIndex),  CENTER_X, RIGHT_HIDDEN_X, DURATION_HIDE);
													}
												)
											}
										}
									)
								}
							}
						)
					}
				)
			}
		)
	}
	
	function setEvents()
		{
		
		$('wrapper').getElements('div.twitterViewNextButton').addEvent('click',
			function()
			{	
				if(animating)
					return;
					
				animating = true;
				hideRight = function() { return slide(TWEET_VIEW + (tweetIndex - 2), RIGHT_X, RIGHT_HIDDEN_X, DURATION_HIDE) };
				hideIntro = function() { return slide(INTRO_VIEW, RIGHT_X, RIGHT_HIDDEN_X, DURATION_HIDE) };
   		        doNothing = function() { return fade(INTRO_VIEW, 1.0, 1.0, 0) };
				
				CalculateX();		
				fade(TWEET_NB + tweetIndex, 1.0, 0.0, DURATION_FADE).chain(							
					function() {
						(function(){if(tweetIndex > 0) { return ((tweetIndex == 1) ? hideIntro() : hideRight())  }else{ return doNothing()}})().chain(
							function() {
							 	if(tweetIndex - 1 == 0) $(INTRO_VIEW).setStyle('opacity', 0.0);
								if(tweetIndex - 2 >= 0) $(TWEET_VIEW + (tweetIndex - 2)).setStyle('opacity', 0.0);
								fade(TWEET_CAL + (tweetIndex - 1), 1.0, 0.0, DURATION_HIDE).chain(
									function() {
										slide((tweetIndex == 0 ? INTRO_VIEW : TWEET_VIEW + (tweetIndex-1)),  CENTER_X, RIGHT_X, DURATION_SLIDE).chain(
											function(){
												fade((tweetIndex == 0 ? INTRO_PB : TWEET_PB + (tweetIndex - 1)), 0.0, 1.0, DURATION_FADE).chain(							
													function() { 
														changeBackground(NEXT, 
															function() {		
																slide(TWEET_VIEW + tweetIndex, LEFT_X, CENTER_X, DURATION_SLIDE).chain(
																	function() {
																		if(tweetIndex + 1 < tweetCount)
																		{					
																			$(TWEET_VIEW + (tweetIndex + 1)).setStyle('opacity', 1.0);	
																			slide(TWEET_VIEW + (tweetIndex + 1), LEFT_HIDDEN_X, LEFT_X, DURATION_HIDE).chain(
																				function() {  			
																					fade(TWEET_NB + (tweetIndex + 1), 0.0, 1.0, DURATION_FADE).chain(
																						function() {
																							fade(TWEET_CAL + (tweetIndex - 1), 0.0, 1.0, DURATION_HIDE);
																						}
																					);
																					
																					$(TWEET_PB + (tweetIndex + 1)).setStyle('opacity', 0.0);	
																					tweetIndex++;
																					animating = false;
																					return;
																				}
																			)
																		}
																		else
																		{
																			fade(TWEET_CAL + (tweetIndex), 0.0, 1.0, DURATION_HIDE);
																			tweetIndex++;
																			animating = false;
																			return;
																		}
																	}
																)
															}	
														)
													}
												)
											}
										)
									}
								)
							}
						)
					}
				)			
			}
		);
			
		
		
		
		$('wrapper').getElements('div.twitterViewPreviousButton').addEvent('click',
			function()
			{	
				if(animating)
				  return;
				  
				animating = true;
				
				CalculateX();
				fade((tweetIndex == 1 ? INTRO_PB : TWEET_PB + (tweetIndex - 2)), 1.0, 0.0, DURATION_FADE).chain(
					function() {
						slide(TWEET_VIEW + (tweetIndex), LEFT_X, LEFT_HIDDEN_X, DURATION_HIDE).chain(					
							function() {
								fade(TWEET_CAL + (tweetIndex - 1), 1.0, 0.0, DURATION_HIDE).chain(
									function() {							
										slide(TWEET_VIEW + (tweetIndex-1), CENTER_X, LEFT_X, DURATION_SLIDE).chain(					
											function() {
												fade(TWEET_NB + (tweetIndex-1), 0.0, 1.0, DURATION_FADE).chain(							
													function() { 
														changeBackground(PREVIOUS, 
															function() {
																slide(TWEET_VIEW + (tweetIndex - 2), RIGHT_X, CENTER_X, DURATION_SLIDE).chain(
																	function()
																	{
																		fade(TWEET_CAL + (tweetIndex - 2), 0.0, 1.0, DURATION_HIDE).chain(
																			function() {	
																				switch(tweetIndex)
																				{
																					case 1:  
																						slide(INTRO_VIEW, RIGHT_X, CENTER_X, DURATION_SLIDE);
																						tweetIndex--;
																						animating = false;
																						return;
																						break;
																					case 2: 
																						$(INTRO_VIEW).setStyle('opacity', 1.0);
																						slide(INTRO_VIEW, RIGHT_HIDDEN_X, RIGHT_X, DURATION_SLIDE).chain(
																							function() {
																								fade(INTRO_PB, 0.0, 1.0, DURATION_FADE);
																								tweetIndex--;
																								animating = false;
																								return;
																							}
																						)
																						break;
																					default: 
																						$(TWEET_VIEW + (tweetIndex - 3)).setStyle('opacity', 1.0);
																						slide(TWEET_VIEW + (tweetIndex - 3), RIGHT_HIDDEN_X, RIGHT_X, DURATION_SLIDE).chain(
																							function() {
																								fade(INTRO_PB, 0.0, 1.0, DURATION_FADE);
																								tweetIndex--;
																								animating = false;
																								return;
																							}
																						)
																						break;
																				}
																			}
																		)
																	}													
																)
															}	
														)										
													}
												)
											}
										)
									}
								)
							}
						)
					}
				)  				
			}
		)
	}
		 
	$('emailDiv').addEvent("mouseleave",
	function(event) {
		if(emailOpen)
		{		
		  emailOpen = false;	
		  fade(EMAIL, 1.0, 0.0, DURATION_HIDE);					  
		}
	});

	$('footerDiv').addEvent("click", function() {                          
	  if(!emailOpen)
	  {
		 emailOpen = true;
		 fade(EMAIL, 0.0, 1.0, DURATION_HIDE);
	  }
	}); 
		

	function getNextBackgroundNumber()
	{	
	    return (currentBackgroundImage - 1 ==  0 ? countBackgroundImages : currentBackgroundImage - 1);			
	}

	function getPreviousBackgroundNumber()
	{
		return (currentBackgroundImage + 1 >  countBackgroundImages ? 1 : currentBackgroundImage + 1);
	}
	
	function CalculateX()
	{
		var width;
		if (document.documentElement && document.documentElement.clientWidth) {
			width=document.documentElement.clientWidth;
		}else if (document.body) {
			width=document.body.clientWidth;
		}
	
		LEFT_X = buttonHandleWidth - tweetWidth;
		RIGHT_X = width - buttonHandleWidth;
		CENTER_X = (width / 2) - (tweetWidth / 2);
		LEFT_HIDDEN_X = -1 * tweetWidth;
		RIGHT_HIDDEN_X = width + tweetWidth;		
	}
		
})

		
	