/*______________________________________

  Mizuyari JavaScript Lib. #060817
  
  Copyright (C) 1999-2006 Mizuyari All rights reserved.
  Script written by Mahiro Komura <mahirok@mizuyari.jp>
  http://mizuyari.jp/
______________________________________*/

var UA  = navigator.userAgent;
var Mac = navigator.appVersion.indexOf('Mac',0) != -1;
var Win = navigator.appVersion.indexOf('Win',0) != -1;
var IE  = navigator.appName.indexOf("Microsoft Internet Explorer",0) != -1;
var NN  = navigator.appName.indexOf("Netscape",0) != -1;
var NN4 = document.layers;
var Moz = UA.indexOf("Gecko/") != -1;
var Opera  = window.opera;
var Opera8 = navigator.userAgent.indexOf("Opera 8") != -1;
var Opera7 = navigator.userAgent.indexOf("Opera 7") != -1;
var Opera6 = navigator.userAgent.indexOf("Opera 6") != -1;
var Safari = UA.indexOf("Safari") != -1;
var Vmajor = parseInt(navigator.appVersion); // ex. 3
var Vminor = parseFloat(navigator.appVersion); // ex. 3.01
var WinIE7 = ((Win && navigator.appVersion.indexOf('MSIE 7.',0) != -1));
var WinIE6 = ((Win && navigator.appVersion.indexOf('MSIE 6.',0) != -1));
var WinIE55 = ((Win && navigator.appVersion.indexOf('MSIE 5.5',0) != -1));
var WinIE50 = ((Win && navigator.appVersion.indexOf('MSIE 5.0',0) != -1));
var MacIE  = ((Mac && navigator.appVersion.indexOf('MSIE',0) != -1));
var MacIE5 = ((Mac && navigator.appVersion.indexOf('MSIE 5.',0) != -1));
var MacIE4 = ((Mac && navigator.appVersion.indexOf('MSIE 4.',0) != -1));
var MacIE3 = ((Mac && navigator.appVersion.indexOf('MSIE 3.',0) != -1));
var iCab = (navigator.userAgent.indexOf("iCab",0) != -1);

function preloadImg(src) {
 if (document.images && src) (new Image()).src = src;
}

function preloadImgs(srcs) {
 if (document.images && srcs) {
  for (i=0; i<srcs.length; i++) preloadImg(srcs[i]);
 }
}

function swapImage(target,src) { // 020507
 var NN4_layerPath;
 if (arguments.length > 2 && document.layers) {
  NN4_layerPath = "";
  for (i=2; i<arguments.length; i++) NN4_layerPath += 'document.layers["' + arguments[i] + '"].';
  eval(NN4_layerPath + 'document.images["' + target + '"]').src = src;
  return;
 }
 document.images[target].src = src;
}

function openWindow(url,title,options) {
 var newWin;
 if (!!window && url) {
  if (!title) title = "_blank";
  if (!options) {
   options = "toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,favorites=yes";
  }
  newWin = window.open(url,title,options);
  if (!WinIE55) newWin.focus();
 }
}

function openWindowFull(url){
 h = screen.availHeight;
 w = screen.availWidth;
 window.open(url,"window1","height="+h+",width="+w+",top=0,left=0,resizable=yes");
}

