// 要：prototype.js , Spry
//
// Version 1.00


// 記述例
//
//	// フォームの作成
//	var pt = new prototype_template();
//	pt.display( {
//		id_name      : 'en_name_form_div',
//		template_file: 'http://test.server.com/js/templates/pt_template.html'  ,
//		param        : {
//							artist_name : 'アーティスト名'
//						} ,
//		post_function: function(){
//							Element.hide('en_name_form_button');
//						}
//
//	});




function prototype_template(){

	// method (display)
	this.display=function( arg ){

		var id_name         = arg.id_name;
		var template_file   = arg.template_file;
		var param           = arg.param;
		var pre_function    = arg.pre_function;
		var post_function   = arg.post_function;
		var effect          = arg.effect;
		var effect_param    = arg.effect_param;

		var output='';
		var ajax_flag=0;

		// テンプレートファイル読み込み
		new Ajax.Request(template_file, {
			method     : 'post',
			onFailure  : function(httpObj){
				ajax_flag=1;
				alert('ファイル['+template_file+']が読み込めません'); return false;
			} ,
			onSuccess  : function(httpObj){
				ajax_flag=1;
				// alert('ajax読み込み成功');
				var text = httpObj.responseText;
				text = _ajax_filter(text);

				// パラメーター
				var t = new Template(text); 
				var data = {
					lang    : 'Ruby',
					variable: '(not used)'
				};

				var dom_obj=$(id_name);
				dom_obj.innerHTML='';
				
				dom_obj2=document.createElement('div');
				id2=id_name+'_prototype_template';
				dom_obj2.setAttribute('id',id2);
				dom_obj.appendChild(dom_obj2);

				Element.hide(dom_obj2);
				dom_obj2.innerHTML=t.evaluate(param);

				// pre_function
				if(pre_function){ pre_function(); }

				// post_function
				if(post_function){ effect_param.finish=post_function; }

				// Spry effect
				if (! effect){
					Element.show(dom_obj2);
				}
				else if (effect=='Blind'){
					var spry_obj = new Spry.Effect.Blind(dom_obj2, effect_param);
					spry_obj.start();
				}
				else if (effect=='Fade'){
					var spry_obj = new Spry.Effect.Fade(dom_obj2, effect_param);
					spry_obj.start();
				}
				else if (effect=='Grow'){
					var spry_obj = new Spry.Effect.Grow(dom_obj2, effect_param);
					spry_obj.start();
				}
				else if (effect=='Highlight'){
					var spry_obj = new Spry.Effect.Highlight(dom_obj2, effect_param);
					spry_obj.start();
				}
				else if (effect=='Shake'){
					var spry_obj = new Spry.Effect.Shake(dom_obj2, effect_param);
					spry_obj.start();
				}
				else if (effect=='Slide'){
					var spry_obj = new Spry.Effect.Slide(dom_obj2, effect_param);
					spry_obj.start();
				}
				else if (effect=='Squish'){
					var spry_obj = new Spry.Effect.Squish(dom_obj2, effect_param);
					spry_obj.start();
				}
				else{
					alert('エフェクト名:'+effect+' がありません');
				}

			} ,
			onComplete : function(httpObj){
				ajax_flag=1;
				// alert('ajax通信を終了しました');
			}
		});

		// ローカルかどうかの判別
		setTimeout( function(){
			if (ajax_flag==0){ alert('Ajax通信が行われませんでした。ローカル環境下ではAjax通信は行えません。'); }
		}, 1000);


		// _ajax_filter
		function _ajax_filter(text){
			if( (navigator.appVersion.indexOf( "KHTML" ) > -1) && (navigator.appVersion.indexOf( "Version/2" ) > -1)){
				alert(navigator.appVersion);
		        var esc = escape(text);
		        return(esc.indexOf("%u") < 0 && esc.indexOf("%") > -1) ? decodeURIComponent(esc) : text
			}
			else{ return text; }
		}
/*
		function _ajax_filter ( text ) {
			// var text = req.responseText;
			if ( navigator.appVersion.indexOf( "KHTML" ) > -1 ) {
				var esc = escape( text );
				if ( esc.indexOf("%u") < 0 && esc.indexOf("%") > -1 ) {
					text = decodeURIComponent( esc );
				}
			}
			return text;
		}
*/




	} 
}

/*
function object_dump(dom_obj){
	var msg = "";
	 for (var prop in dom_obj) msg += prop + ": " + r[prop] + "\n" ;
	alert(msg);

}
*/


