var d=document,isDOM=d.getElementById;

var familyStr='',navTimer=null,navOn=false,navVisible='',navPopupDirCurr=null,navPopupDirPrev=null;
var isOnScrollBar=false,activeel='';

function cancelBuble(evt){try{var e=(typeof(evt)!='undefined')?evt:event;e.cancelBubble=true;}catch(e){}}
function GC() {
this.invert=function(curClass) {return this.mapGC[curClass];}
this.map={
	'idx1':{'top':'GC28','inline':'GC30','back':'GC30'},
	'idx2':{'top':'GC32','inline':'GC34','back':'GC34'}
};
this.mapGC={
	'GC28':'GC29','GC30':'GC31','GC32':'GC33','GC34':'GC35',
	'GC29':'GC28','GC31':'GC30','GC33':'GC32','GC35':'GC34'
};
}
oGC=new GC;

function navCloseSiblings(parID){
	var cnt=0;
	if(familyStr){
		familyArr=familyStr.split(",");
		familyStr=navVisible;
		for(var i=familyArr.length-1;i>0;i--){
			if(parID==familyArr[i]){for(var j=1;j<=i;j++)familyStr+=","+familyArr[j];i=0;}
			else{navClose(familyArr[i]);cnt++;}
		}
		showComboBoxes(true);
	}
	return cnt;
}
function navCloseAll(){
	if(familyStr&&!navOn){
		familyArr=familyStr.split(","),len=familyArr.length;
		familyStr=navVisible;
		for(var i=len-1;i>0;i--){setTimeout('navClose("'+familyArr[i]+'")',25*(len-i));}
		showComboBoxes(true);
	}
}
function navClose(id){d.getElementById(id).style.display='none';}
function findScrollHeight(){
	var pos=0;
	if(window.pageYOffset){pos=window.pageYOffset;}
	else if(d.documentElement&&d.documentElement.scrollTop){pos=d.documentElement.scrollTop;}
	else if(d.body){pos=d.body.scrollTop;}else{pos=0;}
	return pos;
}
function findScrollWidth(){
	var pos=0;
	if(window.pageXOffset){pos=window.pageXOffset}
	else if(d.documentElement&&d.documentElement.scrollLeft){pos=d.documentElement.scrollLeft}
	else if(d.body){pos=d.body.scrollLeft;}else{pos=0;}
	return pos;
}
function findPosX(o,traverseUp){
	if(traverseUp){
		var x=0;
		while(o.offsetParent){x+=o.offsetLeft;o=o.offsetParent;}
		return x+findScrollWidth();
	}
	else{return o.offsetLeft;}
}
function findPosY(o,traverseUp){
	if(traverseUp){
		var y=0;
		while(o.offsetParent){y+=o.offsetTop;o=o.offsetParent;}
		return y+findScrollHeight();
	}
	else{return o.offsetTop;}
}
function navPos(o,traverseUp,isSub){
	this.l=findPosX(o,traverseUp);
	this.t=findPosY(o,traverseUp);
	this.w=isSub?'auto':o.offsetWidth||o.scrollWidth;
	this.h=o.offsetHeight||o.scrollHeight;
	this.r=function(){return this.l+this.w;}
	this.b=function(){return this.t+this.h;}
}
function displaySubmenu(idxName,submenu,gmM,gm,gmR,orientation){
	var elSub=d.getElementById(submenu);
	elSub.style.display='block';
	posSub=new navPos(elSub,true,true);
	elSub.style.width=posSub.w+(isNaN(posSub.w)?'':'px');

	var horz=(orientation==1),isFirstSub=(gmM.className.replace(/^.*[ ]?idx[12](.*)$/,'$1').indexOf('Sub')==-1);
	var navPopupDirOrig=tf[idxName+'PopupDir'],dir=(isFirstSub?navPopupDirOrig:navPopupDirCurr),elNav=d.getElementById(idxName+'Navigation');

	var posView=new navPos(d.documentElement,true);
	var posParL=new navPos(gm,true),posParR=new navPos(gmR,true),posPar=posParL;
	posPar.w=posParR.r()-posParL.l;
	posPar.l-=findScrollWidth();
	posPar.t-=findScrollHeight();

	navPopupDirPrev=navPopupDirCurr;

	switch(dir){
	case 'down':
		posSub.l=(isFirstSub?posPar.l:posPar.r());
		posSub.t=(isFirstSub?posPar.b():posPar.t);
		navPopupDirCurr='right';
		break;
	case 'up':
		posSub.l=(isFirstSub?posPar.l:posPar.r());
		posSub.t=(isFirstSub?posPar.t:posPar.b())-posSub.h;
		navPopupDirCurr='right';
		break;
	case 'right':
		posSub.l=posPar.r();
		posSub.t=(navPopupDirOrig=='up'?posPar.b()-posSub.h:posPar.t);
		navPopupDirCurr='right';
		break;
	case 'left':
		posSub.l=posPar.l-posSub.w;
		posSub.t=(navPopupDirOrig=='up'?posPar.b()-posSub.h:posPar.t);
		navPopupDirCurr='left';
		break;
	}
	if(posSub.l<posView.l){
		posSub.l=(isFirstSub?posView.l:posPar.r());
		navPopupDirCurr='right';
	}
	if(posSub.r()>posView.r()){
		posSub.l=(isFirstSub?posView.r()+posView.l:posPar.l)-posSub.w;
		if(posSub.l<posView.l)posSub.l=posView.r()-posSub.w;
		navPopupDirCurr='left';
	}
	if(posSub.t<posView.t){
		posSub.t=(isFirstSub?posView.t:posPar.t);
		navPopupDirCurr='down';
	}
	if(posSub.b()>posView.b()){
		posSub.t=posPar.b()-posSub.h;
		if(posSub.t<posView.t)posSub.t=posView.b()-posSub.h;
		// Show scrollbar if the menu is too tall for the view.
		if(posSub.h>posView.h){
			if(window.opera)elSub.style.overflow='auto';else elSub.style.overflowY='auto';
			elSub.style.height=posView.h+'px';
			posSub.t=posView.t;
			posSub.w+=(elSub.offsetWidth-elSub.childNodes[0].offsetWidth);
			elSub.style.width=posSub.w+'px';
			elSub.onmouseover=function(){
				popup(this,idxName,elSub.id,'',horz);
				return false;
			}
			elSub.onmouseout=function(){
				popdown(this);
				return false;
			}
		}
		navPopupDirCurr='up';
	}
	elSub.style.left=posSub.l+'px';
	elSub.style.top=(posSub.t-(gmM.container?gmM.container.scrollTop:0))+'px';

	familyStr+=","+submenu;
	navOn=true;
	if(navTimer)clearTimeout(navTimer);
}
function endTimer(){if(navOn&&!isIE5||isIE5){clearTimeout(navTimer);navTimer=null;}}

