///////////////////////////////////////////////////////////////////////////
// RightsNetwork Javascript Library
// Main part.
// for asa and mega (ja and cn and en)

///////////////////////////////////////////////////////////////////////////
//// 定数

var RNLIB_PLAY_COUNT_LIMIT = 3;			// 初期で可能な再生回数
var RNLIB_PLAY_COUNT_EXPIRE_DAYS = 0;	// 再生回数が0にリセットされる日数
var RNLIB_UUID_EXPIRE_DAYS = 7;			// UUIDのサーバへの有効確認日数
var RNLIB_SID_EXPIRE_DAYS = 30;			// SIDの一時有効日数

///////////////////////////////////////////////////////////////////////////
//// 変数と初期化

var rnlib_setupEnabled = 0;			// セットアップ誘導処理有効
var rnlib_checkAXEnabled = 0;		// ActiveXチェック
var rnlib_playerWidth = 320;		// プレイヤ幅
var rnlib_playerHeight = 240;		// ブレイヤ高

// サイト別
if (location.hostname.match(/asa/)) {
	RNLIB_PLAY_COUNT_LIMIT = 1;
	rnlib_setupEnabled = 1;
	rnlib_checkAXEnabled = 1;
	rnlib_playerWidth = 450;
	rnlib_playerHeight = 283;

} else if (location.hostname.match(/mega/)) {
	RNLIB_PLAY_COUNT_LIMIT = 1;
	rnlib_setupEnabled = 1;
	rnlib_checkAXEnabled = 0;
	rnlib_playerWidth = 630;
	rnlib_playerHeight = 495;

}

// 言語
var rnlib_lang = rnlib_browserLanguage();
if (!rnlib_lang) {
 rnlib_lang = "en";
}
//if (rnlib_lang=="zh") {
// rnlib_lang = "en";
//}

///////////////////////////////////////////////////////////////////////////
// プレイヤとインストール誘導

// 旧バージョンのActiveXがあるかどうか
function checkAxObj()
{
	if (!rnlib_checkAXEnabled) {
		return false;
	}
	try {
		var axObj = new ActiveXObject("RIGHTSPLUGINAX.Ctrl.1");
	} catch (e) {
		return false;
	}
	return true;
}

//// ブラウザ名取得
function rnlib_get_browser_name()
{
	var userAgent = window.navigator.userAgent.toLowerCase();
	var appVersion = window.navigator.appVersion.toLowerCase();
	if (userAgent.indexOf("msie") > -1) {
//		if (appVersion.indexOf("msie 6.0") > -1) {
//			return "IE6";
//		}
		if (appVersion.indexOf("msie 7.0") > -1) {
			return "IE7";
		}
		else if (appVersion.indexOf("msie 8.0") > -1) {
			return "IE8";
		}
		else if (appVersion.indexOf("msie 9.0") > -1) {
			return "IE9";
		}
		else {
			return "Unknown";
		}
	}
	else if (userAgent.indexOf("firefox") > -1) {
		return "Firefox";
	}
	else if (userAgent.indexOf("opera") > -1) {
		return "Opera";
	}
	else if (userAgent.indexOf("chrome") > -1) {
		return "Google Chrome";
	}
	else if (userAgent.indexOf("safari") > -1) {
		return "Safari";
	}
	else {
		return "Unknown";
	}
	return "";
}

//// プレイヤ(LongTailVideo Flash Player V5)初期化
var rnlib_player = null;
function playerReady(obj) {
	if (!rnlib_setupEnabled) {
		// 有効化指定時のみ
		return;
	}
	var bn = rnlib_get_browser_name();
	rnlib_player = document.getElementById(obj['id']);
	if (!rnlib_player) {
		return;
	}
	//IE7or8orIE9のみ
	if (bn == "IE7" || bn == "IE8" || bn == "IE9") {
		// かつ古いActiveXがない
		if (!checkAxObj()) {
			// 再生ボタンで、制限処理をかけにいく
			rnlib_player.addModelListener("STATE", "rnlib_player_onPlay");
		}
	}
}

