jQuery(document).ready(function() {
        var JAPAN = 0;
        var MAIN = 1;
        var loadOptions = function(url, id, key, callback) {
            jQuery.get( url, {}, function( data ) {
                    var obj = eval('(' + data + ')');
                    if( key )
                        obj = obj[ key ];
                    jQuery( id ).empty();
                    for(var val in obj) {
                        var option = jQuery('<option></option>');
                        option.val( val );
                        option.text( obj[val] );
                        option.appendTo( jQuery( id ) );
                    }
                    if( jQuery.isFunction( callback ) )
                        callback( jQuery( id ) );
            });
        };
        var loadCountries = function () {
            loadOptions("/js/weather/id2country.json", '#select-country');
        }
        var changePref = function( val ) {
            loadOptions("/js/weather/pref2area.json", '#select-area2', val,
                        function( form ) {
                            form.attr('name', 'city_id');
                            jQuery('#area2').css('display', '');
                        });
        }
        var loadJapanesePrefs = function () {
            loadOptions("/js/weather/id2pref.json", '#select-area1', null,
                        function( form ) {
                            form.attr('name', 'pref_id');
                            form.change(function() {
                                changePref( jQuery( this ).val() );
                            });
                            jQuery('#area1-label').text('都道府県');
                        });
        }
        var loadWorldCities = function( val ) {
            loadOptions("/js/weather/country2area.json", '#select-area1', val,
                        function( form ) {
                            form.attr('name', 'city_id');
                            form.unbind('change');
                            jQuery('#area1-label').text('地域');
                            jQuery('#area2').css('display', 'none');
                        });
        }
        var changeCountry = function( val ) {
            if( val == JAPAN ) {
                loadJapanesePrefs();
                changePref( MAIN );
            }
            else {
                loadWorldCities( val );
            }
        };

        jQuery('#select-country').change( function() {
                changeCountry( jQuery(this).val() );
        });
        loadCountries();
        changeCountry( JAPAN );
});
