var rowNumber=0;

//***********************************//
// URLの送信
//***********************************//
function dataStep1Ajax() {

	if (!$("#data_url").val()){
		alert("登録するURLを入力してください。");
		$("#data_url").focus();
		return;
	}

	var url;
	url = $("#data_url").val().toLowerCase();
	urlRegExp = /^(((ht|f)tp(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/
	if (!urlRegExp.test(url)){
		alert("登録する URL の形式がおかしいです。");
		$("#data_url").focus();
		return;
	}

	// URL がドメインの場合、最後の / を削除する
    str = $("#data_url").val();
    re = new RegExp("\/$", "i");
	if (str.search(re) != -1) {
		$("#data_url").val(str.substring(0,str.length-1));
    }


	// 更新の場合
	if ($("#flag_modify").val()==1) {

		$("#flag_modify").val('0');
		$("#legend_tag").attr('title','サイトの更新');
		$("#data_mode").val("pwcheck");

		var fields = $("#form_step1").serializeArray();

		// 更新処理用パスワードチェック
		$.ajax({

			type: "post",
			url: "./register.php",
			data: fields,
			success: dataModify1AjaxOnload,
			error: dataStep1AjaxError
		});

		return;
	}

	$("#data_button_area").hide();
	$("#data_button_process").show();

	$("#submit_loading").show('fast');
	$("#step1_results_error").hide('fast');

	$("#data_mode").val('step1');

	var fields = $("#form_step1").serializeArray();

	// HPの確認用
	$.ajax({

		type: "post",
		url: "./register.php",
		data: fields,
		success: dataStep1AjaxOnload,
		error: dataStep1AjaxError
	});


}

function dataModify1AjaxOnload(msg) {

	var res =msg.split("<>");

	if (res[0]=="error") {
		alert(res[1]);
		$("#data_password").val('');
		$("#flag_modify").val('1');
		$("#data_password").focus();
		return;
	}

	$("#data_password").val('');

	// 新規登録時の入力
	$("#step1").hide('slow');
	$("#step1_results").show('slow');
	$("#step2").show('slow');

	// カテゴリーの選択を全て外す
	unMarkAllRows("category_area");

	for(var i=1; i < res.length; i++) {
		var cmd = res[i].split("<*>");
		if (cmd[0]=="text") {
			$("#"+cmd[1]).val(cmd[2]);
		}
		if (cmd[0]=="radio") {
			$("#"+cmd[1]).attr("html",cmd[2]);
		}
		if (cmd[0]=="select") {
			$("#"+cmd[1]+"_"+cmd[2]).attr("selected","selected");
		}
		if (cmd[0]=="checkbox") {
			$("#"+cmd[1]+"_"+cmd[2]).attr("checked","checked");
		}
		if (cmd[0]=="html") {
			$("#"+cmd[1]).attr("innerHTML",cmd[2]);
		}
		if (cmd[0]=="attr") {
			$("#"+cmd[1]).attr(cmd[2],cmd[3]);
		}

	}

	$("#data_url_show").attr('innerHTML',$("#data_url_hidden").val());

	// 各種データ取得
	$("#data_mode").val('step2');

	// 更新ボタン表示
	$("#submit_loading").hide('fast');
	$("#data_button_submit").val('更新');
	$("#submit").show('slow');

	// サムネイル取得AJAX送信（更新用）
	$.ajax({
		type: "post",
		url: "./register.php",
		data: "mode=thumbnail&site_id="+$("#data_site_id").val()+"&url="+$("#data_url_hidden").val(),
		success: getThumbnailOnload,
	});

}

function dataStep1AjaxError() {

	$("#step1_results_error").show('slow');
	$("#step1_results_error").attr('innerHTML',"URLの取得に失敗しました");

}

function dataStep1AjaxOnload(msg) {

	var res =msg.split("<>");

	if (res[0]=="error") {
		alert(res[1]);
		return;
	} else if (res[0]=="error2") {
		alert(res[1]);
		$("#data_button_area").show();
		$("#data_button_process").hide();
		return;
	} else if (res[0]=="in_db") {
		alert(res[1]);

		$("#flag_modify").val(1);
		$("#data_site_id_modify").val(res[2]);

		// パスワード入力域表示
		$("#modify_password_area").show('fast');
		$("#data_password").focus();

		$("#data_button_area").show();
		$("#data_button_process").hide();

		return;
	}

	// 新規登録時の入力
	$("#step1").hide('slow');
	$("#step1_results").show('slow');
	$("#step2").show('slow');

	// カテゴリーの選択を全て外す
	unMarkAllRows("category_area");

	for(var i=1; i < res.length; i++) {
		var cmd = res[i].split("<*>");
		if (cmd[0]=="text") {
			$("#"+cmd[1]).val(cmd[2]);
		}
		if (cmd[0]=="radio") {
			$("#"+cmd[1]).attr("html",cmd[2]);
		}
		if (cmd[0]=="select") {
			$("#"+cmd[1]+"_"+cmd[2]).attr("selected","selected");
		}
		if (cmd[0]=="html") {
			$("#"+cmd[1]).attr("innerHTML",cmd[2]);
		}
		if (cmd[0]=="checkbox") {
			$("#"+cmd[1]+"_"+cmd[2]).attr("checked","checked");
		}
		if (cmd[0]=="attr") {
			$("#"+cmd[1]).attr(cmd[2],cmd[3]);
		}

	}

	$("#data_url_show").attr('innerHTML',$("#data_url_hidden").val());

	// 更新は必要なし
	if ($("#flag_db_exists").val()==1) {
		$("#submit_loading").hide('fast');
		$("#submit").show('slow');
		return;
	}

	// 各種データ取得
	$("#data_mode").val('step2');
//	$("#data_sid").val($("#data_site_id").val());

	var fields = $("#form_step1").serializeArray();

	$.ajax({
		type: "post",
		url: "./register.php",
		data: fields,
		success: dataStep2AjaxOnload,
	});

	// サムネイル取得AJAX送信（新規用）
	$.ajax({
		type: "post",
		url: "./register.php",
		data: "mode=thumbnail&site_id="+$("#data_site_id_default").val()+"&url="+$("#data_url").val(),
		success: getThumbnailOnload,
	});

}

function dataStep2AjaxOnload(msg) {

	var res =msg.split("<>");

	if (res[0]=="error") {
		return;
	} else if(res[0]=="OK") {
		$("#submit_loading").hide('fast');
		$("#submit").show('slow');
	}

}

function getThumbnailOnload(msg) {

	var res =msg.split("<>");

	if (res[0]=="error") {
		return;
	} else if(res[0]=="OK") {
		$("#"+res[1]).attr("innerHTML",res[2]);
	}

}

//***********************************//
// 登録
//***********************************//
function dataRegisterAjax() {

	if ($("#data_mode_reg").val()!="admin_mode") {

		// データ入力のチェック
		if (!$("#data_title").val()) {
			alert("タイトルを入力してください");
			$("#data_title").focus();
			return;
		}

		if (!$("#data_description").val()) {
			alert("内容を記載して下さい");
			$("#data_description").focus();
			return;
		}

		if ($("#data_email").val()) {
			if (!is_valid_email($("#data_email").val())) {
				alert("メールアドレスの形式が正しくないようです。\n正しいメールアドレスを入力してください");
				$("#data_email").focus();
				return;
			}
		}

		var check_num = $("input:checkbox[@name^='data_category']:checked").length; 

		if ( check_num < 1 || 5<check_num) {
			alert("該当するカテゴリ－を１個以上５個以下 選択して下さい");
			$("#treecontrol").focus();
			return;
		}

		if (!$("#data_deletekey").val()) {
			alert("更新用のパスワードを設定して下さい。");
			$("#data_deletekey").focus();
			return;
		}

		if ($('input[name="data_rule"]:checked').val()==0) {
			alert("利用規定に同意出きなければ、登録申請できません。");
			$("#data_rule_0").focus();
			return;
		}

		var str = $("#data_deletekey").val();
    	var tmp = str.match(/[0-9a-zA-Z@\+\-\/\*\,\.]+/g);
    	if (tmp != str) {
			alert("更新用のパスワードに利用できない文字が含まれています");
			$("#data_deletekey").focus();
			return;
		}

	}

	$("#data_mode_reg").val('register');

	var fields = $("#form_data_register").serializeArray();

	$.ajax({
		type: "post",
		url: "./register.php",
		data: fields,
		success: dataRegisterAjaxOnload
	});

}

function dataRegisterAjaxOnload(msg) {

	var res =msg.split("<>");

	if (res[0]=="error") {
		alert(res[1]);
		return;
	} else if  (res[0]=="OK") {
		$("#step2").hide('slow');
		$("#step3").attr('innerHTML',res[1]);
		$("#step3").show('slow');
	} 

// デバグ用処理
//	$("#results").attr('innerHTML',msg);

}

/**************************************/
// チェックボックス 一括チェックはずす
/**************************************/
function unMarkAllRows( container_id ) {

	var rows = document.getElementById(container_id).getElementsByTagName('li');

	var checkbox;

	for ( var i = 0; i < rows.length; i++ ) {
		checkbox = rows[i].getElementsByTagName( 'input' )[0];
		if ( checkbox && checkbox.type == 'checkbox' ) {
			if ( checkbox.disabled == false ) {
				checkbox.checked = false;
			}
		}
	}

	return true;
}

/******************************************/
// mail 形式のチェック
/******************************************/
function is_valid_email(email_address) {

	var regex;
	regex = '^([._/a-z0-9-]+[._/a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,3}))$';
	myRE = new RegExp(regex, "gi");
	result = email_address.match(myRE);

	return result;

}

/******************************************/
// 地図情報の入力画面表示
/******************************************/
function getMapLopcation() {

	var w,h,lat,lon,zoom,url;

	$("#location_data").show('slow');

	lat=$("#googlemap_lat").val();
	lon=$("#googlemap_lon").val();
	zoom=$("#googlemap_zoom").val();

	w = screen.availWidth;
	h = screen.availHeight;

	// サブウィンドウのサイズを現サイズの80%とする。
	w = Math.round(w*0.8);
	h = Math.round(h*0.7);

	url = "?mode=get_location&lat="+lat+"&lon="+lon+"&zoom="+zoom;

	subwinGoogleMap = window.open(url,'subwinGoogleMap','width='+w+',height='+h+',location=0,resizable=1,scrollbars=1,menubar=0,status=0');

	subwinGoogleMap.focus();

}

/******************************************/
// 地図情報の削除
/******************************************/
function deleteMapLocation() {

	if (!confirm("位置情報のデータを削除（クリアー）してもよろしいですか？")) {
		return;
	}

	$("#googlemap_lat").val("");
	$("#googlemap_lon").val("");
	$("#googlemap_zoom").val("");

}



/******************************************/
// 項目の追加
/******************************************/
function addRow(){

	rowNumber++;

    // 雛形の行をコピーする
	var tmplRowNode = document.getElementById("data_category_tpl");
	var rowNode = tmplRowNode.cloneNode(true);

//	rowNode.id = "row" + rowNumber;
	// 行の子ノードを順に調べる
	for (i = 0; i < rowNode.childNodes.length; i++) {
		var tdNode = rowNode.childNodes[i];

		// 該当要素であれば、その子ノードを順に調べる
		if (tdNode.nodeName == "INPUT") {
			for (j = 0; j < tdNode.childNodes.length; j++) {
				var chNode = tdNode.childNodes[j];
			}
		}
	}

    // 行を可視にする
	rowNode.style.display = "block";
	rowNode.id = "data_new_category_"+rowNumber;

    // 表の最後に行を追加する
	var tbodyNode = document.getElementById("new_category_area");
	tbodyNode.appendChild(rowNode);

}

/******************************************/
// 行削除
/******************************************/
function removeRow(btn) {

    // このボタンを含む行（tr要素）のノードを得る
    var rowNode = btn.parentNode.parentNode;

    // 行を削除する
    rowNode.parentNode.removeChild(rowNode);

}

/******************************************/
// 利用規定の表示
/******************************************/
function dispRule() {

	$("#disp_rule_area").show('slow');

}



