
/*

	Showcase.js
	Showcase and MPU functions

*/


/*
function HideContent(d) {
	if(d.length < 1) { return; }
	document.getElementById(d).style.display = "none";
}

function ShowContent(d) {
	if(d.length < 1) { return; }
	document.getElementById(d).style.display = "block";
}

function ReverseContentDisplay(d) {
	if(d.length < 1) { return; }
	if(document.getElementById(d).style.display == "none") { document.getElementById(d).style.display = "block"; }
	else { document.getElementById(d).style.display = "none"; }
}

function ShowBananaSubMenu(subMenuId, topPx) {
	ShowContent(subMenuId);
	document.getElementById(subMenuId).style.top = topPx+'px';	
	}
*/
		
/* 
	Horizontal sliding MPU
	from http://www.leigeber.com/2008/05/ultimate-javascript-scroller-and-slider/ 
*/
var SLIDETIMER = 3;
var SLIDESPEED = 3;
var SCROLLTIMER = 3;
var SCROLLSPEED = 3;
var STARTINGOPACITY = 40;

// handles section to section scrolling of the content //
function slideContent(id,prefix,timer) {
  var div = document.getElementById(id);
  var slider = div.parentNode;
  clearInterval(slider.timer);
  var idLength,posOfHyphen;
  idLength=id.length;
  posOfHyphen=id.indexOf('-');
  var slicedAndDiced;
  slicedAndDiced=id.substring(posOfHyphen+1,idLength);// id.replace(/\D/g,'');
  slider.section = parseInt(slicedAndDiced);
  slider.target = div.offsetLeft; /* offsetTop */
  slider.style.left = slider.style.left || '0px';
  slider.current = slider.style.left.replace('px','');
  slider.direction = (Math.abs(slider.current) > slider.target) ? 1 : -1;
  slider.style.opacity = STARTINGOPACITY * .01;
  slider.style.filter = 'alpha(opacity=' + STARTINGOPACITY + ')';
  slider.timer = setInterval( function() { slideAnimate(slider,prefix,timer) }, SLIDETIMER);
}

function slideAnimate(slider,prefix,timer) {
  var curr = Math.abs(slider.current);
  var tar = Math.abs(slider.target);
  var dir = slider.direction;
  if((tar - curr <= SLIDESPEED && dir == -1) || (curr - tar <= SLIDESPEED && dir == 1)) {

    slider.style.left = (slider.target * -1) + 'px';
	slider.style.opacity = 1;
	slider.style.filter = 'alpha(opacity=100)';
    clearInterval(slider.timer);
	if(slider.autoscroll) {
	  setTimeout( function() { autoScroll(slider.id,prefix,timer) }, timer * 1000);
	}
  } else {
	var pos = (dir == 1) ? parseInt(slider.current) + SLIDESPEED : slider.current - SLIDESPEED;
    slider.current = pos;
   // alert('pos='+pos);
    slider.style.left = pos + 'px';
    
  }
}

// handles manual scrolling of the content //
function scrollContent(id,dir) {
  var div = document.getElementById(id);
  clearInterval(div.timer);
  var sections = div.getElementsByTagName('li');
  var length = sections.length/2; // 4 accounts for inner LI elements
  var limit;
  if(dir == -1) {
    limit = 0;
  } else {
    if(length > 1) {
      limit = sections[length-1].offsetLeft;
  //    alert('limit='+limit+',length='+length);
     limit=900;
    } else {
      limit = sections[length-1].offsetWidth - div.parentNode.offsetWidth + 20;
      limit=900;
    }
  }
  div.style.opacity = STARTINGOPACITY * .01;
  div.style.filter = 'alpha(opacity=' + STARTINGOPACITY + ')';
  div.timer = setInterval( function() { scrollAnimate(div,dir,limit) }, SCROLLTIMER);
}

