/******************************************************************************
	初期設定
******************************************************************************/
//alert("start!");
var milkfed_f_gsFloatSwf = 'http://www.milkfed.jp/special/blogparts/swf/blogparts_f.swf';

var milkfed_f_gsFloatId = "FloatingMF";
var milkfed_f_gsFloatBgId = "FloatingBg";
var milkfed_f_gsTickerId = "Ticker";

var milkfed_f_giFloatHeight = 200;
var milkfed_f_giFloatLeft = 0;

// フロートTickerを表示する
var milkfed_f_gbShowFlg = 0;
var milkfed_f_giFloatNum = 0;

var milkfed_f_global_width = 0;
var milkfed_f_global_height = 0;


// MacIEチェックを行う
milkfed_f_bMacIeFlg = milkfed_f_CheckMacIe();

// Tikerを作成する
//MakeTicker();

// onLoad時に実行する
milkfed_f_AddLoadFunction(milkfed_f_ShowPage, 1);
//ShowPage(1);
var milkfed_f_show_flg = 1;

//setTimeout(hide_swf, 5000);
function milkfed_f_hide_swf()
{
	//alert("hide_swf!");
	setTimeout(milkfed_f_tm_func, 7000);
	milkfed_f_ShowPage(0);
}

function milkfed_f_tm_func()
{
	//("tm_func");
	milkfed_f_ShowPage(1);
}

/********************************************************************************
	関数名		AddLoadFunction
	機能		BodyのLoadイベント時に実行する関数を追加する
	
	入力		fFunction		関数名（「"」で囲まずに指定する）
				sArg			関数の引数（"AAA,BBB"というように、カンマ区切りの文字列）
	出力		なし
	
	使い方		この関数は、<body onLoad="">が出現する後に実行すること。
				同様に、この関数が実行されたあとに、window.onload=function();が設定されると
				それまでの関数は無効となる。
				
				引数を使用する場合は、カンマ区切りの文字列を渡す。
				実際の関数内で、カンマ区切りの文字を配列にsplitして使う。
********************************************************************************/
function milkfed_f_AddLoadFunction(milkfed_f_fFunction, milkfed_f_sArg){
	//alert("AddLoadFunction!");
	var milkfed_f_fBaseOnload = window.onload;
	
	// 既存のonLoadイベントが存在しない場合
	if(typeof window.onload != 'function'){
		// 追加された関数をonLoadイベントとする
		window.onload = function(){
			// 新しい関数を実行する
			milkfed_f_fFunction(milkfed_f_sArg);
		}
	// 既存のonLoadイベントが存在する場合
	}else{
		window.onload = function(){
			// 元の関数を実行する
			milkfed_f_fBaseOnload();
			// 新しい関数を実行する
			milkfed_f_fFunction(milkfed_f_sArg);
		}
	}
}



/******************************************************************************
	関数名		MakeTicker
	機能		ティッカーを作成する
	
	入力		なし
	出力		document.writeによるHTML出力
******************************************************************************/
function milkfed_f_MakeTicker(){
	var milkfed_f_sTickerUrl = milkfed_f_gsTickerSwf;
	
	var sHtml = "";
	sHtml += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="160" height="260" id="' + gsTickerId + '" align="middle">';
	sHtml += '<param name="allowScriptAccess" value="always" />';
	sHtml += '<param name="movie" value="' + milkfed_f_sTickerUrl + '" />';
	sHtml += '<param name="quality" value="high" />';
	sHtml += '<param name="bgcolor" value="#ffffff" />';
	sHtml += '<param name="wmode" value="transparent" />';
	sHtml += '<embed wmode="transparent" src="' + milkfed_f_sTickerUrl + '" quality="high" bgcolor="#ffffff" width="160" height="260" name="' + milkfed_f_gsTickerId + '" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
	sHtml += '</object>';
	
	document.write(sHtml);
}


