window.CMenus=[];

function bw_check()
{
   var is_major=parseInt(navigator.appVersion);
   this.nver=is_major;
   this.ver=navigator.appVersion;
   this.agent=navigator.userAgent;
   this.dom=document.getElementById?1:0;
   this.opera=window.opera?1:0;
   this.ie5=(this.ver.indexOf("MSIE 5")>-1&&this.dom&&!this.opera)?1:0;
   this.ie6=(this.ver.indexOf("MSIE 6")>-1&&this.dom&&!this.opera)?1:0;
   this.ie4=(document.all&&!this.dom&&!this.opera)?1:0;
   this.ie=this.ie4||this.ie5||this.ie6;
   this.mac=this.agent.indexOf("Mac")>-1;
   this.ns6=(this.dom&&parseInt(this.ver)>=5)?1:0;
   this.ie3=(this.ver.indexOf("MSIE")&&(is_major<4));
   this.hotjava=(this.agent.toLowerCase().indexOf('hotjava')!=-1)?1:0;
   this.ns4=(document.layers&&!this.dom&&!this.hotjava)?1:0;
   this.bw=(this.ie6||this.ie5||this.ie4||this.ns4||this.ns6||this.opera);
   this.ver3=(this.hotjava||this.ie3);
   this.opera7=((this.agent.toLowerCase().indexOf('opera 7')>-1) || (this.agent.toLowerCase().indexOf('opera/7')>-1));
   this.operaOld=this.opera&&!this.opera7;
   return this;
};

function none()
{
}

function nn(val)
{
   return val != null;
}
 
function und(val)
{
   return typeof(val)=='undefined';
}

function AdvancedMenu(name, items)
{

   this.bw=new bw_check();
   this.bi=new Image();
   this.bi.src=BLANK_IMAGE;
   if (this.bw.ns4) 
      window.onresize=resizeHandler;
   window.CMenus[name]=this;
   window.CMenuHideTimers[name]=null;
   this.name=name;
   this.rel=items[0].pos=="relative";
   this.root=[];
   this.root.par=null;
   this.root.cd=[];
   this.root.fmt=items[0];
   this.root.pos=this.rel?[0,0]:items[0].pos;
   this.root.fmt.pos=this.root.pos;
   this.root.frameoff=items[0].pos?items[0].pos:[0,0];
   this.items=[];
   this.root.lvl=new CMenuLevel(this, this.root);
   for (var i=1;i<items.length;i++) 
      if (!und(items[i])) 
         new CMenuItem(this, this.root, items[i], und(items[i].format)?items[0]:items[i].format);
      this.drawTop=function()
      {
         var s="";
         for (var i=0;i<this.items.length;i++)
            if (this.items[i].par==this.root) 
               s+=this.items[i].draw();
            if (this.rel)
            {
               var w=0;
               var h=0;
               for (var i=0;i<this.root.cd.length;i++) 
               {
                  var n=this.root.cd[i];
                  if (n.pos[1]+n.size[0]>h) 
                     h=n.pos[1]+n.size[0];
                     if (n.pos[0]+n.size[1]>w)
                        w=n.pos[0]+n.size[1];
               }

               s=this.bw.ns4?'<ilayer id="cm'+this.name+'_" >' + s + '</ilayer>':'<div id="cm'+this.name+'_" style="position:relative;left:0px;top:0px;width:'+w+'px;height:'+h+'px;">' + s +'</div>';
            }
         return s;
      };


      this.drawOther=function()
      {
         var s="";
         for (var i=0;i<this.items.length;i++) 
            if (this.items[i].par!=this.root)
               s+=this.items[i].draw();
            return s;
      };
      this.initTop=function()
      {
         document.write(this.drawTop());
      };
      this.init=function()
      {
         document.write(this.drawOther());
      };
      this.hide=function()
      {
         if (this.root.fmt.popup)
            this.root.lvl.vis(0);
         else 
         {
            for (var i=0;i<this.root.cd.length;i++)
               if (this.root.cd[i].lvl)
                  this.root.cd[i].lvl.vis(0);
               this.root.lvl.a=null;
               this.root.lvl.draw();
               if (this.root.fmt.hidden_top)
                  this.root.lvl.vis(0);
         }
      };



      this.mpopup=function(ev,offX,offY)
      {
         var x=ev.pageX?ev.pageX:(this.bw.opera?ev.clientX:this.bw.ie4?ev.clientX+document.body.scrollLeft:ev.x+document.body.scrollLeft);
         var y=ev.pageY?ev.pageY:(this.bw.opera?ev.clientY:this.bw.ie4?ev.clientY+document.body.scrollTop:ev.y+document.body.scrollTop);
         var po=this.root.fmt.popupoff;
         y += offY?offY:po?po[0]:0;x += offX?offX:po?po[1]:0;this.popup(x, y);
      };
      this.popup=function(x,y)
      {
         this.moveXY(x,y);
         this.root.lvl.a=null;
         this.root.lvl.vis(1);
         mEvent(this.name,0,'t');
         mEvent(this.name,0,'0');
      };
      this.moveXY=function(x,y)
      {
         if (!this.root.pos || this.root.pos[0] != x || this.root.pos[1] != y) 
         {
            this.root.pos=[x,y];
            this.root.loff=[0,0];
            this.root.ioff=[0,0];
            for (var i=0;i<this.items.length;i++)
            {
               this.items[i].setPosFromParent();
               this.items[i].move(this.items[i].pos[0],this.items[i].pos[1]);
            }
         }
      };
      this.show=function()
      {
         if (this.rel) 
            this.move();
         this.root.lvl.vis(1);
      };
      this.move=function()
      {
         if (!this.rel)
             return;
         var d=this.get_div('cm'+this.name+'_');
         var x=this.bw.ns4?d.pageX:domPageX(d);
         var y=this.bw.ns4?d.pageY:domPageY(d);
         var topNode=this.items[0];
         this.root.pos=[x,y];
         for (var i=0;i<this.items.length;i++)
         {
            this.items[i].setPosFromParent();
            if (this.items[i].par !== this.root)
               this.items[i].move(this.items[i].pos[0],this.items[i].pos[1]);
         }
      };
      this.get_div=function (name)
      {
         return this.bw.ns4?document.layers[name]:document.getElementById?document.getElementById(name):document.all[name];
      }
};