function mizSwapImgs() { // mizSwapImgs #060622
 if(!document.getElementById) return;
 if(!document.images) return;
 var tClassName = "swapImg";
 var preImgs = new Array();
 var imgElmt = document.getElementsByTagName("IMG");
 for (j=0; j<imgElmt.length; j++) {
  var strClassAttr = imgElmt[j].className.split(" ").toString();
  if (strClassAttr.indexOf(tClassName) != -1) {
   var tmpArr = preImgs;
   var tmpElmt = imgElmt[j];
   var defaultSrc = "" + tmpElmt.src;
   var fileExt = defaultSrc.substring(defaultSrc.lastIndexOf('.'));
   var fileName = defaultSrc.substring(0,defaultSrc.length - fileExt.length);
   var idPrefix = "mizImg";
   if (!tmpElmt.id) tmpElmt.id = idPrefix + "_" + j;
   tmpElmt.stayFlag = (strClassAttr.indexOf("stay") != -1) ? true : false;
   tmpElmt.up = defaultSrc;
   tmpElmt.over = fileName + "_o" + fileExt;
   if (preImgs.toString().indexOf(tmpElmt.over) == -1) preImgs[preImgs.length] = tmpElmt.over;
   var parentElmt = tmpElmt.parentNode;
   // if (parentElmt.tagName=="A") {
    tmpElmt.targetId = tmpElmt.id;
    tmpElmt.focusImg = tmpElmt.over;
    tmpElmt.blurImg = (!tmpElmt.stayFlag) ? tmpElmt.up : tmpElmt.over;
    tmpElmt.onfocus = tmpElmt.onmouseover = function() { document.getElementById(this.targetId).src = this.focusImg; }
    tmpElmt.onblur = tmpElmt.onmouseout = function() { document.getElementById(this.targetId).src = this.blurImg; }
   // }
  }
 }
 var inputElmt = document.getElementsByTagName("INPUT");
 for (j=0; j<inputElmt.length; j++) {
  if (inputElmt[j].type.toLowerCase() != "image") continue;
  var strClassAttr = inputElmt[j].className.split(" ").toString();
  if (strClassAttr.indexOf(tClassName) != -1) {
   var tmpArr = preImgs;
   var tmpElmt = inputElmt[j];
   var defaultSrc = "" + tmpElmt.src;
   var fileExt = defaultSrc.substring(defaultSrc.lastIndexOf('.'));
   var fileName = defaultSrc.substring(0,defaultSrc.length - fileExt.length);
   var idPrefix = "mizInput";
   if (!tmpElmt.id) tmpElmt.id = idPrefix + "_" + j;
   tmpElmt.stayFlag = (strClassAttr.indexOf("stay") != -1) ? true : false;
   tmpElmt.up = defaultSrc;
   tmpElmt.over = fileName + "_o" + fileExt;
   if (preImgs.toString().indexOf(tmpElmt.over) == -1) preImgs[preImgs.length] = tmpElmt.over;
    tmpElmt.targetId = tmpElmt.id;
    tmpElmt.focusImg = tmpElmt.over;
    tmpElmt.blurImg = (!tmpElmt.stayFlag) ? tmpElmt.up : tmpElmt.over;
    tmpElmt.onfocus = tmpElmt.onmouseover = function() { this.src = this.focusImg; }
    tmpElmt.onblur = tmpElmt.onmouseout = function() { this.src = this.blurImg; }
  }
 }
 preloadImgs(preImgs);
}


var pageScrollTimer;
function pageScroll(id,toX,toY,frms,cuX,cuY) { // pageScroll #060524
 var scrollableTop = document.body.scrollHeight - getWindowInnerHeight();
 if (pageScrollTimer) clearTimeout(pageScrollTimer);
 if (!toX || toX < 0) toX = 0;
 if (!toY || toY < 0) toY = 0;
 if (toY > scrollableTop) toY = scrollableTop;
 if (!cuX) cuX = getPageXOffset();
 if (!cuY) cuY = getPageYOffset();
 if (!frms) frms = 6;
 cuX += (toX - getPageXOffset()) / frms; if (cuX < 0) cuX = 0;
 cuY += (toY - getPageYOffset()) / 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('"+id+"',"+toX+","+toY+","+frms+","+cuX+","+cuY+")",16);
 } else {
  if (!WinIE7) location.hash = id;
 }
}

function mizScrollApp(id) { // mizScrollApp #060617
 var toY;
 if (!MacIE && !NN && window.scrollTo || NN && (Vminor >= 4.75) && window.scrollTo) {
  toY = getElementOffsetTopById(id);
  pageScroll(id,0,toY,6);
 } else {
  location.hash = id;
 }
}

function jumpToPageTop() { // jumpToPageTop #060817
 var id = "page-top"
 if (!MacIE3 && !MacIE4 && !NN && window.scrollTo || NN && (Vminor >= 4.75) && window.scrollTo) {
  pageScroll(id,0,0,6);
 } else {
  location.hash = id;
 }
}

function setObj(id) {
	if (document.all) {
		return document.all(id);
	} else if (document.getElementById) {
		return document.getElementById(id);
	} else if (document.layers) {
		return document.layers[id];
	}
	return false;
}

// ========== layer control ==========

function moveDivTo(lyrname,Xpx,Ypx) {
	var obj = setObj(lyrname);
	if (document.all && obj.style) {
		obj.style.pixelLeft = Xpx;
		obj.style.pixelTop  = Ypx;
	} else if (document.getElementById && obj.style) {
		obj.style.left = Xpx + 'px';
		obj.style.top  = Ypx + 'px';
	} else if (document.layers) {
		obj.moveTo(Xpx,Ypx);
	}
}

