$mailtypes = Array(
	"Web拍手代わり",
	"質問など"
);

function initialize()
{
	$('mailform').onsubmit = validate;
	Event.observe( $('mailform'), 'reset', resetform, false);

	$('confirm').style.display = 'none';
}

function resetform()
{
	clearerror( 'name' );
	clearerror( 'mailtype' );
	clearerror( 'message' );

	return true;
}

function trim( s )
{
	return String(s).replace( /^[ 　	]*/gim, "" ).replace( /[ 　	]*$/gim, "" );
}

function validate()
{
	clearerror( 'name' );
	clearerror( 'mailtype' );
	clearerror( 'message' );

	var form = $('mailform');

	var err = 0;

	//名前のvalidate
	{
		if ( form.name.value.length > 128 )
		{
			seterror('name', '名前が長すぎます。');
			err++;
		}
	}

	//用件のvalidate
	{
		var mailtype = -1;
		var i, len = form.mailtype.length;
		for ( i = 0; i < len; i++ )
		{
			if ( form.mailtype[i].checked )
			{
				mailtype = i;
				break;
			}
		}

		if ( mailtype < 0 || mailtype >= len )
		{
			seterror('mailtype', '用件が選択されていません。');
			err++;
		}
	}

	//本文のvalidate
	{
		if ( trim( form.message.value ) == "" )
		{
			seterror('message', '本文が入力されていません。');
			err++;
		}
		else if ( form.message.value.length > 2048 )
		{
			seterror('message', '本文が長すぎます。');
			err++;
		}
	}

	//エラーが無かったので確認画面へ
	if ( !err )
	{
		$('input').style.display = 'none';
		$('confirm').style.display = '';
		showconfirm();
	}

	return false;
}

function showconfirm()
{
	var form = $('mailform');

	var name = form.name.value.escapeHTML();
	var mailtype = "";
	{
		for ( var i = 0, len = form.mailtype.length; i < len; i++ )
		{
			if ( form.mailtype[i].checked )
			{
				mailtype = $mailtypes[form.mailtype[i].value].stripTags();
				break;
			}
		}
	}
	var msg = form.message.value.escapeHTML();
	var filepath = form.attachfile.value.escapeHTML();

	$('confirm').innerHTML = 
		'<h2>= 確認画面 =</h2>'+
		'<p class="submessage">以下の内容で送信します。よろしいですか？</p>'+
		'<table cellspacing="1">'+
		'<tr><th nowrap="nowrap">お名前</th><td>'+name+'</td></tr>'+
		'<tr><th nowrap="nowrap">用件</th><td>'+mailtype+'</td></tr>'+
		'<tr><th nowrap="nowrap">メッセージ</th><td>'+msg+'</td></tr>'+
		'<tr><th nowrap="nowrap">ファイル</th><td>'+filepath+'</td></tr>'+
		'<tr><td colspan="2" class="submit">'+
		'<form id="mailform-confirm" name="mailform-confirm">'+
		'<button name="confirm-back" id="confirm-back" type="button" style="width:80px">&lt;&lt; 修正</button>'+
		'<button name="confirm-send" id="confirm-send" type="button" style="width:80px">送 信</button>'+
		'</form>'+
		'</td></tr>'+
		'</table>';

	Event.observe( $('confirm-back'), 'click', confirmback, false );
	Event.observe( $('confirm-send'), 'click', confirmsend, false );

	

	return false;
}

function confirmback()
{
	$('input').style.display = '';
	$('confirm').style.display = 'none';
}

function confirmsend()
{
	$('confirm-back').disabled = true;
	$('confirm-send').disabled = true;
	$('mailform').submit();
}

function seterror( row, message )
{
	var e = $( 'row-'+row );
	var th = e.getElementsByTagName('th'), td = e.getElementsByTagName('td');
	th = th[0], td = td[0];

	th.className = 'error';
	td.className = 'error';

	//エラーメッセージ
	if ( message )
	{
		var p = false;

		//既にエラーメッセージ用エレメントがあるか調べる
		{
			var ps = td.getElementsByTagName('p');
			for ( var i = 0, len = ps.length; i < len; i++ )
			{
				if ( ps[i].className == 'error' )
				{
					p = ps[i];
					break;
				}
			}
		}

		//無かったら新規作成
		if ( !p )
		{
			p = document.createElement('p');
			p.className = 'error';
			td.insertBefore( p, td.firstChild );
		}

		//エラーメッセージを追記
		p.appendChild( document.createTextNode(message) );
		p.appendChild( document.createElement('br') );
	}
}

function clearerror( row )
{
	var e = $( 'row-'+row );
	var th = e.getElementsByTagName('th'), td = e.getElementsByTagName('td');
	th = th[0], td = td[0];

	th.className = '';
	td.className = '';

	var ps = td.getElementsByTagName('p');
	for ( var i = ps.length-1; i >= 0; i-- )
	{
		if ( ps[i].className == 'error' )
		{
			td.removeChild(ps[i]);
		}
	}
}

Event.observe(window, 'load', initialize, false);

