function exTabNavi() {
  this.defaults = {
    id: null,
    active: 1,
    activeclass: 'active',
    showall: null
  };
  for (var n in arguments[0]) {
    this.defaults[n]=arguments[0][n];
  };  
  this.getTabNavi = function(){
    var elem = document.getElementById(this.defaults.id).getElementsByTagName('li');
    return elem;
  }
  this.tabIndex = this.getTabNavi();
  this.links = document.getElementById(this.defaults.id).getElementsByTagName('li');

  this.show = function(n){
    for (var i = 0; i < this.tabIndex.length; i++) {
      if(this.defaults.showall != i){
      var body = document.getElementById(this.defaults.id + '_' + (i+1) +  '_body');
      if(((i)==n) || this.defaults.showall == n){
        body.style.display = 'block';
        //alert(n);
        document.getElementById('nownum').innerHTML = n+1;
        var i_before = i-1;
        if (1 == (this.defaults.showall)) {
          document.getElementById('lll').style.color = '#CCC';
        } else if (i_before < this.defaults.active){
          var i_before = this.defaults.showall - 1;
          document.getElementById('lll').style.cursor = 'pointer';
          document.getElementById('lll').onclick =  function(){ self.show(i_before);};
        } else {
          document.getElementById('lll').style.cursor = 'pointer';
          document.getElementById('lll').onclick =  function(){ self.show(i_before);};
        }
        
        var i_next = i+1;
        if (1 == (this.defaults.showall)) {
          document.getElementById('rrr').style.color = '#CCC';
        } else if (i_next == this.defaults.showall){
          i_next = 0;
          document.getElementById('rrr').style.cursor = 'pointer';
          document.getElementById('rrr').onclick =  function(){ self.show(i_next);};
        } else {
          document.getElementById('rrr').style.cursor = 'pointer';
          document.getElementById('rrr').onclick =  function(){ self.show(i_next);};
        //alert(i);
        }
      }else{
        body.style.display = 'none';
      }
      }
      this.links[i].className = (i==n) ? this.defaults.activeclass : '';
    }
    //alert('hoge');
  };
  var self = this;
  for (var i = 0; i < this.tabIndex.length; i++) {
      this.tabIndex[i].tabId = i;
      this.tabIndex[i].onclick = function(){ self.show(this.tabId);};
      this.tabIndex[i].innerHTML = i+1;
  }
  this.show(this.defaults.active);
};


var narrowIE = false;
var killNum = new Array();

if(navigator.appVersion.indexOf("MSIE") != -1)
{
  if(navigator.appVersion.match(/MSIE ([0-9]{1})/i))
  {
    if(parseInt(RegExp.$1, 10) < 6) narrowIE = true;
  }
}

_eventMlnk(window, "load", _setMlnk);

function _eventMlnk(target, type, callback)
{
  if(narrowIE) return;

  if(target.addEventListener)
  {
    target.addEventListener(type, callback, false);
  }else
  {
    target.attachEvent("on" + type, callback);
  }
}

function _setMlnk()
{
  if(narrowIE) return;

  for(var i = 0;i < document.getElementById("myLink").getElementsByTagName("ul").length;i ++)
  {
    for(var j = 0;j < document.getElementById("myLink").getElementsByTagName("ul")[i].getElementsByTagName("li").length;j ++)
    {
      if(document.getElementById("myLink").getElementsByTagName("ul")[i].getElementsByTagName("li")[j].getElementsByTagName("a").length == 0) continue;
/*
      if(!document.getElementById("myLink").getElementsByTagName("ul")[i].getElementsByTagName("li")[j].getElementsByTagName("a")[0].id
        || !document.getElementById("myLink").getElementsByTagName("ul")[i].getElementsByTagName("li")[j].getElementsByTagName("a")[0].id.match(/^mlnk_Hrf([0-9]+)$/))
      {
        _eventMlnk(document.getElementById("myLink").getElementsByTagName("ul")[i].getElementsByTagName("li")[j].getElementsByTagName("a")[0], "mouseover", _overMlnk2);
      }else
      {
        var num = RegExp.$1;
        _eventMlnk(document.getElementById("mlnk_Hrf" + num), "mouseover", _overMlnk);
        _eventMlnk(document.getElementById("mlnk_Rss" + num).getElementsByTagName("a")[0], "click", _outMlnk2);
        _setChildMlnk(document.getElementById("mlnk_Rss" + num));
      }
*/
    }
  }
}