function cngPosX(lyrname,Xpx) {
	var obj = setObj(lyrname);
	if (document.all && obj.style) {
		obj.style.pixelLeft = Xpx;
	} else if (document.getElementById && obj.style) {
		obj.style.left  = Xpx + 'px';
	} else if (document.layers) {
		obj.left = Xpx;
	}
}

function cngPosY(lyrname,Ypx) {
	var obj = setObj(lyrname);
	if (document.all && obj.style) {
		obj.style.pixelTop = Ypx;
	} else if (document.getElementById && obj.style) {
		obj.style.top  = Ypx + 'px';
	} else if (document.layers) {
		obj.top = Ypx;
	}
}

function moveDivBy(lyrname,Xpx,Ypx) {
	var obj = setObj(lyrname);
	Xpx = parseInt(Xpx); Ypx = parseInt(Ypx);
	if (document.all && obj.style) {
		obj.style.pixelLeft = Xpx + getDivPosX(lyrname);
		obj.style.pixelTop  = Ypx + getDivPosY(lyrname);
	} else if (document.getElementById && obj.style) {
		obj.style.left = Xpx + getDivPosX(lyrname) + 'px';
		obj.style.top  = Ypx + getDivPosY(lyrname) + 'px';
	} else if (document.layers) {
		obj.moveTo(Xpx,Ypx);
	}
}

function getDivPosX(lyrname) {
	var obj = setObj(lyrname);
	if (document.all && obj.style) {
		return parseInt(obj.style.pixelLeft);
	} else if (document.getElementById && obj.style) {
		if (Moz) {
			style = getComputedStyle(obj,null);
			return parseInt(style.getPropertyValue('left'));
		}
		if (Safari) return obj.offsetLeft;
		return parseInt(obj.style.left);
	} else if (document.layers) {
		return parseInt(obj.left);
	}
	return '';
}

function getDivPosY(lyrname) {
	var obj = setObj(lyrname);
	if (document.all && obj.style) {
		return parseInt(obj.style.pixelTop);
	} else if (document.getElementById && obj.style) {
		if (Moz) {
			style = getComputedStyle(obj,null);
			return parseInt(style.getPropertyValue('top'));
		}
		if (Safari) return obj.offsetTop;
		return parseInt(obj.style.top);
	} else if (document.layers) {
		return parseInt(obj.top);
	}
	return '';
}

function getDivWidth(lyrname) {
	var obj = setObj(lyrname);
	if (document.all && obj.style) {
		return obj.clientWidth;
	} else if (document.getElementById && obj.style) {
		if (Moz) {
			style=getComputedStyle(obj,null);
			return parseInt(style.getPropertyValue('width'));
		}
		if (Safari) return obj.offsetWidth;
		return parseInt(obj.style.width);
	} else if (document.layers) {
		return obj.clip.width;
	}
	return '';
}

function getDivHeight(lyrname) {
	var obj = setObj(lyrname);
	if (document.all && obj.style) {
		return obj.clientHeight;
	} else if (document.getElementById && obj.style) {
		if (Moz) {
			style=getComputedStyle(obj,null);
			return parseInt(style.getPropertyValue('height'));
		}
		if (Safari) return obj.offsetHeight;
		return parseInt(obj.style.height);
	} else if (document.layers) {
		return obj.clip.height;
	}
	return '';
}

function setVisiblity(target, str) {
	var obj = setObj(target);
	var values = new Array(2);
	if ((document.getElementById || document.all) && obj.style) {
		if (str == null) str = ( obj.style.visibility == 'hidden' ) ? 1 : 0;
		obj.style.visibility = (str > 0) ? 'visible' : 'hidden';
	} else if (document.layers) {
		if (str == null) str = ( obj.visibility == 'hide' ) ? 1 : 0;
		obj.visibility = (str > 0) ? 'show' : 'hide';
	}
}

function setDisplay(target, str) {
	var obj = setObj(target);
	var values = new Array(2);
	if ((document.getElementById || document.all) && obj.style) {
		if (str == null) str = ( obj.style.display == 'none' ) ? 1 : 0;
		obj.style.display = (str > 0) ? 'block' : 'none';
	} else if (document.layers) {
		if (str == null) str = ( obj.display == 'none' ) ? 1 : 0;
		obj.display = (str > 0) ? 'block' : 'none';
	}
}

// ========== scroll control ==========

