/**
 * gd gateway v2.0 include SWFObject, SWFAddress
 *
 * @author		: gd incorporated.
 * @version		: 2.1.02
 */
function gdGateway(){
	this.Win = (navigator.appVersion.indexOf("Win") != -1);
	this.Mac = (navigator.userAgent.indexOf("Mac",0) != -1);
	this.OSX = (navigator.userAgent.indexOf("Mac OS X",0) != -1);// Firefox Mozilla Netscape Safari
	this.OS9 = (this.Mac && ! this.OSX) ? true : false;
	this.MSIE = (navigator.userAgent.indexOf("MSIE") != -1);
	this.NN = (navigator.appName.indexOf("Netscape",0) != -1);
	this.Mozilla = (navigator.userAgent.indexOf("Mozilla") != -1);
	this.Opera = (navigator.userAgent.indexOf("Opera") != -1);
	this.compatMode = (document.compatMode == "CSS1Compat");
}
gdGateway.prototype = {
	setSwf : function(swfFile, swfName, swfWidth, swfHeight, swfVersion, backGround){
		this.swfName = swfName;
		this.swfVersion = swfVersion;
		so = new SWFObject(swfFile, this.swfName, swfWidth, swfHeight, swfVersion, backGround);
		so.useExpressInstall('/expressinstall.swf');
		so.addParam('menu', 'false');
		so.addParam('allowScriptAccess','sameDomain');
	},
	writeSWFObject : function(flashElement, defaultElement){
		this.flashElement = flashElement;
		this.defaultElement = defaultElement;
		if(this.MSIE && this.Win){
			var yourVer;
			document.write('<scr' + 'ipt language=\"VBScript"\ type=\"text/vbscript\"\> \n');
			document.write('on error resume next \n');
			document.write('yourVer = Left(Hex(Int(CreateObject("ShockwaveFlash.ShockwaveFlash").FlashVersion)),1)\n');
			document.write('</scr' + 'ipt\> \n');
			this.swfYourVer = yourVer;
			if(this.swfYourVer == undefined){
				
			}
		}
		//useExpressInstall [6,0,65 or later]
		if(so.installedVer.major < 7 || this.OS9){
		//if(so.installedVer.major < 7 || this.OS9 || so.installedVer.major < this.swfVersion){
			document.getElementById(this.defaultElement).style.display = "block";
			document.getElementById(this.defaultElement).className = "noflash-container";
			document.getElementById(this.flashElement).style.display = "none";
			if(this.OS9) document.getElementById("gateway-message").innerHTML = "<strong>Mac OS9にインストール出来るFlashPlayerは、7が最新となります。</strong>";
		}else{
			document.getElementById(this.defaultElement).style.display = "none";
			document.getElementById(this.flashElement).className = "flashcontent-auto";
			
			so.write(this.flashElement);
		}
		
	},
	addSWFObjectParam : function(param, value){
		so.addParam(param, value);
	},
	addMouseWheelEvent : function(){
		this.handleMouseFlg = true;
		//if(this.OSX){
			if(window.addEventListener){
				window.addEventListener('DOMMouseScroll', createDelegate(this, this.moveWheel), false);
			}else{
				window.onmousewheel = document.onmousewheel = createDelegate(this, this.moveWheel);
			}
		//}
	},
	moveWheel : function(event){
		if(! this.handleMouseFlg) return;
		var delta = 0;
		if(! event) event = window.event;
		if(event.wheelDelta){
			delta = event.wheelDelta / 120; 
			if(window.opera) delta = -delta;
		}else if(event.detail){
			delta = -event.detail / 3;
		}
		
		if(delta != 0){
			if(this.MSIE){
				window[this.swfName].handleScrollEvent(delta);
			}else{
				document[this.swfName].handleScrollEvent(delta);
			}
		}
	},
	removeMouseWheelEvent : function(){
		this.handleMouseFlg = false;
		window.removeEventListener('DOMMouseScroll',createDelegate(this, this.moveWheel), false);
		window.onmousewheel = document.onmousewheel = createDelegate(this, this.dummy);
	},
	addResizeHandler : function(){
		window.onresize = createDelegate(this, this.onResize);
	},
	removeResizeHandler : function(){
		window.onresize = null;
	},
	onResize : function(w){
		var le = document.getElementById(this.flashElement);
		if(typeof(this.flashcontentHeight) == "number"){
			if(this.getInnerHeight() > this.flashcontentHeight ){
				le.style.height = '100%';
			}else{
				le.style.height = this.setFlashHeight(this.flashcontentHeight);
			}
		}
	},
	getInnerWidth : function(){
		return (this.MSIE) ? document.body.clientWidth : window.innerWidth;
	},
	getInnerHeight : function(){
		return (this.MSIE) ? document.body.clientHeight : window.innerHeight;
	},
	getScreenSize : function(){
		var S = new Object();
		if(screen.availWidth){
			S.w = screen.availWidth;
			S.h = screen.availHeight;
		}else{
			S.w = screen.width;
			S.h = screen.height;
		}
		return S;
	},
	setTracker : function(ptrack){
		//
	},
	setFlashHeight : function(lh){
		//arguments
		var le = document.getElementById(this.flashElement);
		var lwh = (lh < this.getInnerHeight()) ? 0 : lh;
		if(lwh <= 0){
			this.flashcontentHeight = '100%';
			le.style.height = '100%';
		}else{
			this.flashcontentHeight = lwh;
			le.style.height = lwh;
		}
		//document.body.className = "flashcontent-" + lscroll;
	},
	setStatus : function(str){
		//status = 
		window.status = str;
		return true;
	},
	/**
	 * Flashへスクロールイベントを送出
	 */
	addScrollEvent : function(elements){
		this.scrollEventElements = elements;
		this.scrollEventElementsY = new Array();
		for(var i in this.scrollEventElements){
			this.scrollEventElementsY[i] = getOffsetTop(this.scrollEventElements[i]);
		}
		/*		
		if(KL_NS4 || KL_NS6) return self.pageYOffset;
        if(KL_IE4 || KL_OP6) return kl_dbody().scrollTop;
        */
		if(window.addEventListener){
			window.addEventListener('scroll', createDelegate(this, this.onScroll), false);
		}else{
			window.onscroll = createDelegate(this, this.onScroll);
		}
	},
	onScroll : function(){
		var currentY = document.documentElement.scrollTop || document.body.scrollTop;
		for(var i in this.scrollEventElementsY){
			var min = this.scrollEventElementsY[i];
			var max = this.scrollEventElementsY[Number(i) + 1] || 9999999999;
			
			if(currentY >= min && currentY < max){
				//alert(this.scrollEventElements[i])
				if(this.MSIE){
					window[this.swfName].changeScrollContent( this.scrollEventElements[i] );
				}else{
					document[this.swfName].changeScrollContent( this.scrollEventElements[i] );
				}
			}
		}
	}
};

function createDelegate(pIns, phandler){
	var del = function(){ return phandler.apply(pIns, arguments); };
	del.phandler = phandler;
	del.pIns = pIns;
	return del;
}
function getOffsetTop(elementName){
	return document.getElementById(elementName).offsetTop;
}





