/*
  imgFader()
  画像をフェードさせながらランダムに入れ替え
  http://asamuzak.jp
*/

var isMSIE = /*@cc_on!@*/false;
var ieVersion = (function(reg) { return isMSIE && navigator.userAgent.match(reg) ? RegExp.$1 * 1 : null; })(/MSIE\s([0-9]+[\.0-9]*)/);

function addEvent(target, type, listener) {
  target.addEventListener ? target.addEventListener(type, listener, false) :
  target.attachEvent ? target.attachEvent('on' + type, function() { listener.call(target, window.event) }) :
  target['on' + type] = function(e) { listener.call(target, e || window.event) };
}

function imgFader() {
  var rImgSettings = function() {
    return [
      // ここにランダム表示する画像群の配列（画像群毎にカンマ区切りで配列を追加）
      // [画像の総枚数, 画像フォルダへのパス, 画像のid, 拡張子],
      // [画像2の総枚数, 画像2フォルダへのパス, 画像2のid, 拡張子]…
         [8, './img/random/', 'random_photo', '.jpg']
      // [24, './random/', 'random_photo', '.jpg'],
      // [10, './random2/', 'random_image', '.gif'],
      // [10, './random3/', 'random_image2', '.gif']
    ];
  };
  var fadeInOut = function(rImg) {
    var elm = document.getElementById(rImg.id);
    if(elm.style.opacity > 0) {
      elm.style.opacity = Math.floor((elm.style.opacity - 0.05) * 100) / 100;
      elm.style.opacity <= 0 && (elm.style.opacity = 0);
      // setTimeout(function() { fadeInOut(rImg) }, 100);  // 2秒フェード
      setTimeout(function() { fadeInOut(rImg) }, 50);  // 1秒フェード
    }
    else {
      elm.src = rImg.path + rImg.nxt + rImg.ext;
      elm.style.opacity = 1;
      setNextImg(rImg);
    }
  };
  var setNextImg = function(rImg) {
    for(var r = Math.floor(Math.random() * rImg.max) + 1; r == rImg.nxt;) {
      r = Math.floor(Math.random() * rImg.max) + 1;
    }
    if(r != rImg.nxt) {
      var rSrc = rImg.path + r + rImg.ext;
      rImg.nxt = r;
      if(isMSIE && ieVersion < 9) {
        var img = new Image(); img.src = rSrc;
        setTimeout(function() {
          var img = new Image(); img.src = rImg.path + rImg.nxt + rImg.ext;
          var elm = document.getElementById(rImg.id);
          elm.style.filter = "progid:DXImageTransform.Microsoft.Fade(duration=1)";
          elm.filters[0].apply(); elm.src = img.src; elm.filters[0].play();
          setNextImg(rImg);
        }, 2000);  // ループ間隔（ミリ秒）
      }
      else {
        var elm = document.getElementById(rImg.id);
        elm.parentNode.setAttribute('style', 'background : url(' + rSrc + '); background-size : 100% 100%;');
        elm.style.opacity = 1;
        setTimeout(function() { fadeInOut(rImg) }, 2000);  // ループ間隔（ミリ秒）
      }
    }
  };
  var absPath = function(oPath) {
    var elm = document.createElement('span');
    elm.innerHTML = '<a href="' + oPath + '" />';
    return elm.firstChild.href;
  };
  if(document.getElementById) {
    for(var arr = rImgSettings(), i = 0, l = arr.length; i < l; i++) {
      var elm = document.getElementById(arr[i][2]);
      var pReg = new RegExp(absPath(arr[i][1]) + '([0-9]+)' + arr[i][3]);
      elm && elm.src.match(pReg) && setNextImg({ nxt : RegExp.$1, max : arr[i][0], path : arr[i][1], id : arr[i][2], ext : arr[i][3] });
    }
  }
}
addEvent(window, 'load', imgFader);
