/*
 * search.js
 * 画面上での文字化け回避のため、このファイルはEUC-JP(JSPのcharset)で保存してください。
 */


// 検索フォームのaction属性値を設定
//  1. r_xxx/s_xxx/ を付加する(沿線・最寄駅で検索する場合)
//  2. p_xxx/c_xxx/ を付加する(所在地で検索する場合)
function setAction(form) {
    action = form.action;
    if(action.match(/shueki/)){
        // 主要駅検索の場合は何もしない
        return true;
    }
    rllCd = form.rllCd.value;
    rilCd = form.rilCd.value;
    prfCd = form.prfCd.value;
    ctyCd = form.ctyCd.value;
    if(rllCd != '') {
        if(/r_[0-9AB]\d+/.test(action)){
            action = action.replace(/r_[0-9AB]\d+/, "r_" + rllCd);
        } else {
            action += "r_" + rllCd + "/";
        }
        if(rilCd != '') {
            if(/s_\d+/.test(action)){
                action = action.replace(/s_\d+/, "s_" + rilCd);
            } else {
                // rllCdの後に挿入する
                action =  action.replace(/(r_[0-9AB]\d+)/, "r_" + rllCd + "/s_" + rilCd);
            }
        }
    } else if(prfCd != '') {
        if(/p_[0-9AB]\d+/.test(action)){
            action = action.replace(/p_[0-9AB]\d+/, "p_" + prfCd);
        } else {
            action += "p_" + prfCd + "/";
        }
        if(ctyCd != '') {
            if(/c_\d+/.test(action)){
                action = action.replace(/c_\d+/, "c_" + ctyCd);
            } else {
                // prfCdの後に挿入する
                action =  action.replace(/(p_[0-9AB]\d+)/, "p_" + prfCd + "/c_" + ctyCd);
            }
        }
    } else {
        return false;
    }
    form.action = action;

    changePrcb(); // 賃料下限
    changePrct(); // 賃料上限

    return true;
}

/** 置換or追加によるURL書き換え */
function setUrlParam(act, prefix, val) {
    pattern = new RegExp(prefix + "\\d+" + "\/");
    if(act.match(pattern)){
        if(val == ''){
            act = act.replace(pattern, "");
        } else {
            act = act.replace(pattern, prefix + val + "/");
        }
    } else {
        if(val != ''){
            act += prefix + val + "/";
        }
    }
    return act;
}

/** ページ番号のセット、URLに反映 */
function setPage(form, page){
    if(form.action.match(/page_\d+/)){
        form.action = form.action.replace(/page_\d+/, "page_" + page);
    } else {
        form.action += "page_" + page + "/";
    }
}

/** ページの表示件数のセット、URLに反映 */
function setDispNumber(form, number){
    form.n.value = number;
    if(form.action.match(/n_\d+/)){
        form.action = form.action.replace(/n_\d+/, "n_" + number);
    } else {
        form.action += "n_" + number + "/";
    }
}

// 件数切り替え
function selectBox(number){
    if(!setAction(document.search)) { // 検索フォームのactionを設定
        return false;
    }
    setDispNumber(document.search, number);
    setPage(document.search, 1);
    document.search.submit();
}

// こだわり条件の追加
function addKodawari(kodawari) {
    act = document.search.action;
    pattern = new RegExp(kodawari + "\/");
    if(! act.match(pattern)){
        act = act + kodawari + "/";
        act = setUrlParam(act, 'page_', '1');
        document.search.action = act;
    }
    document.search.submit();
}
// こだわり条件の削除
function removeKodawari(kodawari) {
    act = document.search.action;
    pattern = new RegExp(kodawari + "\/");
    if(act.match(pattern)){
        act = act.replace(kodawari + "/", "");
        act = setUrlParam(act, 'page_', '1');
        document.search.action = act;
    }
    document.search.submit();
}


