/* Copyright (C) 2008 PLOTT CO.,LTD. ===========================================*
 *
 *	Ajax拡張関数
 *	
 *	Create Date 	: 2008/1/11
 *	Creator			: T.Kinoshita
 *	Note			:
 *
 * =============================================================================*/

	/* Ajaxリクエスト実行 ------------------------------------------------------*
	 *	[引数]
	 *		url				->	送信先URL
	 *		ajax			->	Ajax.Requestのoption
	 *			+ method		->	メソッド
	 *				+null			->	POST
	 *				+post			->	POST
	 *				+get			->	GET
	 *			+parameters		->	送信パラメーター
	 *									※長いKeyを指定するとバグが発生する
	 *			+onComplete		->	Ajax処理完了時の処理
	 *			+onSuccess		->	Ajaxファイル読込成功時の処理(デフォルトは何もしない)
	 *			+onFailure		->	Ajaxファイル読込失敗時の処理(デフォルトはエラーアラート)
	 *			+onException	->	Ajaxファイル読込中エラー時の処理(デフォルトはエラーアラート)
	 *		conf			->	確認メッセージ
	 *			+null			->	確認アラート非表示
	 *			+null以外		->	確認アラート表示
	 *		form_name		->	フォームタグのID名
	 *			+null			->	フォームの入力値を取得しない
	 *			+null以外		->	フォームの入力値を取得する
	 *		wait			->	Ajax処理待ち時に画像を表示するID
	 *			+null			->	何もしない
	 *			+null以外		->	記述されたJSを実行
	 *	[戻値]
	 *		back			->	結果
	 *	[備考]
	 *		prototype.jsが提供するAjax.Requestのラッパー関数です
	 *		⇒http://javascriptist.net/docs/samples_prototype.html
	 *		GoogleMapを使用するページではprototype.jsを使用できない為、使えません。
	 * -------------------------------------------------------------------------*/
	function DoAjax(url,ajax,conf,form_name,wait) {
		//変数の宣言
		var ajax_success_msg	= "読み込みに成功しました";
		var ajax_complete_msg	= "読み込みが完了しました";
		var ajax_failure_msg	= "読み込みに失敗しました";
		var ajax_exception_msg	= "読み込み中にエラーが発生しました";
		
		ObjDate = new Date();
		var back,form_data,exec_flg;
		
		//フォームデータ読込
		if ( form_name != null ) {
			form_data = Form.serialize(form_name);
			if ( ajax["parameters"] == null )	{ ajax["parameters"] = form_data; }
			else								{ ajax["parameters"] += "&"+form_data; }
		}
		
		//Ajax.Requestのoptionのデフォルト値設定
		if ( ajax["method"] == null ) {
			ajax["method"] = "post";
		}
		if ( ajax.onFailure == null ) {
			ajax.onFailure = function(request) { alert(ajax_failure_msg); }
		}
		if ( ajax.onException == null ) {
			ajax.onException = function (request) { alert(ajax_exception_msg); }
		}
		
		//キャッシュ対策 
		if ( ajax["parameters"] == null )	{ ajax["parameters"]  =  "xxx="+ObjDate.getUTCMilliseconds(); }
		else								{ ajax["parameters"] += "&xxx="+ObjDate.getUTCMilliseconds(); }
		
		//Ajax実行
		exec_flg = false;
		if ( conf != null ) {
			if ( confirm(conf) == true )	{ exec_flg = true; }
		}
		else								{ exec_flg = true; }
		
		if ( exec_flg == true ) {
			//Ajax処理待ち時の処理
			if ( wait != null ) { $(wait).innerHTML = '<img src="' + WAIT_IMG + '" />'; }
			
			//Ajax実行
			back = new Ajax.Request(url,ajax);
			return back;
		}
	}
	
	/* 指定フォームのデータを取得しAjaxリクエスト実行 --------------------------*
	 *	[引数]
	 *		form_name		->	取得するフォームデータ
	 *		conf			->	確認メッセージ
	 *		DoAjaxと同様
	 *	[戻値]
	 *		DoAjaxと同様
	 * -------------------------------------------------------------------------*/
	function FormRequestAjax(url,ajax,form_name,conf) {
		var back,form_data;
		
		//フォームデータ読込
		if ( form_name != null ) {
			form_data = Form.serialize(form_name);
			if ( ajax["parameters"] == null )	{ ajax["parameters"] = form_data; }
			else								{ ajax["parameters"] += "&"+form_data; }
		}
			
		// Ajax実行
		back = new DoAjax(url,ajax,conf);
		
		return back;
	}

