var nav = {
  items: [],
  expand: [],
  
  animate01: function(num, expand) {
    var i = nav.expand[num];
    if (i==expand) return;
    nav.expand[num] = expand;
    if (typeof(nav.t01)=="undefined" || !nav.t01) nav.t01 = window.setInterval(nav.timer01, 20);
  },
  anim01: {
    maxW: 22,
    minW: 4
  },
  timer01: function() {
    var w, maxW=nav.anim01.maxW, minW=nav.anim01.minW, summ=0;
    for (var i=0, l=nav.items.length; i<l; i++) {
      w = nav.items[i].lining.offsetWidth + nav.expand[i];
      nav.items[i].lining.style.width = w+"px";
      if (w<=minW || w>=maxW) nav.expand[i] = 0;
      summ += Math.abs(nav.expand[i]);
    }
    // document.getElementById("logo").innerHTML = nav.expand[0] +", "+ nav.expand[1] +", "+ nav.expand[2]
    if (summ==0) {
      window.clearInterval(nav.t01);
      nav.t01 = null;
      for (var i=0, l=nav.items.length; i<l; i++) {
        nav.items[i].lining.style.width = nav.items[i].lining.offsetWidth > (minW+maxW)/2 ? maxW : minW;
      }
    }
  },
  
  animate02: function(num) {
    if ((typeof(nav.t02)=="undefined" || !nav.t02) && (typeof(nav.t02step2)=="undefined" || !nav.t02step2) && (typeof(nav.t02step3)=="undefined" || !nav.t02step3)) {
      nav.anim02.toHash = nav.items[num].name;
      var el = document.getElementById(nav.anim02.toHash);
      var body = document.documentElement;
      nav.anim02.toY = 0;
      while (el.offsetParent) {
        nav.anim02.toY += el.offsetTop;
        el = el.offsetParent;
      }
      nav.anim02.delay = 0;
      nav.anim02.maxY = body.scrollHeight - body.offsetHeight;
      nav.anim02.speed = 40 * (body.scrollTop<nav.anim02.toY ? 1 : -1);
      nav.anim02.toYstep3 = nav.anim02.toY;
      nav.anim02.toY = nav.anim02.toY + (nav.anim02.speed *-2.5) + 15* (nav.anim02.speed>0 ? 1 : -1);
      // alert( (body.scrollTop) +" ? "+ nav.anim02.toY +" = "+ nav.anim02.toYstep3 );
      if (body.scrollTop!=nav.anim02.toYstep3) nav.t02 = window.setInterval(nav.timer02, 20);
    }
  },
  anim02: {
    toHash: "",
    toY: 0,
    maxY: 0,
    speed: 0,
    delay: 0
  },
  timer02: function() {
    /*
    if (nav.anim02.speed*1.5<90) {
      nav.anim02.speed *= 1.5;
    } else {
      nav.anim02.speed = 90;
    }
    */
    // nav.anim02.speed = nav.anim02.speed<=90 ? nav.anim02.speed : 90;
    var y = document.documentElement.scrollTop;
    window.scrollBy(0, nav.anim02.speed);
    var y2 = y + nav.anim02.speed;
    if (document.documentElement.scrollTop==y) {
      window.clearInterval(nav.t02);
      nav.t02 = null;
      if (y==0) nav.t02step2 = window.setInterval(nav.timer02step2, 20);
    } else if (nav.anim02.speed>0 && y2>=nav.anim02.toY || nav.anim02.speed<0 && y2<=nav.anim02.toY) {
      window.clearInterval(nav.t02);
      // alert(nav.anim02.toY +", "+ nav.anim02.toYstep3 +", "+ document.documentElement.scrollTop +"\n"+ (nav.anim02.toYstep3-document.documentElement.scrollTop));
      window.scrollTo(0, nav.anim02.toY + nav.anim02.speed ); //* (nav.anim02.speed>0 ? 1 : -1) );
      // alert(nav.anim02.toY +", "+ nav.anim02.toYstep3 +", "+ document.documentElement.scrollTop +"\n"+ (nav.anim02.toYstep3-document.documentElement.scrollTop));
      nav.t02 = null;
      nav.t02step2 = window.setInterval(nav.timer02step2, 20);
    }
  },
  timer02step2: function() {
    nav.anim02.delay++;
    window.scrollBy(0, (5-nav.anim02.delay)*4* (nav.anim02.speed>0 ? 1 : -1 ) );
    if (nav.anim02.delay>=5) {
      var y = document.documentElement.scrollTop;
      window.clearInterval(nav.t02step2);
      nav.t02step2 = null;
      nav.anim02.speed = nav.anim02.speed>0 ? -7 : 7;
      // nav.anim02.toY += 250* nav.anim02.speed>0 ? 1 : -1;
      // nav.t02step3 = window.setInterval(nav.timer02step3, 5);
      window.location.hash = nav.anim02.toHash;
      // alert(nav.anim02.toY +", "+ nav.anim02.toYstep3 +", "+ document.documentElement.scrollTop +"\n"+ (nav.anim02.toYstep3-document.documentElement.scrollTop));
    }
  },
  timer02step3: function() {
    var y = document.documentElement.scrollTop;
    window.scrollBy(0, nav.anim02.speed);
    var y2 = y + nav.anim02.speed;
    if (document.documentElement.scrollTop==y || nav.anim02.speed>0 && y2>=nav.anim02.toYstep3 || nav.anim02.speed<0 && y2<=nav.anim02.toYstep3) {
      // if (y!=nav.anim02.toYstep3) window.scrollBy(0, Math.min(nav.anim02.toYstep3)-Math.max(y));
      window.clearInterval(nav.t02step3);
      nav.t02step3 = null;
      window.location.hash = nav.anim02.toHash;
    }
  }
};
var ie = navigator.userAgent.indexOf("MSIE")>-1;

