/*
guest_areasearch.js
    with prototype.js

    ゲストサイト エリアサーチ
*/
/* -------------------------------------------------------------------------- */

/* -------------------------------------------------------------------------- */
// 初期化
function init_areasearch(){
    
    // 
    var cur_cpref = 'c' + $F('cpref');
    var mycpref = null;
    var mycarea = null;
    for(var i in cpref_list){
        if (cpref_list[i]['cpref'] == cur_cpref){
            mycpref = cur_cpref;
            mycarea = cpref_list[i]['carea'];
            break;
        }
    }
    if (mycpref == null){
        mycpref = 'a03';    // 県未選択
        mycarea = 'a03';    // 関東
    }
    // cpref selected
    selected_cpref(mycpref, 'init');
    
    // show html
    show_imap(mycarea);
    show_area(mycarea);
    show_navi();
    
    // swap image
    swap_imap(mycpref);
    swap_area(mycarea);
    swap_navi(area_info.way);
    
    // event listener 
    listen_imap(mycarea);
    listen_area();
    listen_navi();
    
    // hidden object
    //hidden_myform();
    
    // scroll
    scroll_me();
}

/* -------------------------------------------------------------------------- */
// イベント定義
function listen_imap(mycarea){
    
    // エリアに属する県に対して、イベントを定義
    for(var i in cpref_list){
        if (cpref_list[i]['carea'] == mycarea){
            var obj = $(cpref_list[i]['cpref']);
            obj.onclick = click_cpref;
        }
    }
}
function listen_area(){

    for(var i in carea_list){
        var obj = $(carea_list[i]['carea']);
        obj.onclick = click_carea;
    }
}
function listen_navi(){

    for(var i in navi_list){
        var obj = $(navi_list[i]['way']);
        // <a>だったらイベントリスナー設定
        if (obj.href != undefined)
            obj.onclick = click_navi;
    }
}


/* -------------------------------------------------------------------------- */
// 都道府県 hot spot click
function click_cpref(){

    // cpref(select box) choice
    selected_cpref(this.id);

    // redirect?
    go_search();
    
    // show html
    show_navi();

    // swap image
    swap_imap(this.id);
    swap_navi(area_info.way);

    // event listener 
    listen_navi();
}

// エリア click
function click_carea(){
    
    var mycarea = this.id;
    var mycpref = carea_list[mycarea]['cpref'];

    // cpref(select box) choice
    selected_cpref(mycpref);

    // redirect?
    go_search();

    // show html
    show_imap(mycarea);
    show_area(mycarea);
    show_navi();
    
    // swap image
    var c = null;
    for(var i in cpref_list){
        if (cpref_list[i]['cpref'] == mycpref){
            c = mycpref;
            break;
        }
    }
    if (c == null)
        c = mycarea;

    swap_imap(c);
    swap_area(mycarea);
    swap_navi(area_info.way);
    
    // event listener 
    listen_imap(mycarea);
    listen_area();
    listen_navi();

    // clear right pain.
    clear_searchbox();
    
}
// ナビゲーションリンク click
function click_navi(){
    
    var b = this.id;
    var bname = b.replace(/^l/, '');
    $(bname).click();
}

/* -------------------------------------------------------------------------- */
// 都道府県確定
function selected_cpref(mycpref, mode){

    var c = null;
    for(var i in cpref_list){
        if (cpref_list[i]['cpref'] == mycpref){
            c = mycpref;
            break;
        }
    }

    if ( c!=null ){
        var num = c.replace(/^c/, '');
        var label = cpref_list[c]['label'] + 'の';
    }
    else{
        var num = 'none';
        var label = '';
    }
    
    if (mode == undefined){
        // cpref(select box) choice
        document.forms['form_areasearch'].cpref.value = num;
    }
    // show label
    $('areaprefname-canvas').innerHTML = label;
}

// 検索実行
function go_search(){
    var myway = area_info.way;
    var mycpref = $F('cpref');
    var c = null;
    var n = null;
    
    for(var i in cpref_list){
        if (cpref_list[i]['cpref'] == 'c' + mycpref){
            c = mycpref;
            break;
        }
    }
    for(var i in navi_list){
        if (navi_list[i]['way'] == 'l' + myway){
            n = myway;
            break;
        }
    }
    if (c != null && n != null){
        $(myway).click();
    }
}

