$(function() {
	// 申し込みフォーム周り
	$("#row_interval input").change( onIntervalChanged );
	$("#row_range input").change( onRangeChanged );
	$(".stl1,.stl2").focus( function() {
		if ( this.value == this.defaultValue ) {
			this.value = "";
		}
	});
	$(".stl1,.stl2").blur( function() {
		if ( !this.value || !this.value.match(/\S/) ) {
			this.value = this.defaultValue;
		}
	});

	function renewDate() {
		var today = new Date();
		$("#select_year").val( today.getFullYear() );
		$("#select_month").val( today.getMonth() + 1 );
		$("#select_day").val( today.getDate() );
	}
	function renewOnceTime() {
		$("#select_once_hour").val("23");
		$("#select_once_minute").val("59");
	}
	function renewRangeTime() {
		$("#select_start_hour").val("0");
		$("#select_start_minute").val("0");
		$("#select_end_hour").val("23");
		$("#select_end_minute").val("59");
	}

	function onIntervalChanged() {
		var interval = this.value;
		switch (interval) {
		case "once":
			$("#row_date,#row_range").fadeIn("fast");
			onRangeChanged();
			renewDate();
			renewOnceTime();
			break;
		case "weekday":
		case "weekend":
		case "everyday":
			$("#row_range").fadeIn("fast");
			$("#row_date").hide();
			onRangeChanged();
			break;
		case "now":
			$("#row_date,#row_range,#row_timeselect,#row_starttime,#row_endtime").hide();
			break;
		default:
			throw("WTF!1");
		}
	}

	function onRangeChanged() {
		var range = $("#row_range input:checked")[0].value;
		switch (range) {
		case "fixed":
			$("#row_timeselect").fadeIn("fast");
			$("#row_starttime,#row_endtime").hide();
			renewOnceTime();
			break;
		case "range":
			$("#row_timeselect").hide();
			$("#row_starttime,#row_endtime").fadeIn("fast");
			renewRangeTime();
			break;
		default:
			throw("WTF!2");
			break;
		}
	}

	// フォームのエラー表示
	function show_error( $tr, data ) {
		if ( data.status != "OK" ) {
			$tr.show();
			var errors = data.error;
			var error_messages = [];
			for ( var error in errors ) {
				if ( !errors.hasOwnProperty(error) ) { continue; }
				error_messages.push( errors[error].join("<br/>") );
			}
			$tr.find("p.error_message").html( error_messages.join("<br/>") );
		}
		else {
			$tr.hide();
		}
	}

	// 申し込みフォームのsubmit
	$("#form_entry").submit( function(ev){
		// this: domelement
		var $row_error = $(this).find("tr.row_error");
		$.post( "/api/schedule", $(this).serialize(), function(data,textStatus){
			var skypeid = $("#text_entry_skypeid")[0].value;
			show_error( $row_error, data );
			if ( data.status=="OK" ) {
				$("#form div.request").html("<p>元気付け依頼受付完了！<br/><br/>"+skypeid+"様の元気付け依頼を受け付けました。<br/>"+skypeid+"様へ確認用のSkypeメッセージをお送りいたします。<br/>届きましたSkypeメッセージをお読みいただき、メッセージ内のURLをクリックしてください！<br/><br/>※URLをクリック後、Skype電話がかかってきます。<br/>※混雑している場合、メッセージおよび電話が遅れる場合がございます。ご了承ください。</p>");
			}
			console.log("data: ",data);
		}, "json");
		return false;
	});

	$("#form_cancel").submit( function(){
		var $row_error = $(this).find("tr.row_error");
		$.post( "/api/schedule/delete", $(this).serialize(), function(data,textStatus){
			var skypeid = $("#text_cancel_skypeid")[0].value;
			show_error( $row_error, data );
			if ( data.status=="OK" ) {
				$("#cancel div.request").html("<p>元気付け依頼のキャンセル受付完了！<br/><br/>"+skypeid+"様の元気付け依頼のキャンセルを受け付けました。<br/>"+skypeid+"様へ確認用のSkypeメッセージをお送りいたします。<br/>届きましたSkypeメッセージをお読みいただき、メッセージ内のURLをクリックしてください！<br/><br/>※URLをクリック後、キャンセル確定いたします。</p>");
			}
			console.log("data: ",data);
		}, "json");
		return false;
	});

	$("#form_tellfriend").submit( function(){
		var $row_error = $(this).find("tr.row_error");
		$.post( "/api/skype/invite", $(this).serialize(), function(data,textStatus){
			var myid     = $("#text_friend_myid")[0].value;
			var friendid = $("#text_friend_friendid")[0].value;
			show_error( $row_error, data );
			if ( data.status=="OK" ) {
				$("#friend div.request").html("<p>友達に教える、の受付完了！<br/><br/>"+friendid+"様へSkypeで招待メッセージをお送りいたします。<br/><br/>※一度も元気付け依頼を行っていない方の友達に教える、は受け付けておりません。</p>");
			}
			console.log("data: ",data);
		}, "json");
		return false;
	});

	$("#row_interval input:checked").trigger("change");
});
