var $DOM = YAHOO.util.Dom;
var $EVENT = YAHOO.util.Event;

// console.log('accordion.js');

var tasters = null;
var turn = null;
var spinner = null;
var spin = null;

var accordionHeight = 0;
var tasterHeight = 0;
var numberOfTasters = 0;
var detailHeight = 0;

var currentSelection = null;

function calculateDetailHeight() {
	
	var totalHeightOfTasters = tasterHeight * numberOfTasters;
	
	var ie7 = (document.all && !window.opera && window.XMLHttpRequest) ? true : false;
	
	if (ie7) {
		accordionHeight = accordionHeight - 17;
	}
	
	detailHeight = accordionHeight - totalHeightOfTasters;
	// alert(detailHeight);
}


function init() {
	// console.log('init');	
}

function hideKey(key, hide) {
	$EVENT.removeListener(tasters, 'click');
	
	currentSelection = key;
	key.className = 'taster-selected';
	var myAnim = new YAHOO.util.Anim(key, { height: { to: detailHeight } }, 0.8, YAHOO.util.Easing.easeBoth);
	myAnim.animate();
	
	var visible = function() { hide.className = 'taster-detail'; $EVENT.on(tasters, 'click', handleClick); } 
	var myAnim = new YAHOO.util.Anim(hide, { height: { to: 0 } }, 0.8, YAHOO.util.Easing.easeBoth);
	myAnim.onComplete.subscribe(visible);
	myAnim.animate();
}

function showKey(key) {
	//console.log(key);
	$EVENT.removeListener(tasters, 'click');
	key.className = 'taster-selected';
	var enable = function() { $EVENT.on(tasters, 'click', handleClick); } 
	var myAnim = new YAHOO.util.Anim(key, { height: { to: detailHeight } }, 0.8, YAHOO.util.Easing.easeBoth);
	myAnim.onComplete.subscribe(enable);
	myAnim.animate();
	$EVENT.removeListener(tasters, 'click');
}

function timer(){

	
	spin = setInterval(function(){
								   
								   
	

	//console.log(numberOfTasters);
	
	if(turn == null ){
	
	spinner = $DOM.get('taster-detail-1');
	currentSelection = spinner;

	showKey(spinner);
	turn = 1;
	
	}else{
		
    if($DOM.get('taster-detail-'+turn)){
	spinner = $DOM.get('taster-detail-'+turn);	
	hideKey(spinner, currentSelection);
	currentSelection = spinner;
	}
	
	//spinner = $DOM.get('taster-detail-'+turn);
	//hideKey(spinner, currentSelection);
	//currentSelection = spinner;
	}
	
	if(numberOfTasters == turn){
		turn = null;
	//console.log(turn);
	
	}else{
		turn = turn+1;
	}
	
}
								   
								   
								   , 8000);
}


function kick(){
	spinner = $DOM.get('taster-detail-1');
	currentSelection = spinner;

	showKey(spinner);
	turn = 2;
	
}

function handleClick(e) {
	
	clearInterval(spin);
	

	var target = EVENT.getTarget(e);

	 //console.log(target);

	if ('a' == target.nodeName.toLowerCase()) {
		return;
	}
	
	var currentTaster = target;
	
	if ('li' != target.nodeName.toLowerCase()) {
		
		currentTaster = $DOM.getAncestorBy(target, function(el){
			return $DOM.hasClass(el, 'taster');
		});
	
		if (!currentTaster){
			return;
		}
		
	}
	//console.log(currentTaster);
	// get key details
	var tag = 'taster-detail-' + currentTaster.id.substring(7);
	var key  = $DOM.get(tag);
	
	//console.log(key);
	
	if (null == currentSelection) {
		showKey(key);
		currentSelection = key;
	} else {
		if (key != currentSelection) {
			hideKey(key, currentSelection);
		}
	}
	//console.log(key);
}


//function spin(taster){
	
//	console.log(numberOfTasters);
	
	//if(turn == null ){
	
	//spinner = $DOM.get('taster-detail-1');
	//currentSelection = spinner;

	//showKey(spinner);
	//turn = "2";
	
	//}else{
		
   // spinner = $DOM.get('taster-detail-'+turn);

	//hideKey(spinner, currentSelection);
	//currentSelection = spinner;
	//}
	
	//turn = turn++
	//console.log(turn);
	
//}

function handleStop(e) {
clearInterval(spin);	
}

function handleMoveout(e) {
//console.log("moved out ");
timer();
}


$EVENT.onDOMReady(function(){

 	//alert("test");

	var left = $DOM.getElementsByClassName('left', 'div');
	var leftHeight = left[0].offsetHeight;
	
	element = $DOM.getElementsByClassName('right', 'div');
	element[0].style.height = leftHeight + 'px';

	accordionHeight = leftHeight;
	
	tasters = $DOM.getElementsByClassName('taster', 'li');
	
	numberOfTasters = tasters.length;
	tasterHeight = tasters[0].offsetHeight;
	
	calculateDetailHeight();
	
	//console.log(numberOfTasters);
	
	kick();
	timer();
	
	if (element) {
		$EVENT.on(tasters, 'mousedown', handleClick);
		$EVENT.on(tasters, 'mouseover', handleStop);
		$EVENT.on(tasters, 'mouseout', handleMoveout);
	}
	
});