// M E T H O D IT HOMEPAGE PROMO TABS + CONTENT SLIDER JS

//// VARS
var tabOpen=null;
var tabClicked=null;

//// JQUERY INIT.
$(document).ready(function() {
	
	initTabs();	
	
});

//////////////// TAB NAV.

//initialize promo tabs
function initTabs(){	
	
	//hide content holders
	var tabContainers=$('#promos > div');
	tabContainers.hide();
	
	//deep linking
	$("#promos #promoNav a").address();
	
	//link click actions
	$("#promos #promoNav a").click(function(){
											
		clickTab($(this),'internal');		
		return false;
	});
	// end link click actions	
}


//click on a tab
function clickTab(theLink, source){
	
		resetOtherComponents("promos");											
		
		var targetElement=$("#promoContent");
		var contentId=$(theLink).data('idnum');
		var contentName=$(theLink).data('idname');
		
		tabClicked=contentId;			

		if(tabClicked!=tabOpen){
			$('#promoContent #sliderMessage').show().html(LOADING_IMG);
			$('#promoContent').removeClass().addClass(contentName);
			$(targetElement).slideDown(250, function(){
				tabOpen=contentId;
				getTabContent(contentId);				
			});
			$("#promos #promoNav a").removeClass('active');
			$(theLink).addClass('active');
			$("#promos #promoNav h3").removeClass('active');
			$(theLink).parent().addClass('active');

		} else if(source=="internal"){
			$(targetElement).slideUp(250, function(){
				tabOpen=null;
				resetContentSlider();
				$('#promoContent').removeClass();
			});
			$("#promos #promoNav h3").removeClass('active');
			$("#promos #promoNav a").removeClass('active');
		};
}

//get ext. data for tab contents
function getTabContent(id){
	
	resetContentSlider();
	
	////load xml
	$.ajax({
    type: "GET",
    url: FEED_URL+id,
    dataType: "xml",
    success: function(data){
		$('#promoContent #sliderMessage').hide();
		 var contentExists=$(data).find("item").length;
		 (contentExists)? parseTabContent(data) : failTabContent();
	},
	error: failTabContent
  	});
}

//generate tab html from xml data
function parseTabContent(data){
	//get html content
	var panelHtml=$("<ul></ul>");

	$(data).find("item").each(function(i){

		var itemHtml=$('<li id="tabContent'+(i+1)+'"><span></span></li>');
		
		var subItemCount=$(this).find("subitem").length;
		
		if(subItemCount==0 || subItemCount>2){
			//no or too much content
			failTabContent();
			return false;
		} else{
			//check for single or two-column layout
			var isSingleColumn;
			(subItemCount==1)? isSingleColumn=true : isSingleColumn=false;
		};
		
		$(this).find("subitem").each(function(i){
			var subItemText=$(this).text();
			if(isSingleColumn){
				$("span:first", itemHtml).addClass("singleColumn").html(subItemText);
			} else{
				$("span:first", itemHtml).append('<span class="column">'+subItemText+'</span>');
			}
		});
		
		$(panelHtml).append(itemHtml);
	 		
	});
	
	$("#sliderContent").html(panelHtml);
	$("#sliderContent").show();
	initContentSlider();
}

//fail xml data
function failTabContent(){
	
	var errorMsg;
	
	try{
		errorMsg=languageHelper.strings.loadErrorPromo;
	} catch(err) {
		errorMsg="Unable to load content, please try again";		
	}

	$('#promoContent #sliderMessage').show().text(errorMsg);
};


//////////////// CONTENT SLIDER

//// content slider vars
var currentPanel=0;
var totalPanels=0;

//initialize new content slider
function initContentSlider(){	
	
	var sliderWidth=$('#sliderWrapper').outerWidth();
	var sliderHeight=$('#sliderWrapper').outerHeight();
	var sliderPadding = parseInt($('#sliderWrapper').css('padding-left'));
	var contentCount=$('#sliderContent').find('li').length;

	totalPanels=contentCount;
	
	$('#sliderContent li').css({
		'width': $('#sliderWrapper').width(),
		'height': $('#sliderWrapper').height(),
		'padding': '0px '+sliderPadding+'px'
	});
	
	$('#sliderContent').css({
		'width': sliderWidth*contentCount,
		'height': $('#sliderWrapper').height()
	});
	
	//create nav links
	$("#sliderNav").append('<ul></ul>');
	$('#sliderContent li').each(function(i){
		$("#sliderNav ul").append('<li><a href="#'+$(this).attr('id')+'" rel="'+(i+1)+'">Page '+(i+1)+'</a></li>');
	});
	
	
	//page nav link click actions
	$("#sliderNav a").click(function(){
		var id=$(this).attr('rel');
		currentPanel=id;
		highlightSliderNav(id);
		updateArrowStatus();
		$('#sliderContent').animate({left:-sliderWidth*(id-1)}, 500, 'easeOutSine');
		return false;
	});
	
	//prev/next arrows
	if($("#sliderNav ul li").length>1){
		$('#sliderArrows').html('<a href="#" id="sliderArrowPrev">&lt; '+languageHelper.strings.btnPrev+'</a><a href="#" id="sliderArrowNext">'+languageHelper.strings.btnNext+' &gt;</a>').show();
		updateArrowStatus();
	} else {
		$('#sliderNav ul').hide();
	}
	
	$("#sliderArrowPrev").click(function(){
		moveSlider(false, sliderWidth);
		return false;
	});
	
	$("#sliderArrowNext").click(function(){
		moveSlider(true, sliderWidth);
		return false;
	});	
	
	//select first item
	$("#sliderNav a:first").click();
	
};


//prev/next arrow settings
function updateArrowStatus(){
	
	$("#sliderArrowPrev").show();
	$("#sliderArrowNext").show();
	
	if(currentPanel==totalPanels){
		$("#sliderArrowNext").hide();		
	} else if (currentPanel<=1) {
		$("#sliderArrowPrev").hide();
	}
	
}

//highlight active panel
function highlightSliderNav(id){
	$('#sliderNav a').removeClass('active');
	$('#sliderNav a[rel*='+id+']').addClass('active');
};

//move to previous/next panel
function moveSlider(dir, dist){
	
	//true=next, false=prev.
	
	if(dir==true && currentPanel!=totalPanels){
		currentPanel++;
	}else if (dir==false && currentPanel!=1) {
		currentPanel--;
	}
	
	updateArrowStatus();
	
	$('#sliderContent').animate({left:-dist*(currentPanel-1)}, 500, 'easeOutSine');
	highlightSliderNav(currentPanel);
	
};

//put slider contents back to a null state
function resetContentSlider(){
	$("#sliderArrowPrev").unbind();
	$("#sliderArrowNext").unbind();
	$('#sliderArrows').hide();
	$("#sliderNav").empty().show();
	$("#sliderContent").empty();
	$('#sliderContent').css({
		'left': 0
	});
	$("#sliderContent").hide();
	currentPanel=0;
	totalPanels=0;
};