/********************************************************************************
	関数名		ShowPage
	機能		Flashレイヤーを表示、非表示する
	
	ポイント	フローティングレイヤーの表示サイズは
				SWFをクリックするたびに再計算する。
				
				フローティングレイヤーの中身を新しいSWFソースで入れ替えることで
				Flashを初期化する。
				
				MacIEの場合のみ、表示、非表示のたびに
				レンダリングしなおすために、スクロール処理を入れる。
	
	入力		sMode	1:表示  0:非表示
	出力		なし
	
	処理概要	
				1. 現在表示されている場合
				 1.0. オブジェクト名を作成する
				 1.1. 表示モードの場合
				  1.1.2. ポジションを移動して終了する
				 1.2. 非表示モードの場合
				  1.2.2. 対象オブジェクトを削除する
				2. 現在表示されていない場合
				 2.1. 表示モードの場合
				  2.1. フロートオブジェクトを作成する
				  2.2. フロートオブジェクトIDを作成する
				  2.3. フロートオブジェクトをbodyに追加する
				 2.2. 非表示モードの場合
				  2.2.1. 何もしない
				3. MacIEの場合
				 3.1. 再レンダリングする
********************************************************************************/
function milkfed_f_ShowPage(sMode){
	//alert("mf_blogparts ShowPage! sMode = " + sMode);
	
	var milkfed_f_oLayer;
	var milkfed_f_sId;
	var milkfed_f_iLayerTop;
	var milkfed_f_iLayerWidth;
	var milkfed_f_iLayerHeight;


	// 非表示モードの場合
	if(sMode != 1) {
		
		var milkfed_f_dom_obj=document.getElementById(milkfed_f_gsFloatId);
		var milkfed_f_dom_obj_parent=milkfed_f_dom_obj.parentNode;

		//alert('ID: '+milkfed_f_dom_obj.getAttribute('id')+' を削除します');
		milkfed_f_dom_obj_parent.removeChild(milkfed_f_dom_obj);
		// フラグを更新する
		milkfed_f_gbShowFlg = 0;
		
		// 自動調整をオフにする
		clearInterval(milkfed_f_iIntervalId);
		clearInterval(milkfed_f_iIntervalBgId);
		
		
		return;
	}
	
	
	// 現在表示されている場合
	if(milkfed_f_gbShowFlg == 1){
		//alert("mf_blogparts 現在表示されている!");
		return;
			
		
	// 現在表示されていない場合
	} else {
		//alert("mf_blogparts 現在表示されていない場合!");
		// 表示モードの場合
		if(sMode == 1){
			

			
			// Flash表示用レイヤー { ***************************************
			
			// オブジェクトを作成する
			milkfed_f_oLayer = document.createElement('DIV');
			milkfed_f_oLayer.id = milkfed_f_gsFloatId;

			milkfed_f_oLayer.style.position = "absolute";
			milkfed_f_oLayer.style.zIndex = 1000;
			milkfed_f_oLayer.style.display = "block";
			
			// フローティングレイヤーのサイズを算出する
			milkfed_f_iLayerWidth = milkfed_f_GetWindowSize("width");
			milkfed_f_iLayerHeight = milkfed_f_GetWindowSize("height");

			//alert("iLayerWidth = " + milkfed_f_iLayerWidth);
			//alert("iLayerHeight = " + milkfed_f_iLayerHeight);
			
			if(milkfed_f_CheckBrowserModeForTicker()){
				milkfed_f_oLayer.style.width = milkfed_f_iLayerWidth + "px";
				milkfed_f_oLayer.style.height = milkfed_f_iLayerHeight + "px";

			} else {
				milkfed_f_oLayer.style.width = "100%";
				milkfed_f_oLayer.style.height = "100%";
			}

			// フローティングレイヤーにスタイルを指定する
			milkfed_f_oLayer.style.top = milkfed_f_GetScrollPosition("top") + "px";
			milkfed_f_oLayer.style.left = milkfed_f_GetScrollPosition("left") + "px";

			//alert("oLayer.style.top = " + oLayer.style.top);
			//alert("oLayer.style.left = " + oLayer.style.left);
			
			// SWFタグを作成する
			var sHtml = "";
			sHtml += '<table style="background-color:transparent; border:none; padding:0; margin:0; text-align:center; vertical-align:middle"  border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">';
			sHtml += '<tr><td height="100%" align="center" valign="middle" style="padding:0; margin:0; border:none; background-color:transparent; text-align:center; vertical-align:middle">';
			sHtml += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="100%" height="100%" align="middle">';
			sHtml += '<param name="bgcolor" value="#333333" />';
			sHtml += '<param name="allowScriptAccess" value="always" />';
			sHtml += '<param name="movie" value="' + milkfed_f_gsFloatSwf + '" />';
			sHtml += '<param name="quality" value="high" />';
			sHtml += '<param name="wmode" value="transparent" />';
			sHtml += '<param name="salign" value="lt" />';
			sHtml += '<param name="SWLIVECONNECT" value="TRUE" />';
			sHtml += '<param name=FlashVars value="s_w='+ milkfed_f_iLayerWidth +'&s_h='+ milkfed_f_iLayerHeight  +'">';
//			sHtml += '<embed bgcolor="#333333" SWLIVECONNECT="TRUE" salign="lt" align="middle" src="' + gsFloatSwf_AN + '" quality="high" width="630" height="460" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
			sHtml += '<embed SWLIVECONNECT="TRUE" salign="lt" align="middle" src="' + milkfed_f_gsFloatSwf + '" quality="high" wmode="transparent" width="100%" height="100%" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" FlashVars="s_w=' + milkfed_f_iLayerWidth + '&s_h=' + milkfed_f_iLayerHeight + '" />';
			sHtml += '</object></td></tr></table>';
			//sHtml += '</object>';
			
			
			// SWFを挿入する
			milkfed_f_oLayer.innerHTML = sHtml;
			//alert("mf_blogparts オブジェクトを追加する!");
			// オブジェクトを追加する
			document.getElementsByTagName('body')[0].appendChild(milkfed_f_oLayer);

			milkfed_f_iIntervalId = setInterval("milkfed_f_setLayPosition('" + milkfed_f_gsFloatId + "')", 100);
			
			
			// フラグを変更する
			milkfed_f_gbShowFlg = 1;
		}
	}
	
	// MacIEの場合
	if(milkfed_f_bMacIeFlg == 1){
		// 再レンダリングする
		window.scrollBy(0, 1);
	}
	
}

