Ozein.NewArrivalCity = Class.create();
Ozein.NewArrivalCity.prototype = {
    
    sel_addr11:null,
    sel_city:null,
    base_city : null,
    _top : 'false',
    _chgIns: null,
    
    initialize: function(form, options) {
        var na_addr11  = document.getElementsByAttribute('name', 'na_addr11', form);
        var na_city = document.getElementsByAttribute('name', 'na_city', form);
        this._top = document.getElementsByAttribute('ajax_exc', 'true');
        this.sel_addr11 = na_addr11.pop();
        this.sel_city = na_city.pop();
        this._createBaseList();
        this._init();
        Event.observe(this.sel_addr11, 'change', this.changeCity.bindAsEventListener(this));
    },
    
    _createBaseList : function () {
        var cityList = this.sel_city;
        this.base_city = new Array();
        for(var i=0;i<cityList.options.length;i++){
            var addr11 = cityList.options[i].getAttribute('addr11');
            var option = this._createOption(
                cityList.options[i].text,
                cityList.options[i].value,
                addr11,
                cityList.options[i].selected
            );
            if (option != undefined) {
                if (this.base_city[addr11] == undefined) {
                    this.base_city[addr11] = new Array();
                }
                this.base_city[addr11].push(option);
            }
        }
    },
    
    _init : function () {
        var selectedAddr11 = this.sel_addr11.options[this.sel_addr11.selectedIndex];
        var showOptions = this._getShowNodes(selectedAddr11.value);
        this.sel_city.disabled = true;
        if (showOptions) {
            this._changeOptions(showOptions);
            this.sel_city.disabled = false;
        } else {
            var nd = this._createOption('',null,selectedAddr11.value);
            nd.selected= true;
            this._changeOptions([nd]);
        }
    },
    
    _createOption : function (text,value,addr11, selected) {
        var option = document.createElement('option');
        option.text = text;
        option.value = value;
        option.setAttribute('addr11' , addr11);
        if (selected==true) {
            option.selected = true;
        }
        return option;
    },
    
    changeCity : function(event) {
        this._init();
        if (this._top) {
            Ozein.TopMultiSearchDataCnt.prototype.getBukkenCnt(event);
        }
    },
    
    _getShowNodes : function (selectedAddr11) {
        if (this.base_city[selectedAddr11] != undefined) {
            var lst = new Array();
            for(var i=0;i<this.base_city[selectedAddr11].length;i++){
                var refOp = this.base_city[selectedAddr11][i];
                var newOp = this._createOption(
                    refOp.text, 
                    refOp.value, 
                    refOp.getAttribute('addr11'),
                    refOp.selected
                );
                lst.push(newOp);
            }
            return lst;
        }
    },
    
    _changeOptions : function (newOptions) {
        var hoge=this._removeAllOptions();
        if (newOptions) {
            var selectedIndex = 0;
            for(var i=0;i<newOptions.length;i++){
                selected = false;
                if (newOptions[i].selected == true){
                    selectedIndex  = i;
                    selected = true;
                }
                try{
                    this.sel_city.add(newOptions[i],null);
                } catch(ex) {
                    this.sel_city.add(newOptions[i]);
                }
            }
            this.sel_city.selectedIndex = selectedIndex;
        }
    },
    
    _removeAllOptions: function () {
        while( this.sel_city.hasChildNodes()) {
            this.sel_city.removeChild( this.sel_city.firstChild);
       }
    }
}