// 沿線プルダウン時のロード
function rllCdSelectLoad(append, type){
    if(document.search.elements['rllCd'].value != '' &&
        document.search.elements['rllCd'].value != '-'){
        document.search.tp[0].checked = true;
        // 所在地プルダウンを「都道府県を選択してください」にする
        document.search.prfCd.selectedIndex = 0;
        if(append != '1') {
            // トップページで選択された場合、処理は他でしているのでURL書き換えは無し。
        }
        else {
            r_rllCd = "r_" + document.search.rllCd.value;
            // トップ以外の場合、rllCd or prfCd はURLに存在する。
            if(document.search.action.match(/p_[0-9AB]\d+/)){
                document.search.action = document.search.action.replace(/p_[0-9AB]\d+(\/c_\d+)?/, r_rllCd);
                // モードが変わったので初期化
                document.search.prfCd.options[0].selected = true;
                document.search.prfCd.selectedIndex = 0;
                document.search.ctyCd.options[0].selected = true;
                document.search.ctyCd.selectedIndex = 0;
                document.search.ctyCd.disabled = true;
            } else {
                // 置換 or 追加
                if(document.search.action.match(/r_[0-9AB]\d+/)){
                    document.search.action = document.search.action.replace(/r_[0-9AB]\d+/, r_rllCd);
                } else {
                    document.search.action += r_rllCd + "/";
                }
            }
            if(type == 'rll') {
                document.search.rilCd.value = "";
                document.search.action = document.search.action.replace(/s_\d+\//, "");
            } else {
                if(document.search.rilCd.value == ""){
                    s_rilCd = "";
                } else {
                    s_rilCd = "s_" + document.search.rilCd.value + "/";
                }
                if(document.search.action.match(/s_\d+/)){
                    // すでにURLに駅コードがあるなら置換
                    document.search.action = document.search.action.replace(/s_\d+\//, s_rilCd);
                } else {
                    // 駅コードが無いなら挿入
                    document.search.action = document.search.action.replace(/r_[0-9AB]\d+\//, r_rllCd + "/" + s_rilCd);
                }
            }
        }
        if(document.search.p){
            document.search.p.value = 1;
        }
        document.search.submit();
    }else{
        document.search.rilCd.options[0].selected = true;
        document.search.rilCd.selectedIndex = 0;
        document.search.rilCd.disabled = true;
    }
}

// 都道府県プルダウン時のロード
function prfCdSelectLoad(append, type){
    if(document.search.elements['prfCd'].value != '' &&
        document.search.elements['prfCd'].value != '-'){
        document.search.tp[1].checked = true;
        // 沿線プルダウンを「沿線を選択してください」にする
        document.search.rllCd.selectedIndex = 0;
        if(append != '1') {
            // トップの場合
        }
        else {
            p_prfCd = "p_" + document.search.prfCd.value
            if(document.search.action.match(/r_[0-9AB]\d+/)){
                document.search.action = document.search.action.replace(/r_[0-9AB]\d+(\/s_\d+)?/, p_prfCd);
                // モードが変わったので初期化
                document.search.rllCd.options[0].selected = true;
                document.search.rllCd.selectedIndex = 0;
                document.search.rilCd.options[0].selected = true;
                document.search.rilCd.selectedIndex = 0;
                document.search.rilCd.disabled = true;
            } else {
                // 置換 or 追加
                if(document.search.action.match(/p_[0-9AB]\d+/)){
                    document.search.action = document.search.action.replace(/p_[0-9AB]\d+/, p_prfCd);
                } else {
                    document.search.action += p_prfCd + "/";
                }
            }
            if(type == 'prf') {
                document.search.ctyCd.value = "";
                document.search.action = document.search.action.replace(/c_\d+\//, "");
            } else {
                if(document.search.ctyCd.value == ""){
                    c_ctyCd = "";
                } else {
                    c_ctyCd = "c_" + document.search.ctyCd.value + "/";
                }
                if(document.search.action.match(/c_\d+/)){
                    // すでにURLに市区町村コードがあるなら置換
                    document.search.action = document.search.action.replace(/c_\d+\//, c_ctyCd);
                } else {
                    // 市区町村コードが無いなら都道府県の後に挿入
                    document.search.action = document.search.action.replace(/p_[0-9AB]\d+\//, p_prfCd + "/" + c_ctyCd);
                }
            }
        }
        if(document.search.p){
            document.search.p.value = 1;
        }
        document.search.submit();
    }else{
        document.search.ctyCd.options[0].selected = true;
        document.search.ctyCd.selectedIndex = 0;
        document.search.ctyCd.disabled = true;
    }
}

// 地域プルダウン時のロード
function localCdSelectLoad(){
    if(document.search.elements['localCd'].value != ''){
        // 沿線プルダウンを「沿線を選択してください」にする
        document.search.rllCd.selectedIndex = 0;
        // 最寄駅プルダウンを無効化
        document.search.rilCd.options[0].selected = true;
        document.search.rilCd.selectedIndex = 0;
        document.search.rilCd.disabled = true;
        // 所在地プルダウンを「都道府県を選択してください」にする
        document.search.prfCd.selectedIndex = 0;
        // 市区町村プルダウンを無効化
        document.search.ctyCd.options[0].selected = true;
        document.search.ctyCd.selectedIndex = 0;
        document.search.ctyCd.disabled = true;

        document.search.submit();
    }
}

// 検索
function goSearch(){
    document.search.submit();
}

// 別の検索
function otherSearch(url){
    document.search.action=url;
    document.search.submit();
}

/*
 * 売買 検索ボタン押下時のチェック処理
 * 沿線または都道府県のプルダウンが選択されていない場合alert
 */
function isValidBaibaiParameter() {

    // 沿線・最寄駅のラジオボタンにチェックがあった場合
    if (document.forms["search"].tp[0].checked) {
        prmrll = document.forms["search"].rllCd[document.forms["search"].rllCd.selectedIndex].value;
        // 沿線プルダウンが選択されていなかった場合、エラー
        if (prmrll == "null" || prmrll == "" || prmrll == "-") {
            alert('沿線を選択してください。');
            return false;
        }
    // 所在地のラジオボタンにチェックがあった場合
    } else if (document.forms["search"].tp[1].checked) {
        prmprf = document.forms["search"].prfCd[document.forms["search"].prfCd.selectedIndex].value;
        // 都道府県プルダウンが選択されていなかった場合、エラー
        if (prmprf == "null" || prmprf == "") {
            alert('都道府県を選択してください。');
            return false;
        }
    }
    // エラーが無ければOK
    return true;
}

/*
 * 賃貸 検索ボタン押下時のチェック処理
 * 沿線・最寄駅、または都道府県・市区町村のプルダウンがセットで選択されていない場合alert
 */
function isValidChintaiParameter() {

    // 沿線・最寄駅のラジオボタンの無い場合(主要駅検索用)
    if (document.forms["search"].tp[0] == null) {

        prmril = document.forms["search"].rilCd[document.forms["search"].rilCd.selectedIndex].value;
        // 最寄駅プルダウンが選択されていなかった場合
        if (prmril=="null" || prmril == "") {
            // 当面は現行と同じ動作とするため true を返す。
            // alert('最寄駅を選択してください。');
            return true;
        }

    // 沿線・最寄駅のラジオボタンにチェックがあった場合
    } else if (document.forms["search"].tp[0].checked) {

        prmrll = document.forms["search"].rllCd[document.forms["search"].rllCd.selectedIndex].value;
        prmril = document.forms["search"].rilCd[document.forms["search"].rilCd.selectedIndex].value;

        // 沿線プルダウンが選択されていなかった場合、エラー
        if (prmrll == "null" || prmrll == "" || prmrll == "-") {
            alert('沿線・最寄駅を選択してください。');
            return false;
        }

        // 最寄駅プルダウンが選択されていなかった場合、エラー
        if (prmril=="null" || prmril == "") {
            alert('最寄駅を選択してください。');
            return false;
        }

    // 所在地のラジオボタンにチェックがあった場合
    } else if (document.forms["search"].tp[1].checked) {

        prmprf = document.forms["search"].prfCd[document.forms["search"].prfCd.selectedIndex].value;
        prmcty = document.forms["search"].ctyCd[document.forms["search"].ctyCd.selectedIndex].value;

        // 都道府県プルダウンが選択されていなかった場合、エラー
        if (prmprf == "null" || prmprf == "") {
            alert('都道府県・市区町村を選択してください。');
            return false;
        }

        // 市区町村プルダウンが選択されていなかった場合、エラー
        if (prmcty == "null" || prmcty == "") {
            alert('市区町村を選択してください。');
            return false;
        }

    }
    // エラーが無ければOK
    return true;
}


/** 検索URLの路線コードをプルダウン選択されたものに変更する */
function changeRosen() {
    action = document.search.action;
    rllCd = document.search.rllCd.options[document.search.rllCd.selectedIndex].value;
    document.search.action = action.replace(/r_[0-9AB]\d+/, "r_" + rllCd);
}

/** 検索URLの駅コードをプルダウン選択されたものに変更する */
function changeStation() {
    action = document.search.action;
    rilCd = document.search.rilCd.options[document.search.rilCd.selectedIndex].value;
    document.search.action = action.replace(/s_\d+/, "s_" + rilCd);
}

/** 検索URLの都道府県コードをプルダウン選択されたものに変更する */
function changePref() {
    action = document.search.action;
    prfCd = document.search.prfCd.options[document.search.prfCd.selectedIndex].value;
    document.search.action = action.replace(/p_[0-9AB]\d+/, "p_" + prfCd);
}

/** 検索URLの市区町村コードをプルダウン選択されたものに変更する */
function changeCity() {
    action = document.search.action;
    ctyCd = document.search.ctyCd.options[document.search.ctyCd.selectedIndex].value;
    document.search.action = action.replace(/c_\d+/, "c_" + ctyCd);
}

/** 検索URLの賃貸物件種別コードをチェックされたものに変更する */
function changeBld() {
    action = document.search.action;
    bld = 0;
    if (! document.search.bdgTypeBox[0].checked
        && ! document.search.bdgTypeBox[1].checked
        && ! document.search.bdgTypeBox[2].checked) {
        // 何もチェックされてなければ /bld_?/ を消す
        if (/bld_\d+/.test(action)) {
            document.search.action = action.replace(/bld_\d+\//, "");
        }
    } else {
        if (document.search.bdgTypeBox[0].checked) {
            bld = bld + 1;
        }
        if (document.search.bdgTypeBox[1].checked) {
            bld = bld + 2;
        }
        if (document.search.bdgTypeBox[2].checked) {
            bld = bld + 4;
        }
        // 置換or追加
        if (/bld_\d+/.test(action)) {
            document.search.action = action.replace(/bld_\d+/, "bld_" + bld);
        } else {
            document.search.action = action + "bld_" + bld + "/";
        }
    }
}

/** 検索URLの賃料下限コードをプルダウン選択されたものに変更する */
function changePrcb() {
    action = document.search.action;
    prcb = document.search.prcb.options[document.search.prcb.selectedIndex].value;
    if (prcb == '0') {
        // 下限なしなら /prcb_xxxx/ を消す
        if (/prcb_\d+/.test(action)) {
            document.search.action = action.replace(/prcb_\d+\//, "");
        }
    } else {
        // 置換or追加
        if (/prcb_\d+/.test(action)) {
            document.search.action = action.replace(/prcb_\d+/, "prcb_" + prcb);
        } else {
            document.search.action = action + "prcb_" + prcb + "/";
        }
    }
}

/** 検索URLの賃料上限コードをプルダウン選択されたものに変更する */
function changePrct() {
    action = document.search.action;
    prct = document.search.prct.options[document.search.prct.selectedIndex].value;
    if (prct == '9999999') {
        // 上限なしなら /prct_xxxx/ を消す
        if (/prct_\d+/.test(action)) {
            document.search.action = action.replace(/prct_\d+\//, "");
        }
    } else {
        // 置換or追加
        if (/prct_\d+/.test(action)) {
            document.search.action = action.replace(/prct_\d+/, "prct_" + prct);
        } else {
            document.search.action = action + "prct_" + prct + "/";
        }
    }
}

/**
 * 検索URLの賃貸物件種別コードをチェックされたものに変更する
 * 変更があった場合 true 無い場合 false を返す
 */
function changeLyo() {
    action = document.search.action;
    if (! document.search.layout[0].checked
        && ! document.search.layout[1].checked
        && ! document.search.layout[2].checked
        && ! document.search.layout[3].checked
        && ! document.search.layout[4].checked) {
        // 何もチェックされてなければ /lyo_?/ を消す
        if (action.match(/lyo_\d+/)) {
            document.search.action = action.replace(/lyo_\d+\//, "");
        } else {
            // 変化ナシ
            return false;
        }
    } else {
        lyo = '';
        // チェックされている桁を1にする
        if(document.search.layout[4].checked){lyo += '1';} else {lyo += '0';} // 0: 1R
        if(document.search.layout[0].checked){lyo += '11';} else {lyo += '00';} // 1: 1K/DK/LDK
        if(document.search.layout[1].checked){lyo += '11';} else {lyo += '00';} // 3: 2K/DK/LDK
        if(document.search.layout[2].checked){lyo += '11';} else {lyo += '00';} // 5: 3K/DK/LDK
        if(document.search.layout[3].checked){lyo += '1';} else {lyo += '0';} // 7: 4K
        if(action.match("lyo_" + lyo)){
            // 変化ナシ
            return false;
        } else {
            // 置換or追加
            if (/lyo_\d+/.test(action)) {
                document.search.action = action.replace(/lyo_\d+/, "lyo_" + lyo);
            } else {
                document.search.action = action + "lyo_" + lyo + "/";
            }
        }
    }
    return true;
}

/** 賃貸検索結果の間取りプルダウン */
function changeLyoPd() {
    value = document.search.lyoPd.options[document.search.lyoPd.selectedIndex].value;
    document.search.action = setUrlParam(document.search.action, "lyoPd_", value);
}
	
/** 賃貸検索結果の敷地面積プルダウン */
function changeSpace() {
    value = document.search.space.options[document.search.space.selectedIndex].value;
    document.search.action = setUrlParam(document.search.action, "space_", value);
}
	
/** 賃貸検索結果の種別プルダウン */
function changeBldgPd() {
    value = document.search.bldgPd.options[document.search.bldgPd.selectedIndex].value;
    document.search.action = setUrlParam(document.search.action, "bldgPd_", value);
    document.forms["search"].changeBdgTypeFlg.value = "true";
}

/** 検索URLの広さ(from)コードをプルダウン選択されたものに変更する */
function changeSpcb() {
    action = document.search.action;
    spcb = document.search.spcb.options[document.search.spcb.selectedIndex].value;
    if (spcb == '0') {
        // 下限なしなら /spcb_xxxx/ を消す
        if (/spcb_\d+/.test(action)) {
            document.search.action = action.replace(/spcb_\d+\//, "");
        }
    } else {
        // 置換or追加
        if (/spcb_\d+/.test(action)) {
            document.search.action = action.replace(/spcb_\d+/, "spcb_" + spcb);
        } else {
            document.search.action = action + "spcb_" + spcb + "/";
        }
    }
}

/** 検索URLの広さ(to)コードをプルダウン選択されたものに変更する */
function changeSpct() {
    action = document.search.action;
    spct = document.search.spct.options[document.search.spct.selectedIndex].value;
    if (spct == '9999999') {
        // 上限なしなら /prct_xxxx/ を消す
        if (/spct_\d+/.test(action)) {
            document.search.action = action.replace(/spct_\d+\//, "");
        }
    } else {
        // 置換or追加
        if (/spct_\d+/.test(action)) {
            document.search.action = action.replace(/spct_\d+/, "spct_" + spct);
        } else {
            document.search.action = action + "spct_" + spct + "/";
        }
    }
}

/** 画像サイズを調整 */
function smallimg (img, w, h) {
  if (img.height > img.width) {
    if (img.height > h) {
      org_w = img.width;
      org_h = img.height;
      scale = org_w / org_h;
      img.width = scale * h;
      img.height = h;
    }
  } else {
    if (img.width > w) {
      org_w = img.width;
      org_h = img.height;
      scale = org_h / org_w;
      img.width = w;
      img.height = scale * w;
    }
  }
}

/** 資料請求の実行 */
function submitToHomesShiryouSeikyu(isShinchikuMansyon, ct_value, redirect_url) {
    bukken_count = 0;
    bukken_ids = document.search.homes_bukken_id;
    if (bukken_ids.length == null) {
        if (bukken_ids.checked) {
            bukken_count++;
            redirect_url = createRedirectUrl(bukken_ids, redirect_url, isShinchikuMansyon);
        }
    }
    for(i=0; i<bukken_ids.length; i++) {
        if (bukken_ids[i].checked) {
            bukken_count++;
            redirect_url = createRedirectUrl(bukken_ids[i], redirect_url, isShinchikuMansyon);;
            if (bukken_count > 30) {
                break;
            }
        }
    }
    if (bukken_count == 0) {
        alert("物件を選択してください");
    } else if (bukken_count > 30) { 
        if (isShinchikuMansyon) {
            alert("資料請求できるのは1度に30件までです");
        } else {
            alert("お問合せできるのは1度に30件までです");
        }
    } else if (redirect_url.length > 1024) { 
        if (isShinchikuMansyon) {
            alert("資料請求の選択を少なくしてください");
        } else {
            alert("お問合せのの選択を少なくしてください");
        }
    } else {
        action_url = "http://www.infoseek.co.jp/redirect?ak=" + ct_value + "&rd=" + redirect_url;
        document.shiryou_seikyu_submit.action = action_url;
        document.shiryou_seikyu_submit.submit();
    }
}

/** 資料請求用リダイレクトURLの生成 */
function createRedirectUrl(bukken_id, redirect_url, isShinchikuMansyon) {
    if (! bukken_id.checked) return redirect_url;
    if (isShinchikuMansyon) {
        redirect_url = redirect_url + "&bid[]=" + bukken_id.value;
    } else {
        redirect_url = redirect_url + "&i[]=" + bukken_id.value;
    }
    return redirect_url;
}
