/* 
	Scroll effect on shopping_cart_tour.html & shopping_cart_ecommerce_101.html
*/


/*	Global variables */
var scrollJump = 880;
var scrollSpeed = 2;
var scrollElement = 'screenContents';
var currentSection = 'tab-1';
var imageObjects = [];
var currImage = 0;

//	Highligh the first tab as active
function primeToolbar()
{

	if(!document.getElementById('screenContents')) return false;
	addClass(document.getElementById(currentSection), "active");
	if (document.getElementById(currentSection+"-bottom"))
		addClass(document.getElementById(currentSection+"-bottom"), "active");

	if(hasClass(document.getElementById('welcomeScreen'), "white")) {
		resizeHiliteColumns();
	}

	return true;


}
addLoadEvent(primeToolbar);


//	Update highlighed menu tab and work out scroll amount
function initScroll(hook) 
{
	// adjust the menu tabs
	previousSection = currentSection;
	currentSection = hook;

	addClass(document.getElementById(currentSection), "active");
	if (document.getElementById(currentSection+"-bottom"))
		addClass(document.getElementById(currentSection+"-bottom"), "active");
	removeClass(document.getElementById(previousSection), "active");
	if (document.getElementById(currentSection+"-bottom"))
		removeClass(document.getElementById(previousSection+"-bottom"), "active");

	// call the scroll routine
	scrollAmount = hook.split("-")[1];
	scrollLeft = ((scrollAmount*scrollJump)*-1)+scrollJump;
	slideElement(scrollElement, scrollLeft, 0, scrollSpeed)
}



//	slideElement: Adapted from scroll routine by Jeremy Keith (http://adactio.com/)
function slideElement(elementId, x, y, inc) 
{

	var element = document.getElementById(elementId);

	if (element.sliding) clearTimeout(element.sliding);
	
	if (!element.xpos) element.xpos = 0;
	if (!element.ypos) element.ypos = 0;

	if (element.xpos == x && element.ypos == y) return true;

	if (element.xpos > x) {
		var dist = Math.ceil((element.xpos-x)/inc);
		element.xpos = element.xpos - dist;
	}

	if (element.xpos < x) {
		var dist = Math.ceil((x-element.xpos)/inc);
		element.xpos = element.xpos + dist;
	}

	if (element.ypos > y) {
		var dist = Math.ceil((element.ypos-y)/inc);
		element.ypos = element.ypos - dist;
	}

	if (element.ypos < y) {
		var dist = Math.ceil((y-element.ypos)/inc);
		element.ypos = element.ypos + dist;
	}

	element.style.left = element.xpos+'px';
	element.style.top = element.ypos+'px';

	element.sliding = setTimeout('slideElement("'+elementId+'",'+x+','+y+','+inc+')',20);
}


function resizeHiliteColumns()
{
	var curHeight; 
	var curHilite;
	var heighest = 0;

	var allColumns = getElementsByClassName(document, "div", "subScreen text");
	for (var i=0; i<allColumns.length; i++)
	{		
		curHilite = allColumns[i].id;
		curHeight = document.getElementById(curHilite).offsetHeight;

		if(curHeight > heighest)
		{
			heighest = curHeight;
		}

// 		debug
// 		alert("ID:  "+curHilite+", HEIGHT:  "+curHeight);
	}

// 		debug
// 	alert("highest:  "+heighest);
	if(browserType == 'Explorer' && browserVersion == 6) {
		heighest = heighest * 2;
	}

	for (var i=0; i<allColumns.length; i++)
	{
		curHilite = document.getElementById(allColumns[i].id)
		curHilite.style.height = (heighest+250) + "px";
// 		alert(curHilite.id);
	}

	document.getElementById('welcomeScreen').style.height = (heighest+150) + "px";
	document.getElementById('innerPane').style.height = (heighest+150) + "px";
	document.getElementById('outerPane').style.height = (heighest+150) + "px";

}

