// JavaScript Document
var flash;			//宣告 Flash 物件
var _Msg = "";
//
function _debugMsg(M)
{
	$('DebugMsg').insert({top:M});
}

function _debugXml(M)
{
	//將已載入的事件資訊儲存於log檔
	var url="log.php?log="+M;
	new Ajax.Request("log.php?log="+M,
	{
		method:'get',
		evalJS:false,
		evalJSON:false
	});
}

//指定 Flash 物件
function timeMovie(){
	if (Prototype.Browser.IE)
		return window["flashTimeline"];
	else
		return document["flashTimeline"];
}
//Flash Call JS (time)
//每次移動 Falsh 時間軸時 Flash 丟出的時間(時間軸中心點時間)
var getTimeTimerID = null;
function _GetTime(D){
	if (getTimeTimerID == null) {
		getTimeTimerID = function() {
			getTimeTimerID = null;
			if ($('tabInfo_frame0').contentWindow.location.toString().match(tagala.config.searchUrl))
				$('tabInfo_frame0').contentWindow.scroller.moveByDate("post_start_date.DESC", D);
			checkData(D);
			if (timeMovie()) genXML();
			tagala.common.setCookie('dt', D, cookies_attr);
		}.delay(tagala.config.sameRequestTimeDelay);
	}

	//_debugMsg("收到 Flash 給的時間: <b style='color:#F00;'>"+D+"</b><br />");
	//收到 Flash 給的時間需要給 Flash 一個該是間區段的 XML 資料。
	//_reloadXml("events.xml");
	//timeMovie().flash_showlog("_GetTime");
}
//Flash Call JS ()
//切換 Scale 通知
function _GetScale(){
	tagala.common.setCookie('dt_mode', querymode(), cookies_attr);
	_GetTime(querytime());
	_debugMsg("切換Scale囉！</b><br />");
	
	//timeMovie().flash_showlog("_GetScale");
}
//Flash Call JS (event)
//點擊事件時發送
function _GetEvent(D){
	var event = D.match('(.*)\/([0-9]+)\/([0-9]+)\/([0-9]+)');
//	showdata(event[2], event[3], event[1]);		//postid, blogid, title
/*handsome*/
	if (D.match('(.*)\/[a-z]{11}([0-9]+)\/([0-9]+)\/([0-9]+)')) {
		event = D.match('(.*)\/[a-z]{11}([0-9]+)\/([0-9]+)\/([0-9]+)');
		//alert(event[2]);
		showBroadcast(event[2]);  //postid,userid,title
	}
	else {
		event = D.match('(.*)\/([0-9]+)\/([0-9]+)\/([0-9]+)');
		//alert(event[2]);
		showdata(event[2], event[3], event[1]); //postid, blogid, title
	}
	
	_debugMsg("收到 Flash 給的事件: <b style='color:#F00;'>"+D+"</b><br />");
}
//Flash Call JS (Period)
//選擇區段
function _callPeriod(P){
	var dt = P.match('([0-9]+\/[0-9]+\/[0-9]+)\/([0-9]+\/[0-9]+\/[0-9]+)');
	DateCallback(dt[1],dt[2]);
	_debugMsg("收到 Flash 區段時間: <b style='color:#F00;'>"+ P +"</b><br />");
}
//詢問時間軸目前顯示的時間
function querytime(){
	var D;
	if (timeMovie().flash_querytime)
		D = timeMovie().flash_querytime();
	else
	{
		var currentTime = new Date();
		var month = currentTime.getMonth() + 1;
		var day = currentTime.getDate();
		var year = currentTime.getFullYear();
		D = month + "/" + day + "/" + year;
	}
	//timeMovie().flash_showlog("querytime");
	return D;
	//_debugMsg("詢問 Flash 的時間: <b style='color:#F00;'>"+ D +"</b><br />");
}
//詢問時間軸目前顯示的模式(M:月, Y:年, DY:十年, CY:百年, TY:千年)
function querymode(){
	var M;
	if (timeMovie().flash_querymode)
		M = timeMovie().flash_querymode();
	//_debugMsg("詢問 Flash 的模式: <b style='color:#F00;'>"+ M +"</b><br />")
	return M;
}
//詢問時間軸目前兩邊邊界的時間
function querytimeInterval(){
	var P;
	if (timeMovie().flash_querytimeInterval)
		P = timeMovie().flash_querytimeInterval();
	//timeMovie().flash_showlog("querytimeInterval");
	return P;
}
//詢問選取區間狀態(0:關, 1:開)
function queryInterval(){
	var T;
	if (timeMovie().flash_queryInterval)
		T = timeMovie().flash_queryInterval();
	return T;
}
// ExternalInterface.call(setDate, yyyy/mm/dd:string)
//設定(顯示)時間軸，
//_d:String ,時間 2008/8/8 , 年:使用西元計年(可為負數),月:1~12,日:1~31
//_m:String ,模式 ["M","Y","DY","CY","TY"] 模式 : 月、年、十年、百年、千年
function _setDate(_d,_m){
	if (timeMovie().flash_setDate)
		timeMovie().flash_setDate(_d,_m); 			//執行完畢會 return true
	//timeMovie().flash_showlog("_setDate");
}

