﻿/*=========================================================

	@ JavaScript Extension Module
	@ BaseModule : default.js
	@ Version    : 0.30

=========================================================*/

var jem = {};

new function($) {
	if(!$) return false;
	function JEM() {
		this.ver  = 0.3;
		var root = 'common/v03/js/default.js';
		var getRootScript = function() {
			var pattern = new RegExp(root);
			var script = document.getElementsByTagName('script');
			var Index = script.length;
			for(var i=0; i<Index; i++) {
				if(script[i].src.match(pattern)) return script[i].src;
			}
		};
		this.require = function(require) {
			var rootPath = getRootScript();
			var root = rootPath.split('/');
			var file = root.slice(root.length-1);
			var script = '<script type="text/javascript" src="'+rootPath.replace(file,require)+'"></script>';
			document.write(script.toString());
		};
		this.relative = function(postFile,replaceFile,postElement) {
			if(!postElement) postElement = 'script';
			var path;
			var element = document.getElementsByTagName(postElement);
			var Index = element.length;
				for(var i=0,j=0; i<Index; i++) {
					if(element[i].src.indexOf(postFile)>=0) {
						path = element[i].src.replace(postFile,replaceFile);
					}
				};
			return String(path);
		};
	};
	jem.Module = new JEM();
	//jem.Module.require('jemModule.js');
}(document.getElementById);



/*=========================================================

	Utility

=========================================================*/

