// Title: COOLjsMenuPRO
// URL: http://javascript.cooldev.com/scripts/coolmenupro/
// Version: 1.8.1
// Last Modify: 02 Apr 2003
// Author: Sergey Nosenko <darknos@cooldev.com>
// Notes: Registration needed to use this script on your web site.
// Copyright (c) 2001-2002 by CoolDev.Com
// Copyright (c) 2001-2002 by Sergey Nosenko
window.CMenus = []; 
var BLANK_IMAGE = "images/t.gif"; 
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 COOLjsMenuPRO(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; 
      this.rel_div = this.rel_div || this.get_div('cm' + this.name + '_'); 
      var x = this.bw.ns4 ? this.rel_div.pageX : domPageX(this.rel_div); 
      var y = this.bw.ns4 ? this.rel_div.pageY : domPageY(this.rel_div); 
      if (this.root.pos[0] == x && this.root.pos[1] == y) return; 
      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) {
      if (s && this.menu.root.lvl != this && this.menu.rel) {
         this.menu.move() }; 
      var ss = this.v; 
      this.v = s; 
      var l = this.par.cd.length; 
      if (this.menu.onlevelshow) this.menu.onlevelshow(this); 
      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>'; 
      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; 
      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, "", "")) + 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))) + 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)) + 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\');"'); 
      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) switch (n) {
         case "n" : this.visDiv("n", 1); 
         this.visDiv("o", 0); 
         break; 
         case "o" : this.visDiv("n", 0); 
         this.visDiv("o", 1); 
         break; 
         }
      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() {
      if (this.prev == null) {
         this.z = this.par == this.menu.root ? 0 : this.par.z + 10; 
         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]]; 
         }
      }; 
   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>'; 
   }
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.operaOld) window.operaResizeTimer = setTimeout('resizeHandler()', 1000); 
   if (typeof (window.oldCMOnLoad) == 'function') window.oldCMOnLoad(); 
   if (bw.ns4) window.onresize = resizeHandler; 
   }
window.onload = new CMOnLoad(); 
function resizeHandler() {
   if (window.reloading) return; 
   if (!window.origWidth) {
      window.origWidth = window.innerWidth; 
      window.origHeight = window.innerHeight; 
      }
   var reload = window.innerWidth != window.origWidth || window.innerHeight != window.origHeight; 
   window.origWidth = window.innerWidth; 
   window.origHeight = window.innerHeight; 
   if (window.operaResizeTimer) clearTimeout(window.operaResizeTimer); 
   if (reload) {
      window.reloading = 1; 
      document.location.reload(); 
      return }; 
   if (new bw_check().operaOld) {
      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) }