//ExternalInterface.addCallback(reloadXml, xmlURL:string, asReloadXml)
//要求重新載入 XML
//_xmlURL:String
function _reloadXml(_xmlURL){
	if (timeMovie().asReloadXml)
		timeMovie().asReloadXml(_xmlURL); 	//執行完畢會 return true
	//timeMovie().flash_showlog("_reloadXml");
}

//
function _loadXmlObj(_xmlObj){
	if (timeMovie().asLoadXmlObj)
		timeMovie().asLoadXmlObj(_xmlObj); 	//執行完畢會 return true
	//timeMovie().flash_showlog("_loadXmlObj");
}

//清除XML
function _clearXml(){
	if (timeMovie().asClearXml)
		timeMovie().asClearXml();
	//timeMovie().flash_showlog("_clearXml");
}

//查詢某事件，傳入postid
function _setEvent(_event){
	if (timeMovie().flash_setEvent)
		timeMovie().flash_setEvent(_event);
}

//highlight某事件，傳入postid
function _highlightEvent(_event){
	if (timeMovie().flash_highlightEvent)
		timeMovie().flash_highlightEvent(_event);
}

//消除已highlight事件，傳入postid
function _unhighlightEvent(_event){
	if (timeMovie().flash_unhighlightEvent)
		timeMovie().flash_unhighlightEvent(_event);
}

//開啟或關閉選取區間
function _selectInterval(){
	if (timeMovie().flash_selectInterval)
		timeMovie().flash_selectInterval();
}

//設定選取區間開始日期(格式：2007-01-01)
function _setIntervalLeft(_d){
	if(timeMovie().flash_setIntervalLeft)
		timeMovie().flash_setIntervalLeft(_d);
}

//設定選取區間結束日期(格式：2007-01-01)
function _setIntervalRight(_d){
	if (timeMovie().flash_setIntervalRight)
		timeMovie().flash_setIntervalRight(_d);
}

// -----------------------------------------------------------------------------
// 全域
// 需要 Flash 的主要版本
var requiredMajorVersion = 8;
// 需要 Flash 的次要版本
var requiredMinorVersion = 0;
// 需要的 Flash 版本
var requiredRevision = 0;
// 支援的 Javascript 版本
var jsVersion = 1.0;
// -----------------------------------------------------------------------------
//

// 偵測用戶端瀏覽器類型
var isIE  = Prototype.Browser.IE;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = Prototype.Browser.Opera;
jsVersion = 1.1;
// 需要 JavaScript 協助程式以偵測 Flash Player PlugIn 版本資訊
function JSGetSwfVer(i){
	// NS/Opera 版本 >= 3 檢查外掛程式陣列中的 Flash 外掛程式
	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;
		}
	}
	// MSN/WebTV 2.6 支援 Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 支援 Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// 舊的 WebTV 支援 Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	// 在其它情況下皆無法偵測
	else {
		
		flashVer = -1;
	}
	return flashVer;
} 
// 如果以沒有參數的方式呼叫，這個函數會傳回應為 Flash Player 的版本值或 0.0 的浮點值
// 例如：Flash Player 7r14 會傳回 7.14
// 使用 reqMajorVer、reqMinorVer 或 reqRevision 呼叫時，如果有該版本或更新的版本時，會傳回 true
function DetectFlashVer(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 );	
			}
		}
	}	
	return (reqVer ? false : 0.0);
}
