var Directory = {
    content: {},

    initialize: function() {
        Directory.attachRegionHandler();
        Directory.equalizeMuseumColumns();
        Directory.content = {
            'top'    : $('.top').html(),
            'bottom' : $('.bottom').html()
        };
    },

    attachRegionHandler: function() {
        $('area').click(function() {
            var url = $(this).attr('href') + '/format/json';

            $('.map')
                .append('<div class="spinner"></div>')
                .find('.spinner')
                    .css('opacity', 0.5);

            $.getJSON(url, function(data) {
                if (data.region) {
                    Directory.onResponse(data.region, data.museums, data.content, data.media);
                }
            });

            return false;
        });
    },

    equalizeMuseumColumns: function() {
        $('.column').equalizeCols();
        $('.left, .right').equalizeCols();
    },

    onRegionLoad: function(museums) {
        $('.museums')
            .html(museums)
            .hide()
            .slideDown('def', function() {
                Directory.equalizeMuseumColumns();
                $.scrollTo('.content', 500);
            });

        $('.map')
            .find('.spinner')
                .remove()
                .end()
            .find('div')
                .fadeIn()
                .find('a')
                    .click(function() {
                        $('.top').html(Directory.content.top);
                        $('.bottom').html(Directory.content.bottom);

                        $('.map div')
                            .fadeOut('def', function() {
                                $('.map div').remove();
                            });

                        $('.museums, .right .fill')
                            .slideUp('def', function() {
                                $('.museums').empty();
                                $('.fill').equalizeCols();
                            });
                            
                        $('#mediaCarouselSection')
        					.addClass('hidden');

                        return false;
                    });
    },

    onResponse: function(region, musuems, content, media) {
        $('.top').html(content.top);
        $('.bottom').html(content.bottom);
        $('#mediaCarouselSection')
        	.removeClass('hidden')
        	.find('.mediaCarouselContainer')
        	.html(media)
        	.find('.mediaCarousel')
        	.cycle({
				fx:'fade'
			});
        
        $('.map')
            .append(region)
            .find('div')
                .hide()
                .end()
            .find('img:last')
                .load(function() {
                    Directory.onRegionLoad(musuems);
                });
    }
};

$(Directory.initialize);