/* -------------------------------------------------------------------------- */
// 都道府県 selected画像表示(クラスの切り替え)
function swap_imap(mycpref){
    $('imap').className = 'i' + mycpref;
}


// エリア selected表示(クラスの切り替え)
function swap_area(mycarea){

    for(var i in carea_list){
        var cname = (carea_list[i]['carea'] == mycarea) ? 'selected' : 'normal';
        var obj = $(carea_list[i]['carea']);
        obj.className = areaCss[cname];
    }

}


// ナビリンク selected表示(クラスの切り替え)
function swap_navi(myway){
    for(var i in navi_list){
        var cname = (navi_list[i]['way'] == 'l' + myway) ? 'selected' : 'normal';
        var obj = $(navi_list[i]['way']);
        
        // <a>でなければ normal -> disabled に変更
        if (cname == 'normal' && obj.href == undefined){
            cname = 'disabled';
	}

        obj.className = areaCss[cname];
    }
}


// formオブジェクト 非表示(クラスの切り替え)
function hidden_myform(){
    $('cpref-box').className = 'display-none';
    $('areacommand-box').className = 'display-none';
}


/* -------------------------------------------------------------------------- */
// imap 表示
function show_imap(mycarea){

    // エリアに属する県のddタグを定義
    var ddFormat = new Template(
//        '<dd id="i#{name}"><a id="#{cpref}" href="#areasearch-box"><span> #{label} </span></a></dd>'
        '<dd id="i#{name}"><a id="#{cpref}" href="#' + pagetop_layer + '"><span> #{label} </span></a></dd>'
        );
    var htmlTextdd = '';
    for(var i in cpref_list){
        if (cpref_list[i]['carea'] == mycarea){
            htmlTextdd += ddFormat.evaluate(cpref_list[i]) + '\n';
        }
    }
    
    // タグ生成
    var htmlText = 
        '<dl id="imap" class="' + mycarea + '">\n' + 
        '  <dt><a id="title" href="#areasearch-box" title="都道府県を選択"> 都道府県を選択 </a> </dt>\n' + 
        htmlTextdd +
        '</dl>';
//alert(htmlText);
    $('areapref-canvas').innerHTML = htmlText;
}


// area 表示
function show_area(mycarea){
    var liFormat = new Template(
//        '<li><a id="#{carea}" href="#areasearch-box">#{label}</a></li>'
        '<li><a id="#{carea}" href="#' + pagetop_layer + '">#{label}</a></li>'
        );
    
    var htmlTextli = '';
    for(var i in carea_list){
        htmlTextli += liFormat.evaluate(carea_list[i]) + '\n';
    }

    // タグ生成
    var htmlText = 
        '<ul>\n' + 
        htmlTextli +
        '</ul>';
//alert(htmlText);
    $('areaitems-canvas').innerHTML = htmlText;
    $('areaitems-canvas').className = 'areaitems-box';
}


// navigation link 表示
function show_navi(){
/*
    var liFormat = new Template(
           '<li><a id="#{way}" href=#' + pagetop_layer + '">#{label}</a></li>'
    );
*/

    // 県選択状態によって、a, spanを分ける
    var mycpref = $F('cpref');
    var c = null;
    for(var i in cpref_list){
        if (cpref_list[i]['cpref'] == 'c' + mycpref){
            c = mycpref;
            break;
        }
    }
    if (c != null){
        var liFormat = new Template(
            '<li><a id="#{way}" href=#' + pagetop_layer + '">#{label}</a></li>'
            );
    }
    else{
        var liFormat = new Template(
            '<li><span id="#{way}">#{label}</span></li>'
            );
    }
    
    var htmlTextli = '';
    for(var i in navi_list){
        htmlTextli += liFormat.evaluate(navi_list[i]) + '\n';
    }

    // タグ生成
    var htmlText = 
        '<ul>\n' + 
        htmlTextli +
        '</ul>';

//alert(htmlText);
    $('areanavi-canvas').innerHTML = htmlText;
    $('areanavi-canvas').className = 'areanavi-box';

}


function clear_searchbox(){
    var obj = $('searchitems-canvas');
    if (obj != undefined)
           obj.className = 'display-none';
}

// 画面遷移時の縦表示位置の動きを抑制する
function scroll_me(){
    // form-actionに
    var obj = $('form_areasearch');
    var myaction = obj.action;
    obj.action = myaction + '#' + pagetop_layer;
}

