// --------------------
//   smartRollover
// --------------------
function smartRollover(){
	if(document.getElementsByTagName){
	    var preload = [];
		var images = document.getElementsByTagName("img");
		for(var i=0, src, l; i < images.length; i++){
			src = images[i].getAttribute("src");
			if(src.match("_off.")){
				images[i].src_rollout =  src;
				images[i].src_rollover =  src.replace("_off.", "_on.");

		        l = preload.length;
		        preload[l] = new Image();
		        preload[l].src = images[i].src_rollover;

				addEvent(images[i], "mouseout", function(){this.src = this.src_rollout;});
				addEvent(images[i], "mouseover", function(){this.src = this.src_rollover;});
			}
		}
	}
}

addEvent(window, 'load', smartRollover);


// --------------------
//   Event
// --------------------
// EventListener IE/Other Compatible
function addEvent(eventTarget, eventName, func){
	if(eventTarget.addEventListener){
		eventTarget.addEventListener(eventName, func, false);
	} else if(window.attachEvent){
		eventTarget.attachEvent('on'+eventName, function(){func.apply(eventTarget);});
	}
}



// --------------------
//   smoothScroll
// --------------------

// 名前空間を定義。
if (typeof NS == 'undefined' || !NS) {
  window.NS = {};
}

NS.util = function() {
  return {
    isMSIE : /*@cc_on!@*/false, 
    
    // ieとその他ブラウザの仕様差異を吸収する処理
    addListener : function (el, type, fn, flg) {
      if(!el) { return false; }
      if(el.addEventListener) {
        el.addEventListener(type, fn, flg);
      }
      else if(el.attachEvent) {
        el.attachEvent('on' + type, fn);
      }
      else {
        return false;
      }
    }
  }
}();

// スムーススクロール
NS.pageTop = function() {

  // アニメーション
  var scrollUp = function() {
    var position = getPosition();
    // アニメーション動作の微調整
    window.scrollTo(Math.max(Math.floor(position.x / 2), 0), Math.max(Math.floor(position.y - (position.y / 5)), 0));
    if (position.x > 0 || position.y > 0) {
      window.setTimeout(scrollUp, 30);
    }
  }
  var getPosition = function() {
    var position = {};
    position.x = document.body.scrollLeft || document.documentElement.scrollLeft;
    position.y = document.body.scrollTop  || document.documentElement.scrollTop;
    return position;
  }
  var getAnchors = function() {
    var anchors = document.getElementsByTagName('a');
    return anchors;
  }

  var main = function() {
    var anchors = getAnchors();
    for (var i = 0; i < anchors.length; i++) {
      if (anchors[i].className.match(/ *scroll */)) {
        NS.util.addListener(anchors[i], 'click', scrollUp, false);
        if (anchors[i].getAttribute('href')) {
          anchors[i].setAttribute('href', 'javascript:void(0);');
        }
      }
    }
  }();
}

// ロードイベントに追加
NS.util.addListener(window, 'load', NS.pageTop , false);



// --------------------
//   smoothScroll2
// --------------------

function smoothscroll2(targetID){
  if( !document.getElementById ) {return true;}
  var step=10;
  var max=100;
  var accel=5;
  var interval=20;
  var current_y = document.body.scrollTop  || document.documentElement.scrollTop;
  var element=document.getElementById(targetID);
  if (!element){return true;}
  var target_y = 0;
  for (i = element;i.offsetParent;i=i.offsetParent ){
    target_y += i.offsetTop;
  }
  var count=0;
  if ( current_y > target_y ){ step = -(step); accel = -(accel);}
  var timerid = setInterval( function(){
    if (step<max) step += (count*accel);
    if ( Math.abs(current_y-target_y) < Math.abs(step) ){
      window.scrollTo((document.body.scrollTop  || document.documentElement.scrollTop),target_y);
      clearInterval(timerid);
      return false;
    }else{
      window.scrollBy(0,step);
      current_y += step;
      count++;
    }
  },interval);
  return false;
}



// --------------------
//   showHideLayers
// --------------------

function MM_showHideLayers() { //v9.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) 
  with (document) if (getElementById && ((obj=getElementById(args[i]))!=null)) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}






function getObj(id){
	return document.all && document.all(id) || document.getElementById && document.getElementById(id);
}

function setOpacity(obj, n){
	obj.style.MozOpacity = n;
	obj.style.filter = "alpha(opacity: " + (n * 100) + ")";
	obj.style.opacity = n;
	obj.style.zoom = "1";
}

function getOpacity(obj){
	return (isNaN(Number(obj.style.MozOpacity))?0:Number(obj.style.MozOpacity));
}

function setClass(e, c){
	if(document.all) return e.setAttribute("className", c);
	else return e.setAttribute("class" , c);
}

function addClass(e, c){
	if(!getClass(e).match(c)) c = getClass(e) + " " + c;
	else c = getClass(e);
	setClass(e, c);
}

function removeClass(e, c){
	if(getClass(e)) setClass(e, getClass(e).replace(c, ""));
}

