//--------------------------------------------------------------------------------------------------
// KsGMap - メール・フォーム　プラグイン　　Ver1.00
// http://www.ksgmap.jp/
// Copyright(c) 2005 Ksc
//--------------------------------------------------------------------------------------------------

//プラグインを登録
KsGMapEX.addPlugIn( "MailForm" );
//グローバル関数定義
//var ksgmapplugin_mapNavi_html		= "";
//メール・フォーム定義
var KsGMapPlugIn_MailForm = new function(){
	this.formField						= new Array( "mailTo" , "mailFromName" , "mailFrom" , "mailSubject" , "mailMessage" );

	this.focusMessage					= new Array();
	this.focusMessage[ "mailTo" ]		= "複数のアドレスに送信する場合は、カンマで区切ってください。最大200文字です。";
	this.focusMessage[ "mailMessage" ]	= "“このページのURL”は自動的に挿入されます。最大300文字です。";
	this.defaultSubject					= "メールの題名初期値";

	this.errorMessage					= new Array();


	this.template						= new Object;
	this.template.completionMessage		= "<strong>メール送信が送信されました。</strong>";
	this.template.errorMessage			= "<span style=\"color:#aa0000\">%errorMessage%</span>";

	this.init							= KsGMapPlugIn_MailForm_init;
	this.submit							= KsGMapPlugIn_MailForm_submit;
	this.reset							= KsGMapPlugIn_MailForm_reset;
	this.dispErrorMessage				= KsGMapPlugIn_MailForm_dispErrorMessage;
	this.focus							= KsGMapPlugIn_MailForm_focus;
	this.keydown						= KsGMapPlugIn_MailForm_keydown;
}
//コールバックを追加
KsGMapEX.addCallback( KsGMapInit			, KsGMapPlugIn_MailForm.init		);		//KsGMap初期化

