// carousel item
var carousel_item_index = new Array();

function toggleTabState(tab_key) {
	var tab_ele = jQuery("#" + tab_key);
	var target_ele = jQuery('#teasercol-' + tab_key);
	var list_ele = tab_ele.parent("ul");
	
	// hide all
	list_ele.children().each(function(){
    	var child = jQuery(this);
    	child.removeClass('active');
    	var content_ele_id = "#teasercol-" + child.attr("id");
		jQuery(content_ele_id).hide();
    });
	
	// show target
	target_ele.show();
	tab_ele.addClass('active');
}

// video lightboxing
var curr_window_ref;

function closeLightBox()
{
	jQuery('#' + curr_window_ref).closeDOMWindow(); 
}

function openVideoPlayer(source_id,video_ref)
{   
	curr_window_ref = video_ref;
	
    jQuery.openDOMWindow({ 
    	width: 960,
    	height: 400,
    	windowBGColor: 'none',
    	borderSize: '0',
    	functionCallOnOpen: writeVideoPlayerObject(source_id, video_ref),
        windowSourceID:'#' + source_id
    }); 
}; 

// carousel js
var carousel_item_index = new Array();

function initCarousel(unique_key, max_items)
{
	carousel_item_index[unique_key] = 0;

	for (i = 1; i <= max_items; i++)
	{
		jQuery('#carouselItem-' + unique_key + '-' + i).hide();
	}
}

function resetCarousel(unique_key, max_items, sp_index)
{
	for (i = 0; i <= max_items; i++)
	{
		if (carousel_item_index[unique_key] == i)
			jQuery('#carouselItem-' + unique_key + '-' + i).fadeOut(600,function() { jQuery('#carouselItem-' + unique_key + '-' + sp_index).show().fadeOut(0).fadeIn(600); });
		else if (sp_index != i)
			jQuery('#carouselItem-' + unique_key + '-' + i).hide();
	}	
}

function carouselToggleIndex(uniquekey, itemindex)
{		
	var ele_prefix = '#carouselItem-' + uniquekey + '-';
	var curr_index = carousel_item_index[uniquekey];
	var tab_off_id = '#' + uniquekey + '-tab-' + curr_index;
	var tab_on_id = '#' + uniquekey + '-tab-' + itemindex;
	
	if (curr_index != itemindex)
	{
		next_index = itemindex;
		
		jQuery(tab_off_id).removeClass("active");
		// alert(tab_off_id + ":" + tab_on_id);
		jQuery(tab_on_id).addClass("active");

		resetCarousel(uniquekey,8,next_index);
		
		//carouselTransition(ele_prefix + curr_index, ele_prefix + next_index);
		
		curr_index = next_index;
		carousel_item_index[uniquekey] = Number(curr_index);
	}
}

function carouselToggleNext(uniquekey,max_items) {
	if (max_items != 1)
	{
		var next_index;
		var ele_prefix = '#carouselItem-' + uniquekey + '-';
		var curr_index = carousel_item_index[uniquekey];
		
		if (curr_index == Number(max_items - 1))
			next_index = 0;
		else
			next_index = curr_index + 1;
		
		resetCarousel(uniquekey,max_items,next_index);
			
		//carouselTransition(ele_prefix + curr_index, ele_prefix + next_index);
		
		curr_index = next_index;
		carousel_item_index[uniquekey] = Number(curr_index);
	}
}

function carouselTogglePrev(uniquekey,max_items) {
	if (max_items != 1)
	{
		var prev_index;
		var ele_prefix = '#carouselItem-' + uniquekey + '-';
		var curr_index = carousel_item_index[uniquekey];
		
		if (curr_index == 0)
			prev_index = Number(max_items - 1);
		else
			prev_index = Number(curr_index - 1);
			
		resetCarousel(uniquekey,max_items,prev_index);
		//carouselTransition(ele_prefix + curr_index, ele_prefix + prev_index);
		
		curr_index = prev_index;	
		carousel_item_index[uniquekey] = curr_index;
	}
}

function carouselTransition(from_ele, to_ele)
{
	var hasFromImgText = false;
	var hasToImgText = false;
		
	if (jQuery(from_ele + " > .imgText")) 	hasFromImgText = true;		
	if (jQuery(to_ele + " > .imgText"))		hasToImgText = true;
	
	// make sure to element is visible in the dom
	if (hasToImgText) 
	{
		jQuery(to_ele + " > .imgText").fadeTo(0,0);
		jQuery(to_ele + " > .imgText").show();
		jQuery(to_ele + " > .imgText").fadeTo(0,0);
	}
	
	jQuery(to_ele).fadeTo(0,0);	
	jQuery(to_ele).show();
	jQuery(to_ele).fadeTo(0,0);
	
	// fade out the from elements in parallel
	if (hasFromImgText) jQuery(from_ele + " > .imgText").fadeTo(600,0);
	
	jQuery(from_ele).fadeTo(600,0, function() { 
		// once completed, fade up the to elements in parallel
		if (hasToImgText) jQuery(to_ele + " > .imgText").fadeTo(600,100.0);
		jQuery(to_ele).fadeTo(600,100.0);	
	});
	
	//jQuery(from_ele).hide();
	//if (hasFromImgText) jQuery(from_ele + " > .imgText").hide();	
	
}

// media player panel update
function updateMediaPanels(state) {
	var flash = document.getElementById("mediaplayer");
	flash.updatePanels(state);
}

// psn signin

function launchSignIn(signin_url, append_url, locale)
{		
	var language = "en";
	if (locale.indexOf("_") > -1)
		language = locale.substr(0,2);
	
	var url = signin_url + "?locale=" + language + "&returnURL=" + escape(append_url);
	
    jQuery.openDOMWindow({ 
    	width: 400,
    	height: 400,
    	positionType: 'centered',
    	windowBGColor: 'none',
    	borderSize: '0',
        windowSourceID:'#signIn'
    }); 
    
    jQuery("#psn_signin").attr("src",url);
}

function closeSignIn(refresh) {
	jQuery('#signIn').closeDOMWindow();
	var send_loc = window.location.href;
	if (send_loc.indexOf("forumSignin") > -1)
	{
		//send_loc = curr_loc.replace("forumSignin=true","null=null");
		send_loc = "http://forums.mag.com/";
	}
	window.location.href=send_loc;
}


// suckerfish dropdowns
sfHover = function() {
	var sfEls = document.getElementById("primaryNav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}

jQuery(document).ready(function() {	sfHover() });


// preload images
var cache = [];

function preLoadImages() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
}