function milkfed_f_setLayPosition(sId){
	//alert("milkfed_f_setLayPosition");
	var oTarget = document.getElementById(sId);

	if(milkfed_f_CheckBrowserModeForTicker()){
		oTarget.style.width = milkfed_f_GetWindowSize("width") + "px";
		oTarget.style.height = milkfed_f_GetWindowSize("height") + "px";
	}
	
	oTarget.style.top = milkfed_f_GetScrollPosition("top") + "px";
	oTarget.style.left = milkfed_f_GetScrollPosition("left") + "px";
}

/********************************************************************************
	関数名		GetMiddlePosition
	機能		現在のスクロール位置でのミドルポジションを取得する
	
	入力		sMode			top / left
	出力		iPositionX		X座標
				iPositionY		Y座標
	
	処理概要	1. Windowサイズを取得する
				2. スクロール位置を取得する
				3. ミドルポジションを算出する
				4. ミドルポジションを返して終了する
********************************************************************************/
function milkfed_f_GetMiddlePosition(sMode){
	
	// Windowサイズを取得する
	var iWindowWidth, iWindowHeight;
	iWindowWidth = milkfed_f_GetWindowSize('width');
	iWindowHeight = milkfed_f_GetWindowSize('height');
	
	// スクロール位置を取得する
	var iScrollTop, iScrollLeft;
	iScrollTop = milkfed_f_GetScrollPosition('top');
	iScrollLeft = milkfed_f_GetScrollPosition('left');
	
	// ミドルポジションを算出する
	var iMiddleTop = iWindowHeight / 2 + iScrollTop;
	var iMiddleLeft = iWindowWidth / 2 + iScrollLeft;
	
	// topを返す場合
	if(sMode == "top"){
		return iMiddleTop;
	} else {
		return iMiddleLeft;
	}
	
}

