/***************************************
 * 検索画面への遷移
 * path    - 検索画面へのパス（未指定の場合は「../gourmet/search.php」）
 * objForm - フォーム名
 ***************************************/
function openSearch(path, objForm) {
    if (path == "") {
        path = "../gourmet/search.php";
    }
    objForm.action = path;
    objForm.submit();
}


/***************************************
 * 検索画面への遷移
 * path    - 検索画面へのパス（未指定の場合は「../gourmet/search.php」）
 * objForm - フォーム名
 ***************************************/
function openSearchList(path, objForm, categoryKbnCode, categoryCode) {
    if (path == "") {
        path = "../gourmet/search_list.php";
    }
    objForm.sltCategory.value = categoryKbnCode + ":" + categoryCode;
    objForm.action = path;
    objForm.submit();
}


/***************************************
 * グルメ店登録画面への遷移
 * path    - グルメ店登録画面へのパス（未指定の場合は「../gourmet/keisai.php」）
 * objForm - フォーム名
 ***************************************/
function openGourmetKeisai(path, objForm) {
    if (path == "") {
        path = "../gourmet/keisai.php";
    }
    objForm.action = path;
    objForm.submit();
}


/***************************************
 * グルメ店登録画面
 * 画面表示時の初期処理
 ***************************************/
function initKeisai() {
    chengParkingEnable();
}


/***************************************
 * グルメ店登録画面
 * 入力情報のチェック処理
 * 戻り値：true:チェックOK、false:チェックNG
 ***************************************/
function checkGourmetInput() {
    
    var objError = document.getElementById("idError");
    
    //入力値チェック
    var errorMessage = checkCommonShopInput();
    objError.innerHTML = "";
    objError.style.display = "none";
    if (errorMessage != "") {
        objError.innerHTML = "<div class='error'>" + errorMessage + "</div>";
        objError.style.display = "inline";
        scrollTo(0,0);
        return false;
    }
    
    document.frmGourmetInput.action = "keisai_prev.php";
    document.frmGourmetInput.submit();
}


/***************************************
 * グルメ店入力情報の共通チェック処理
 * 戻り値：エラーありならばエラーメッセージ、エラーなしならば空値
 ***************************************/