//// 画面部分の表示更新
var RNLIB_PLAYER_PANE_COOKIE_ERR = 1;
var RNLIB_PLAYER_PANE_NORMAL = 2;
var RNLIB_PLAYER_PANE_DOWNLOAD = 3;
var RNLIB_PLAYER_PANE_PROGRESS = 4;
var RNLIB_PLAYER_PANE_INSTALL = 5;
var rnlib_player_pane_id  = "rnlib_player";
function rnlib_update_player_pane(mode) {

	var heading =
		"<div style='font-size: large; width: "+rnlib_playerWidth+"px; height:"+rnlib_playerHeight+"px; '>";

	var area = document.getElementById(rnlib_player_pane_id);
	if (!area) {
		return;
	}
	// クッキーが使えない場合
	if (mode == RNLIB_PLAYER_PANE_COOKIE_ERR)
	{
		area.innerHTML =
			heading +
			"<span class=ja>Please enable your browser cookie.</span>"+
			"</div>"
		;
	
	// プレイヤ画面
	} else if (mode == RNLIB_PLAYER_PANE_NORMAL)
	{
		// void

	//ダウンロード
	} else if (mode == RNLIB_PLAYER_PANE_DOWNLOAD) {
		
		if (rnlib_lang == "ja") {

		area.innerHTML = 
			heading +
			"<center>"+
			"続きをみるには、<a href=\"#\" onclick=\"rnlib_update_player_pane(RNLIB_PLAYER_PANE_PROGRESS);\">こちらのページ</a>より<br/>"+
			""+
			"RightsNetwork Media Plug-In<br/>"+
			"をダウンロードしインストールしてください。"+
			"<hr/>"+
			"<small>"+
			"<ul>"+
			"<li>アンインストール方法は"+
			"<a href=\"http://www.rightsnetwork.net/rightsplugin/setup/uninstall.php\" "+
			"target=\"_blank\">こちら</a></li>"+
			"<li>ダウンロード後30分以内にインストールを行ってください</li>"+
			"<li>ダウンロードは何回でも行うことができます</li>"+
			"</ul>"+
			"</small>"+
			"</center>"+
			"</div>"
		;

		} else if (rnlib_lang == "zh") {

		area.innerHTML = 
			heading +
			"<center>"+
			"要看接下去的部分时，<a href=\"#\" onclick=\"rnlib_update_player_pane(RNLIB_PLAYER_PANE_PROGRESS);\">请从这里的页面</a>下载<br/>"+
			""+
			"RightsNetwork Media Plug-In<br/>"+
			"并进行安装。"+
			"<hr/>"+
			"<small>"+
			"<ul>"+
			"<li>下载方法："+
			"<a href=\"http://www.rightsnetwork.net/rightsplugin/setup/uninstall.php\" "+
			"target=\"_blank\">这里</a></li>"+
			"<li>下载后30分钟内请进行安装</li>"+
			"<li>可以进行多次下载</li>"+
			"</ul>"+
			"</small>"+
			"</center>"+
			"</div>"
		;

		} else {

		area.innerHTML = 
			heading +
			"<center>"+
			"If you want to continue to watch, please install<br>"+
			"RightsNetwork Media Plug-In on your PC<br/>"+
			"from <a href=\"#\" onclick=\"rnlib_update_player_pane(RNLIB_PLAYER_PANE_PROGRESS);\">this web page</a>.<br/>"+
			"<hr/>"+
			"<small>"+
			"<ul>"+
			"<li>About uninstall app, please read a description "+
			"<a href=\"http://www.rightsnetwork.net/rightsplugin/setup/uninstall.php\" "+
			"target=\"_blank\">here</a>.</li>"+
			"<li>Please install the app within 30 minutes after it downloads it.</li>"+
			"<li>Multiple downloading is available.</li>"+
			"</ul>"+
			"</small>"+
			"</center>"+
			"</div>"
		;

		}

	//処理中
	} else if (mode == RNLIB_PLAYER_PANE_PROGRESS) {

		if (rnlib_lang == "ja") {

		area.innerHTML =
			heading +
			"<center>"+
			"RightsNetwork Media Plug-Inを準備しています。<br>しばらくお待ちください。<br>"+
			"<img src=\"http://www.rightsnetwork.net/rightsplugin/rntest/spinner.gif\">"+
			"</center>"+
			"</div>"
		;

		} else if (rnlib_lang == "zh") {

		area.innerHTML =
			heading +
			"<center>"+
			"在准备RightsNetwork Media Plug-In。<br>请稍等片刻。<br>"+
			"<img src=\"http://www.rightsnetwork.net/rightsplugin/rntest/spinner.gif\">"+
			"</center>"+
			"</div>"
		;


		} else {

		area.innerHTML =
			heading +
			"<center>"+
			"Preparing RightsNetwork Media Plug-In,<br> please wait.<br>"+
			"<img src=\"http://www.rightsnetwork.net/rightsplugin/rntest/spinner.gif\">"+
			"</center>"+
			"</div>"
		;

		}

		rnlib_update_player_pane(RNLIB_PLAYER_PANE_INSTALL);

	// インストール
	} else if (mode == RNLIB_PLAYER_PANE_INSTALL) {
		rnlib_get_setup_link(function(data) {
			// クッキーセット&リンク表示
			var sid = data['Sid'];
			var url = data['Url'];
			if (url == "") {

			if (rnlib_lang == "ja") {

				area.innerHTML =
					heading +
					"<center>"+
					"現在アクセスが集中しており、ご利用いただけません。<br>"+
					"しばらくしてから再度ご利用ください。<br>"+
					"</center>"+
					"</div>"
				;
	
			} else if (rnlib_lang == "zh") {
				area.innerHTML =
					heading +
					"<center>"+
					"现在是访问高峰时段，您无法使用。<br>"+
					"请稍等片刻后再使用。<br>"+
					"</center>"+
					"</div>"
				;
				
			} else {

				area.innerHTML =
					heading +
					"<center>"+
					"The access concentrates,<br>"+
					"and it isn’t possible to access now.<br>"+
					"</center>"+
					"</div>"
				;
				
			}

			} else {

			if (rnlib_lang == "ja") {

				area.innerHTML =
					heading +
					"<center>"+
					"ダウンロードの準備が完了しました。<br>"+
					"<a href=\""+url+"\">RightsNetwork Media Plug-Inのインストール</a><br><br>"+
					"このままこのブラウザを閉じないで、<br>インストールが完了してから<a href=\"#\" "+
					"onclick='window.location.reload();'>リロード</a>してください。"+
					"<hr/>"+
					"<small>"+
				"<ul>"+
				"<li>アンインストール方法は"+
				"<a href=\"http://www.rightsnetwork.net/rightsplugin/setup/uninstall.php\" "+
				"target=\"_blank\">こちら</a></li>"+
				"<li>ダウンロード後30分以内にインストールを行ってください</li>"+
				"<li>ダウンロードは何回でも行うことができます</li>"+
				"</ul>"+
					"</small>"+
				"</center>"+
					"</div>"
				;

			} else if (rnlib_lang == "zh") {

				area.innerHTML =
					heading +
					"<center>"+
					"下载准备工作已结束。<br>"+
					"<a href=\""+url+"\">RightsNetwork Media Plug-In的安装</a><br><br>"+
					"请不要关闭浏览器，保持原状，等<br>安装结束后<a href=\"#\" "+
					"onclick='window.location.reload();'>再重载</a>。"+
					"<hr/>"+
					"<small>"+
				"<ul>"+
				"<li>下载方法："+
				"<a href=\"http://www.rightsnetwork.net/rightsplugin/setup/uninstall.php\" "+
				"target=\"_blank\">这里</a></li>"+
				"<li>下载后30分钟内请进行安装</li>"+
				"<li>可以进行多次下载</li>"+
				"</ul>"+
					"</small>"+
				"</center>"+
					"</div>"
				;

			} else {

				area.innerHTML =
					heading +
					"<center>"+
					"It has been enabled to download.<br>"+
					"<a href=\""+url+"\">Installing RightsNetwork Media Plug-In</a><br><br>"+
					"Keep the browser to be running,<br>after to finish install the app,<a href=\"#\" "+
					"onclick='window.location.reload();'>reload</a> the browser."+
					"<hr/>"+
					"<small>"+
					"<ul>"+
					"<li>About uninstall app, please read a description "+
					"<a href=\"http://www.rightsnetwork.net/rightsplugin/setup/uninstall.php\" "+
					"target=\"_blank\">here</a>.</li>"+
					"<li>Please install the app within 30 minutes after it downloads it.</li>"+
					"<li>Multiple downloading is available.</li>"+
					"</ul>"+
					"</small>"+
					"</center>"+
					"</div>"
				;

			}

				rnlib_base_write_cookie(
					"rnlib_sid", sid, RNLIB_SID_EXPIRE_DAYS, '/');
			}

		}, function() {

			if (rnlib_lang == "ja") {

				area.innerHTML =
					heading +
					"<center>"+
					"現在システム調整のため、ご利用いただけません。<br>"+
					"しばらくしてから再度ご利用ください。<br>"+
					"</center>"+
					"</div>"
				;

			} else if (rnlib_lang == "zh") {

				area.innerHTML =
					heading +
					"<center>"+
					"现在在进行系统调整，所以您无法使用。<br>"+
					"请稍等片刻后再使用。<br>"+
					"</center>"+
					"</div>"
				;

			} else {

				area.innerHTML =
					heading +
					"<center>"+
					"Sorry, now maintaining.<br>"+
					"Please try again after a while.<br>"+
					"</center>"+
					"</div>"
				;

			}

		}
		);
	}
}