/********************************************************************************
	関数名		GetScrollPosition
	機能		スクロール位置を算出する
	
	入力		sMode		top / left
	出力		iPosition
********************************************************************************/
function milkfed_f_GetScrollPosition(sMode){

	//alert("milkfed_f_GetScrollPosition");
	var iScrollPosition;

	if(sMode == "left"){
		if(self.pageXOffset){
			iScrollPosition = self.pageXOffset;
		// Explorer 6 Strict
		}else if(document.documentElement && document.documentElement.scrollLeft){
			iScrollPosition = document.documentElement.scrollLeft;
		// all other Explorers
		}else if(document.body){
			iScrollPosition = document.body.scrollLeft;
		}
	} else {

		if(self.pageYOffset){
			iScrollPosition = self.pageYOffset;
		// Explorer 6 Strict
		}else if(document.documentElement && document.documentElement.scrollTop){
			iScrollPosition = document.documentElement.scrollTop;
		// all other Explorers
		}else if(document.body){
			iScrollPosition = document.body.scrollTop;
		}
	}
	
	return iScrollPosition;
}

/********************************************************************************
	関数名		GetWindowSize
	機能		ウィンドウサイズを取得する
	
	入力		sMoe		"width" | "height"
*********************************************************************************/
function milkfed_f_GetWindowSize(sMode){
	//alert("milkfed_f_GetWindowSize");
	var iWindowWidth, iWindowHeight;
	
	// all except Explorer
	if(self.innerHeight){
		iWindowWidth = self.innerWidth;
		iWindowHeight = self.innerHeight;
	// Explorer 6 Strict Mode
	}else if(document.documentElement && document.documentElement.clientHeight){
		iWindowWidth = document.documentElement.clientWidth;
		iWindowHeight = document.documentElement.clientHeight;
	// other Explorers
	}else if(document.body){
		iWindowWidth = document.body.clientWidth;
		iWindowHeight = document.body.clientHeight;
	}
	
	if(sMode == "width"){
		return (iWindowWidth);
	} else {
		return (iWindowHeight);
	}
}
	

/********************************************************************************
	関数名		CheckMacIe
	機能		MacIEであることをチェックする
********************************************************************************/
function milkfed_f_CheckMacIe(){
	var sOs = milkfed_f_ds_GetOsName();
	var sNavigator = milkfed_f_ds_GetNavigatorName();
	
	if((sOs == "MacOSX" || sOs == "MacOS") && sNavigator == "Explorer"){
		return true;
	} else {
		return false;
	}
}

/********************************************************************************
	関数名		CheckBrowserModeForTicker
				ds_GetOsName
				ds_GetNavigatorName
	
	機能		ブラウザチェック
*********************************************************************************/
function milkfed_f_CheckBrowserModeForTicker(){
	var sOs = milkfed_f_ds_GetOsName();
	var sBrowser = milkfed_f_ds_GetNavigatorName();
	
	//alert("sBrowser! = " + sBrowser);

	if((sOs == "Windows" && sBrowser == "Explorer") || (sOs == "MacOSX" && sBrowser == "Safari2")){
		return true;
	}
	return false;
}


	
/********************************************************************************
	関数名		ds_GetOsName
	機能		OS情報を取得する
	
	入力		なし
	出力		sOsData		Os情報 ("MacOSX","Windows")
********************************************************************************/
function milkfed_f_ds_GetOsName()
{
	var uAgent  = navigator.userAgent.toUpperCase();
	if (uAgent.indexOf("MAC OS X") >= 0) return "MacOSX";
	if (uAgent.indexOf("MAC") >= 0) return "MacOS";
	if (uAgent.indexOf("WIN") >= 0) return "Windows";
	if (uAgent.indexOf("X11") >= 0) return "UNIX";
	return "";
}
function milkfed_f_ds_GetNavigatorName(){
	if(navigator.IBM_HPR) return "HomepageReader";
	
	aName  = navigator.userAgent.toUpperCase();
	if (aName.indexOf("SAFARI") >= 0)
	{
		if(navigator.appVersion.charAt(0)==2){
			return "Safari2";
		}else{
			return "Safari";
		}
	}
	if (aName.indexOf("CHIMERA") >= 0) return "Camino";
	if (aName.indexOf("OPERA") >= 0) return "Opera";
	
	aName = navigator.appName.toUpperCase();
	if (aName.indexOf("NETSCAPE") >= 0)  return "Netscape";
	if (aName.indexOf("MICROSOFT") >= 0) return "Explorer";
	return "";
}