function checkCommonShopInput() {
    
    var errorMessage = "";
    
    /*************************
     * カテゴリ
     *************************/
    //必須チェック
    var objSltCategory = document.getElementById("sltCategory");
    var categoryValue = objSltCategory.options[objSltCategory.selectedIndex].value;
    if (categoryValue == -1) {
        errorMessage = "カテゴリを選択して下さい。<br />";
    }
    
    /*************************
     * 店名
     *************************/
    var objTxtShopNameKanji = document.getElementById("txtShopNameKanji");
    
    //必須チェック
    if (objTxtShopNameKanji.value == "") {
        errorMessage += "店名を入力して下さい。<br />";
    }
    
    //文字数チェック
    if (objTxtShopNameKanji.value != "" && objTxtShopNameKanji.value.length > 50) {
        errorMessage += "店名は50文字以内で入力して下さい。<br />";
    }
    
    /*************************
     * フリガナ
     *************************/
    var objTxtShopNameKana = document.getElementById("txtShopNameKana");
    
    //必須チェック
    if (objTxtShopNameKana.value == "") {
        errorMessage += "フリガナ（店名）を入力して下さい。<br />";
    }
    
    //カナ文字チェック
    //TODO kanda あとで実装！（優先度＝低。必要なければ放置）
    
    //文字数チェック
    if (objTxtShopNameKana.value != "" && objTxtShopNameKana.value.length > 100) {
        errorMessage += "フリガナ（店名）は100文字以内で入力して下さい。<br />";
    }
    
    /*************************
     * 住所
     *************************/
    var objTxtAddress = document.getElementById("txtAddress");
    
    //文字数チェック
    if (objTxtAddress.value != "" && objTxtAddress.value.length > 100) {
        errorMessage += "住所は100文字以内で入力して下さい。<br />";
    }

    /*************************
     * ビル名
     *************************/
    var objTxtBuilding = document.getElementById("txtBuilding");
    
    //文字数チェック
    if (objTxtBuilding.value != "" && objTxtBuilding.value.length > 100) {
        errorMessage += "ビル名は100文字以内で入力して下さい。<br />";
    }

    /*************************
     * 電話番号
     *************************/
    var objTxtTel1 = document.getElementById("txtTel1");
    var objTxtTel2 = document.getElementById("txtTel2");
    var objTxtTel3 = document.getElementById("txtTel3");
    var tel = objTxtTel1.value + objTxtTel2.value + objTxtTel3.value;
    
    //必須チェック
    if (tel == "") {
        errorMessage += "電話番号を入力して下さい。<br />";
    }
    
    //例外として、入力値がオール「x」の場合は以下のチェックは行わない。
    if (tel != "xxxxxxxxxxxxxxxx") {
        //全項目 未入力or入力チェック
        if (objTxtTel1.value != "" && objTxtTel1.value != "" && objTxtTel3.value != "") {
            //数値チェック
            if (tel.match(/[^0-9\s]+/)) {
                errorMessage += "電話番号は半角数字で入力して下さい。<br />";
            }
        } else if (objTxtTel1.value == "" && objTxtTel2.value == "" && objTxtTel3.value == "") {
            //empty（全項目未入力の場合は何もしない）
        } else {
            errorMessage += "電話番号は市外局番から全て入力して下さい。<br />";
        }
    }

    /*************************
     * 営業時間【1】
     *************************/
    var objTxtTimeStart1A = document.getElementById("txtTimeStart1A");
    var objTxtTimeEnd1A = document.getElementById("txtTimeEnd1A");
    var objTxtTimeStart1B = document.getElementById("txtTimeStart1B");
    var objTxtTimeEnd1B = document.getElementById("txtTimeEnd1B");

    //数値チェック（入力済みの場合のみ）
    var numFlg = true;
    if ((objTxtTimeStart1A.value != "" && objTxtTimeStart1A.value.match(/[^0-9\s]+/)) ||
        (objTxtTimeEnd1A.value != "" && objTxtTimeEnd1A.value.match(/[^0-9\s]+/)) ||
        (objTxtTimeStart1B.value != "" && objTxtTimeStart1B.value.match(/[^0-9\s]+/)) ||
        (objTxtTimeEnd1B.value != "" && objTxtTimeEnd1B.value.match(/[^0-9\s]+/))) {
        errorMessage += "営業時間【1】は半角数字で入力して下さい。<br />";
        numFlg = false;
    }

    //時間チェック(0000～2700)
    var hh1SA = objTxtTimeStart1A.value.substring(0,2);
    var mm1SA = objTxtTimeStart1A.value.substring(2,4);

    var hh1EA = objTxtTimeEnd1A.value.substring(0,2);
    var mm1EA = objTxtTimeEnd1A.value.substring(2,4);

    var hh1SB = objTxtTimeStart1B.value.substring(0,2);
    var mm1SB = objTxtTimeStart1B.value.substring(2,4);

    var hh1EB = objTxtTimeEnd1B.value.substring(0,2);
    var mm1EB = objTxtTimeEnd1B.value.substring(2,4);

    if (((hh1SA < 0 || hh1SA > 27) || (mm1SA < 0 || mm1SA > 59)) ||
        ((hh1EA < 0 || hh1EA > 27) || (mm1EA < 0 || mm1EA > 59)) ||
        ((hh1SB < 0 || hh1SB > 27) || (mm1SB < 0 || mm1SB > 59)) ||
        ((hh1EB < 0 || hh1EB > 27) || (mm1EB < 0 || mm1EB > 59)) ||
        (objTxtTimeStart1A.value > 2700) || (objTxtTimeEnd1A.value > 2700) ||
        (objTxtTimeStart1B.value > 2700) || (objTxtTimeEnd1B.value > 2700)) {
        errorMessage += "営業時間【1】は0000～2700の範囲で入力して下さい。<br />";
    }

    //開始と終了時間の逆転チェック
    if ((numFlg) && (eval(objTxtTimeStart1A.value) > eval(objTxtTimeEnd1A.value))) {
        errorMessage += "営業時間【1】の開始と終了時間が逆転しています。<br />";
    }
    if ((numFlg) && (eval(objTxtTimeStart1B.value) > eval(objTxtTimeEnd1B.value))) {
        errorMessage += "営業時間【1】の開始と終了時間が逆転しています。<br />";
    }
    
    /*************************
     * 営業時間【2】
     *************************/
    var objTxtTimeStart2A = document.getElementById("txtTimeStart2A");
    var objTxtTimeEnd2A = document.getElementById("txtTimeEnd2A");
    var objTxtTimeStart2B = document.getElementById("txtTimeStart2B");
    var objTxtTimeEnd2B = document.getElementById("txtTimeEnd2B");
    
    //数値チェック（入力済みの場合のみ）
    var numFlg = true;
    if ((objTxtTimeStart2A.value != "" && objTxtTimeStart2A.value.match(/[^0-9\s]+/)) ||
        (objTxtTimeEnd2A.value != "" && objTxtTimeEnd2A.value.match(/[^0-9\s]+/)) ||
        (objTxtTimeStart2B.value != "" && objTxtTimeStart2B.value.match(/[^0-9\s]+/)) ||
        (objTxtTimeEnd2B.value != "" && objTxtTimeEnd2B.value.match(/[^0-9\s]+/))) {
        errorMessage += "営業時間【2】は半角数字で入力して下さい。<br />";
        numFlg = false;
    }

    //時間チェック(0000～2700)
    var hh2SA = objTxtTimeStart2A.value.substring(0,2);
    var mm2SA = objTxtTimeStart2A.value.substring(2,4);

    var hh2EA = objTxtTimeEnd2A.value.substring(0,2);
    var mm2EA = objTxtTimeEnd2A.value.substring(2,4);

    var hh2SB = objTxtTimeStart2B.value.substring(0,2);
    var mm2SB = objTxtTimeStart2B.value.substring(2,4);

    var hh2EB = objTxtTimeEnd2B.value.substring(0,2);
    var mm2EB = objTxtTimeEnd2B.value.substring(2,4);

    if (((hh2SA < 0 || hh2SA > 27) || (mm2SA < 0 || mm2SA > 59)) ||
        ((hh2EA < 0 || hh2EA > 27) || (mm2EA < 0 || mm2EA > 59)) ||
        ((hh2SB < 0 || hh2SB > 27) || (mm2SB < 0 || mm2SB > 59)) ||
        ((hh2EB < 0 || hh2EB > 27) || (mm2EB < 0 || mm2EB > 59)) ||
        (objTxtTimeStart2A.value > 2700) || (objTxtTimeEnd2A.value > 2700) ||
        (objTxtTimeStart2B.value > 2700) || (objTxtTimeEnd2B.value > 2700)) {
        errorMessage += "営業時間【2】は0000～2700の範囲で入力して下さい。<br />";
    }

    //開始と終了時間の逆転チェック
    if ((numFlg) && (eval(objTxtTimeStart2A.value) > eval(objTxtTimeEnd2A.value))) {
        errorMessage += "営業時間【2】の開始と終了時間が逆転しています。<br />";
    }
    if ((numFlg) && (eval(objTxtTimeStart2B.value) > eval(objTxtTimeEnd2B.value))) {
        errorMessage += "営業時間【2】の開始と終了時間が逆転しています。<br />";
    }    
    
    /*************************
     * 定休日
     *************************/
    var objTxtHolidayEtc = document.getElementById("txtHolidayEtc");
    
    //文字数チェック
    if (objTxtHolidayEtc.value != "" && objTxtHolidayEtc.value.length > 100) {
        errorMessage += "定休日 その他は100文字以内で入力して下さい。<br />";
    }
    
    /*************************
     * 座席数
     *************************/
    var objTxtSeat = document.getElementById("txtSeat");
    
    //数値チェック
    if (objTxtSeat.value != "" && objTxtSeat.value.match(/[^0-9\s]+/)) {
        errorMessage += "座席数は半角数字で入力して下さい。<br />";
    }
    
    /*************************
     * 駐車場
     *************************/
    var objTxtParkingNum = document.getElementById("txtParkingNum");
    
    //数値チェック
    if (objTxtParkingNum.value != "" && objTxtParkingNum.value.match(/[^0-9\s]+/)) {
        errorMessage += "駐車場は半角数字で入力して下さい。<br />";
    }
    
    /*************************
     * Webサイト
     *************************/
    var objTxtUrl = document.getElementById("txtUrl");
    
    //URLチェック
    if ((objTxtUrl.value != "") && (!objTxtUrl.value.match(/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/))) {
        errorMessage += "URLを正しく入力して下さい。<br />";
    }
    /* 簡易チェック用：if ((objTxtUrl.value != "") && (!objTxtUrl.value.match(/^(http|ftp):\/\/.+$/))) { */
    
    //文字数チェック
    if (objTxtUrl.value != "" && objTxtUrl.value.length > 200) {
        errorMessage += "URLは200文字以内で入力して下さい。<br />";
    }
    
    /*************************
     * お店の目印
     *************************/
    var objTxtSignOfShop = document.getElementById("txtSignOfShop");
    
    //文字数チェック
    if (objTxtSignOfShop.value != "" && objTxtSignOfShop.value.length > 100) {
        errorMessage += "お店の目印は100文字以内で入力して下さい。<br />";
    }
    
    /*************************
     * その他備考
     *************************/
    var objTxaEtcBiko = document.getElementById("txaEtcBiko");
    
    //文字数チェック
    if (objTxaEtcBiko.value != "" && objTxaEtcBiko.value.length > 1000) {
        errorMessage += "その他備考は1000文字以内で入力して下さい。<br />";
    }
    
    return errorMessage;
}