function getElementsByClassName(oElm, strTagName, oClassNames){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var arrRegExpClassNames = new Array();
	if(typeof oClassNames == "object"){
		for(var i=0; i<oClassNames.length; i++){
			arrRegExpClassNames.push(new RegExp("(^|\s)" + oClassNames[i].replace(/-/g, "\-") + "(\s|$)"));
		}
	}
	else{
		arrRegExpClassNames.push(new RegExp("(^|\s)" + oClassNames.replace(/-/g, "\-") + "(\s|$)"));
	}
	var oElement;
	var bMatchesAll;
	for(var j=0; j<arrElements.length; j++){
		oElement = arrElements[j];
		bMatchesAll = true;
		for(var k=0; k<arrRegExpClassNames.length; k++){
			if(!arrRegExpClassNames[k].test(oElement.className)){
				bMatchesAll = false;
				break;
			}
		}
		if(bMatchesAll){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}


//	addClass, removeClass, hasClass originally written by http://themaninblue.com
function addClass(target, classValue)
{
    if (!hasClass(target, classValue))
    {
        if (target.className == "")
        {
            target.className = classValue;
        }
        else
        {
            target.className += " " + classValue;
        }
    }

    return true;
};



function removeClass(target, classValue)
{
    var removedClass = target.className;
    var pattern = new RegExp("(^| )" + classValue + "( |$)");

    removedClass = removedClass.replace(pattern, "$1");
    removedClass = removedClass.replace(/ $/, "");

    target.className = removedClass;

    return true;
};



function hasClass(target, classValue)
{
    var pattern = new RegExp("(^| )" + classValue + "( |$)");

    if (target.className.match(pattern))
    {
    	return true;
    }
    
    return false;
};

function getScrollingPosition()
{
  //array for X and Y scroll position
  var position = [0, 0];

  //if the window.pageYOffset property is supported
  if(typeof window.pageYOffset != 'undefined')
  {
    //store position values
    position = [
        window.pageXOffset,
        window.pageYOffset
    ];
  }

  //if the documentElement.scrollTop property is supported
  //and the value is greater than zero
  if(typeof document.documentElement.scrollTop != 'undefined'
    && document.documentElement.scrollTop > 0)
  {
    //store position values
    position = [
        document.documentElement.scrollLeft,
        document.documentElement.scrollTop
    ];
  }

  //if the body.scrollTop property is supported
  else if(typeof document.body.scrollTop != 'undefined')
  {
    //store position values
    position = [
        document.body.scrollLeft,
        document.body.scrollTop
    ];
  }

  //return the array
  return position;
}

function preLoadImages()
{

	var loadingMessage = document.getElementById("loadingMessage");
	var loadingMessageP = loadingMessage.getElementsByTagName("p")[0];
	
	if (currImage >= imageArray.length)
	{
		loadingMessageP.innerHTML = "<strong>DONE!</strong>";
		
		if(!document.getElementById("startButton")) {
		var buttonStart = document.createElement("input");
		buttonStart.type = "image";
		buttonStart.src = "i/start.png";
		buttonStart.id = "startButton";
		buttonStart.onclick = initGame;
		loadingMessage.appendChild(buttonStart)
		};

		var loadingBar = loadingMessage.getElementsByTagName("div")[1];
		loadingBar.style.width = "0%";

	}
	else
	{
		imageObjects[currImage] = new Image();
		imageObjects[currImage].onload = preLoadImages;
		imageObjects[currImage].src = imageArray[currImage] + "?" + Math.random();
		imageObjects[currImage].src = imageArray[currImage];
		
		loadingMessageP.innerHTML = "Loading image <strong>" + (currImage + 1) + "</strong> of <strong>" + imageArray.length + "</strong>";

		var loadingBar = loadingMessage.getElementsByTagName("div")[1];
		loadingBar.style.width = Math.ceil((currImage + 1) / imageArray.length * 100) + "%";

		currImage++;
	}
	
	return true;
};