function scrollAnimate(div,dir,limit) {
  div.style.left = div.style.left || '0px';
  var left = div.style.left.replace('px','');
  if(dir == 1) {
	if(limit - Math.abs(left) <= SCROLLSPEED) { // top
	  cancelScroll(div.id);
	  div.style.left = '-' + limit + 'px';
	} else {
	  div.style.left = left - SCROLLSPEED + 'px';
	}
  } else {
	if(Math.abs(left) - limit <= SCROLLSPEED) {
	  cancelScroll(div.id);
	  div.style.left = limit + 'px';
	} else {
	  div.style.left = parseInt(left) + SCROLLSPEED + 'px';
	}
  }
}

// cancel the scrolling on mouseout //
function cancelScroll(id) {
  var div = document.getElementById(id);
  div.style.opacity = 1;
  div.style.filter = 'alpha(opacity=100)';
  clearTimeout(div.timer);
}

// initiate auto scrolling //
function autoScroll(id,prefix,timer,restart) {
  var div = document.getElementById(id);
  div.autoscroll = (!div.autoscroll && !restart) ? false : true;
  if(div.autoscroll) {
    var sections = div.getElementsByTagName('li');
    var length = 10; // sections.length/2; // /2-accounts for inner li's
    div.section = (div.section && div.section < length) ? div.section + 1 : 1;
    slideContent(prefix + '-' + div.section,prefix,timer);
  }
}

// cancel automatic scrolling //
function cancelAutoScroll(id) {
  var div = document.getElementById(id);
  div.autoscroll = false;
}

function SetItemWidth(itemName,width) {
  var div = document.getElementById(itemName);
  if (div!=null) {
	div.style.width=width+'px';
	}
}

function SetItemOverflow(itemName,overflow) {
  var div = document.getElementById(itemName);
  if (div!=null) {
	div.style.overflow='hidden'; //overflow;
	}
}

/* Stage */

function HideAllFrames(stageContainerId) {
	var div = document.getElementById(stageContainerId);	
	clearInterval(div.timer);
	var sections = div.getElementsByTagName('div');
	for(i=0; i<sections.length; i++) {
		 if (sections[i].id.indexOf('_frame'+i)!=-1) {
			sections[i].style.display='none';
		}		
	}
}

function HideFrame(stageContainerId, frameId) {
	var div = document.getElementById(stageContainerId);	
	clearInterval(div.timer);
	var frame=document.getElementById(stageContainerId+'_frame'+frameId);
	if (frame) {
			frame.style.display='none';
		}		
	
}

function PlayFromFrame(stageContainerId,frameId,maxFrames) {
	
	var div = document.getElementById(stageContainerId);	
	clearInterval(div.timer);
	var playFrame=document.getElementById(stageContainerId+'_frame'+frameId);
	playFrame.style.display='block';
	var newFrameId;
	newFrameId=frameId+1;
	//alert('newFrameId='+newFrameId+',maxFrames='+maxFrames);
	if (newFrameId>maxFrames) newFrameId=1;
	div.timer = setInterval( function() { HideFrame(stageContainerId,frameId); PlayFromFrame(stageContainerId,newFrameId,maxFrames) }, 10000);
}
		
/* 
	Banana sub-menus
	from http://javascript-array.com/scripts/simple_drop_down_menu/ 
*/

var timeout	= 500;
var closetimer	= 0;
var ddmenuitem	= 0;

// open hidden layer
function ShowBananaSubMenu(id,topPx)
{	
	// cancel close timer
	CancelHideBananaSubMenu();

	// close old layer
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';

	// get new layer and show it
	ddmenuitem = document.getElementById(id);	
	ddmenuitem.style.visibility = 'visible';
	ddmenuitem.style.top = topPx+'px';	

}
// close showed layer
function HideBananaSubMenu()
{
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';
}

// go close timer
function DelayHideBananaSubMenu()
{
	closetimer = window.setTimeout(HideBananaSubMenu, timeout);
}

// cancel close timer
function CancelHideBananaSubMenu()
{
	if(closetimer)
	{
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}

// close layer when click-out
document.onclick = HideBananaSubMenu; 
		
