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){
this.l=findPosX(o,traverseUp);
this.t=findPosY(o,traverseUp);
this.w=o.offsetWidth;
this.h=o.offsetHeight;
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);
elSub.style.width=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)?.*/,'$1$2');
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: 2441 $
// $HeadURL: svn://3d3-p432/ShopFactory/branches/V8_10/bin/Templates/Website/shared_files/navdropdown.js $

