
//-----------
//TABS

//setup some tabs
function setupTabs() {
	
	//vars
	var args = setupTabs.arguments;
	
	if(args[0] instanceof Array) {
		args = args[0];
	}
	
	//loop through agruments
	for (var i=0; i<args.length; i+=2) {
		if (!$(args[i])) continue;

		//get args
		var tab = $(args[i]);	
		var win = $(args[i+1]);
		
		//check if tab is deactivated
		if (tab.hasClass('deact')) continue;
		
		//apply link
		tab.addEvent('click', chooseTab);
		
		//save list of windows
		tab.show_win = win;
		tab.hide_tabs = new Array();
		tab.hide_wins = new Array();
		for (var j=0; j<args.length; j+=2) {
			if (j == i) continue;
			if (!$(args[j])) continue;
			tab.hide_tabs.push($(args[j]));
			tab.hide_wins.push($(args[j+1]));
		}
	}
}

//swap the tabs
var last_chooseTab_time;
function chooseTab() {
	
	//don't allow fast clicks
	if (!window.ie6) {
		var now = new Date();
		if (now - last_chooseTab_time < 500) return;
		last_chooseTab_time = now;
	}
	
	//if already selected, disallow
	if (this.hasClass('on')) return;
	
	//show the current tab
	this.addClass('on');
	
	//show the current window
	if(this.show_win.hasClass('hide')) {
		this.show_win.removeClass('hide');	
	}

	
	//animate it in // -- disabled because IE 6 was crashing
	if (!window.ie6) {
		var fx = new Fx.Style(this.show_win, 'opacity', { duration: 200 });
		fx.start(.8,1);
	}
	
	//hide the rest of the tabs
	for (var i=0; i<this.hide_tabs.length; i++) {
		if (this.hide_tabs[i].hasClass('on')) this.hide_tabs[i].removeClass('on');
	}
	
	//hide the rest of the windows
	for (var i=0; i<this.hide_wins.length; i++) {
		if (!this.hide_tabs[i].hasClass('hide')) this.hide_wins[i].addClass('hide');
	}
	
}

//-----------
//PAGINATION

//setup pagination
function setupPagination(id) {
	
	//only run once
	if ($(id).setup == true) return;

	//configuration options
	$(id).setup = true;
	$(id).offset = $$('#'+id+' .item0')[0].getTop() - $(id).getTop();
	$(id).i = 0;
	
	//increase padding of last item
	var tag = $$('#'+id+' .item0')[0].getTag();
	var last = $(id).getElements(tag).getLast();
	last.setStyle('padding-bottom', $(id).offset);

}

//get scroll setting
function getPaginationScroll(id) {
	return new Fx.Scroll(id, {
		wait: false,
		duration: 500,
		offset: {x:0, y: -$(id).offset}
	});
}

//the back arrow
function pageBack(id, d) {
	setupPagination(id);
	pageChange(id, $(id).i - d);

}

//the front arrow
function pageNext(id, d) {
	setupPagination(id);
	pageChange(id, $(id).i + d);
}


//go to a certain page
function pageChange(id, i) {
	setupPagination(id);

	//get the target element, abort if it's not found
	var el = $$('#'+id+' .item'+i)[0];
	if (!el) return;

	//get the scroll setup
	var scroll = getPaginationScroll(id);
	
	//run scroll
	$(id).i = i;
	scroll.toElement(el);
	
	//toggle on
	var butt = $$('#controls_'+id+' .item'+i)[0];
	$$('#controls_'+id+' a').removeClass('on');
	butt.addClass('on');
	
	//scroll the thumbs
	var w = $$('#controls_'+id+' .pagination_controls_mask')[0].getStyle('width').toInt();
	var scroll = new Fx.Scroll($$('#controls_'+id+' .pagination_controls_mask')[0], {
		wait: false,
		duration: 500,
		offset: {x:-w/2, y: 0}
	});
	scroll.toElement(butt);
	
}

//-----------
//GALLERY

function showCaption(id) {
	$('imageCaption-default').setStyles({
		display: 'none'
	});
	$(id).setStyles({
		display: 'block'
	});
}

function hideCaption(id) {
	$(id).setStyles({
		display: 'none'
	});
	$('imageCaption-default').setStyles({
		display: 'block'
	});
}

//--------------------
//GLOBAL SETUP