/* -------------------------------------------------------------------------- */

// 
var pagetop_layer = 'areasearch-box';


// css定義
var areaCss = {
    'normal' : 'area-normal',
    'selected' : 'area-selected',
    'disabled' : 'area-disabled'
};

// ナビげーションリンク定義
/*
var navi_list = {
    'cmd_wayarea' : { 'way' : 'lcmd_wayarea', 'label' : '地域（市区町村）から探す'},
    'cmd_wayroute': { 'way' : 'lcmd_wayroute','label' : '路線・駅から探す'},
    'cmd_wayaddr' : { 'way' : 'lcmd_wayaddr', 'label' : '住所から探す'}
};
*/
var navi_list = {
    'cmd_wayarea' : { 'way' : 'lcmd_wayarea', 'label' : ''},
    'cmd_wayroute': { 'way' : 'lcmd_wayroute','label' : ''},
    'cmd_wayaddr' : { 'way' : 'lcmd_wayaddr', 'label' : ''}
};

// エリア定義
var carea_list = {
    // エリア : { エリア, デフォルト都道府県, ラベル}
    'a01' : { 'carea' : 'a01', 'cpref' : 'c01',  'label' : '北海道'},
    'a02' : { 'carea' : 'a02', 'cpref' : 'none', 'label' : '東北'},
    'a03' : { 'carea' : 'a03', 'cpref' : 'none', 'label' : '関東'},
    'a04' : { 'carea' : 'a04', 'cpref' : 'none', 'label' : '信越・北陸'},
    'a05' : { 'carea' : 'a05', 'cpref' : 'none', 'label' : '東海'},
    'a06' : { 'carea' : 'a06', 'cpref' : 'none', 'label' : '近畿'},
    'a07' : { 'carea' : 'a07', 'cpref' : 'none', 'label' : '中国'},
    'a08' : { 'carea' : 'a08', 'cpref' : 'none', 'label' : '四国'},
    'a09' : { 'carea' : 'a09', 'cpref' : 'none', 'label' : '九州・沖縄'}
}

