/* ================================================
 Event manager
================================================ */
/* 2006-12-28 */

var EventManager = {};
EventManager.list = [];


EventManager.removeEvent = function( obj, event, listener, useCapture ){
	//if(navigator.userAgent.match(/Mac/) && document.all && !this.env.isOpera ) return;
	useCapture = useCapture || false;
	if(obj.removeEventListener){
		obj.removeEventListener( event, listener, useCapture );
	} else if(obj.detachEvent){
		obj.detachEvent( "on"+event, listener );
	} else {
		//delete obj['on'+event];
	}
};

EventManager.addEvent = function( obj, event, listener, useCapture ){
	//EventManager.list.push(arguments);
	EventManager.list[EventManager.list.length] = arguments;
	useCapture = useCapture || false;
	if(obj.addEventListener){
		obj.addEventListener( event, listener, useCapture );
	} else if(obj.attachEvent){
		obj.attachEvent( "on"+event, listener );
	} else {
		var exists = obj['on'+event];
		obj['on'+event] = (exists)?
			function(){
				exists();
				listener();
			} : function() {
				listener();
			};
	}
};


EventManager.addLoadEvent = function( listener ){
	EventManager.addEvent( window, "load", listener, false );
};

EventManager.removeEventCache = function(){
	if(!EventManager.list) return;
	for( var i=0; i<EventManager.list.length; i++ ){
//		EventManager.removeEvent.apply( this, EventManager.list[i] );
		EventManager.removeEvent( EventManager.list[i][0], EventManager.list[i][1], EventManager.list[i][2], EventManager.list[i][3] );
	}
}

EventManager.addEvent(window, 'unload', EventManager.removeEventCache, false);




/* ================================================
 Rollover Script
================================================ */
/* 2007-02-14 */

function hasClassName(el, classname) {
	if(!document.getElementById) return false;
	var el = (typeof el == 'string' )? document.getElementById(el) : el;
	if(el.className == null) return false;
	var list = el.className.split(/\s+/);
	for(var i = 0; i < list.length; i++)
		if (list[i] == classname)
			return true;
	return false;
}


var ROLLOVER_IMG = "rollover";
var ROLLOVER_IMG_NAME_SUFFIX = "on";

var buttons = [];
function registButton( el ){
	var btn = new Object();
	btn.src = el.src;
	btn.filetype = btn.src.substring(btn.src.lastIndexOf('.'));
	btn.basename = btn.src.substring(0, btn.src.length-btn.filetype.length);
	btn.onsrc = btn.basename + ROLLOVER_IMG_NAME_SUFFIX + btn.filetype;

	el.offsrc = btn.src;
	el.onsrc  = btn.onsrc;
	el.lock   = false;

	//buttons.push( el );
	buttons[buttons.length] = el;

	EventManager.addEvent( el, 'mouseover', function(){ swapImage( el, 'on' ); }, false );
	EventManager.addEvent( el, 'mouseout',  function(){ swapImage( el, 'off'); }, false );
}

function preloadImages(){
	if(!document.images) return;
	var ret = [];
	for( var i=0; i<buttons.length; i++ ){
		(new Image()).src = buttons[i].onsrc;
		ret[ret.length] = buttons[i].onsrc;
	}
}

function swapImage( obj, status ){
	if( !obj || !obj[status+"src"] ) return;
	if( !obj.lock )
		obj.src = obj[status+"src"];
}

function lock( obj ){
	if( obj.lock == 'undefined' ) return;
	if(!obj.lock)
		obj.lock = true;
}

function unlock(){
	if( obj.lock == 'undefined' ) return;
	if(obj.lock)
		obj.lock = false;
}

function initRolloverImages(){
	if(!document.getElementById) return;

	var img = document.getElementsByTagName('IMG');
	for( var i=0; i<img.length; i++ ){
		if (!hasClassName( img[i], ROLLOVER_IMG ))
			continue;
		else {
			registButton( img[i] );
		}
	}
	preloadImages();
}

EventManager.addEvent( window, 'load', initRolloverImages, false );




/* ================================================
 Popup
================================================ */
// inquiry popup
function inquiry(url){
		win = window.open(url,'inquiry','scrollbars=yes,resizable=yes,width=700,height=800');
  win.focus();
}




