/**
 * tab-style.js
 */

$(function(){
	
	// Class
	var TabActionManager = function(nClass, sClass){
		var normalClass   = nClass;
		var selectedClass = sClass;
		var previousTab   = null;
		var previousId    = -1;
		return {
			setId: function(id) {
				previousId = id;
			},
			id: function() {
				return previousId;
			},
			setTab: function(tab) {
				if(previousTab != null) {
					previousTab.addClass(normalClass);
					previousTab.removeClass(selectedClass);
				}
				previousTab = tab;
			}
		};
	};
	
	// Variables
	var tabSpeed             = 1000;
	var tabTimerCurrentCount = 0;
	var tabTimerMaxCount     = 10;
	var tabTotal             = $('div.tab-entry-holder').length;
	var tabTimerInt;
	var tabActionManager = new TabActionManager('tab-normal', 'tab-selected');
	tabActionManager.setTab($('a.tab-menu').eq(0));
	tabActionManager.setId(0);
	
	// Preload Images
	var tabImagesPreloadHolder = $('div#tab-layout-wrapper');
	var tabImageTemplate       = '<img src="%src%" width="575" height="330" alt="%alt%" title="" oncontextmenu="return false;" class="tab-image" />';
	
	tabImagesPreloadHolder.bind('PRELOAD_COMPLETE.TAB_IMAGES', function(){
		
		for(var i = 0; i < tabTotal; i ++) {
			var image = tabImageTemplate.replace('%src%', tabMeta[i].image);
			image     = image.replace('%alt%', tabImages[i].alt);
			$('div#tab-entry-image-holder-' + i).html(image);
		}
		
		var firstImageHolder = $('div#tab-entry-image-holder-0');
		firstImageHolder.css('opacity', 0);
		firstImageHolder.animate({opacity: 1}, 1000, 'easeInOutExpo', function(){
			$(this).css('filter', 'none');
			
			// Window Events
			if(tabTotal > 1) {
				$(window).bind('focus', function(){
					tabTimerCurrentCount = 0;
					clearInterval(tabTimerInt);
					tabTimerInt = window.setInterval(automateTab, tabSpeed);
				});
				$(window).bind('blur', function(){
					tabTimerCurrentCount = 0;
					clearInterval(tabTimerInt);
				});
			}
			
			
			// Events
			$('a.tab-menu').bind('click', function(e){
				
				// If Animation is happenging
				if($('div.tab-entry-holder').filter(':animated').length > 0 || tabTotal < 2) {
					return;
				}
				
				var currentTarget = $(e.currentTarget)
				var currentId     = currentTarget.attr('id');
				var results       = currentId.match(/tab-menu-([0-9]{1,})/i);
				var targetId      = parseInt(results[1]);
				if(tabActionManager.id() == targetId) return;
				
				currentTarget.removeClass('tab-normal');
				currentTarget.addClass('tab-selected');

				// Update the tab content
				var currentTab  = $('div#tab-content-' + tabActionManager.id());
				var nextTab    = $('div#tab-content-' + targetId);
				currentTab.stop(true, true).animate({opacity: 0}, 1000, 'linear', function(){
					$(this).css('filter', 'none');
					$(this).css('display', 'none');
				});
				nextTab.css('display', 'block');
				nextTab.css('opacity', 0);
				nextTab.stop(true, true).animate({opacity: 1}, 500, 'linear', function(){
					$(this).css('filter', 'none');
				});
				
				// Update TimerCount
				tabTimerCurrentCount = 0;
				
				// Update Mediator Data
				tabActionManager.setTab(currentTarget);
				tabActionManager.setId(targetId);
				
				Cufon.replace('a.tab-normal');
				Cufon.replace('a.tab-selected');
			});
			
			// Automate
			if(tabTotal > 1) {
				window.automateTab = function() {
					if(++ tabTimerCurrentCount > tabTimerMaxCount) {
						tabTimerCurrentCount = 0;
						var nextId = tabActionManager.id() + 1;
						if(nextId >= tabTotal) nextId = 0;
						$('a.tab-menu').eq(nextId).trigger('click');
					}
				}
				tabTimerInt = window.setInterval(automateTab, tabSpeed); 
			}
			
			
		});
	});
	
	tabImagesPreloadHolder.preload({
		images: tabImages,
		namespace: 'TAB_IMAGES'
	});
	
	
});