/***************************************
 * グルメ店登録確認画面
 * 登録確認処理
 ***************************************/
function entryGourmetShop() {
    if (!confirm("本当に登録してもよろしいですか？\n　[OK] 登録する。\n　[ｷｬﾝｾﾙ] もう一度見直す。")) {
        return false;
    }
    
    var objBtnConfirm = document.getElementById("btnConfirm");
    objBtnConfirm.disabled = true;
    
    document.frmGourmetConfirm.action = "keisai_complete.php";
    document.frmGourmetConfirm.submit();
}


/***************************************
 * 詳細画面への遷移（プレミアム店）
 * shopId   - 表示するお店ID
 * path     - 詳細画面へのパス（未指定の場合は「../gourmet/detailp.php」）
 * objForm  - hdnShopIdオブジェクトを持っているフォーム名
 * position - 詳細画面表示時の移動先（クチコミ一覧など）
 ***************************************/
function openPremiumGourmetShopDetail(shopId, path, objForm, position) {
    if (path == "") {
        path = "../gourmet/detailp.php";
    }
    objForm.hdnShopId.value = shopId;
    objForm.action = path + "?hdnShopId=" + shopId + position;
    objForm.submit();
}


/***************************************
 * 詳細画面への遷移（プレミアム店）
 * shopId   - 表示するお店ID
 * path     - 詳細画面へのパス（未指定の場合は「../gourmet/detailp.php」）
 * objForm  - hdnShopIdオブジェクトを持っているフォーム名
 * position - 詳細画面表示時の移動先（クチコミ一覧など）
 ***************************************/