function getScrollLeft() { // 020225
 if ((navigator.appName.indexOf("Microsoft Internet Explorer",0) != -1)) {
  return document.body.scrollLeft;
 } else if (window.pageXOffset) {
  return window.pageXOffset;
 } else {
  return 0;
 }
}

function getScrollTop() { // 020225
 if ((navigator.appName.indexOf("Microsoft Internet Explorer",0) != -1)) {
  return document.body.scrollTop;
 } else if (window.pageYOffset) {
  return window.pageYOffset;
 } else {
  return 0;
 }
}

function getScrollWidth() { // 010317
 if ((navigator.appName.indexOf("Microsoft Internet Explorer",0) != -1)) {
  return document.body.scrollWidth;
 } else if (window.innerWidth) {
  return window.innerWidth;
 }
 return 0;
}

function getScrollHeight() { // 010317
 if ((navigator.appName.indexOf("Microsoft Internet Explorer",0) != -1)) {
  return document.body.scrollHeight;
 } else if (window.innerHeight) {
  return window.innerHeight;
 }
 return 0;
}

function getPageXOffset() { // getPageXOffset #060524 ()
 if (window.pageXOffset) {
  return window.pageXOffset;
 } else if (document.compatMode == "CSS1Compat") {
  return document.documentElement.scrollLeft;
 } else if (document.body.scrollLeft) { // for IE
  return document.body.scrollLeft;
 } else {
  return 0;
 }
}

function getPageYOffset() { // getPageYOffset #060524
 if (window.pageYOffset) {
  return window.pageYOffset;
 } else if (document.compatMode == "CSS1Compat") {
  return document.documentElement.scrollTop;
 } else if (document.body.scrollTop) { // for IE
  return document.body.scrollTop;
 } else {
  return 0;
 }
}



// ========== elementOffsetInfo ==========

function getElementOffsetTopById(id) { // getElementOffsetTopById #060524
 if (!mizInitFlag) return;
 id = String(id);
 var element = document.getElementById(id);
 return getElementOffsetTop(element);
}

function getElementOffsetTop(element) { // getElementOffsetTop #060524
 if (!mizInitFlag) return;
 var _tempElement = element;
 var _tempOffsetTop = null;
 this._totalOffsetTop = 0;
 this._log = '';
 this._debug = false;
 this._bench = undefined;
 if (this._debug) { this._bench = new mizFuncBench; this._bench.begin(); }
 while (_tempElement.offsetParent != undefined) {
  _tempOffsetTop = !isNaN(_tempElement.offsetTop) ? parseInt(_tempElement.offsetTop) : 0;
  if (this._debug) this._log = "/" + _tempElement.tagName + '#' + _tempElement.id + '(' + _tempOffsetTop + ')' + this._log;
  this._totalOffsetTop += _tempOffsetTop;
  if (Win && IE) break;
  _tempElement = _tempElement.offsetParent;
 }
 if (this._debug) this._log = this._log + '(total:' + this._totalOffsetTop + ',' + this._bench.finish() + 'ms)';
 return this._totalOffsetTop;
 // return this._log;
}


// ========== debug ==========

function mizFuncBench() { // mizFuncBench #060524
 this._start  = null;
 this._end    = null;
}
mizFuncBench.prototype.begin = function () {
 this._start = (new Date()).getTime();
}
mizFuncBench.prototype.finish = function () {
 if (this._start == null) return false;
 this._end = (new Date()).getTime();
 return eval((this._end - this._start));
}

function getWindowInnerHeight() { // getWindowInnerHeight #060524
 if(window.innerHeight) {
  return window.innerHeight;
 } else if(document.compatMode == "CSS1Compat") {
  return document.body.parentNode.clientHeight;
 } else if (document.body.clientHeight) {
  return document.body.clientHeight;
 } else {
  return 0;
 }
}

// ========== extend: Date Object ==========

Date.prototype.isLeapYear = function() {
 var year = this.getFullYear();
 return ((year%4 == 0) && (year%100 != 0) || (year%400 == 0)) ? true : false;
}

Date.prototype.getMonthDays = function() {
 var monthDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
 if (this.isLeapYear()) monthDays[1] = 29;
 return monthDays[this.getMonth()];
}

// ========== init ==========

var mizInitFlag = false;
function mizInit() { // mizInit #060228
 if (!mizInitFlag) mizSwapImgs();
 mizInitFlag = true;
}

window.onload = mizInit;