// 都道府県定義
var cpref_list = {
    // 都道府県 : { 都道府県, エリア, css名, ラベル}
    
    // 北海道
    'c01' : {'cpref' : 'c01', 'carea' : 'a01', 'name' : 'hokkaido',  'label' : '北海道'},
    // 東北
    'c02' : {'cpref' : 'c02', 'carea' : 'a02', 'name' : 'aomori',    'label' : '青森県' },
    'c03' : {'cpref' : 'c03', 'carea' : 'a02', 'name' : 'iwate',     'label' : '岩手県' },
    'c04' : {'cpref' : 'c04', 'carea' : 'a02', 'name' : 'miyagi',    'label' : '宮城県' },
    'c05' : {'cpref' : 'c05', 'carea' : 'a02', 'name' : 'akita',     'label' : '秋田県' },
    'c06' : {'cpref' : 'c06', 'carea' : 'a02', 'name' : 'yamagata',  'label' : '山形県' },
    'c07' : {'cpref' : 'c07', 'carea' : 'a02', 'name' : 'fukushima', 'label' : '福島県' },
    // 関東
    'c08' : {'cpref' : 'c08', 'carea' : 'a03', 'name' : 'ibaragi',   'label' : '茨城県'},
    'c09' : {'cpref' : 'c09', 'carea' : 'a03', 'name' : 'tochigi',   'label' : '栃木県'},
    'c10' : {'cpref' : 'c10', 'carea' : 'a03', 'name' : 'gunma',     'label' : '群馬県'},
    'c11' : {'cpref' : 'c11', 'carea' : 'a03', 'name' : 'saitama',   'label' : '埼玉県'},
    'c12' : {'cpref' : 'c12', 'carea' : 'a03', 'name' : 'chiba',     'label' : '千葉県'},
    'c13' : {'cpref' : 'c13', 'carea' : 'a03', 'name' : 'tokyo',     'label' : '東京都'},
    'c14' : {'cpref' : 'c14', 'carea' : 'a03', 'name' : 'kanagawa',  'label' : '神奈川県'},
    'c19' : {'cpref' : 'c19', 'carea' : 'a03', 'name' : 'yamanashi', 'label' : '山梨県'},
    // 信越・北陸
    'c15' : {'cpref' : 'c15', 'carea' : 'a04', 'name' : 'nigata',    'label' : '新潟県' },
    'c16' : {'cpref' : 'c16', 'carea' : 'a04', 'name' : 'toyama',    'label' : '富山県' },
    'c17' : {'cpref' : 'c17', 'carea' : 'a04', 'name' : 'ishikawa',  'label' : '石川県' },
    'c18' : {'cpref' : 'c18', 'carea' : 'a04', 'name' : 'fukui',     'label' : '福井県' },
    'c20' : {'cpref' : 'c20', 'carea' : 'a04', 'name' : 'nagano',    'label' : '長野県' },
    // 東海
    'c21' : {'cpref' : 'c21', 'carea' : 'a05', 'name' : 'gifu',      'label' : '岐阜県' },
    'c22' : {'cpref' : 'c22', 'carea' : 'a05', 'name' : 'shizuoka',  'label' : '静岡県' },
    'c23' : {'cpref' : 'c23', 'carea' : 'a05', 'name' : 'aichi',     'label' : '愛知県' },
    'c24' : {'cpref' : 'c24', 'carea' : 'a05', 'name' : 'mie',       'label' : '三重県' },
    // 近畿
    'c25' : {'cpref' : 'c25', 'carea' : 'a06', 'name' : 'shiga',      'label' : '滋賀県' },
    'c26' : {'cpref' : 'c26', 'carea' : 'a06', 'name' : 'kyoto',     'label' : '京都府' },
    'c27' : {'cpref' : 'c27', 'carea' : 'a06', 'name' : 'osaka',     'label' : '大阪府' },
    'c28' : {'cpref' : 'c28', 'carea' : 'a06', 'name' : 'hyogo',     'label' : '兵庫県' },
    'c29' : {'cpref' : 'c29', 'carea' : 'a06', 'name' : 'nara',      'label' : '奈良県' },
    'c30' : {'cpref' : 'c30', 'carea' : 'a06', 'name' : 'wakayama',  'label' : '和歌山県' },
    // 中国
    'c31' : {'cpref' : 'c31', 'carea' : 'a07', 'name' : 'tottori',   'label' : '鳥取県' },
    'c32' : {'cpref' : 'c32', 'carea' : 'a07', 'name' : 'shimane',   'label' : '島根県' },
    'c33' : {'cpref' : 'c33', 'carea' : 'a07', 'name' : 'okayama',   'label' : '岡山県' },
    'c34' : {'cpref' : 'c34', 'carea' : 'a07', 'name' : 'hiroshima', 'label' : '広島県' },
    'c35' : {'cpref' : 'c35', 'carea' : 'a07', 'name' : 'yamaguchi', 'label' : '山口県' },
    // 四国
    'c36' : {'cpref' : 'c36', 'carea' : 'a08', 'name' : 'tokushima', 'label' : '徳島県' },
    'c37' : {'cpref' : 'c37', 'carea' : 'a08', 'name' : 'kagawa',    'label' : '香川県' },
    'c38' : {'cpref' : 'c38', 'carea' : 'a08', 'name' : 'ehime',     'label' : '愛媛県' },
    'c39' : {'cpref' : 'c39', 'carea' : 'a08', 'name' : 'kochi',     'label' : '高知県' },
    // 九州・沖縄
    'c40' : {'cpref' : 'c40', 'carea' : 'a09', 'name' : 'fukuoka',   'label' : '福岡県' },
    'c41' : {'cpref' : 'c41', 'carea' : 'a09', 'name' : 'saga',      'label' : '佐賀県' },
    'c42' : {'cpref' : 'c42', 'carea' : 'a09', 'name' : 'nagasaki',  'label' : '長崎県' },
    'c43' : {'cpref' : 'c43', 'carea' : 'a09', 'name' : 'kumamoto',  'label' : '熊本県' },
    'c44' : {'cpref' : 'c44', 'carea' : 'a09', 'name' : 'oita',      'label' : '大分県' },
    'c45' : {'cpref' : 'c45', 'carea' : 'a09', 'name' : 'miyazaki',  'label' : '宮崎県' },
    'c46' : {'cpref' : 'c46', 'carea' : 'a09', 'name' : 'kagoshima', 'label' : '鹿児島県' },
    'c47' : {'cpref' : 'c47', 'carea' : 'a09', 'name' : 'okinawa',   'label' : '沖縄県' }
}
/* -------------------------------------------------------------------------- */