function CMenuLevel(menu, par){
   this.menu=menu;
   this.par=par;
   this.v=0;
   this.vis=function(s)
   {
      var ss=this.v;
      this.v=s;
      var l=this.par.cd.length;
      for (var i=0;i<l;i++)
      {
         var n=this.par.cd[i];
         if ( n.hc() && n.lvl.v && !s )
            n.lvl.vis(s);
         n.vis(s);
      }
      if (!s) 
         this.a=null;
      if (this.v!=ss&&this.menu.onlevelshow) 
         this.menu.onlevelshow(this);
   };
   this.setA=function(idx,s)
   {
      var n=this.menu.items[idx];
      if (nn(this.a)&&n.par.lvl!=this.a.par.lvl)
         return;
      if(s&&n.hc())n.lvl.vis(1);
      if( s && n!= this.a && nn(this.a) && this.a.hc() && this.a.lvl.v )
         this.a.lvl.vis(0);
         this.a=n;
         this.draw();
   };
   this.draw=function()
   {   
      if (this.menu.root.lvl==this&&this.menu.root.fmt.hidden_top)
         return;
      for (var i=0;i<this.par.cd.length;i++)
         if (this.par.cd[i]==this.a)
            this.par.cd[i].setVis('o');
         else
            this.par.cd[i].setVis('n');
   }
};

