/**
 * loader.js
 * @version    0  (updated: 2009/06/08)
 * @author     Takeshi Takatsudo (http://zudolab.net/)
 * @license    MIT (http://www.opensource.org/licenses/mit-license.php)
 */

/**
 * avoid IE bg flicker problem
 */
try { document.execCommand("BackgroundImageCache",false,true); }catch(e){}

/**
 * ua
 * @description    browser/os detection
 */
var ua = (function(){
	var _uastr = navigator.userAgent.toLowerCase();
	var _version = (_uastr.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1];
	var _versionInt = parseInt(_version);
	return {
		getVersion: function(){ return _version; },
		getVersionInt: function(){ return _versionInt; },
		isWin: function(){ return /windows/.test(_uastr) },
		isMac: function(){ return /mac os x/.test(_uastr) },
		isIPhone: function(){ return /iphone|ipod/.test(_uastr) },
		isFirefox: function(){ return /firefox\//.test(_uastr) },
		isFirefox1x: function(){ return /firefox\/1\./.test(_uastr) },
		isFirefox2x: function(){ return /firefox\/2\./.test(_uastr) },
		isFirefox3x: function(){ return /firefox\/3\./.test(_uastr) },
		isChrome: function(){ return /chrome/.test(_uastr) },
		isSafari: function(){ return /safari/.test(_uastr) && !this.isChrome() },
		isSafari1x: function(){ return this.isSafari() && _versionInt<320 },
		isSafari2x: function(){ return this.isSafari() && /applewebkit\/41[0-9]/.test(_uastr) },
		isSafari3x: function(){ return this.isSafari() && /safari\/52[0-5]\./.test(_uastr) },
		isSafari4x: function(){ return this.isSafari() && /version\/4\./.test(_uastr) },
		isOpera: function(){ return /opera/.test(_uastr) },
		isMsie: function(){ return /msie/.test(_uastr) && !/opera/.test(_uastr) },
		isMsie5x: function(){ return this.isMsie() && _versionInt==5 },
		isMsie6: function(){ return this.isMsie() && _versionInt==6 },
		isMsie7: function(){ return this.isMsie() && _versionInt==7 },
		isMsie8: function(){ return this.isMsie() && _versionInt==8 },
		isMsie9: function(){ return this.isMsie() && _versionInt==9 },
		isMacIE: function(){ return (document.all && !window.clipboardData) ? true : false },
		isMozilla: function(){ return /mozilla/.test(_uastr) && !/(compatible|webkit)/.test(_uastr) },
		/* isLegacy - used to decide load javascript or something */
		isLegacy: function(){ return this.isFirefox1x() || this.isSafari1x() || this.isSafari2x() || this.isMsie5x() || this.isMacIE() }
	}
})();

/**
 * loader
 * @description    js/css file loader
 */
var loader = (function(){
	var _jsBaseUrl = _setJsBaseUrl();
	var _cssBaseUrl = _setCssBaseUrl();
	/* set js base url from script tag of this file self */
	function _setJsBaseUrl(){
		var scripts = document.getElementsByTagName("script");
		return scripts[scripts.length-1].src.replace(/^(.+\/)[^/]*$/,"$1");
	}
	function _setCssBaseUrl(){
		var links = document.getElementsByTagName("link");
		if(!links) return null;
		for(var i=0,link; link=links[i]; i++){
			if(!link.href) continue;
			if(link.href.search("common.css")>-1){
				return link.href.replace(/common\.css/,"");
				break;
			}
		}
		return null;
	}
	return {
		loadJs: function(file){
			if(!file) return;
			file = _jsBaseUrl + file;
			document.open();
			document.write('<script type="text/javascript" src="'+ file + '"><\/script>');
			document.close();
		},
		loadCss: function(file,media){
			if(!file || _cssBaseUrl==null) return;
			file = _cssBaseUrl + file;
			if(!media) media = "all";
			var link = document.createElement("link");
			link.setAttribute("href",file);
			link.setAttribute("rel","stylesheet");
			link.setAttribute("type","text/css");
			link.setAttribute("media",media);
			document.getElementsByTagName("head")[0].appendChild(link);
		}
	}
})();


/* load external files if not legacy */

if(!ua.isLegacy()){
	loader.loadCss("forjs.css");
	loader.loadJs("jquery.js");
	loader.loadJs("jquery.easing.js");
	loader.loadJs("jquery.bodyScroller.js");
	loader.loadJs("jquery.opacityRollover.js");
	loader.loadJs("jquery.inPageDialog.js");
	loader.loadJs("jquery.mailformHelper.js");
	loader.loadJs("jquery.textareaResizer.js");
	loader.loadJs("jquery.sideContentAutoToggler.js");
	loader.loadJs("jquery.tabContent.js");
}
if(!ua.isOpera()){
	document.getElementsByTagName("html")[0].style.overflowY = "scroll"; // show scrollbar anytime
}

/* attach class to body */

(function(){
	function addBodyClass(name){
		var current = document.body.className;
		document.body.className = current ? current+" "+name : name;
	}
	if(ua.isMsie()) addBodyClass("browser_IE");
	if(ua.isMac()) addBodyClass("os_mac");
})();