function ready() {
  var i = -1;
  var nl = document.getElementById("nl");
  if (nl) {
    var li = nl.getElementsByTagName("li");
    if (li.length) {
      while(i++, li[i]) { 
        nav.items.push(new NavItem(li[i], i));
        nav.expand.push(0); 
      }
    }
  }
}

function NavItem(el, num) {
  var anc = el.getElementsByTagName("a")[0];
  this.li = el;
  this.name = anc.href.substring( anc.href.indexOf("#")+1 );
  this.title = anc.innerHTML;
  anc = null;
  while(el.childNodes.length) { el.removeChild(el.childNodes[0]) }
  el.className = this.name;
  this.bg = crDiv("bg")
  this.vLine = crDiv("v-line", "&nbsp;");
  this.lining = crDiv("lining", "&nbsp;");
  this.img = crImg(this.name, this.title, num);
  this.gray = crDiv("gray");
  this.span = document.createElement("span");
  this.span.setAttribute("nlnum", num);
  el.appendChild(
    crDiv("top").appendChild(
      crDiv("bot").appendChild(
        this.bg.appendChild( 
          this.vLine
        ).parentNode.appendChild(
          crArrow()
        ).parentNode.appendChild(
          crDiv("image").appendChild(
            this.lining
          ).parentNode.appendChild(
            this.gray.appendChild(
              this.span.appendChild(
                this.img
              ).parentNode
            ).parentNode
          ).parentNode 
        ).parentNode 
      ).parentNode 
    ).parentNode
  );
  // alert(this.title)
  this.img.onload = function() {
    var num = this.getAttribute("nlnum")*1;
    var obj = nav.items[num];
    var h = obj.li.offsetHeight;
    obj.vLine.style.top = "2px";
    obj.vLine.style.height = h- (ie ? 5 : 3) +"px";
    obj.lining.style.top = "17px";
    obj.gray.style.height = obj.lining.style.height = h- (ie ? 39 : 37) +"px";
    obj.lining.style.width = nav.anim01.minW +"px";
    obj.bg.style.height = obj.bg.offsetHeight +"px";
    obj.bg.style.width = obj.bg.offsetWidth +"px";
    obj.span.style.position = "absolute"; 
    obj.span.className = "imgLoaded";
  }
  this[ie ? 'span' : 'img'].onmouseover = function() {
    nav.animate01(this.getAttribute("nlnum")*1, 1);
  }
  this[ie ? 'span' : 'img'].onmouseout = function() {
    nav.animate01(this.getAttribute("nlnum")*1, -1);
  }
  this[ie ? 'span' : 'img'].onclick = function() {
    nav.animate02(this.getAttribute("nlnum")*1, 1);
  }
  return this;
  
  function crImg(name, title, NLnum) {
    var ret = document.createElement("img");
    // ret.src = "/img/iface/menu-"+ name + (ie?"-ie":"") +".png";
    ret.src = "/img/iface/menu-"+ name + (ie?"-ie":"") +".png";
    // alert(ret.src);
    ret.alt = title;
    ret.setAttribute("nlnum", NLnum+"");
    return ret; 
  }
  
  function crDiv(className, innerHTML) {
    var ret = document.createElement("div");
    if (className) ret.className = className;
    if (innerHTML) ret.innerHTML = innerHTML;
    return ret; 
  }
  
  function crArrow() {
    var ret = document.createElement("img");
    ret.width = 7;
    ret.height = 4;
    ret.className = "arrow";
    ret.src = "/img/iface/nl-arrow.gif";
    return ret;
  }
}

if (navigator.userAgent.indexOf('Safari')>-1) {
  safari2 = navigator.userAgent.indexOf('Version/3')==-1; // saf
  var _timer = setInterval(function() {
    if (/loaded|complete/.test(document.readyState)) {
      clearInterval(_timer);
      delete _timer;
      ready(); 
    }
  }, 10);
} else {
  if (window.addEventListener) {
    // window.addEventListener('load', ready, false);
    window.addEventListener('DOMContentLoaded', ready, false);
  } else {
    void ready();
  } 
}