function CMenuItem(menu, par, item, format)
{
   if (und(item))
      return;
   this.lvl=null;
   this.par=par;
   this.code=item.code;
   this.ocode=item.ocode || item.code;
   this.targ=und(item.target)?"":'target="'+item.target+'" ';
   this.url=und(item.url)?"javascript:none()":item.url;
   this.fmt=format;
   this.menu=menu;
   this.bw=menu.bw;
   this.cd=[];
   this.divs=[];
   this.index=menu.items.length;
   menu.items=menu.items.concat([this]);
   this.pindex=par.cd.length;
   par.cd=par.cd.concat([this]);
   this.id="cmi"+this.menu.name+"_"+this.index;this.v=0;
   this.state='n';
   this.diva=["b","s","o","n","e"];
   this.hc=function()
   {
      return this.cd.length > 0
   };
   this.hac=function()
   {
      return this.hc()&&this.cd[0].vis
   };
   this.div=function(n)
   {
      return und(this.divs[n])?this.divs[n]=this.get_div(this.id+n):this.divs[n];
   };
   this.gen_code=function(state, off)
   {

      var res='';
      var table=(nn(this.arrow) && this.hc()) || nn(this.image);
      var image=nn(this.image);
      var arrow=nn(this.arrow)&& this.hc();
      
      if (table)
         res += '<table cellpadding=0 cellspacing=0 width="100%" height="'+(parseInt(this.size[0])-parseInt(off))+'" border=0><tr>';
      if (image)
         res += '<td bgcolor="'+(state=='n'?this.style.color.imagebg:this.style.color.oimagebg)+'" width='+this.imgsize[1]+'><img src="'+(state=='n'?this.image:this.oimage)+'" width='+this.imgsize[1]+' height='+this.imgsize[0]+'></td>';
      if (table)
         res += '<td width="100%">';
         res += '<div class="'+(state=='n'?this.style.css.ON:this.style.css.OVER)+'">'+(state=='n'?this.code:this.ocode)+'</div>';
      if (table) 
         res += '</td>';
      if (arrow)
         res += '<td width='+this.arrsize[1]+'><img src="'+(state=='n'?this.arrow:this.oarrow)+'" width='+this.arrsize[1]+' height='+this.arrsize[0]+'></td>';
      if (table)
         res += '</tr></table>';

      //itt generálódik a menu elem <div class="">név</div>;
      return res;
   };
      this.draw=function()
      {
         var bl=bt=this.style.border;
         var br=bb=this.style.border*2;
         if (this.style.border && !und(this.style.borders)) 
         {
            bl=this.style.borders[0];
            bt=this.style.borders[1];
            br=this.style.borders[2]+bl;
            bb=this.style.borders[3]+bt;
         };
         var s=this.style.shadow;
         //function adiv(bw,name,z,left,top,width,height,bgc,code,otherCSS, otherDIV)
         //this.z==0 főmenüsor
         //this.size[1] szélesség
         //alert(this.code.length); a karakterek száma
         var z=(!this.style.shadow?"":adiv(this.menu.bw, this.id+"s", this.z, this.pos[0]+s, this.pos[1]+s, this.size[1], this.size[0], this.style.color.shadow, "", ""))+
         (!this.style.border?"":adiv(this.menu.bw, this.id+"b", this.z, this.pos[0], this.pos[1], this.size[1], this.size[0], this.style.color.border, "", ""));

         if (this.z==0){
            z+=adiv(this.menu.bw, this.id+"n", this.z, this.pos[0]+bl, this.pos[1]+bt, this.size[1]-br, this.size[0]-bb, "", this.gen_code('n', parseInt(bt)+parseInt(bb)));
            z+=adiv(this.menu.bw, this.id+"o", this.z, this.pos[0]+bl, this.pos[1]+bt, this.size[1]-br, this.size[0]-bb, "",this.gen_code('o', bt+bb));
         } else {
            z+=adiv(this.menu.bw, this.id+"n", this.z, this.pos[0]+bl, this.pos[1]+bt, this.size[1]-br, this.size[0]-bb, this.style.color.bgON, this.gen_code('n', parseInt(bt)+parseInt(bb)));
            z+=adiv(this.menu.bw, this.id+"o", this.z, this.pos[0]+bl, this.pos[1]+bt, this.size[1]-br, this.size[0]-bb, this.style.color.bgOVER,this.gen_code('o', bt+bb));
         }
         // a hely ahova kerül alert (this.pos[0]);
         z+=adiv(this.menu.bw, this.id+"e", this.z, this.pos[0]+bl, this.pos[1]+bt, this.size[1]-br, this.size[0]-bb, "", '<a href="'+this.url+'" '+this.targ+'onclick="mEvent(\''+this.menu.name+'\','+this.index+',\'c\');">'+'<img src="'+this.menu.bi.src+'" width="'+this.size[1]+'" height="'+this.size[0]+'" border="0"></a>','','onmouseover="mEvent(\''+this.menu.name+'\','+this.index+',\'o\');" onmouseout="mEvent(\''+this.menu.name+'\','+this.index+',\'t\');"');
         //itt generálódik a teljes sor (z)
         return z;
      };
      this.vis=function(s)
      {
         if (this.style.shadow) 
            this.visDiv("s",s);
         if (this.style.border) 
            this.visDiv("b",s);
         if (!s) 
         {
            this.visDiv("o",0);
            this.visDiv("n",0);
            this.state="n";
         }
         else if (this.state=="n")
            this.visDiv("n",1);
         else
            this.visDiv("o",1);
         this.visDiv("e",s)
      };
      this.setVis=function (n)
      {
         if (this.state!=n)
         {
            if (n=="n") 
            {
               this.visDiv("n",1);
               this.visDiv("o",0);
            };
            if (n=="o") 
            {
               this.visDiv("n",0);this.visDiv("o",1);
         };
      };
      this.state=n;
   };
   this.visDiv=this.bw.ns4? visDivNS:visDivDom;
   this.getf=function(obj, name)
   {
      if (!und(obj) && nn(obj) && !und(obj.fmt)) 
      {
         if (!und(obj.fmt[name]))
            return obj.fmt[name];
         if (obj.par!=this.menu.root && obj.par && obj.par.sub && obj.par.sub[0][name])
             return obj.par.sub[0][name];
         return this.getf(obj.par, name);
      };
      return;
   };
   this.ioff=this.getf(this, "itemoff");
   this.loff=this.getf(this, "leveloff");
   this.imgsize=this.getf(this, "imgsize");
   this.arrsize=this.getf(this, "arrsize");
   this.image=this.getf(this, "image");
   this.oimage=this.getf(this, "oimage") || this.image;
   this.arrow=this.getf(this, "arrow");
   this.oarrow=this.getf(this, "oarrow") || this.arrow;
   this.style=this.getf(this, "style");
   this.size=this.getf(this, "size");
   if (this.par==this.menu.root)
      this.fmt.pos=this.getf(this, "pos");
   this.prev=this.pindex==0? null : this.par.cd[this.pindex-1];
   this.setPos=function()
   {
   //itt van a hely x,y számolása pos[0]-ban az x stb
   ;
      if (this.prev==null)//ha első a sorozatban
      {
         this.z=this.par==this.menu.root? 0: this.par.z+10;
         //alert (this.par.pos[0]+this.loff[1]);
         this.pos=und(this.fmt.pos)?(this.par==this.menu.root? this.fmt.pos : this.pos=[this.par.pos[0]+this.loff[1], this.par.pos[1]+this.loff[0]]):this.fmt.pos;

         
      }
      else
      {

         this.prev.next=this;
         this.z=this.prev.z;
         this.pos=[this.prev.pos[0]+this.ioff[1], this.prev.pos[1]+this.ioff[0]];
         if (this.prev.z==0){//a főmenü sora
           this.pos[0]=this.prev.pos[0]+this.prev.code.length*8+50;
         }

      };

   };
   this.setPosFromParent=function()
   {
      if (this.index==0&&!this.menu.rel)
      {
         this.pos=[this.menu.root.pos[0], this.menu.root.pos[1]]
      }
      else
          if (this.prev==null)
         {
            this.pos=[this.par.pos[0]+this.loff[1], this.par.pos[1]+this.loff[0]];
         }
         else
         {
            this.pos=[this.prev.pos[0]+this.ioff[1], this.prev.pos[1]+this.ioff[0]];
         };
      };
      this.setPos();
      this.sub=item.sub;
      if (!und(this.sub) && !und(this.sub.length)&& this.sub.length>0)
      {
         this.lvl=new CMenuLevel(menu, this);
         for (var i=1;i<this.sub.length;i++)
            if (!und(this.sub[i])) new CMenuItem(this.menu, this, this.sub[i], und(this.sub[i].format)?this.sub[0]: this.sub[i].format);
      };
      this.get_div=function (name)
      {
         if (this.bw.ns4 && this.menu.rel && this.par==this.menu.root)
             return document.layers["cm"+this.menu.name+"_"].layers[name];
         else
            return this.bw.ns4?document.layers[name]:document.getElementById?document.getElementById(name):document.all[name];   
      };
      this.move=function( x, y )
      {
         var bl=bt=this.style.border;
         if (this.style.border && !und(this.style.borders)) 
         {
            bl=this.style.borders[0];
            bt=this.style.borders[1];
         };
         if (this.style.shadow) 
            this.moveTo(x+parseInt(this.style.shadow),y+parseInt(this.style.shadow),"s");
         if (this.style.border) 
            this.moveTo(x,y,"b");
         this.moveTo(x+bl,y+bt,"o");
         this.moveTo(x+bl,y+bt,"n");
         this.moveTo(x+bl,y+bt,"e");
      };
      this.moveTo=function( x, y, b )
      {
         if (this.bw.ns4)
            this.div(b).moveTo(x,y);
         else
         {
            this.div(b).style.left=x;
            this.div(b).style.top=y;   
         };
      };
      return this;
};

