﻿var _main0;
var _main1;
var _main2;
var _mainList;
var _mainHolder;
var _isJapanese = 1;
var _windowRange = {top:null, bottom:null};
var _agt = navigator.userAgent.toLowerCase();
var _ver = navigator.appVersion.toLowerCase();
var _isWin = (_ver.indexOf("win") != -1) ? true : false;
var _isMac = (_agt.indexOf("mac") != -1) ? true : false;
var _isIE  = (_ver.indexOf("msie") != -1) ? true : false;
var _isOpera = (_agt.indexOf("opera") != -1) ? true : false;

function init(){
	_isJapanese = _detectLanguageSet("ja");
	//_displayNavigatorInfo();
	if(_hasFlashPlugin(8, 0, 0) && _hasRequiredBrowser()){
		_setActiveStyleSheet("main");
		_hideContents();
		_createMain();
		if(_isIE) window.attachEvent("onbeforeunload", function(){window.__flash_savedUnloadHandler = null;});
	}else if(_isJapanese == false){
		_setActiveStyleSheet("en");
	}
}

function _detectLanguageSet(language){
	var b = false;
	if(navigator.language && (navigator.language.indexOf(language)!=-1)) b = true;
	if(navigator.userLanguage && (navigator.userLanguage.indexOf(language)!=-1)) b = true;
	return b;
}

//  _setActiveStyleSheet method by Paul Sowden (http://www.alistapart.com/stories/alternate/)
function _setActiveStyleSheet(title) {
   var linkElem;
   var i;
   for(i=0; (linkElem = document.getElementsByTagName("link")[i]); i++) {
     if(linkElem.getAttribute("rel").indexOf("style") != -1 && linkElem.getAttribute("title")) {
       linkElem.disabled = true;
       if(linkElem.getAttribute("title") == title) linkElem.disabled = false;
     }
   }
}

function _hideContents(){
	if(document.getElementById("contents")){
		var contents = document.getElementById("contents");
		contents.style.display = "none";
		contents.style.visibility = "hidden";
	}
}

function _createMain(){
	if(!document.getElementById("mainHolder")){
		var e0 = new FlashElement("main0.swf", "960", "100%");
		e0.id = "main0";
		e0.bgColor = "#000000";
		var e1 = new FlashElement("main1.swf", "960", "0");
		e1.id = "main1";
		e1.bgColor = "#000000";
		e1.style = "height:0;";
		var e2 = new FlashElement("main2.swf", "960", "0");
		e2.id = "main2";
		e2.bgColor = "#000000";
		e2.style = "height:0;";
		var str = "";
		str += '<div id="mainHolder" class="mainHolder">';
		str +=  e0.toString();
		str +=  e1.toString();
		str +=  e2.toString();
		str += '</div>';
		document.write(str);
		// set references
		_mainHolder = document.getElementById("mainHolder");
		_main0 = _getMovie("main0");
		_main1 = _getMovie("main1");
		_main2 = _getMovie("main2");
		_mainList = new Array(_main0, _main1, _main2);
	}
}

function _getMovie(aId){
	var ref = 0;
	if(_isIE) ref = window[aId];
	else ref = document[aId];
	return ref;
}

function _getScrollTop(){
	var st = 0;
	if (window.pageYOffset){
		st = window.pageYOffset;
	} else if (document.documentElement.scrollTop){
		st = document.documentElement.scrollTop;
	} else if (document.body){
		st = document.body.scrollTop;
	}
	return st;
}

function _getClientWidth(){
	var cw;
	if (window.innerWidth){
		cw = window.innerWidth;
	} else if (document.documentElement.clientWidth){
		cw = document.documentElement.clientWidth;
	} else if (document.body){
		cw = document.body.clientWidth;
	}
	return cw;
}
	
function getClientHeight(){
	var ch;
	if (window.innerHeight){
		ch = window.innerHeight;
	} else if (document.documentElement.clientHeight){
		ch = document.documentElement.clientHeight;
	} else if (document.body){
		ch = document.body.clientHeight;
	}
	return ch;
}

function setMainHeight(ht, h0, h1, h2){
	_mainHolder.style.height = getClientHeight();
	var e0 = document.getElementById("main0");
	e0.style.height = h0;
	var e1 = document.getElementById("main1");
	e1.setAttribute("height", h1);
	e1.style.height = h1;
	var e2 = document.getElementById("main2");
	e2.setAttribute("height", h2);
	e2.style.height = h2;
	setMainHolderHeight(ht);
}

var _dest;
var _iId;
function setMainHolderHeight(aDest){
	_dest = aDest;
	_iId = setInterval("_iSetMainHolderHeight()", 32);
}
function _iSetMainHolderHeight(){
	var lHeight = parseInt(_mainHolder.style.height);
	var vel = 860;
	if(lHeight < _dest){
		lHeight += vel;
		_mainHolder.style.height = lHeight.toString() + "px";
	}else{
		_mainHolder.style.height = _dest.toString() + "px";
		clearInterval(_iId);
		_main0.setMainHeightFinish();
		_startUpdateWindowRange();
	}
}