//// UUIDの有効性取得
function rnlib_get_uuid_ok(uuid, func_ok, func_err)
{
	func_ok();// UUIDはサーバ側にチェックなしでも有効
}

//// SIDの有効性取得
function rnlib_get_sid_ok(sid, func_ok, func_err)
{
	var http = null;
	try {
		http = new ActiveXObject("Microsoft.XMLHTTP");
	} catch (e) {
		http = new XMLHttpRequest();
	}
	http.onreadystatechange = function() {
		var data = null;
		if (http.readyState == 4) {
			if (http.status == 200) {
				data = eval("("+http.responseText+")");
				if (data['Status'] == 'OK') {
					func_ok(data);
				} else {
					func_err();
				}
			} else {
				func_err();
			}
		}
 	}
	var dummy = (new Date()).getTime();
	var req = "/rnlib_proxy.php?sid=" + sid + "&req=11&d=" + dummy;
	http.open("GET",req);
	http.send(null);
}

//// セットアップのリンク取得
function rnlib_get_setup_link(func_ok, func_err)
{
	var http = null;
	try {
		http = new ActiveXObject("Microsoft.XMLHTTP");
	} catch (e) {
		http = new XMLHttpRequest();
	}
	http.onreadystatechange = function() {
		var data = null;
		if (http.readyState == 4) {
			if (http.status == 200) {
				//alert("("+http.responseText+")");
				if (http.responseText == "") {
					if (func_err) {
						func_err();
					}
				} else {
					data = eval("("+http.responseText+")");
					func_ok(data);//Sid, Url
				}
			} else {
				if (func_err) {
					func_err();
				}
			}
		}
 	}
	var dummy = (new Date()).getTime();
	var req = "/rnlib_proxy.php?hn=" + location.hostname + "&d=" + dummy;
//	var req = "/rnlib_proxy.php?" + dummy;
//alert("("+req+")");
	http.open("GET",req);
	http.send(null);
}