function adiv(bw,name,z,left,top,width,height,bgc,code,otherCSS, otherDIV)
{

   return bw.ns4?      
   '<layer id="'+name+'" z-index="'+z+'" left="'+left+'" top='+top+'" width="'+width+'" height="'+height+'"'+(bgc!=""?' bgcolor="'+bgc+'"':'')+(otherCSS?' style="'+otherCSS:'')+'" visibility="hidden" '+(otherDIV?otherDIV:'')+'>'+code+'</layer>\n':
   '<div id="'+name+'" style="position:absolute;clip:rect(0px '+width+'px '+height+'px 0px);z-index:'+z+';left:'+left+'px;top:'+top+'px;width:'+width+'px;height:'+height+'px;visibility:hidden'+(bgc!=""?';background-color:'+bgc+'':'')+';'+(otherCSS?otherCSS:'')+'" '+(otherDIV?otherDIV:'')+'>'+code+'</div>';
   //'<layer id="'+name+'" z-index="'+z+'" left="'+left+'" top='+top+'" width="'+width+'" height="'+height+'"'+(bgc!=""?' bgcolor="'+bgc+'"':'')+(otherCSS?' style="'+otherCSS:'')+'" visibility="hidden" '+(otherDIV?otherDIV:'')+'>'+code+'</layer>\n':
   //'<div id="'+name+'" style="position:absolute;clip:rect(0px '+width+'px '+height+'px 0px);z-index:'+z+';left:'+left+'px;top:'+top+'px;width:'+width+'px;height:'+height+'px;visibility:hidden'+(bgc!=""?';background-color:'+bgc+'':'')+';'+(otherCSS?otherCSS:'')+'" '+(otherDIV?otherDIV:'')+'>'+code+'</div>';
};