//□メール・フォーム - 初期化
function KsGMapPlugIn_MailForm_init(){
	//メール題名初期値を設定
	if( document.getElementById( "ksgmapplugin--MailForm-mailSubject" ) ){
		document.getElementById( "ksgmapplugin--MailForm-mailSubject" ).value = KsGMapPlugIn_MailForm.defaultSubject;
	}
}
//□メール・フォーム - 送信（チェック及びキーの取得）
function KsGMapPlugIn_MailForm_submit( event , form ){

	//必須項目の有無をチェック
	var checkField = new Array( "mailTo" , "mailFrom" );
	for( var i = 0 ; i < checkField.length ; i++ ){
		if( !document.getElementById( "ksgmapplugin--MailForm-" + checkField[ i ] ).value ){ KsGMapPlugIn_MailForm.dispErrorMessage( "pi0106" , "必須項目が空欄です。" , checkField[ i ]  );  return ; }
	}

	//最大文字数のチェック
	var checkField = new Array( "mailTo" , 200  , "mailFromName" , 50  , "mailFrom" , 100  , "mailSubject" , 50  , "mailMessage" , 300 );
	for( var i = 0 ; i < checkField.length ; i += 2 ){
		if( document.getElementById( "ksgmapplugin--MailForm-" + checkField[ i ] ).length > checkField[ i + 1 ] ){ KsGMapPlugIn_MailForm.dispErrorMessage( "pi0105" , "文字数をオーバーしています。" , checkField[ i ] );  return ; }
	}

	//送信ボタンを押せないようにしておく
	document.getElementById( "ksgmapplugin--MailForm-submit" ).disabled = true;

	//キーの取得
	var request = "./php/ksgmap_mailform.php";
	KsGMapCommon_XML_include( request , KsGMapPlugIn_MailForm_submit2 , "CACHE:OFF" );
}
//□メール・フォーム - 送信（値の送信）
function KsGMapPlugIn_MailForm_submit2( xmlDoc ){
	//失敗した場合
	if( KsGMapCommon.XML.getValueByUniqueTag( xmlDoc , "result" ) == "false" ){
		var errorNo = KsGMapCommon.XML.getValueByUniqueTag( xmlDoc , "errorNo" );
		KsGMapPlugIn_MailForm.dispErrorMessage( errorNo );
		return;
	}

	//送信値の生成
	var request = "./php/ksgmap_mailform.php";
	request += "?key=" + KsGMapCommon.XML.getValueByUniqueTag( xmlDoc , "key" );		//キー
	for( var i = 0 ; i < KsGMapPlugIn_MailForm.formField.length; i++ ){					//項目の値
		var fieldID = KsGMapPlugIn_MailForm.formField[ i ];
		request += "&" + fieldID + "=" + encodeURIComponent( document.getElementById( "ksgmapplugin--MailForm-" + fieldID ).value );
	}
	if( document.getElementById( "ksgmapplugin--MailForm-flagCC" ).checked ){ request += "&flagCC=1"; }	//自分にも転送
	request += "&url=" + encodeURIComponent( KsGMapInfo.getURL() );

	//送信処理
	KsGMapCommon_XML_include( request , KsGMapPlugIn_MailForm_submit3 , "CACHE:OFF" );
}
//□メール・フォーム - 送信（結果処理）
function KsGMapPlugIn_MailForm_submit3( xmlDoc ){
	//失敗した場合
	if( KsGMapCommon.XML.getValueByUniqueTag( xmlDoc , "result" ) == "false" ){
		var errorNo			= KsGMapCommon.XML.getValueByUniqueTag( xmlDoc , "errorNo" );
		var errorMessage	= KsGMapCommon.XML.getValueByUniqueTag( xmlDoc , "errorMessage" );
		var errorValue		= KsGMapCommon.XML.getValueByUniqueTag( xmlDoc , "errorValue" );
		KsGMapPlugIn_MailForm.dispErrorMessage( errorNo , errorMessage , errorValue );
		return;
	}

	//完了メッセージを表示
	document.getElementById( "ksgmapplugin--MailForm-message" ).innerHTML = KsGMapPlugIn_MailForm.template.completionMessage;

	//連続してボタンが押されないように、1.5秒後にボタンを回復させる。
	setTimeout( "document.getElementById( 'ksgmapplugin--MailForm-submit' ).disabled = false;" , 1500 );
}
//□メール・フォーム - リセット
function KsGMapPlugIn_MailForm_reset( event , form ){
	for( var i = 0 ; i < KsGMapPlugIn_MailForm.formField.length; i++ ){
		var fieldID = KsGMapPlugIn_MailForm.formField[ i ];

		if( fieldID == "mailFromName" || fieldID == "mailFrom" ){ continue; }	//あなたの名前とあなたのメールアドレスはリセットしない
		if( fieldID == "mailSubject" ){ document.getElementById( "ksgmapplugin--MailForm-" + fieldID ).value = KsGMapPlugIn_MailForm.defaultSubject;  continue; }	//題名は初期値に戻す

		document.getElementById( "ksgmapplugin--MailForm-" + fieldID ).value = "";
	}
}
//□メール・フォーム - エラーメッセージの表示
function KsGMapPlugIn_MailForm_dispErrorMessage( errorNo , errorMessage , errorValue ){
	//フォーカスを合わせる
	if( errorValue ){ document.getElementById( "ksgmapplugin--MailForm-" + errorValue ).focus(); }

	//独自のエラーメッセージがある場合は、それに差し替える
	if( KsGMapPlugIn_MailForm.errorMessage[ errorNo ]						){ errorMessage = KsGMapPlugIn_MailForm.errorMessage[ errorNo ]; }
	if( KsGMapPlugIn_MailForm.errorMessage[ errorNo + ":" + errorValue ]	){ errorMessage = KsGMapPlugIn_MailForm.errorMessage[ errorNo + ":" + errorValue ]; }

	//エラーメッセージ表示用HTMLの生成
	var insertTag = KsGMapPlugIn_MailForm.template.errorMessage.replace( "%errorMessage%" , errorMessage );
	document.getElementById( "ksgmapplugin--MailForm-message" ).innerHTML = insertTag;

	//送信ボタンを戻す
	document.getElementById( "ksgmapplugin--MailForm-submit" ).disabled = false;
}
//□メール・フォーム - フォーカス
function KsGMapPlugIn_MailForm_focus( event , form ){
	if( form.id.match( /^ksgmapplugin--MailForm-([a-zA-Z]+)$/ ) ){ var fieldID = RegExp.$1; } else { return ; }

	//メッセージを表示する
	var message = KsGMapPlugIn_MailForm.focusMessage[ fieldID ]
	if( !message ){ message = "&nbsp;"; }
	document.getElementById( "ksgmapplugin--MailForm-message" ).innerHTML = message;
}
//□メール・フォーム - キーダウン
function KsGMapPlugIn_MailForm_keydown( event , form ){
	if( form.id.match( /^ksgmapplugin--MailForm-([a-zA-Z]+)$/ ) ){ var fieldID = RegExp.$1; } else { return ; }

	//メッセージ以外で、エンターキーを押した場合、次のフィールドにフォーカスを移す
	if( event.keyCode == 13 && fieldID != "mailMessage" ){
		for( var i = 0 ; i < KsGMapPlugIn_MailForm.formField.length; i++ ){
			if( KsGMapPlugIn_MailForm.formField[ i ] == fieldID ){ document.getElementById( "ksgmapplugin--MailForm-" + KsGMapPlugIn_MailForm.formField[ i + 1 ] ).focus();  break; }
		}
		KsGMapCommon.Event.cancel( event );
	}
}