function prepareForGenie(){
	_main0.sleep();
	_main1.sleep();
	_stopUpdateWindowRange();
	var e0 = document.getElementById("main0");
	var e1 = document.getElementById("main1");
	var e2 = document.getElementById("main2");
	var scrollTopE2 =  _getScrollTop() - parseInt(e0.style.height) - parseInt(e1.style.height);
	e0.style.display = "none";
	_mainHolder.removeChild(e0);
	e1.style.display = "none";
	_mainHolder.removeChild(e1);
	e2.setAttribute("width", "100%");
	_mainHolder.style.width = "100%";
	_mainHolder.style.height = "100%";
	var obj = {scrollTop:scrollTopE2, clientWidth:_getClientWidth()};
	return obj;
}

var iidUwr;
function _startUpdateWindowRange(){
	this.iidUwr = setInterval("_updateWindowRange()", 256);
}
function _stopUpdateWindowRange(){
	clearInterval(this.iidUwr);
}
function _updateWindowRange(){
	var top = _getScrollTop();
	var bottom = _windowRange.top + getClientHeight();
	if((_windowRange.top != top) || (_windowRange.bottom != bottom)){
		_windowRange.top = top;
		_windowRange.bottom = bottom;
		_main0.updateWindowRange(_windowRange);
		_main1.updateWindowRange(_windowRange);
		_main2.updateWindowRange(_windowRange);
	}
}

var _destSST;
var _iIdSST;
function slideScrollTo(aDest){
	_destSST = aDest;
	_iIdSST = setInterval("_iSlideScrollTo()", 64);
}
function _iSlideScrollTo(){
	_stopUpdateWindowRange();
	var dis = _destSST - _getScrollTop();
	var vel = Math.floor(dis * .25);
	if(Math.abs(vel) > 1){
		window.scrollBy(0, vel);
	}else{
		window.scrollTo(0, _destSST);
		clearInterval(_iIdSST);
		_startUpdateWindowRange();
	}
}

function _displayNavigatorInfo(){
	var str = "";
	str += "navigator.userAgent: " + navigator.userAgent + "\n";
	str += "navigator.appName: " + navigator.appName + "\n";
	str += "navigator.appVersion: " + navigator.appVersion + "\n";
	if(navigator.language) str += "navigator.language: " + navigator.language + "\n";
	if(navigator.browserLanguage) str += "navigator.browserLanguage: " +navigator.browserLanguage + "\n";
	if(navigator.systemLanguage) str += "navigator.systemLanguage: " +navigator.systemLanguage + "\n";
	if(navigator.userLanguage) str += "navigator.userLanguage: " +navigator.userLanguage + "\n";
	alert(str);
}

// plug -in detection script by Macromedia
function JSGetSwfVer(i){
	if (navigator.plugins != null && navigator.plugins.length > 0){
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      		var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			descArray = flashDescription.split(" ");
			tempArrayMajor = descArray[2].split(".");
			versionMajor = tempArrayMajor[0];
			versionMinor = tempArrayMajor[1];
			if ( descArray[3] != "" ) {
				tempArrayMinor = descArray[3].split("r");
			} else {
				tempArrayMinor = descArray[4].split("r");
			}
      		versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
            flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
      	} else {
			flashVer = -1;
		}
	}
	else {
		flashVer = -1;
	}
	return flashVer;
}

function _hasFlashPlugin(reqMajorVer, reqMinorVer, reqRevision){
 	reqVer = parseFloat(reqMajorVer + "." + reqRevision);
	for (i=25;i>0;i--) {	
		if (_isIE && _isWin && !_isOpera){
			versionStr = VBGetSwfVer(i);
		} else {
			versionStr = JSGetSwfVer(i);		
		}
		if (versionStr == -1 ){ 
			return false;
		} else if (versionStr != 0) {
			if(_isIE && _isWin && !_isOpera){
				tempArray = versionStr.split(" ");
				tempString = tempArray[1];
				versionArray = tempString .split(",");				
			} else {
				versionArray = versionStr.split(".");
			}
			versionMajor = versionArray[0];
			versionMinor = versionArray[1];
			versionRevision = versionArray[2];
			
			versionString = versionMajor + "." + versionRevision;   // 7.0r24 == 7.24
			versionNum = parseFloat(versionString);
			if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ){
				return true;
			} else {
				return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );	
			}
		}
	}
}

function _hasRequiredBrowser(){
	var b = false;
	// firefox
	if(_agt.indexOf("firefox") != -1){
		var verIndex = _agt.indexOf("firefox") + 8;
		if (parseInt(_agt.charAt(verIndex)) >= 1) b = true;
	}
	// ie5+
	else if(_isIE && !_isMac){
		var tmp = _ver.split("msie");
		var ieVer = parseFloat(tmp[1]);
		if(ieVer >= 5.0) b = true;
	}
	// others
	else{ 
		if(parseInt(navigator.appVersion)>=5 && _agt.indexOf("webkit")!=-1) b = true;
	}
	return b;
}