function visDivNS(d,s)
{
   this.div(d).visibility=s?'show':'hide';
};

function visDivDom(d,s)
{
   this.div(d).style.visibility=s?'visible': 'hidden';
};

function mEvent(m,node_index,e) 
{
   if (nn(window.CMenuHideTimers[m])) 
   {
      window.clearTimeout(window.CMenuHideTimers[m]);
      window.CMenuHideTimers[m]=null;
   };
   switch (e){
      case "o":
          window.CMenus[m].items[node_index].par.lvl.setA(node_index,1);
         if (window.CMenus[m].onmouseover) 
            window.CMenus[m].onmouseover(window.CMenus[m].items[node_index]);
         break;
      case "c":
         if (window.CMenus[m].items[node_index].hc())
             window.CMenus[m].items[node_index].lvl.vis(!window.CMenus[m].items[node_index].lvl.v);         else            for (var i=0;i<window.CMenus[m].root.cd.length;i++)               if (nn(window.CMenus[m].root.cd[i].lvl)) window.CMenus[m].root.cd[i].lvl.vis(0);         if (window.CMenus[m].onclick) window.CMenus[m].onclick(window.CMenus[m].items[node_index]);         break;      case "t":          window.CMenuHideTimers[m]=setTimeout('window.CMenus["'+m+'"].hide()', und(window.CMenus[m].root.fmt.delay)?600:window.CMenus[m].root.fmt.delay);         if (window.CMenus[m].onmouseout) window.CMenus[m].onmouseout(window.CMenus[m].items[node_index]);         break;   };   return true;};function domPageX(el) {  var x=el.offsetLeft;  var parent=el.offsetParent;  while(parent && parent!=document.body) {   x += parent.offsetLeft;   parent=parent.offsetParent;  };  return x;};function domPageY(el) {  var x=el.offsetTop;  var parent=el.offsetParent;  while(parent && parent!=document.body) {   x += parent.offsetTop;   parent=parent.offsetParent;  };  return x;};if (und(window.CMenuHideTimers)) 

window.CMenuHideTimers=[];
window.oldCMOnLoad=window.onload;

function CMOnLoad()
{
   var bw=new bw_check();
   if (bw.ns4 || bw.opera)
   {
      window.origWidth=window.innerWidth;
      window.origHeight=window.innerHeight;
      if (bw.opera && !window.operaResizeTimer) 
         resizeHandler();
      if (bw.ns4) 
         window.onresize=resizeHandler;
   }
   else 
   {
      setTimeout('domOnResize();', 500); window.onresize=new domOnResize();   
   };
   if (typeof(window.oldCMOnLoad)=='function') 
      window.oldCMOnLoad();
};

window.onload=new CMOnLoad();

function resizeHandler() 
{
   if (window.reloading) return;
   var reload=window.innerWidth != window.origWidth || window.innerHeight != window.origHeight;
   window.origWidth=window.innerWidth; window.origHeight=window.innerHeight;
   if (reload) 
   {
      window.reloading=1;
      document.location.reload();
      return
   };
   if (new bw_check().opera) 
      window.operaResizeTimer=setTimeout('resizeHandler()',500);
};

function CMenuPopUp(menu, evn, offX, offY)
{
   window.CMenus[menu].mpopup(evn, offX, offY);
};

function CMenuPopUpXY(menu,x,y)
{
   window.CMenus[menu].popup(x,y);
};

function domOnResize(){
   for (var i in CMenus) 
      if (CMenus[i].rel) CMenus[i].move();
};

if (new bw_check().ns4)    
   window.onresize=resizeHandlerelse;
   window.onresize=domOnResize;
