/*
	ver: 2009-06-04
	requires: jquery.js (ver 1.1.2), jTemplates.js (ver 0.4.3)

*/


(function($) {

	$.fn.createLinkList = function( options) {
		// jTemplateがロード済みかどうかチェック
		if( this.attr("id") && window.$.createTemplate ){
			init( this.attr("id"), options);
		}
	};

	function init( id, options ){
		// パラメータの初期化処理
		var p = {};
		p.id     = id             || null;	// テンプレートの内容の書き出し先のブロック要素のID
		p.boxid  = options.boxid  || p.id;	// 上記ブロックの外枠のブロック要素のID。この要素のdisplay属性値を最終的に"block"に指定して表示。nullの場合はp.idの値を使う。
		p.data   = options.data   || null;	// 使用するJSONデータポイントを指定
		p.tmpl   = options.tmpl   || "";	// 書き出すHTMLテンプレートを指定。
		p.required = options.required;		// データが実質0件かどうかをこのキーをベースにチェック。データ0件でも空値がJSONにセットされるため。
		p.callback = options.callback || null; // コールバック関数を指定。


		// 書き出し先のIDとデータがあれば、HTML書き出し処理を実行
		if( p.id && p.data ){
			if( !p.data[0] || !p.data[0][p.required] ) return;
			var node = $("#"+p.id);

			// テンプレート生成
			var tmpl = $.createTemplate(p.tmpl, null, {
					disallow_functions : false,
					filter_data        : false,
					filter_params      : false
			});

			// テンプレートを対象のノードにセット
			node.setTemplate(tmpl);

			// テンプレにデータを流し込み
			node.processTemplate( p.data );

			// 終わったらCSSで表示
			$("#"+p.boxid).css({"display": "block"});

			// コールバック関数を実行
			if (p.callback && typeof p.callback == "function") {
				p.callback();
			}

			if( jQuery.browser.safari ){
				$("<ins> </ins>").appendTo($("#"+p.boxid)).css({"height":"1px"}).remove();
				$("#"+p.boxid).css({"min-height": "5px"});
			}
		}
	}

})(jQuery);



function wait(a, func, cnt){
	var check = 0;
	var timerID = null;
	cnt = cnt || 100;
	try{
		eval("check = " + a);
	}catch(e){}

	if(check){
		func()
	}else{
		cnt--;
		var f = function(){wait(a,func,cnt)};
		if( cnt == 0 ){
			func();
		}
		else {
			timerID = setTimeout(f,100);
		}
	}
}






