/**
 * @author Takahashi Fumiki(http://takahashifumiki.com)
 */

var WP_Tategaki_Params = {
	msgUpdate: '縦書きにはFlashPlayerのバージョン10以上が必要です。<a href="http://get.adobe.com/jp/flashplayer/">Adobeのページ</a>でFlashをアップデートしてください。<br />なお、Windowsは2000以上、MacはOS X 10.4以上のみ対応しています。',
	msgFailed: 'この記事はXMLとして有効ではないので、縦書き表示することができません。',
	msgIe: '美しいフォントによる縦書きにはFlashPlayerのバージョン10以上が必要です。<a href="http://get.adobe.com/jp/flashplayer/">Adobeのページ</a>でFlashをアップデートしてください。<br />なお、Windowsは2000以上のみ対応しています。',
	swfId: "externalinterface",
	containerId: "wp_tategaki_container",
	originId: "wp_tategaki_origin",
	scriptId: "wp_tategaki_script"
}

var WP_Tategaki_Instance;


var WP_Tategaki = new Class({
	pluginDir: '',

	//コンストラクタ
	initialize: function(){
		//自分のURLから情報を取得
		var query = $(WP_Tategaki_Params.scriptId).src;
		this.pluginDir =  query.slice(0,query.indexOf("/js/wp-tategaki.js"));
		if(Browser.Plugins.Flash.version < 10){
			if(Browser.Engine.trident) this.msg(WP_Tategaki_Params.msgIe,true);
			else this.msg(WP_Tategaki_Params.msgUpdate,false);
		}else{
			this.makeBook();
		}
	},

	//Flashを読み込む
	makeBook: function (){
		var path = this.pluginDir + "/wp_tategaki.swf";

		//スタイルの設定
		var originalContainer = $(WP_Tategaki_Params.originId);
		var tWidth = originalContainer.getStyle('width');
		var tHeight = window.getSize().y - originalContainer.getPosition().y;

		//幅と高さを取得
		var tCont = new Element('div', {
			id: WP_Tategaki_Params.containerId,
			style:{
				height: tHeight
			}
		});

		//flashのコンテナを配置
		tCont.inject(originalContainer,'before');

		//元のコンテンツを非表示
		originalContainer.setStyle('display','none');


		var swiff = new Swiff(path,{
			id:WP_Tategaki_Params.swfId,
			width:tWidth,
			height:tHeight,
			container:tCont,
			params: {
				quality: "high",
				wMode: "transparent"
			}
		});
	},

	//Flash内の初期化
	compute: function(){
		if (Browser.Engine.trident) window[WP_Tategaki_Params.swfId].passContent($(WP_Tategaki_Params.originId).innerHTML);
		else $(WP_Tategaki_Params.swfId).passContent($(WP_Tategaki_Params.originId).innerHTML);
		$(WP_Tategaki_Params.containerId).addEvent('mouseenter',function(evt){
			$(WP_Tategaki_Params.swfId).focus();
		});
	},

	//XMLがvalidではなかった場合の処理
	failed: function(){
		$(WP_Tategaki_Params.containerId).destroy();
		this.msg(WP_Tategaki_Params.msgFailed);
		$(WP_Tategaki_Params.originId).removeProperty('style');
	},

	//メッセージボックスを生成して、divの前に突っ込む
	msg: function(str,flg){
		var msgCss = new Asset.css(this.pluginDir + "/assets/wp_tategaki.css");
		var cont = $(WP_Tategaki_Params.originId);
		if(flg) cont.addClass('tategaki');
		var msgWrapper = new Element('div',{
			"id": "wp_tategaki_msg",
			"style":{
				opacity: 0
			}
		});
		msgWrapper.set('html',str);
		msgWrapper.inject(cont,'before');
		msgWrapper.fade('in');
	}
});

//初期化用関数
function wp_tategaki_init(){
	WP_Tategaki_Instance = new WP_Tategaki();
}

//domreadyイベントにリスナーを添付
window.addEvent('domready',wp_tategaki_init);