/*
	varsion: 2008-01-15
	requires: prototyp.js (ver1.6), pr0*Data.js
*/
/*
	// 入力データ例
	ODEKAKE_PR_DATA01 = {
		"info": 
			[	
				{
					"category": "1",
					"title": "MEDIA GUIDE01-01",
					"description": "本文本文本文",
					"img": "/odekake/images/index_ph001.jpg",
					"url": "http://www.tobu.co.jp/",
					"target": "1",
				},
					:
			]
	};

	// HTML出力例
	<div class="pr-inner">
		<p class="box-title">PR</p>
		<dl>
			<dt><a href="DUMMY">極上の会津　キャンペーン</a></dt>
			<dd class="pr-detail">
				<p class="photo"><img src="/common/images/right_ph001.jpg" alt="" /></p>
				<p class="txt">ダミーテキストです。ダミーテキストです。</p>
			</dd>
		</dl>
	</div>

	or

	<div class="pr-inner">
		<p class="box-title">PR</p>
		<dl>
			<dt><a href="DUMMY">極上の会津　キャンペーン</a></dt>
			<dd class="pr-detail">
				<p>ダミーテキストです。ダミーテキストです。</p>
			</dd>
		</dl>
	</div>

*/


/*
  設定
----------------------------------------------------*/

// IR更新情報ブロックID
var ODEKAKE_PR_BLOCK_ID = "odekake-pr-box";


// 入力データのオブジェクト名を登録
var ODEKAKE_PR_DATA_INPUTS = [
	"ODEKAKE_PR_DATA01",
	"ODEKAKE_PR_DATA02",
	"ODEKAKE_PR_DATA03"
];



/*
  テンプレート設定＆書き出し
----------------------------------------------------*/

document.observe("dom:loaded", function() {

	if( !$(ODEKAKE_PR_BLOCK_ID) ) return;

	var ODEKAKE_PR_DATA = [];

	if( !Array.prototype.concatPRData ){
		Array.prototype.concatPRData = function( arr ){
			if( typeof arr != "undefined" ){
				for( var i=0, len=arr.length; i<len; i++ ){
					if( arr[i] && arr[i].title )			// タイトルのデータの有無をチェック
						this[this.length] = arr[i];
				}
			}
			return this.length;
		}
	}

	ODEKAKE_PR_DATA_INPUTS.each(function(objName){
		var d = window[objName];
		if( typeof d != "undefined" && d.info ){
			ODEKAKE_PR_DATA.concatPRData( d.info );
		}
	});


	if( ODEKAKE_PR_DATA.length ){

		// ニュースリリース1件当りのHTMLテンプレート。#{***}の***部分がJSON中のパラメータ名に対応。
		var ODEKAKE_PR_TMPL_BODY = new Template(
			 '<div class="pr-inner">'
			+'<p class="box-title">PR</p>'
			+'<dl>'
			+'<dt><a href="#{url}"#{target}>#{title}</a></dt>'
			+'<dd class="pr-detail">'
			+'<p class="photo"><a href="#{url}"#{target}><img src="#{img}" alt="" /></a></p>'
			+'<p class="txt">#{description}</p>'
			+'</dd>'
			+'</dl>'
			+'</div>'
		);

		// 画像が無い場合
		var ODEKAKE_PR_TMPL_BODY_NOIMAGE = new Template(
			 '<div class="pr-inner">'
			+'<p class="box-title">PR</p>'
			+'<dl>'
			+'<dt><a href="#{url}"#{target}>#{title}</a></dt>'
			+'<dd class="pr-detail">'
			+'<p>#{description}</p>'
			+'</dd>'
			+'</dl>'
			+'</div>'
		);


		// JSONデータ中の値で、別の値に変換して出力するものをここで処理。case "***"の***部分がJSON中のパラメータ名に対応。
		function setTemplateProperty(data){
			for( var p in data ){
				switch(p){
					case "target":	// 1: 別ウィンドウ || 0: 同ウィンドウ
									data[p] = (data[p] == "1")?
											' target="_blank"' :
											'';
									break;

					default:
									break;
				}
			}
			return data;
		}


		// データのセット
		var htmlStr = "";
		var num = Math.floor(Math.random()*ODEKAKE_PR_DATA.length);
		var prData = ODEKAKE_PR_DATA[num];

		// リンクの有無でテンプレートを切り替え
		htmlStr = ( prData.img )?
							ODEKAKE_PR_TMPL_BODY.evaluate(setTemplateProperty(prData)):
							ODEKAKE_PR_TMPL_BODY_NOIMAGE.evaluate(setTemplateProperty(prData));

		// 書き出し
		$(ODEKAKE_PR_BLOCK_ID).innerHTML = htmlStr;
		$(ODEKAKE_PR_BLOCK_ID).style.display = "block";

	}

});



/*
  対象の要素を非表示に設定
  指定した複数のセレクタにまとめてスタイルを適用。
  一つ目のCSSファイル中にルールを追記
----------------------------------------------------*/

(function( selectors ){

	if( selectors && selectors.constructor == Array ){
		var str = '';
		var rule = '{display: none;}';
		var sheet = document.styleSheets[0];
		if( !selectors.length || !sheet || !rule ) return;

		if( Prototype.Browser.WebKit ){
			selectors.each(function(selector){
				str += selector + rule;
			});
			document.write( '<style type="text/css">' + str + '</style>' );
		}
		else if( sheet.insertRule ){
			selectors.each(function(selector){
				sheet.insertRule( selector+rule, sheet.cssRules.length );
			});
		}
		else if( sheet.addRule ){
			selectors.each(function(selector){
				sheet.addRule(selector, rule);
			});
		}
	}

})( [
	"#"+ODEKAKE_PR_BLOCK_ID
] );