/* ================================================
 pageup
================================================ */
	/*user-defined object check*/
	/*NS4 = 1, IE4 = 2, IE5+ = 3, NS6 = 4, others = 0*/
/*	checkObj = document.all?(document.getElementById?3:2):(document.getElementById?4:(document.layers?1:0));
	function initObj(){
		checkObj = document.all?(document.getElementById?3:2):(document.getElementById?4:(document.layers?1:0));
	}

	function getWindowXOffset(){
		if(checkObj == 2 || checkObj == 3){
			return document.body.scrollLeft;
		}else if(checkObj == 1 || checkObj == 4){
			return window.pageXOffset;
		}else{
			return 0;
		}
	}

	function getWindowYOffset(){
		if(checkObj == 2 || checkObj == 3){
			return document.body.scrollTop;
		}else if(checkObj == 1 || checkObj == 4){
			return window.pageYOffset;
		}else{
			return 0;
		}
	}*/

	/*PageScroller*/
/*	var pageScrollTimer;
	function pageScroll(toX,toY,frms,cuX,cuY) {
		if(pageScrollTimer) clearTimeout(pageScrollTimer);
		if(!toX || toX < 0) toX = 0;
		if(!toY || toY < 0) toY = 0;
		if(!cuX) cuX = 0 + getWindowXOffset();
		if(!cuY) cuY = 0 + getWindowYOffset();
		if(!frms) frms = 6;

		cuX += (toX - getWindowXOffset()) / frms;
		if (cuX < 0) cuX = 0;
		cuY += (toY - getWindowYOffset()) / frms;
		if (cuY < 0) cuY = 0;
		posX = Math.floor(cuX);
		posY = Math.floor(cuY);
		window.scrollTo(posX, posY);
		if(posY < 1){
			window.scroll(0,0);
		}else if(posX != toX || posY != toY){
			pageScrollTimer = setTimeout("pageScroll("+toX+","+toY+","+frms+","+cuX+","+cuY+")",16);
		}else{
			clearTimeout(pageScrollTimer);
		}
	}*/


function toAnchor(idName) {
	var targetY = 0;
	var nowY = getNowY();
	distance = nowY - targetY;
	pageUp(targetY,nowY,distance);
}


/* ================================================
 Anchor Control
================================================ */
var ieCorrected;
var targetId;
function anchor(linkObj){
	
	targetId = linkObj.href.split('#')[1];
	var targetObj = document.getElementById(targetId);
	var targetY = targetObj.offsetTop;
	
	
	if(document.all){
		//26 = document.getElementById('mainContainer').style.paddingTop
		targetY = targetY + document.getElementById('header').offsetHeight + 26;
	}
	var nowY = getNowY();
	
	var distance;
	if(nowY<targetY){
		distance = targetY - nowY;
		pageDown(targetY,nowY,distance);
	}
	else if(nowY>targetY){
		distance = nowY - targetY;
		pageUp(targetY,nowY,distance);
	}
}
function pageDown(_tY, _nY, _d){
	_nY = _nY + Math.ceil(_d*0.1);
	scrollTo(0, _nY);
	_d = _tY - _nY;
	if(_d > 0){
		timerId = setTimeout("pageDown("+_tY+","+_nY+","+_d+")", 10);
	}else{
		clearTimeout(timerId);
	}

}
function pageUp(_tY, _nY, _d){
	_nY = _nY - Math.ceil(_d*0.1);
	scrollTo(0, _nY);
	_d = _nY - _tY;
	if(_d > 0){
		timerId = setTimeout("pageUp("+_tY+","+_nY+","+_d+")", 10);
	}else{
		clearTimeout(timerId);
	}

}
function getNowY(){
	var _nowY;
	if(document.body.scrollTop){ //
		_nowY = document.body.scrollTop;
	}
	else if(document.documentElement.scrollTop){ //IE6/7/Fx
		_nowY = document.documentElement.scrollTop;
	}
	else{ //N6
		_nowY = window.pageYOffset;
	}
	
	if(!_nowY){
		_nowY = 0;
	}
	return _nowY;
}