/* ---------------------------------------------------------------- */
/*
/* userplayer.js
/* ~~~~~~~~~~~~~~~~~~~~~
/*   history(yyyy.mm.dd author remarks):
/*     2008.02.21 kaneko 新規作成
/*
/* (c) BRAINSYNC, INC.
/*
/* assigned vars:
/*
/* ---------------------------------------------------------------- */
	function UserPlayer(){
		this.playList     = new Array();
		this.currentIndex = 0;
		this.playing      = 'false';
		this.oldSourceURL = "";
		this.playLoop     = true;

		this.PlayerID     = "userPlayerWMP";
		this.FlashID      = "userPlayerFlash";

		this.positionTimer = null;

		this.isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
		this.isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
		this.isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
		
		this.lang = new Array();
	}


	UserPlayer.prototype.write = function(path, varsObj, height, width){
		var html = "";
		var fvars = vars = '';

		//path += (new Date()).getMilliseconds();

		if(varsObj) {
			for(var i in varsObj) fvars += i+'='+varsObj[i]+'&';
			vars = '?'+fvars;

			lang = (varsObj['lang']) ? varsObj['lang'] : 'ja';

		}


		if(lang == 'ja'){
			this.lang['string_01'] = 'このコンテンツを表示するには、Macromedia Flash Player バージョン9以上がインストールされている必要があります。';
			this.lang['string_02'] = 'セキュリティコンポーネントのアップグレードが必要です。';
			this.lang['string_03'] = 'DRM コンポーネントに異常が存在する可能性があります。詳しくはサポートにお問い合わせください。';
			this.lang['string_04'] = '再生するにはWindows Internet Explorer 6.0以上 でブラウジングする必要があります。';
		}else{
			this.lang['string_01'] = 'To view this content, Macromedia Flash Player must be installed version 9 or higher.';
			this.lang['string_02'] = 'Security component upgrade is required.';
			this.lang['string_03'] = 'DRM may be the presence of abnormal components. For more information, please contact support.';
			this.lang['string_04'] = 'To play Windows Internet Explorer 6.0 or higher should be browsing.';
		}


		html = "<div style='position:relative; top:0; left:0;'>";

		if(!this.hasVersion(9)) {
			html = "<a href='http://www.macromedia.com/jp/shockwave/download/?P1_Prod_Version=ShockwaveFlash&Lang=Japanese'>"+this.lang['string_01']+"</a>";
			document.write(html);
			return false;
		}

		if(navigator.userAgent.indexOf('MSIE 6.0')!=-1 || navigator.userAgent.indexOf('MSIE 7.0')!=-1){
			html += "<object id='GetLicenseObj' height='0' width='0' classid='clsid:A9FC132B-096D-460B-B7D5-1DB0FAE0C062'>"
				+ "<embed mayscript type='application/x-drm-v2' hidden='true'>"
				+ "</object>"
				+ "<object id='" + this.PlayerID + "' classid='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6' style='z-index:10;position:absolute; top:0; left:0; display:none;' height='120' width='160' align='center'>"
				+ "<param name='uiMode' value='mini' />"
				+ "<param name='autoStart' value='false' />"
				+ "<PARAM NAME='TransparentatStart' VALUE='false' />"
				+ "</object>";
		}

		//html += "<object id='" + this.FlashID + "' classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' style='position:absolute; top:0; left:0;' height='"+height+"' width='"+width+"' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9.0.115.0'>"
		html += "<object id='" + this.FlashID + "' classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' style='z-index:100;position:relative; top:0; left:0;' height='"+height+"' width='"+width+"' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9.0.115.0'>"
			+ "<param name='MOVIE' value='" + path + "'>"
			+ "<param name='FLASHVARS' value='"+fvars+"'>"
			+ "<param name='wmode' value='transparent'>"
			+ "<param name='salign' value='lt' />"
			+ '<param name="allowScriptAccess" value="always" />'
			+ '<embed src="' + path + '"'
			+ ' id="'+this.FlashID+'"'
			+ ' name="'+this.FlashID+'"'
			+ ' align="middle"'
			+ ' width="'+width+'"'
			+ ' height="'+height+'"'
			+ ' FlashVars="'+fvars+'"'
			+ ' menu="false"'
			+ ' swLiveConnect=true'
			+ ' type="application/x-shockwave-flash"'
			+ ' wmode="transparent"'
			+ ' allowScriptAccess="always"'
			+ ' pluginspage="'+location.protocol+'www.macromedia.com/go/getflashplayer" />'
			+ "</object>";

		html += "</div>";

		html += '<script language=\'JavaScript\' for=\''+this.PlayerID+'\' event=\'PlayStateChange(newState)\'>\n'
			+ '<!--\n'
			+ '	var oPlayer = objUserPlayer.getPlayer();\n'
			+ '	var oFlash  = objUserPlayer.getFlash();\n'
			+ '	try{\n'
			+ '		oFlash.SetVariable(\'status\', newState);\n'
			+ '	}catch(e){\n'
			+ '	}\n'
			+ '	try{\n'
			+ '		if(newState == 3 || newState == 7 || newState == 11){oFlash.SetVariable(\'playing\', \'true\');}\n'
			+ '		else if(newState == 0 || newState == 1 || newState == 2 || newState == 10){oFlash.SetVariable(\'playing\', \'false\');}\n'
			+ '	}catch(e){\n'
			+ '	}\n'
			+ '	if(newState == 3){\n'
			+ '		objUserPlayer.setPlayMode();\n'
			+ '		objUserPlayer.positionTimer = window.setInterval(\'objUserPlayer.updatePosition()\', 100);\n'
			+ '	}else{\n'
			+ '		window.clearInterval(objUserPlayer.positionTimer);\n'
			+ '	}\n'
			+ '//-->\n'
			+ '<\/script>\n';

		//html += '<div id="test"></div>';
		document.write(html);
		return true;
	}
	UserPlayer.prototype.hasVersion = function(requiredVersion) {
		var requiredVersion = parseInt(requiredVersion);

		return this.DetectFlashVer(requiredVersion, 0, 0);


		return (version >= requiredVersion);
		return null;
	}

	UserPlayer.prototype.winOpen = function(arg){
		args = arg.split(",");
		url = args[0];
		id  = args[1];
		window.open(url, '','width=800,height=600,scrollbars=1,resizable=1,toolbar=1,menubar=1,location=1,status=1');
	}

	UserPlayer.prototype.getFlash = function(){
		if(this.navigator() == 'Safari'){
			return document.getElementById(this.FlashID);
		}else{
			return window.document[this.FlashID];
		}
		//return document.getElementById(this.FlashID);
	}
	UserPlayer.prototype.getPlayer = function(){
		if(this.navigator() == 'Safari'){
			return document.getElementById(this.PlayerID);
		}else{
			return window.document[this.PlayerID];
		}
		//return document.getElementById(this.PlayerID);
	}

	UserPlayer.prototype.updatePosition = function() {
		var oPlayer = this.getPlayer();
		var oFlash = this.getFlash();
		oFlash.SetVariable('playPosition', Math.floor(oPlayer.controls.currentPosition));

		oFlash.SetVariable('playPosition', Math.floor(oPlayer.controls.currentPosition));

		//document.getElementById('test').innerHTML = Math.floor(oPlayer.controls.currentPosition);
	}
	UserPlayer.prototype.setItem = function(url){
		var oPlayer = this.getPlayer();
		oPlayer.URL = url;
	}

	UserPlayer.prototype.setPlaylistID = function(playlist_id){
		var oFlash = this.getFlash();
		oFlash.SetVariable('playlist_id', playlist_id);

		//this.setPlaylistCountUp(playlist_id);
	}
	UserPlayer.prototype.setProductID = function(product_id){
		var oFlash = this.getFlash();
		oFlash.SetVariable('product_id', product_id);

		//this.setPlaylistCountUp(playlist_id);
	}
	UserPlayer.prototype.setPlay = function(playhead_time){
		var oFlash = this.getFlash();
		var oPlayer = this.getPlayer();

		if(oPlayer.playState == 2){
			oPlayer.controls.play();
		}else{
			oPlayer.controls.currentPosition = playhead_time;
			oPlayer.controls.playItem(oPlayer.currentMedia);
		}
	}
	UserPlayer.prototype.setPlayMode = function(){
		var oPlayer = this.getPlayer();
		if(oPlayer.currentMedia.getItemInfo("MediaType") == "video") {
			oPlayer.style.display = 'block';
			oPlayer.uiMode = 'none';
		} else {
			oPlayer.style.display = 'none';
			oPlayer.uiMode = 'invisible';
		}
	}
	UserPlayer.prototype.model = function(str){
		var oPlayer = this.getPlayer();
		//oPlayer.style.zIndex = 1;
		if(str == 'side'){
			oPlayer.style.top = '42px';
			oPlayer.style.left = '5px';
			oPlayer.style.height = '120px';
			oPlayer.style.width = '160px';
		}else if(str == 'center'){
			oPlayer.style.top = '20px';
			oPlayer.style.left = '5px';
			oPlayer.style.height = '120px';
			oPlayer.style.width = '160px';
		}else if(str == 'popup'){
			oPlayer.style.top = '50px';
			oPlayer.style.left = '35px';
			oPlayer.style.height = '240px';
			oPlayer.style.width = '320px';
		}else{
			oPlayer.style.height = '0px';
			oPlayer.style.width = '0px';
		}
	}
	UserPlayer.prototype.setPause = function(){
		var oFlash = this.getFlash();
		var oPlayer = this.getPlayer();
		oPlayer.controls.Pause();
	}
	UserPlayer.prototype.setStop = function(){
		var oFlash = this.getFlash();
		var oPlayer = this.getPlayer();
		oPlayer.style.display = 'none';
		oPlayer.controls.stop();
	}

	UserPlayer.prototype.setVolume = function(volume){
		var oPlayer = this.getPlayer();
		oPlayer.settings.volume = volume;
	}
	UserPlayer.prototype.buyURL = function(url){
		this.openURL(url);
	}

	UserPlayer.prototype.checkDRM = function(){
		var oFlash = this.getFlash();
		var html = '';
		if(navigator.userAgent.indexOf('MSIE 6.0')!=-1 || navigator.userAgent.indexOf('MSIE 7.0')!=-1){
			try {
				var DRM = new ActiveXObject('DRM.GetLicense.1');
				var strLicense = DRM.GetDRMSecurityVersion();
				var mVersion   = Number(strLicense.substring(0, 3));
				if(mVersion < 2.4) {
					//html = "<a href='http://drmlicense.one.microsoft.com/Indivsite/ja/indivit.asp' target='_blank'>セキュリティコンポーネントのアップグレードが必要です。</a>";
					html = "<a href='http://drmlicense.one.microsoft.com/crlupdate/jpn/crlupdate.html' target='_blank'>"+this.lang['string_02']+"</a>";
				}
			} catch(e) {
				html = this.lang['string_03'];
				//document.write(html);
				//return false;
			}
		}else{
			html = this.lang['string_04'];
			//document.write(html);
			//return false;
		}
		oFlash.SetVariable('checkDRMResult', html);
	}
	UserPlayer.prototype.close = function(url){
		window.close();
	}
	UserPlayer.prototype.InfoURL = function(url){
		this.openURL(url);
	}
	UserPlayer.prototype.openURL = function(url){
		if(this.win_closed(window.opener)){
			window.open(url);
		}else{
			opener.location.href = url;
		}
		//location.href = url;
		//getCartItems({action:'addItem',id:id});
	}
	UserPlayer.prototype.win_closed = function(winVar) {
	  var ua = navigator.userAgent;
	  if( !!winVar )
	      if( ( ua.indexOf('Gecko')!=-1 || ua.indexOf('MSIE 4')!=-1 )
	           && ua.indexOf('Win')!=-1 ) 
	           return winVar.closed
	      else return typeof winVar.document  != 'object'
	  else return true
	}
	UserPlayer.prototype.navigator = function(){
		aname = navigator.appName;
		bname = navigator.userAgent;
		if(aname.indexOf("Microsoft") >= 0) return ("MicrosoftInternetExplorer");
		if(bname.indexOf("Opera") >= 0) return ("Opera");
		if(bname.indexOf("Firefox") >= 0) return ("Mozilla Firefox");
		if(bname.indexOf("Safari") >= 0) return ("Safari");
		return ("");
	}






	UserPlayer.prototype.ControlVersion = function ()
	{
		var version;
		var axo;
		var e;

		// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

		try {
			// version will be set for 7.X or greater players
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
			version = axo.GetVariable("$version");
		} catch (e) {
		}

		if (!version)
		{
			try {
				// version will be set for 6.X players only
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
				
				// installed player is some revision of 6.0
				// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
				// so we have to be careful. 
				
				// default to the first public version
				version = "WIN 6,0,21,0";

				// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
				axo.AllowScriptAccess = "always";

				// safe to call for 6.0r47 or greater
				version = axo.GetVariable("$version");

			} catch (e) {
			}
		}

		if (!version)
		{
			try {
				// version will be set for 4.X or 5.X player
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
				version = axo.GetVariable("$version");
			} catch (e) {
			}
		}

		if (!version)
		{
			try {
				// version will be set for 3.X player
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
				version = "WIN 3,0,18,0";
			} catch (e) {
			}
		}

		if (!version)
		{
			try {
				// version will be set for 2.X player
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
				version = "WIN 2,0,0,11";
			} catch (e) {
				version = -1;
			}
		}
		
		return version;
	}
	UserPlayer.prototype.GetSwfVer = function (){
		// NS/Opera version >= 3 check for Flash plugin in plugin array
		var flashVer = -1;
		
		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;
				var descArray = flashDescription.split(" ");
				var tempArrayMajor = descArray[2].split(".");			
				var versionMajor = tempArrayMajor[0];
				var versionMinor = tempArrayMajor[1];
				var versionRevision = descArray[3];
				if (versionRevision == "") {
					versionRevision = descArray[4];
				}
				if (versionRevision[0] == "d") {
					versionRevision = versionRevision.substring(1);
				} else if (versionRevision[0] == "r") {
					versionRevision = versionRevision.substring(1);
					if (versionRevision.indexOf("d") > 0) {
						versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
					}
				}
				var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
			}
		}
		// MSN/WebTV 2.6 supports Flash 4
		else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
		// WebTV 2.5 supports Flash 3
		else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
		// older WebTV supports Flash 2
		else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
		else if ( this.isIE && this.isWin && !this.isOpera ) {
			flashVer = this.ControlVersion();
		}	
		return flashVer;
	}

	UserPlayer.prototype.DetectFlashVer = function (reqMajorVer, reqMinorVer, reqRevision)
	{
		versionStr = this.GetSwfVer();
		if (versionStr == -1 ) {
			return false;
		} else if (versionStr != 0) {
			if(this.isIE && this.isWin && !this.isOpera) {
				// Given "WIN 2,0,0,11"
				tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
				tempString        = tempArray[1];			// "2,0,0,11"
				versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
			} else {
				versionArray      = versionStr.split(".");
			}
			var versionMajor      = versionArray[0];
			var versionMinor      = versionArray[1];
			var versionRevision   = versionArray[2];
	        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
			if (versionMajor > parseFloat(reqMajorVer)) {
				return true;
			} else if (versionMajor == parseFloat(reqMajorVer)) {
				if (versionMinor > parseFloat(reqMinorVer))
					return true;
				else if (versionMinor == parseFloat(reqMinorVer)) {
					if (versionRevision >= parseFloat(reqRevision))
						return true;
				}
			}
			return false;
		}
	}



	var objUserPlayer = new UserPlayer();