//setup navigation
window.addEvent('domready', function() {
	
	//the selectors
	var target = 'n2kfamily';
	var menu = 'family';
	
	//the effect
	var slide = new Fx.Style(menu ,'left', {wait:false, duration:400, transition: Fx.Transitions.Cubic.easeOut});
	var fade = new Fx.Style(menu ,'opacity', {wait:false, duration: 200, transition: Fx.Transitions.Cubic.easeIn});
	
	//clear the initial hide
	if($(menu)) {
		$(menu).setOpacity(0);
		$(menu).removeClass('hide');		
	}

	if($(target)) {
		
		//rollover
		$(target).addEvent('mouseenter', function() {
			slide.start(640, 282);
			fade.start(0, 1);
		});	
		
		//rollout
		$(target).addEvent('mouseleave', function() {
			slide.start(282, 640);
			fade.start(1, 0);
		});	
	}
	
	var loginInput = $('userloginemail');
	var passwordInput = $('userloginpassword');


	if(loginInput && passwordInput) {
		if(loginInput.value != '') {
			loginInput.addClass('active');
		}

		if(passwordInput.value != '') {
			passwordInput.addClass('active');
		}


		loginInput.addEvent('focus', function() {
			loginInput.addClass('active');
		});

		loginInput.addEvent('blur', function() {
			if(loginInput.value != '') {
				loginInput.addClass('active');
			} else {
				loginInput.removeClass('active');
			}
		});	

		passwordInput.addEvent('focus', function() {
			passwordInput.addClass('active');
		});

		passwordInput.addEvent('blur', function() {
			if(passwordInput.value != '') {
				passwordInput.addClass('active');
			} else {
				passwordInput.removeClass('active');
			}
		});		
	}	
	
	
	if($('hot_forum_select')) {
		var select = $('hot_forum_select');
		select.addEvent('change', function() {
			var slug = select.options[select.selectedIndex].value;
			$$('#frommembers .span-5 table').each(function(el, i) {
				if(el.hasClass(slug)) {
					el.removeClass('hide');
				} else {
					el.addClass('hide');
				}
			})
		})
	}

	
});

var players = new Array();
var waitToLoad = null;
function playerReady(obj) {
	clearTimeout(waitToLoad);
	var id = obj['id'];
	var version = obj['version'];
	var client = obj['client'];
	
	if(obj['id'] == 'single-00') {
		getPlayer('single-00').sendEvent("PLAY", true);
	}
	
	players.push(id);
	
	waitToLoad = setTimeout('loadPlayerEvents();', 200);
};

function getPlayer(gid) {
	if(navigator.appName.indexOf("Microsoft") != -1) {
		return window[gid];
	} else {
		return document[gid];
	}
};

function loadPlayerEvents() {
	if(players.length > 0) {
		for(var i = 0; i < players.length; i++) {
			var playerId = players[i];
			//console.log(playerId);

			var player = getPlayer(playerId);
			//console.info(player);
			if(player) {
				player.addModelListener("STATE", "stateChangeEvent");
			}

		}		
	}
}

function stateChangeEvent(obj) {
	// console.log('old state: '+ obj['oldstate']);
	// console.log('new state: '+ obj['newstate']);	
	// console.log('state change heard. playing the next player.');
	// console.log(obj['id']);

	if(obj['newstate'] == 'COMPLETED') {
		var nextPlayer = getNextPlayer(obj['id']);
		nextPlayer.sendEvent("PLAY", true);
		
		// console.info($$('.item'));
		
		$$('.item').each(function(item) {
			item.removeClass('active');
		});
		
		var parent = nextPlayer.parentNode;
		while(!parent.hasClass('item')) {
			parent = parent.parentNode;
			// console.info(parent);
		}
		parent.addClass('active');
	}
	
	if(obj['newstate'] == 'PLAYING') {
		for(var i = 0; i < players.length; i++) {
			var playerId = players[i];
			
			if(playerId != obj['id']) {
				var player = getPlayer(playerId);
				player.sendEvent("STOP", true);
			}
			
		}
		
		$$('.item').each(function(item) {
			item.removeClass('active');
		})
		
		var parent = $(obj['id']).parentNode;
		while(!parent.hasClass('item')) {
			parent = parent.parentNode;
			// console.info(parent);
		}
		parent.addClass('active');
	}

}

function getNextPlayer(id) {
	// console.log(id);
	var number = parseInt(id.split('-0')[1]);
	// console.log(number);
	var nextIndex = number+1;
	if(nextIndex >= players.length) {
		nextIndex = 0;
	}
	// console.log(nextIndex);
	// console.info(getPlayer('single-0'+nextIndex));
	return getPlayer('single-0'+nextIndex);
}


function autoplay() {
	var player = getPlayer('single-00');
	player.sendEvent("PLAY", true);
}


//launch the player
function launchBeats(game_id) {
	
	//stop all players if one's playing.
	if (players.length > 0) {
		for(var i = 0; i < players.length; i++) {
			var playerId = players[i];

			var player = getPlayer(playerId);
			player.sendEvent("STOP", true);
		}
	}


	//open music player
	window.open('/player/'+game_id,
		"player",
		"status=0, toolbar=0, location=0, menubar=0, directories=0, resizable=0, scrollbars=0, width=441, height=510");
}

//open popup window
function launchPopup(page,width,height) {
	//open window
	window.open('/'+page,
		"player",
		"status=0, toolbar=0, location=0, menubar=0, directories=0, resizable=0, scrollbars=0, width="+width+", height="+height+"");
}


