/* subNav slider
 * 2003 TRACTION CORPORATION
 * www.tractionco.com
 *
 * adapted from 'DHTML and CSS for the World Wide Web'
 * www.webbedenvironments.com/dhtml/
 *
 * dependencies:
 * findDOM.js
 * imageSwap.js
 *
 */

/*
 *	global variables
 */
var subnavStates = new Array(0,0,0,0);	// Array of menu states.  1 = visible, 0 = hidden

var slideDelay = 0;	// slideMenu() timeout value

var domStyle = null;	// dynamic DOM variable set by findDOM.js.  We're supporting w3c DOM, so this functionality is expendable if problematic.

// the following 4 are used by delayHide()
var t = 0;
var lDelay = 3;
var lCount = 0;
var pause = 100;


/*
 *	menu visibility and state management functions
 */
function setMenu(objectID){
	if(isDHTML){
		domStyle = findDOM(objectID,1);
		if(multistate(objectID) == 1){
			fX = 38;
			cX = 47;
			multistate(objectID,0);
			tnavOff(objectID);
		}else{
			fX = 47;
			cX = 38;
			multistate(objectID,1);
		}
		slideMenu(cX,fX);
	}
}	

function slideMenu(cX,fX){
	domStyle.top = (fX + "px");
	return;
}

function setMenuDown(objectID){
	if(isDHTML){
		domStyleDown = findDOM(objectID,1);
		if(multistate(objectID) == 1){
			fXDown = 38;
			cXDown = 47;
			multistate(objectID,0);
			tnavOff(objectID);
		}else{
			fXDown = 47;
			cXDown = 38;
			multistate(objectID,1);
		}
		slideMenuDown(cXDown,fXDown);
	}
}	

function slideMenuDown(cXDown,fXDown){
	if(cXDown != fXDown){
		if(cXDown > fXDown){
			cXDown -= 1;
		}else{
			cXDown += 1;
		}
		domStyleDown.top = (cXDown + "px");
		setTimeout('slideMenuDown(' + cXDown + ',' + fXDown + ')', slideDelay);  
	}
	return;
}

function testMove(theObj,thePos){
	testDom = findDOM(theObj,1);
	testDom.top = (thePos + "px");
}

function delayHide(){
	if((isShowing() != null) && (t == 0)){
		
		setMenu(stateToObj(isShowing()));
        lCount = 0; 
        return false;
    }

    if(t == 2){
    	lCount = 0;
    	return false;
    }

    if(t == 1){ 
        lCount = lCount + 1;
        if(lDelay <= lCount){
        	t = 0;
        }
        if(lDelay >= lCount){
        	setTimeout('delayHide(' + t + ')',pause);
        }
    }
}

function multistate(menuState){
	switch(menuState){
		case "subnav_beer":
			if(arguments.length < 2){
				return subnavStates[0];
			}else{
				subnavStates[0] = arguments[1];
			}
			break;
		case "subnav_heritage":
			if(arguments.length < 2){
				return subnavStates[1];
			}else{
				subnavStates[1] = arguments[1];
			}
			break;
		case "subnav_lifestyle":
			if(arguments.length < 2){
				return subnavStates[2];
			}else{
				subnavStates[2] = arguments[1];
			}
			break;
		case "subnav_store":
			if(arguments.length < 2){
				return subnavStates[3];
			}else{
				subnavStates[3] = arguments[1];
			}
			break;
	}
}

function onlyYou(newMenu){
	for(j=0;j<subnavStates.length;j++){
		if(subnavStates[j] == 1 && stateToObj(j) != newMenu){
			setMenu(stateToObj(j));
		}
	}
	
	if(multistate(newMenu) != 1){
		setMenuDown(newMenu);
	}
}


/*
 *	subnavState / object metadata functions
 */
function stateToObj(idx){
	switch(idx){
		case 0:
			returnStr = "subnav_beer";
			break;
		case 1:
			returnStr = "subnav_heritage";
			break;
		case 2:
			returnStr = "subnav_lifestyle";
			break;
		case 3:
			returnStr = "subnav_store";
			break;
	}
	return returnStr;
}

function tnavOff(theObj){
	switch(theObj){
		case "subnav_beer":
			navOff("nav_tnav-beer");
			break;
		case "subnav_heritage":
			navOff("nav_tnav-heritage");
			break;
		case "subnav_lifestyle":
			navOff("nav_tnav-lifestyle");
			break;
		case "subnav_store":
			navOff("nav_tnav-store");
			break;
	}
}

function isShowing(){
	var returnObj = null;
	for(i=0;i<subnavStates.length;i++){
		if(subnavStates[i] == 1){
			returnObj = stateToObj(i);
		}
	}
	return returnObj;
}

