document.write('<script type="text/javascript" src="js/thickbox.js"></script>');

var SearchPanel = null;

jQuery(document).ready(function ($) {

SearchPanel = function (type) {
    this.tpl_area = '<img src="images/body/btn_search_area_02.gif" class="searchBtn" />'
                  + '<div class="searchArea">({cond_area})</div>'
                  + '<div class="searchChange">'
                  + '<a href="./panel_area.php?width=730&amp;height=650&amp;modal=true&amp;a3=({a3_val})&amp;a4=({a4_val})"'
                  + ' class="thickbox">地域の変更</a>'
                  + '</div>'
                  + '<a href="./panel_line.php?width=730&amp;height=650&amp;modal=true" class="thickbox">'
                  + '<img src="images/body/btn_search_rail_01_off.gif" width="165" height="40" class="searchBtn" /></a>';

    this.tpl_line = '<a href="./panel_area.php?width=730&amp;height=650&amp;modal=true" class="thickbox">'
                  + '<img src="images/body/btn_search_area_01_off.gif" class="searchBtn" /></a><br />'
                  + '<img src="images/body/btn_search_rail_02.gif" width="165" height="40" class="searchBtn" />'
                  + '({cond_lnst})'
                  + '<div class="searchChange">'
                  + '<a href="./panel_line.php?width=730&amp;height=650&amp;modal=true&amp;ln=({ln_val})" class="thickbox">'
                  + '沿線の変更</a>　'
                  + '<a href="./panel_station.php?width=730&amp;height=650&amp;modal=true&amp;ln=({ln_val})({st_val})"'
                  + ' class="thickbox">駅の変更</a></div>';

    this.tpl_lnst = '<div class="searchArea">({line})<br />({stations})</div>';

    this.tpl_cond_add = '<img src="images/body/search_select.gif" alt="" width="202" height="44"'+
                        ' id="search_cond_add" style="position:absolute;top:80px;left:-190px;" />';

    this.s_type = type;
    this.crt_panel = null;
    this.c_max = 0;
    this.st_link = null;
    this.lines = [];
    this.cond_maxlen = 12;
    this.add_timer = null;
    this.add_timeout = 3000;
};

SearchPanel.prototype = {

    _initialize : function () {
    },

    _open : function () {
        if ($("#panel").size() > 0 && $(".btn_choice").size() > 0 && $(".btn_clear").size() > 0) {
            var self = this;
            this.crt_panel = $("#panel").val();

            switch (this.crt_panel) {
            case 'area':
                this.c_max = 5;
                $(".panel_cb").click(function () {
                    self._changeCbActive(self.c_max);
                });
                break;
            case 'line':
                this.c_max = 3;
                this.st_link = $(".btn_station").attr('href');
                var chk_cnt = $(".panel_cb:checked").size();
                if (chk_cnt == 0) {
                    $(".btn_station").hide();
                } else {
                    if (chk_cnt > 0 && this.lines.length == 0) {
                        $(".panel_cb:checked").each(function () {
                            self.lines.push($(this).val());
                        });
                    }
                    $(".btn_station").attr('href', this.st_link +'&ln='+ this.lines.join(','));
                }
                $(".panel_cb").click(function () {
                    self._changeCbActive(self.c_max);
                    self.lines = [];
                    $(".panel_cb:checked").each(function () {
                        self.lines.push($(this).val());
                    });
                    $(".btn_station").attr('href', self.st_link +'&ln='+ self.lines.join(','));
                    if (self.lines.length > 0) {
                        $(".btn_station").show();
                    } else {
                        $(".btn_station").hide();
                    }
                });
                break;
            case 'station':
                this.c_max = 0;
                $(".ln_cb").each(function () {
                    $(this).click(function () {
                        var target_id = $(this).attr('id').substr(2);
                        if ($("#ln"+target_id+":checked").size() > 0) {
                            $(".line"+target_id).each(function () {
                                if (!$(this).attr('disabled')) {
                                    $(this).attr('checked', 'checked');
                                }
                            });
                        } else {
                            $(".line"+target_id).removeAttr('checked');
                        }
                    });
                });
                break;
            }

            this._changeCbActive(this.c_max);

            $(".btn_choice").mouseover(function () {
                $(this).css('cursor', 'pointer');
            });
            $(".btn_choice").click(function () {
                switch (self.crt_panel) {
                case 'area':
                    var area3 = [];
                    var area4 = [];
                    $(".panel_cb").each(function () {
                        if ($(this).attr('checked')) {
                            if ($(this).attr('id').match(/^a3/)) {
                                area3.push($(this).val());
                            }
                            if ($(this).attr('id').match(/^a4/)) {
                                area4.push($(this).val());
                            }
                        }
                    });
                    if (area3.length == 0 && area4.length == 0) {
                        alert('地域を選択してください');
                    } else {
                        $("#a3").val(area3.join(','));
                        $("#a4").val(area4.join(','));
                        $("#ln").val('');
                        $("#hidden_st").html('');
                        switch (self.s_type) {
                        case 1:
                            $("#search_form").submit();
                            break;
                        case 0:
                        default:
                            var areas = area3.concat(area4);
                            var disp_area = areas.join('、');
                            if (disp_area.length > self.cond_maxlen) {
                                disp_area = disp_area.substr(0, self.cond_maxlen) + '…';
                            }
                            var cond_base = self.tpl_area;
                            cond_base = cond_base.replace(/\(\{cond_area\}\)/g, disp_area);
                            cond_base = cond_base.replace(/\(\{a3_val\}\)/g, encodeURI(area3.join(',')));
                            cond_base = cond_base.replace(/\(\{a4_val\}\)/g, encodeURI(area4.join(',')));
                            $("#cond_base").html(cond_base);
                            if ($("#btn_search").size() > 0) {
                                $("#search_notes").show();
                            }
                            tb_remove();
                            tb_init('a.thickbox');
                            $("#leftSearchBox").append(self.tpl_cond_add);
                            $("#search_cond_add").fadeIn('fast');
                            self.add_timer = setTimeout(function () {
                                $("#search_cond_add").fadeOut('slow', function () {$("#search_cond_add").remove();});
                                clearTimeout(self.add_timer);
                            }, self.add_timeout);
                        }
                    }
                    break;
                case 'line':
                    if (self.lines.length == 0) {
                        alert('路線を選択してください');
                    } else {
                        $("#a3").val('');
                        $("#a4").val('');
                        $("#ln").val(self.lines.join(','));
                        $("#hidden_st").html('');
                        switch (self.s_type) {
                        case 1:
                            $("#search_form").submit();
                            break;
                        case 0:
                        default:
                            var cond_lnst = '';
                            for (var i = 0; i < self.lines.length; i++) {
                                var tmp_lnst = self.tpl_lnst;
                                var ln_name = $("#ln_name"+self.lines[i]).html();
                                if (ln_name.length > self.cond_maxlen) {
                                    ln_name = ln_name.substr(0, self.cond_maxlen) + '…';
                                }
                                tmp_lnst = tmp_lnst.replace(/\(\{line\}\)/g, ln_name);
                                tmp_lnst = tmp_lnst.replace(/\(\{stations\}\)/g, '');
                                cond_lnst += tmp_lnst;
                            }
                            var cond_base = self.tpl_line;
                            cond_base = cond_base.replace(/\(\{cond_lnst\}\)/g, cond_lnst);
                            cond_base = cond_base.replace(/\(\{ln_val\}\)/g, self.lines.join(','));
                            cond_base = cond_base.replace(/\(\{st_val\}\)/g, '');
                            $("#cond_base").html(cond_base);
                            if ($("#btn_search").size() > 0) {
                                $("#search_notes").show();
                            }
                            tb_remove();
                            tb_init('a.thickbox');
                            $("#leftSearchBox").append(self.tpl_cond_add);
                            $("#search_cond_add").fadeIn('fast');
                            self.add_timer = setTimeout(function () {
                                $("#search_cond_add").fadeOut('slow', function () {$("#search_cond_add").remove();});
                                clearTimeout(self.add_timer);
                            }, self.add_timeout);
                        }
                    }
                    break;
                case 'station':
                    self.lines = [];
                    var stations = [];
                    $(".ln_cb").each(function () {
                        var target_id = $(this).attr('id').substr(2);
                        if ($(".line"+target_id+":checked").size() > 0) {
                            self.lines.push(target_id);
                            stations[target_id] = [];
                            $(".line"+target_id+":checked").each(function () {
                                stations[target_id].push($(this).val());
                            });
                        }
                    });
                    if (stations.length == 0) {
                        alert('駅を選択してください');
                    } else {
                        $("#a3").val('');
                        $("#a4").val('');
                        if (self.lines.length > 0) {
                            $("#ln").val(self.lines.join(','));
                        }
                        for (var i = 0; i < self.lines.length; i++) {
                            $("#hidden_st").append(
                                '<input type="hidden" name="st'+self.lines[i]+'" value="'+stations[self.lines[i]].join(',')+'" />'
                            );
                        }
                        switch (self.s_type) {
                        case 1:
                            $("#search_form").submit();
                            break;
                        case 0:
                        default:
                            var cond_lnst = '';
                            var st_vals = '';
                            var st_cnt = 0;
                            for (var i = 0; i < self.lines.length; i++) {
                                var lineid = self.lines[i];
                                var tmp_lnst = self.tpl_lnst;
                                var ln_name = $("#ln_name"+lineid).html();
                                if (ln_name.length > self.cond_maxlen) {
                                    ln_name = ln_name.substr(0, self.cond_maxlen) + '…';
                                }
                                var st_names = [];
                                for (var j = 0; j < stations[lineid].length; j++) {
                                    var stid = stations[lineid][j];
                                    if ($("#st_name"+lineid+'_'+stid).size() > 0) {
                                        st_names.push($("#st_name"+lineid+'_'+stid).html());
                                    }
                                }
                                var st_name = st_names.join('/');
                                if (st_name.length > self.cond_maxlen) {
                                    st_name = st_name.substr(0, self.cond_maxlen) + '…';
                                }
                                tmp_lnst = tmp_lnst.replace(/\(\{line\}\)/g, ln_name);
                                tmp_lnst = tmp_lnst.replace(/\(\{stations\}\)/g, st_name);
                                cond_lnst += tmp_lnst;
                                st_vals += '&amp;st'+lineid+'='+stations[lineid].join(',');
                            }
                            var cond_base = self.tpl_line;
                            cond_base = cond_base.replace(/\(\{cond_lnst\}\)/g, cond_lnst);
                            cond_base = cond_base.replace(/\(\{ln_val\}\)/g, self.lines.join(','));
                            cond_base = cond_base.replace(/\(\{st_val\}\)/g, st_vals);
                            $("#cond_base").html(cond_base);
                            if ($("#btn_search").size() > 0) {
                                $("#search_notes").show();
                            }
                            tb_remove();
                            tb_init('a.thickbox');
                            $("#leftSearchBox").append(self.tpl_cond_add);
                            $("#search_cond_add").fadeIn('fast');
                            self.add_timer = setTimeout(function () {
                                $("#search_cond_add").fadeOut('slow', function () {$("#search_cond_add").remove();});
                                clearTimeout(self.add_timer);
                            }, self.add_timeout);
                        }
                    }
                    break;
                }
            });

            $(".btn_clear").mouseover(function () {
                $(this).css('cursor', 'pointer');
            });
            $(".btn_clear").click(function () {
                $(".panel_cb").removeAttr('checked');
                $(".panel_cb").each(function () {
                    var target_id = $(this).attr('id').substr(2);
                    if (parseInt($("#cnt"+target_id).html()) > 0) {
                        $(this).removeAttr('disabled');
                        $("#name"+target_id).removeClass('disabled');
                    }
                });
                if (self.crt_panel == 'line') {
                    self.lines = [];
                    $(".btn_station").hide();
                }
            });

            $(".btn_close").mouseover(function () {
                $(this).css('cursor', 'pointer');
            });
            $(".btn_close").click(tb_remove);
        }
    },

    _setCrtPanel : function (crt_panel) {
        this.crt_panel = crt_panel;
    },

    _changeCbActive : function (c_max) {
        var chk_cnt = $(".panel_cb:checked").size();
        var is_max = false;
        if (c_max != 0 && chk_cnt >= c_max) {
            is_max = true;
        }
        $(".panel_cb").each(function () {
            if (is_max) {
                if (!$(this).attr('checked')) {
                    $(this).attr('disabled', 'disabled');
                    var target_id = $(this).attr('id').substr(2);
                    $("#name"+target_id).addClass('disabled');
                }
            } else {
                var target_id = $(this).attr('id').substr(2);
                if (parseInt($("#cnt"+target_id).html()) > 0 && $(this).attr('disabled')) {
                    $(this).removeAttr('disabled');
                    $("#name"+target_id).removeClass('disabled');
                }
            }
        });
    },

    _setAreaTemplate : function (tpl) {
        this.tpl_area = tpl;
    },

    _setLineTemplate : function (tpl) {
        this.tpl_line = tpl;
    },

    _setCondMaxLength : function (len) {
        this.cond_maxlen = len;
    }

};

});