//// ページ初期化
function rnlib_onload() {

	if (navigator.cookieEnabled) {
		rnlib_update_player_pane(RNLIB_PLAYER_PANE_NORMAL);
	} else {
		rnlib_update_player_pane(RNLIB_PLAYER_PANE_COOKIE_ERR);
	}
}

////プレイヤ再生ボタンコールバック
function rnlib_player_onPlay(obj) {
	// 毎回行う処理
	var uuid = rnlib_base_read_cookie("rnlib_uuid");
	if (uuid == "") {
		// UUIDクッキーがない場合、タグから更新処理
		var uuid_element = document.getElementById('rnlib_uuid');
		if (uuid_element) {
			if (uuid_element.value != "$(UUID)") {// プラグインが展開
				// uuid.valueをサーバに問い合わせる
				rnlib_get_uuid_ok(uuid_element.value, function() {
					// OKならクッキーをセット
					rnlib_base_write_cookie(
						"rnlib_uuid", uuid_element.value, RNLIB_UUID_EXPIRE_DAYS, '/');
				}, null);
			}
		}
	}
	// 以下、停止状態からの再生時以外はとばす
	//if (obj['newstate'] != "BUFFERING") {
	if (!(obj['oldstate'] == "IDLE" && obj['newstate'] == "BUFFERING")) {
		return;
	}
	// 再生回数のカウントと更新
	var play_count = rnlib_base_read_cookie("rnlib_play_count");
	if (play_count == "") {
		play_count = 0;
	}
	++play_count;
	rnlib_base_write_cookie(
		"rnlib_play_count", play_count, RNLIB_PLAY_COUNT_EXPIRE_DAYS, '/');
	// 指定回数以上
	if (play_count >= RNLIB_PLAY_COUNT_LIMIT)
	{
		// UUIDクッキーがある場合は再生
		var uuid = rnlib_base_read_cookie("rnlib_uuid");
		var sid = rnlib_base_read_cookie("rnlib_sid");
		if (uuid != "") {
				//そのまま再生に遷移

		// UUIDクッキーがなくSIDクッキーがある場合はSIDが有効なら再生
		} else if (sid != "") {
			// SIDをサーバに問い合わせる
			rnlib_get_sid_ok(sid,
				function(data) {
					//そのまま再生に遷移
				},
				function() {
					// エラー・ダウンロードさせる
					rnlib_update_player_pane(RNLIB_PLAYER_PANE_DOWNLOAD);
				}
			);
		// クッキーがなにもない
		} else {
			// ダウンロードさせる
			rnlib_update_player_pane(RNLIB_PLAYER_PANE_DOWNLOAD);
		}

	// 指定回数未満
	} else
	{
		//そのまま再生に遷移
	}
}

///////////////////////////////////////////////////////////////////////////