/* GetElement
---------------------------------------------------------*/
jem.$ = function(elementName,htmlElement) {
	if(elementName.substr(0,1).match(/\#/)) {
		var elementName = elementName.substring(1);
		var element = document.getElementById(elementName);
		if(element) {
			var result = element;
			result._w = element.offsetWidth;
			result._h = element.offsetHeight;
			result._x = element.offsetLeft;
			result._y = element.offsetTop;
			while(element.offsetParent) {
				element = element.offsetParent;
				result._x += element.offsetLeft;
				result._y += element.offsetTop;
			};
			return result;
		} else {
			return false;
		}
	} else if(elementName.substr(0,1).match(/\./)) {
		var elementName = elementName.substring(1);
		if(!htmlElement) htmlElement = '*';
		var result = [];
		var elements = document.getElementsByTagName(htmlElement);
		var pattern = new RegExp(elementName);
		var Index = elements.length;
		for(var i=0,j=0; i<Index; i++) {
			if(elements[i].className.match(pattern)) {
				result[j++] = elements[i];
			}
		};
		if(result.length) {
			return result
		} else {
			return false;
		}
	}
};



/* EventListener
---------------------------------------------------------*/
jem.addEvent = function(element,evtType,func,useCapture) {
	if(evtType=='mousewheel') {
		if(navigator.userAgent.toUpperCase().match('FIREFOX')) evtType = 'DOMMouseScroll';
	}
	if(element.addEventListener) {
		if(!useCapture) useCapture = false;
		element.addEventListener(evtType, func, useCapture);
	} else if(element.attachEvent) {
		element.attachEvent('on'+evtType, func);
	} else {
		var evtStorage = element['on'+evtType];
		element['on'+evtType] = evtStorage ? function () {func(); evtStorage()} : func;
	}
};

jem.removeEvent = function(element,evtType,func,useCapture) {
	if(evtType=='mousewheel') {
		if(navigator.userAgent.toUpperCase().match('FIREFOX')) evtType = 'DOMMouseScroll';
	}
	if(element.removeEventListener) {
		if(!useCapture) useCapture = false;
		element.removeEventListener(evtType, func, useCapture);
	} else if(element.detachEvent) {
		element.detachEvent('on'+evtType, func);
	} else {
		return false;
	}
};



/* EnvVariable
---------------------------------------------------------*/
jem.EnvVariable = function() {
	this.UA = navigator.userAgent.toUpperCase();
};

jem.EnvVariable.prototype = {
	mode : function() {
		if(document.compatMode=='BackCompat') return 'Quirk';
		if(document.compatMode=='CSS1Compat') return 'Standard';
	},
	os : function() {
		var ua = this.UA;
		if     (ua.match(/WIN(DOWS)?/)) {return 'win';}
		else if(ua.match(/MAC/))        {return 'mac';}
		else if(ua.match(/X11/))        {return 'unix';}
		else if(ua.match(/LINUX/))      {return 'linux';}
		else {return false;}
	},
	ua : function() {
		var ua = this.UA;
		var os = this.os();
		if     (os=='win'&&ua.match(/MSIE/)) {return 'ie';}
		else if(os=='mac'&&ua.match(/MSIE/)) {return 'mie';}
		else if(ua.match(/WEBKIT/))          {return 'webkit';}
		else if(ua.match(/GECKO/))           {return 'gecko';}
		else if(ua.match(/OPERA/))           {return 'opera';}
		else {return false;}
	},
	isWin : function() {if(this.os()=='win') return true;},
	isW95 : function() {if(this.os()=='win' && this.UA.match(/95/)) return true;},
	isW98 : function() {if(this.os()=='win' && this.UA.match(/98/)) return true;},
	isMe  : function() {if(this.os()=='win' && this.UA.match(/9x 4\.90/)) return true;},
	isNT  : function() {if(this.os()=='win' && this.UA.match(/NT 4\.0/)) return true;},
	isW2K : function() {if(this.os()=='win' && this.UA.match(/NT 5\.0/)) return true;},
	isXP  : function() {if(this.os()=='win' && this.UA.match(/NT 5\.1/)) return true;},
	isVST : function() {if(this.os()=='win' && this.UA.match(/NT 6\.0/)) return true;},
	isMac : function() {if(this.os()=='mac') return true;},
	isOSX : function() {if(this.os()=='mac' && this.UA.match(/OS X/) || this.UA.match(/MSIE 5\.23/)) return true;},
	isOS9 : function() {if(this.os()=='mac' && !this.isOSX()) return true;},
	isUNX : function() {if(this.os()=='unix') return true;},
	isLNX : function() {if(this.os()=='linux') return true;},
	isIE  : function() {if(this.UA.match(/MSIE/)) return true;},
	isIE4 : function() {if(this.UA.match(/MSIE 4/)) return true;},
	isIE5 : function() {if(this.UA.match(/MSIE 5/)) return true;},
	isIE6 : function() {if(this.UA.match(/MSIE 6/)) return true;},
	isIE7 : function() {if(this.UA.match(/MSIE 7/)) return true;},
	isFF  : function() {if(this.UA.match(/FIREFOX/)) return true;},
	isFF1 : function() {if(this.UA.match(/FIREFOX\/1/)) return true;},
	isFF2 : function() {if(this.UA.match(/FIREFOX\/2/)) return true;},
	isNS  : function() {if(this.UA.match(/NETSCAPE/)) return true;},
	isNS6 : function() {if(this.UA.match(/NETSCAPE\/6/)) return true;},
	isNS7 : function() {if(this.UA.match(/NETSCAPE\/7/)) return true;},
	isNS8 : function() {if(this.UA.match(/NETSCAPE\/8/)) return true;},
	isOP  : function() {if(this.UA.match(/OPERA/)) return true;},
	isOP8 : function() {if(this.UA.match(/OPERA\/8/)) return true;},
	isOP9 : function() {if(this.UA.match(/OPERA\/9/)) return true;},
	isSF  : function() {if(this.UA.match(/SAFARI/)) return true;},
	isSF0 : function() {if(this.UA.match(/SAFARI\/8/)) return true;},
	isSF1 : function() {if(this.UA.match(/SAFARI\/1/) || this.UA.match(/SAFARI\/3/)) return true;},
	isSF2 : function() {if(this.UA.match(/SAFARI\/4/)) return true;},
	isMIE : function() {if(this.isMac() && this.isIE()) return true;},
	flash : function() {
		var shockwave = navigator.mimeTypes['application/x-shockwave-flash'];
		var getPlugin = (navigator.mimeTypes && shockwave) ? shockwave.enabledPlugin : 0;
		if(getPlugin) {
			var getPlayer = navigator.plugins['Shockwave Flash'].description.split(' ');
			var index = getPlayer.length;
			for (var i=0; i<index; i++) {
				if (isNaN(parseInt(getPlayer[i]))) continue;
					var pluginVersion = parseInt(getPlayer[i],10);
			};
		} else if(navigator.userAgent.match(/MSIE/) && navigator.userAgent.match(/Windows/)) {
			var pluginVersion = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').FlashVersion();
				pluginVersion = Math.floor(pluginVersion/0x10000);
		};
		return pluginVersion;
	}
};

jem.$env = new jem.EnvVariable();



jem.ScreenSize = function() {};

jem.ScreenSize.prototype = {
	sw : function() {return screen.width;},
	sh : function() {return screen.height;},
	aw : function() {return screen.availWidth;},
	ah : function() {return screen.availHeight;},
	sx : function() {return window.screenX || window.screenLeft;},
	sy : function() {return window.screenY || window.screenTop;},
	pw : function() {
		if(window.innerWidth && window.scrollMaxX) {
			return window.innerWidth + window.scrollMaxX;
		} else if (document.body.scrollWidth > document.body.offsetWidth) {
			return document.body.scrollWidth;
		} else {
			return document.body.offsetWidth;
		}
	},
	ph : function() {
		if(window.innerHeight && window.scrollMaxY) {
			return window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight) {
			return document.body.scrollHeight;
		} else {
			return document.body.offsetHeight;
		}
	},
	ww : function() {
		if(self.innerWidth) {
			return self.innerWidth;
		} else if(document.documentElement && document.documentElement.clientWidth) {
			return document.documentElement.clientWidth;
		} else if(document.body) {
			return document.body.clientWidth;
		}
	},
	wh : function() {
		if(self.innerHeight) {
			return self.innerHeight;
		} else if(document.documentElement && document.documentElement.clientHeight) {
			return document.documentElement.clientHeight;
		} else if(document.body) {
			return document.body.clientHeight;
		}
	},
	px : function() {
		if(document.documentElement.scrollLeft) {
			return document.body.scrollLeft || document.documentElement.scrollLeft;
		} else {
			return document.body.scrollLeft;
		}
	},
	py : function() {
		if(document.documentElement.scrollTop) {
			return document.body.scrollTop || document.documentElement.scrollTop;
		} else {
			return document.body.scrollTop;
		}
	}
};

jem.$size = new jem.ScreenSize();



/*=========================================================

	@ JavaScript Extension Module
	@ BaseModule : jemScreen.js
	@ Version    : 0.10
	@ LastUpdate : 2008/02/29

=========================================================*/

jem.addEvent(window, 'load', function() {
	swfOverlay = new jem.OverLayScreen('#000','60');
	swfOverlay.set();
});


jem.Module.swfScreen = function(){};

jem.Module.swfScreen.on = function(_vars){
	jem.Module.swfScreen.set({src:'karada.swf?cache='+ new Date().getTime(),width:'720',height:'516',vars:_vars});
	var ww = jem.$size.ww();
	var wh = jem.$size.wh();
	var px = jem.$size.px();
	var py = jem.$size.py();
	var leftMargin = (ww<720) ? px : (ww-720)/2+px;
	var topMargin = (wh<516) ? py : (wh-516)/2+py;
	var cntStyle = jem.$('#OverLayScreenContainer').style;
		cntStyle.left = leftMargin+'px';
		cntStyle.top = topMargin+'px';
		cntStyle.visibility = 'visible';
	swfOverlay.on();
}



jem.Module.swfScreen.set = function(param){
	var swf = {
		src    : param.src,
		width  : param.width,
		height : param.height,
		vars   : param.vars || null,
		ver    : param.ver || 8,
		cancel : param.cancel || null,
//		wmode  : param.wmode || 'opaque',
		bg     : param.bg || '#ffffff',
		id     : param.id || 'flashMov',
		subst  : param.subst || '<a href="http://www.adobe.com/go/getflashplayer_jp" target="_blank"><img src="swf/checker.gif"></a>'
	};

	if(jem.$env.flash()>=swf.ver) {
		var result  = '<p onclick="jem.OverLayScreen.prototype.off()" style="margin:0 4px 0 0;cursor:pointer;text-align:right;"><img src="common/v03/img/btn_close.gif" alt="" /></p>'
/*			+'<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" align="middle" '
			+'codebase="https://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+ swf.ver +',0,0,0" '
			+'id="'+ swf.id +'" width="'+ swf.width +'" height="'+ swf.height +'">\n'
			+'<param name="movie" value="'+ swf.src +'">\n'
			+'<param name="flashvars" value="'+ swf.vars +'">'
			+'<param name="quality" value="high">\n'
			+'<param name="scale" value="noscale">\n'
			+'<param name="bgcolor" value="'+ '#ffffff' +'">\n'
			+'<param name="wmode" value="'+ swf.wmode +'">\n'
			+'<param name="menu" value="false">\n'*/
			+'<div style="border:4px solid #fff;">\n'
			+'<embed src="'+ swf.src +'" width="'+ swf.width +'" height="'+ swf.height +'" '
			+'id="'+ swf.id +'_embed" flashvars="'+ swf.vars +'" wmode="'+ swf.wmode +'" '
			+' bgcolor="#ffffff" swLiveConnect="false" quality="high" scale="noscale"'
			+'type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer_jp"></embed>\n'
			+'</div>\n';
/*			+'</object>\n';*/
		jem.$('#OverLayScreenContainer').innerHTML = result;
	} else {
		jem.$('#OverLayScreenContainer').innerHTML = swf.subst;
	}
};

jem.Module.swfScreen.off = function(){
	var container = jem.$('#OverLayScreenContainer');
		container.innerHTML = '';
		container.style.visibility = 'hidden';
	jem.$('#OverLayScreen').style.display = 'none';
}




/* OverLayScreen
---------------------------------------------------------*/
jem.OverLayScreen = function(bgcolor,opacity) {
	this.bgcolor = bgcolor;
	this.opacity = opacity;
	this.zindex  = 999;
};

jem.OverLayScreen.prototype = {
	set : function() {
		var body = document.getElementsByTagName('body').item(0);
		var screenLayer = document.createElement('div');
			screenLayer.setAttribute('id','OverLayScreen');
			screenLayer.onclick = this.off;
		var scrStyle = screenLayer.style;
			scrStyle.display    = 'none';
			scrStyle.position   = 'absolute';
			scrStyle.zIndex     = this.zindex;
			scrStyle.cursor     = 'pointer';
			scrStyle.left       = '0px';
			scrStyle.top        = '0px';
			scrStyle.width      = '100%';
			scrStyle.height     = jem.$size.ph() +'px';
			scrStyle.filter     = 'alpha(opacity='+this.opacity+')';
			scrStyle.mozOpacity = '0.'+this.opacity;
			scrStyle.opacity    = '0.'+this.opacity;
			scrStyle.backgroundColor = this.bgcolor;
			body.appendChild(screenLayer);
		var container = document.createElement('div');
			container.setAttribute('id','OverLayScreenContainer');
		var cntStyle = container.style;
			cntStyle.visibility = 'hidden';
			cntStyle.position   = 'absolute';
			cntStyle.zIndex     = this.zindex+2;
			cntStyle.left       = '0px';
			cntStyle.top        = '0px';
			cntStyle.textAlign  = 'left';
			cntStyle.backgroundColor = this.frameColor;
			body.appendChild(container);
	},
	on : function() {
		jem.$('#OverLayScreen').style.display = 'block';
		var select = document.getElementsByTagName('select');
		var Index = select.length;
		for (var i=0; i<Index; i++) select[i].style.visibility = 'visible';
		jem.addEvent(window, 'resize', this.resize);
	},
	off : function() {
		var container = jem.$('#OverLayScreenContainer');
			container.innerHTML = '';
			container.style.visibility = 'hidden';
		jem.$('#OverLayScreen').style.display = 'none';
		var select = document.getElementsByTagName('select');
		var Index = select.length;
		for (var i=0; i<Index; i++) select[i].style.visibility = 'hidden';
		jem.removeEvent(window, 'resize', jem.OverLayScreen.prototype.resize);
	},
	resize : function() {
		var cnt = jem.$('#OverLayScreenContainer');
		if(!cnt) return false;
		var leftMargin = (jem.$size.ww()-cnt._w)/2+jem.$size.px();
		var topMargin = (jem.$size.wh()-cnt._h)/2+jem.$size.py();
		var cntStyle = jem.$('#OverLayScreenContainer').style;
		cntStyle.left = leftMargin+'px';
		cntStyle.top = topMargin+'px';
	}
};



/* FloatSWF
---------------------------------------------------------*/
jem.Module.floatSWF = {
	step  : 15,
	delay : 20,
	timer : null,
	start : function() {
		var menu = jem.$('#OverLayScreenContainer');
		if(!menu) return false;
		var self = this;
		clearInterval(self.timer);
		self.timer = setInterval(function() {
			var mv = 0;
			var py = jem.$size.py();
			var wh = jem.$size.wh();
			var ft = (wh<516) ? py :  Math.floor((wh-516)/2+py);
			var cy = jem.$('#OverLayScreenContainer')._y;
			if(ft==cy) {
				clearInterval(self.timer);
				self.timer = null;
			} else {
				mv = ((ft-cy)>0) ? Math.ceil((ft-cy)*self.step/100) : Math.floor((ft-cy)*self.step/100);
				jem.$('#OverLayScreenContainer').style.top = cy+mv+'px';
			}
		}, self.delay);
	}
};

jem.addEvent(window, 'scroll', function() {
	jem.Module.floatSWF.start();
});