function openPremiumGourmetShopDetailForSSL(shopId, path, objForm, position, httpHost) {
    if (httpHost == "localhost") {
        if (path == "") {
            path = "../gourmet/detailp.php";
        }
    } else {
        path = "http://namara-e.biz/gourmet/detailp.php"; //TODO kanda 本番環境ではrenewを削除！
    }
    objForm.hdnShopId.value = shopId;
    objForm.action = path + "?hdnShopId=" + shopId + position;
    objForm.submit();
}


/***************************************
 * 詳細画面への遷移（一般店）
 * shopId   - 表示するお店ID
 * path     - 詳細画面へのパス（未指定の場合は「../gourmet/detailn.php」）
 * objForm  - hdnShopIdオブジェクトを持っているフォーム名
 * position - 詳細画面表示時の移動先（クチコミ一覧など）
 ***************************************/
function openGourmetShopDetail(shopId, path, objForm, position) {
    if (path == "") {
        path = "../gourmet/detailn.php";
    }
    objForm.hdnShopId.value = shopId;
    objForm.action = path + "?hdnShopId=" + shopId + position;
    objForm.submit();
}


/***************************************
 * 詳細画面への遷移（一般店）
 * shopId   - 表示するお店ID
 * path     - 詳細画面へのパス（未指定の場合は「../gourmet/detailn.php」）
 * objForm  - hdnShopIdオブジェクトを持っているフォーム名
 * position - 詳細画面表示時の移動先（クチコミ一覧など）
 ***************************************/
function openGourmetShopDetailForSSL(shopId, path, objForm, position, httpHost) {
    if (httpHost == "localhost") {
        if (path == "") {
            path = "../gourmet/detailn.php";
        }
    } else {
        path = "http://namara-e.biz/gourmet/detailn.php"; //TODO kanda 本番環境ではrenewを削除！
    }
    objForm.hdnShopId.value = shopId;
    objForm.action = path + "?hdnShopId=" + shopId + position;
    objForm.submit();
}


