/*
 *
 *  MOUSE EVENT
 *
 */
 
 
var ROBJ = {}

ROBJ = {
  CLASSNAME:"Hover",
  d        :"",
  target   :[],
  
  initialize:function(){
    this.addEvent("load",window,this.main)
    this.removeEvent("load",window,this.main)
  },
  
  main:function(){
    this.d = document;
    this.findNode(this.getTarget());
    this.constNode();
  },
  
  getTarget:function(){
    var d = this.d;
    return d.getElementsByTagName("img") || 0;
  },
  
  findNode:function(node){
    var n   = node;
    var len = n.length || 0
    
    for(var i=0; i<len; i++){
      if(this.findTarget(n[i])){
        this.target.push(n[i])
      }
    }
  },
  
  findTarget:function(d){
    var flg = false;
    if(d.className == this.CLASSNAME){
      flg = true;
    }
    return flg
  },
  
  constNode:function(){
    var t = this.target
    var l = t.length
    
    for(var i=0; i<l; i++){
      var s = t[i].src
      var img = new Image();
      
      // ファイル名と拡張子で切り分け
      var sep = s.match(/(.*)\/(.+)?\.(.+)$/);
      // _overを付加しマウスオーバー画像をcacheに先読格納
      img.src = sep[1]+"/"+sep[2]+"_over."+sep[3];
      
      this.setMouseEvent(t[i],s,img.src)
    }
    
  },
  
  setMouseEvent:function(node, out, over){
      this.addEvent("mouseover",node,function(){node.src = over})
      this.addEvent("mouseout", node,function(){node.src = out})      
  },
  
  
  
  addEvent:function(event, ele, func){
    var self = this
    // 関数の実行スコープをthisとして
    var f = function(){ func.apply(self); }
    try{
      ele.addEventListener(event,f,false);
    }catch(e){
      ele.attachEvent("on"+event,f)
    }
  },
  
  removeEvent:function(event, ele, func){
    var self = this
    var f = function(){ func.apply(self); }
    try{
      ele.removeEventListener(event,f,false);
    }catch(e){
      ele.detachEvent("on"+event,f)
    }
  },
  
  /*
   *  ログの出力
   */
  log:function(){
    var l = arguments[0]
    if(console){
      if(unsafeWindow){
        unsafeWindow.console.log(l)
      }else{
        console.log(l)
      }
    }else{
      /* firefox以外 */
      //alert(l)
    }
  }
  
}

ROBJ.initialize();







// ---------------- Page Scroll Script ----------------
(function(){
  var TOP_TARGET_CLASS = "pagetop"
  var pageScrollTimer;

  var getScrollLeft = function() { // 020225
    if ((navigator.appName.indexOf("Microsoft Internet Explorer",0) != -1)) {
//      return document.body.scrollLeft;
				return document.documentElement.scrollLeft
    } else if (window.pageXOffset) {
      return window.pageXOffset;
    } else {
      return 0;
    }
  }

  var getScrollTop = function() { // 020225
    if ((navigator.appName.indexOf("Microsoft Internet Explorer",0) != -1)) {
//      return document.body.scrollTop
				return document.documentElement.scrollTop
    } else if (	window.pageYOffset) {
      return window.pageYOffset;
    } else {
      return 0;
    }
  }

  var getScrollWidth = function() { // 010317
    if ((navigator.appName.indexOf("Microsoft Internet Explorer",0) != -1)) {
     return document.body.scrollWidth;
    } else if (window.innerWidth) {
      return window.innerWidth;
    }
    return 0;
  }

  var getScrollHeight = function() { // 010317
    if ((navigator.appName.indexOf("Microsoft Internet Explorer",0) != -1)) {
     return document.body.scrollHeight;
    } else if (window.innerHeight) {
      return window.innerHeight;
    }
    return 0;
  }

  var pageScroll = function(toX,toY,frms,cuX,cuY) { // 020314
    if (pageScrollTimer) clearTimeout(pageScrollTimer);
    if (!toX || toX < 0) toX = 0;
    if (!toY || toY < 0) toY = 0;
    if (!cuX) cuX = 0 + getScrollLeft();
    if (!cuY) cuY = 0 + getScrollTop();
    if (!frms) frms = 6;

    cuX += (toX - getScrollLeft()) / frms; if (cuX < 0) cuX = 0;
    cuY += (toY - getScrollTop()) / frms;  if (cuY < 0) cuY = 0;
    var posX = Math.floor(cuX);
    var posY = Math.floor(cuY);
		
    window.scrollTo(posX, posY);
    if (posX != toX || posY != toY) {
//      pageScrollTimer = setTimeout("pageScroll("+toX+","+toY+","+frms+","+cuX+","+cuY+")",16);
      var arg = arguments;
			pageScrollTimer = setTimeout(function(){return arg.callee(toX,toY,frms,cuX,cuY)
			},16)
    }
  }

  var jumpToPageTop = function() { // 020301
    if (!MacIE3 && !MacIE4 && !NN && window.scrollTo || NN && (Vminor >= 4.75) && window.scrollTo) {
      pageScroll(0,0,6);
    } else {
      location.hash = "top";
    }
  }

  var addEvent = function(event, ele, func){
    var self = this
    var f = function(){ func.apply(self); }
    try{
      ele.addEventListener(event,f,false);
    }catch(e){
      ele.attachEvent("on"+event,f)
    }
  }
  
  var func = function(){
    var d = document.getElementsByTagName("a")
    var l = d.length
    for(var i=0; i<l; i++){
      if(d[i].className == TOP_TARGET_CLASS){
				d[i].href="javascript:void(0)";
        addEvent("click",d[i],jumpToPageTop)
      }
    }
  }

  var log = function(){
    var l = arguments[0]
    if(console){
      if(arguments.unsafeWindow){
        arguments.unsafeWindow.console.log(l)
      }else{
        console.log(l)
      }
    }else{
      /* firefox以外 */
      //alert(l)
    }
  }

  
  
  addEvent("load",window,func)
})();
