/*
*  Image rollover js
*  Author : Kazuhito Hokamura
*  http://webtech-walker.com/
*
*  Licensed under the MIT License:
*  http://www.opensource.org/licenses/mit-license.php
*/

(function(){
  function rollover(){
    var targetClassName = "hoverImg";//指定するクラス名
    var suffix = "_ov";//ファイル名の後ろにつけるやつ（rollover後のファイル）

    var overReg = new RegExp("^(.+)(\\.[a-z]+)$");
    var outReg = new RegExp("^(.+)" + suffix + "(\\.[a-z]+)$");

    var preload = new Array();
    var images = document.images;
    var inputs = document.getElementsByTagName("input");

    for (var i = 0, il = images.length; i < il; i++) {
      var classStr = images[i].getAttribute("class") || images[i].className;
      var classNames = classStr.split(/\s+/);
      for(var j = 0, cl = classNames.length; j < cl; j++){
        if(classNames[j] == targetClassName){

          //preload
          preload[i] = new Image();
          preload[i].src = images[i].getAttribute("src").replace(overReg, "$1" + suffix + "$2");

          //mouseover
          images[i].onmouseover = function() {
            this.src = this.getAttribute("src").replace(overReg, "$1" + suffix + "$2");
          }

          //mouseout
          images[i].onmouseout = function() {
            this.src = this.getAttribute("src").replace(outReg, "$1$2");
          }
        }
      }
    }
    
    for (var v = 0, vl = inputs.length; v < vl; v++){
      var classStr = inputs[v].getAttribute("class") || inputs[v].className;
      var classNames = classStr.split(/\s+/);
      for(var j = 0, cl = classNames.length; j < cl; j++){
        if(classNames[j] == targetClassName){
          //preload
          preload[v] = new Image();
          preload[v].src = inputs[v].getAttribute("src").replace(overReg, "$1" + suffix + "$2");
    
          //mouseover
          inputs[v].onmouseover = function() {
            this.src = this.getAttribute("src").replace(overReg, "$1" + suffix + "$2");
          }
    
          //mouseout
          inputs[v].onmouseout = function() {
            this.src = this.getAttribute("src").replace(outReg, "$1$2");
          }
        }
      }
    }
  }

  function addEvent(elem,event,func){
    if(elem.addEventListener) {
      elem.addEventListener(event, func, false);
    }else if(elem.attachEvent) {
      elem.attachEvent("on" + event, func);
    }
  }
  addEvent(window,"load",rollover);
})();