/***************************************
 * グルメ店 検索結果画面
 * 検索結果画面のページ切替処理
 ***************************************/
function changePageKuchikomiList(page) {
    document.frmKuchikomiList.hdnNextPage.value = page;
    document.frmKuchikomiList.submit();
}


/***************************************
 * グルメ クチコミ投稿画面
 * 入力情報のチェック処理
 * 戻り値：true:チェックOK、false:チェックNG
 ***************************************/
function checkGourmetKuchikomiInput() {
    
    var errorMessage = "";
    var objError = document.getElementById("idError");
    
    /*************************
     * ニックネーム
     *************************/
    var objTxtNickName = document.getElementById("txtNickName");
    
    //桁数チェック
    if ((objTxtNickName != null) && (objTxtNickName.value != "") && (objTxtNickName.value.length > 20)) {
        errorMessage += "ニックネームは20桁以下で入力して下さい。<br />";
    }
     
    /*************************
     * おすすめ
     *************************/
    //チェック数は最大3個
    //alert(document.frmGourmetKuchikomiInput.elements['chkOsusume[]'].length);
    var count = 0;
    for (var i=0; i<document.frmGourmetKuchikomiInput.elements['chkOsusume[]'].length; i++){
        //alert(document.frmGourmetKuchikomiInput.elements['chkOsusume[]'][i].checked);
        if (document.frmGourmetKuchikomiInput.elements['chkOsusume[]'][i].checked) {
            count ++;
        }
    }
    if (count > 3) {
        errorMessage = "おすすめは、最大3個までチェックして下さい。<br />";
    }
    
    
    /*************************
     * クチコミ投稿
     *************************/
    var objTxaComment = document.getElementById("txaComment");
    
    //入力必須
    if (objTxaComment.value == "") {
        errorMessage += "クチコミ投稿を入力して下さい。<br />";
    }
    
    //クチコミ投稿（30文字以上の入力）
    if ((objTxaComment.value != "") && ((objTxaComment.value.length < 30) || (objTxaComment.value.length > 300))) {
        errorMessage += "クチコミ投稿は30文字以上、300文字以下で入力して下さい。<br />";
    }
    
    
    //未ログインの場合は、ニックネームをhiddenに設定
    var objTxtNickName = document.getElementById("txtNickName");
    if (objTxtNickName != null) {
        document.frmGourmetKuchikomiInput.hdnNickName.value = objTxtNickName.value;
    }
    
    
    if (errorMessage != "") {
        objError.innerHTML = "<div class='error'>" + errorMessage + "</div>";
        objError.style.display = "inline";
        scrollTo(0,0);
        return false;
    }
    
    /*************************
     * 利用規約の同意確認
     *************************/
    var objChkRule = document.frmGourmetKuchikomiInput.chkRule
    if (objChkRule != null && !objChkRule.checked) {
        alert("利用規約に同意頂けない場合は、クチコミ投稿することが出来ません。\n同意頂ける場合は、「利用規約に同意する」をチェックして下さい。");
        return false;
    }
    
    document.frmGourmetKuchikomiInput.action = "opinion_prev.php";
    document.frmGourmetKuchikomiInput.submit();
}


/***************************************
 * グルメ店詳細画面（一般店、プレミアム店共通）
 * クチコミ投稿画面表示処理
 ***************************************/
function openGourmetKuchikomi(shopId) {
    document.frmKuchikomiList.action = "opinion.php?sid=" + shopId;
    document.frmKuchikomiList.submit();
}


/***************************************
 * クチコミ投稿確認画面
 * クチコミ投稿登録処理
 ***************************************/
function entryGourmetKuchikomi() {
    if (!confirm("本当に投稿してもよろしいですか？\n　[OK] 投稿する。\n　[ｷｬﾝｾﾙ] もう一度見直す。")) {
        return false;
    }
    
    var objBtnConfirm = document.getElementById("btnConfirm");
    objBtnConfirm.disabled = true;
    
    document.frmGourmetKuchikomiConfirm.action = "opinion_complete.php";
    document.frmGourmetKuchikomiConfirm.submit();
}


/***************************************
 * たべるトップ画面への遷移
 * path    - たべるトップ画面へのパス（未指定の場合は「../gourmet/index.php」）
 * objForm - フォーム名
 ***************************************/
function openGourmetTop(path, objForm) {
    if (path == "") {
        path = "../gourmet/index.php";
    }
    objForm.action = path;
    objForm.submit();
}
