// JavaScript Document

function hasClassName(objElement, strClass)
{
	if (!objElement.className)
		return false;
	
	var arrList = objElement.className.split(' ');

	var strClassUpper = strClass.toUpperCase();

	for (var i = 0; i < arrList.length; i++) {
		if ( arrList[i].toUpperCase() == strClassUpper )
			return true;
	}
	
	return false;
}

function addClassName(objElement, strClass, position)
{
	if (!objElement.className) {
   		objElement.className = strClass;
		return;
	}
    
	var arrList = objElement.className.split(' ');
	var strClassUpper = strClass.toUpperCase();
	var found = -1;

	for (var i = 0; i < arrList.length; i++) {
		if (arrList[i].toUpperCase() == strClassUpper) {
			found = i;
			break;
		}
	}
	
	if (found > -1) {
		arrList.splice(found, 1);		
	}

	switch (position) {
		case 0: //front
			if (arrList.length == 0)
				objElement.className = strClass
			else
				objElement.className = strClass + ' ' + arrList.join(' ');
			break;
		case 1: //end
			arrList[arrList.length] = strClass;
			objElement.className = arrList.join(' ');
			break;
		default:
			return;
	}	
}

function removeClassName(objElement, strClass)
{
	if (!objElement.className)
		return;
	
	var arrList = objElement.className.split(' ');
	var strClassUpper = strClass.toUpperCase();
	var found = -1;

	for (var i = 0; i < arrList.length; i++) {
		if (arrList[i].toUpperCase() == strClassUpper) {
			found = i;
			break;
		}
	}
	
	if (found > -1) {
		arrList.splice(found, 1);
		objElement.className = arrList.join(' ');
	}
}

function getPage(url)
{
	return url.substring(url.lastIndexOf('/') + 1);
}

var activeTopMenu;

function isTopMenu(m)
{
	if (m.parentNode) {				
		return m.parentNode.id == "nav";
	} else {
		return m.parentElement.id == "nav";
	}
}

function isSubActiveMenu(m)
{
	if (m.parentNode) {				
		return activeTopMenu == m.parentNode.parentNode;
	} else {
		return activeTopMenu == m.parentElement.parentElement;
	}
}

function sfHover() {
	var sfNav = document.getElementById("nav");
	
	if (!sfNav) 
		return;
		
	var sfEls = sfNav.getElementsByTagName("li");
	
	if (!sfEls)
		return;
	
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			if (this == activeTopMenu) {
				addClassName(this, "sfhover", 0);
				return;
			} 
			//alert(isTopMenu(this));
			if (isTopMenu(this)) {
				//alert("top menu");
				addClassName(this, "sfhover", 0);
				if(activeTopMenu)
					removeClassName(activeTopMenu, "sfhover");
				return;
			}
			
			if (!isSubActiveMenu(this)) {
				addClassName(this, "sfhover", 0);
				return;
			} else {
				addClassName(this, "sfhover", 0);
			}
		}
		
		sfEls[i].onmouseout=function() {
			if (this == activeTopMenu) {
				return;	
			}
			
			if (isTopMenu(this)) {
				removeClassName(this, "sfhover");
				if(activeTopMenu) 
					addClassName(activeTopMenu, "sfhover", 0);
			}
			
			if (!isSubActiveMenu(this)) {
				removeClassName(this, "sfhover");
			} else {
				removeClassName(this, "sfhover");
			}
		}
	}
	
	var sfLinks = sfNav.getElementsByTagName("a");
	
	if (!sfLinks)
		return;
	
	var path = window.location.pathname;
	for (var i=0; i<sfLinks.length; i++) {
		var page = "/" + getPage(sfLinks[i].href);
		if (path.toLowerCase().indexOf(page.toLowerCase()) > -1) {	
			addClassName(sfLinks[i], "active", 1);
			if (sfLinks[i].parentNode) {
				if (sfLinks[i].parentNode.parentNode.id == "nav") {
					activeTopMenu = sfLinks[i].parentNode;
					addClassName(activeTopMenu, "sfhover", 0);		 
				} else if (sfLinks[i].parentNode.parentNode.parentNode.parentNode.id == "nav") {				
					activeTopMenu = sfLinks[i].parentNode.parentNode.parentNode;
					addClassName(activeTopMenu, "sfhover", 0);
				}
			} else {
				if (sfLinks[i].parentElement.parentElement.id == "nav") {				
					activeTopMenu = sfLinks[i].parentElement;
					addClassName(activeTopMenu, "sfhover", 0);
				} else if (sfLinks[i].parentElement.parentElement.parentElement.parentElement.id == "nav") {				
					activeTopMenu = sfLinks[i].parentElement.parentElement.parentElement;
					addClassName(activeTopMenu, "sfhover", 0);
				}
			}
			
			break;
		}
	}	
}


var defaultStep = 50; 
var step = defaultStep;
var timerDown;
var timerUp;
var interval = 80;

function getScrollArea()
{
	var o;
	o = document.getElementById("scroll-area");
	if (!o) 
		o = document.getElementById("recipe-scroll-area");
	if (!o)
		o = document.getElementById("map-scroll-area");
	return o;
}

function toTop(){ 
	var o = getScrollArea();
	if (!o)
		return;
	o.scrollTop=0; 
} 

function setScrollDownInterval() {
	if (!timerDown) 
		timerDown=setInterval("scrollDivDown()", interval); 	
}

function clearScrollDownInterval() {
	clearInterval(timerDown);
	timerDown = null;
}

function scrollDivDown(){
	var o = getScrollArea();
	if (!o)
		return;
	o.scrollTop+=step; 
} 

function setScrollUpInterval() {
	if (!timerUp)
		timerUp=setInterval("scrollDivUp()", interval); 
}

function clearScrollUpInterval() {
	clearInterval(timerUp);
	timerUp = null;
}

function scrollDivUp(){
	var o = getScrollArea();
	if (!o)
		return;
	o.scrollTop-=step;
} 

function toBottom(){ 
	var o = getScrollArea();
	if (!o)
		return;
	o.scrollTop=o.scrollHeight; 
} 

function toPoint(){
	var o = getScrollArea();
	if (!o)
		return;
	o.scrollTop=100; 
} 

/*
if (window.attachEvent) 
	window.attachEvent("onload", sfHover);	
*/