function ArrowLet(s){
  var context = this;
  var can = document.getElementById(s);
  can.className += " arrowlet";
  var as = this.can = can.getElementsByTagName("a");
  as[0].className += " first";
  this.current = getCurrent(as); //may sotre current anchor
  for(var i=0; i<as.length; i++){
    this.bind(as[i],"onmouseover",function(e){
      e = e||event;
      context.disabled();
    });
    this.bind(as[i],"onmouseout",function(e){
      e = e||event;
      context.enabled();
    });
    this.bind(as[i],"onclick",function(e){
      e = e||event;
      var anchor = this;
      context.setCurrent(anchor);
      //prevent default action
      if(e.preventDefault)e.preventDefault();
      return false;
    });
  }
  function getCurrent(as){
    for(var i=0;i<as.length; i++)
      if(/current/.test(as[i].className)) return as[i];
    return null;
  }
}
ArrowLet.prototype = {
  can:[],
  current:null,
  setCurrent:function(index,click){
    var tag = isNaN(index)?index:this.can[index];
    //document.getElementById("dbg").innerHTML ="<br>"+tag;
    //for(var p in tag) document.getElementById("dbg").innerHTML +="<br>"+p+"="+tag[p];
    if(click)tag.onclick();
    if(tag){
      if(this.current) this.current.className = this.current.className.replace(/[ ]?current(_dis)?/g,"");
      tag.className += " current";
      this.current = tag;
    }
  },
  enabled:function(index){
    var tag = this.current;
    if(tag) tag.className = tag.className.replace(/[ ]?current_dis/g," current");
  },
  disabled:function(index){
    var tag = this.current;
    if(tag) tag.className = tag.className.replace(/[ ]?current/g," current_dis");
  },
  bind:function(tag,event,handler,capture){
    if(typeof(handler)!="function")throw new Error("handler must a function");
    if(typeof(tag)!="object") throw new Error("tag must an DOM element");
    capture = capture?true:false;
    var paras = null;
    var proxy = function(e){
      return handler.call(tag,e,paras);
    }
    if (tag.addEventListener){
      tag.addEventListener(event.replace(/^on/,""),proxy,capture);
    }else if(tag.attachEvent){
      tag.attachEvent(event,proxy);
    }else{
      tag[event] = proxy;
    }
  }
}