function _setChildMlnk(node)
{
  for(var i = 0;i < node.childNodes.length;i ++)
  {
    if(!node.childNodes[i].nodeType || node.childNodes[i].nodeType != 1) continue;
    _eventMlnk(node.childNodes[i], "mouseover", _overMlnk);
    _eventMlnk(node.childNodes[i], "mouseout", _outMlnk);
    _setChildMlnk(node.childNodes[i]);
  }
}

function _overMlnk(e)
{
  var num = _getIdMlnk(e);
  if(num == -1) return;
  if(document.getElementById("mlnk_Rss" + num).style.display === "") return;

  for(var i = 0;i < document.getElementById("mlnk_Hrf" + num).parentNode.parentNode.getElementsByTagName("div").length;i ++)
  {
    if(!document.getElementById("mlnk_Hrf" + num).parentNode.parentNode.getElementsByTagName("div")[i].id
      || !document.getElementById("mlnk_Hrf" + num).parentNode.parentNode.getElementsByTagName("div")[i].id.match(/^mlnk_Rss([0-9]+)$/)) continue;
    document.getElementById("mlnk_Hrf" + num).parentNode.parentNode.getElementsByTagName("div")[i].style.display = "none";
  }
  if(_checkKill(num) != -1) return;

  var pos = _pos(document.getElementById("snap"));
  document.getElementById("mlnk_Rss" + num).style.left    = (pos.x) + "px";
  document.getElementById("mlnk_Rss" + num).style.top     = (pos.y) + "px";
  document.getElementById("mlnk_Rss" + num).style.display = "";
}

function _overMlnk2(e)
{
  if(!window.addEventListener) e = event;
  var tgt = (window.addEventListener) ? e.target : e.srcElement;

  for(var i = 0;i < tgt.parentNode.parentNode.getElementsByTagName("div").length;i ++)
  {
    if(!tgt.parentNode.parentNode.getElementsByTagName("div")[i].id
      || !tgt.parentNode.parentNode.getElementsByTagName("div")[i].id.match(/^mlnk_Rss([0-9]+)$/)) continue;
    tgt.parentNode.parentNode.getElementsByTagName("div")[i].style.display = "none";
  }
}

function _outMlnk(e)
{
  var num = _getIdMlnk(e);
  if(num == -1) return false;
  document.getElementById("mlnk_Rss" + num).style.display = "none";
  return false;
}

function _outMlnk2(e)
{
  var num = _getIdMlnk(e);
  if(num == -1) return false;
  document.getElementById("mlnk_Rss" + num).style.display = "none";
  if(_checkKill(num) == -1) killNum[killNum.length] = num;
  return false;
}

function _getIdMlnk(e)
{
  if(!window.addEventListener) e = event;

  var tgt = (window.addEventListener) ? e.target : e.srcElement;
  while(tgt !== undefined)
  {
    if(tgt.id && tgt.id.match(/^mlnk_(Hrf|Rss)([0-9]+)$/)) return RegExp.$2;
    tgt = tgt.parentNode;
  }

  return -1;
}

function _checkKill(num)
{
  for(var i = 0;i < killNum.length;i ++)
  {
    if(killNum[i] == num) return i;
  }
  return -1;
}

function _style(ele, ie, css)
{
    if(ele.currentStyle)
    {
      return ele.currentStyle[ie];
    }else if(window.getComputedStyle)
    {
      return window.getComputedStyle(ele, "").getPropertyValue(css);
    }
}

function _pos(ele)
{
  var _ie = ((navigator.userAgent.toLowerCase().indexOf("msie") != -1) && (navigator.userAgent.toLowerCase().indexOf("opera") == -1));
  var _gecko = ((navigator.userAgent.toLowerCase().indexOf('gecko') != -1) && (navigator.userAgent.toLowerCase().indexOf('safari') == -1));
  var tgt = ele;
  var x = 0;
  var y = 0;

  while(tgt)
  {
    x += tgt.offsetLeft; 
    y += tgt.offsetTop; 
    tgt = tgt.offsetParent;

    if((tgt) && (_ie))
    {
      x += (parseInt(_style(ele, "borderLeftWidth", "border-left-width", 10)) || 0);
      y += (parseInt(_style(ele, "borderTopWidth",  "border-top-width" , 10)) || 0);
    }
  }

  if(_gecko)
  {
    y += 2 * (parseInt(_style(document.getElementsByTagName("body")[0], "borderTopWidth",  "border-top-width"),  10) || 0);
  }

  return {"x" : x, "y" : y};
}