// Generate all the variations of id, ie left, right and mouseovers
function objIDsHandler(id){
	this.base=id.replace(/(Left|Right|MouseOver)/g,'');
	this.mIdx=this.base.replace(/(idx[0-9])(Sub)?.*/,function($0,$1,$2){var s=$1;if($2)s+=$2;return s;});
	this.lIdx=this.mIdx+'Left';
	this.rIdx=this.mIdx+'Right';
	this.id=this.base.replace(this.mIdx,'');
	this.l=this.lIdx+this.id;
	this.m=this.mIdx+this.id;
	this.r=this.rIdx+this.id;
	this.lOvr=this.lIdx+'MouseOver'+this.id;
	this.mOvr=this.mIdx+'MouseOver'+this.id;
	this.rOvr=this.rIdx+'MouseOver'+this.id;

	this.setCls=function(oL,oM,oR,ovr){
		var s=oGC.invert(oM.className.split(' ')[0])+' ',over=(ovr?'MouseOver':'');
		oL.className=s+this.lIdx+over;
		oM.className=s+this.mIdx+over;
		oR.className=s+this.rIdx+over;
		if(typeof(autoText)!='undefined')autoText.parser(d, oM, s.replace(' ',''));
	}
}
function mouseOver(gm){
	var ids=new objIDsHandler(gm.id);
	var objL=d.getElementById(ids.l),objM=d.getElementById(ids.m),objR=d.getElementById(ids.r);
	if(objL&&objM&&objR){
		objL.id=ids.lOvr;
		objM.id=ids.mOvr;
		objR.id=ids.rOvr;
		ids.setCls(objL,objM,objR,true);
	}
}
function mouseOut(gm){
	var ids=new objIDsHandler(gm.id);
	var objL=d.getElementById(ids.lOvr),objM=d.getElementById(ids.mOvr),objR=d.getElementById(ids.rOvr);
	if(objL&&objM&&objR){
		if(activeel.lastIndexOf(ids.base)==-1){
			objL.id=ids.l;
			objM.id=ids.m;
			objR.id=ids.r;
			ids.setCls(objL,objM,objR,false);
		}
	}
}
function showComboBoxes(show) {
	if((isIE5||isIE6)&&!window.opera&&(show&&!navOn||!show&&navOn)){
		var a=d.getElementsByTagName('SELECT');
		for(var i=0,num=a.length;i<num;i++){
			a[i].style.visibility=(show?'visible':'hidden');
		}
	}
}
function popup(gm,idxName,menuParent,submenu,horz){
	if(navOn)return;
	if(!gm.id)gm=gm.parentNode;
	activeel=gm.id;
	var submenuOn=false;
	if(navLoaded){
		if(navCloseSiblings(menuParent)>0)navPopupDirCurr=navPopupDirPrev;
		var ids=new objIDsHandler(gm.id);
		var objL=d.getElementById(ids.l),objM=d.getElementById(ids.m),objR=d.getElementById(ids.r);
		objM.container=d.getElementById(menuParent);
		navVisible=idxName;
		if(submenu&&d.getElementById(submenu)&&objL&&objM&&objR){
			displaySubmenu(idxName,submenu,objM,objL,objR,horz);
			submenuOn=true;
		}
	}
	mouseOver(gm);
	navOn=true;
	if(submenuOn||(menuParent&&menuParent!=idxName))showComboBoxes(false);
	setTimeout("endTimer()",1000);
}
function popdown(gm){
	if(!gm.id)gm=gm.parentNode;
	activeel='';
	navOn=false;
	if(navLoaded){
		navTimer=setTimeout("navCloseAll()",1000);
		setTimeout('showComboBoxes(true)',1000);
	}
	mouseOut(gm);
}
var navLoaded=true;

// $Revision: 6829 $
// $HeadURL: svn://3d3-p432/ShopFactory/branches/V9_20/bin/Templates/Website/shared_files/navdropdown.js $


