// JavaScript Document

+function($){
    var area_ids = [[], [], [2,3,4,5,6,7], [15,16,17,18,19,20], [8,9,10,11,12,13,14],
    [21, 22, 23, 24], [25,26,27,28,29,30], [31,32,33,34,35],[36,37,38,39],
    [40,41,42,43,44,45,46,47] ];
    var states = ["","北海道","青森県","岩手県","宮城県","秋田県","山形県","福島県","東京都","神奈川県","埼玉県","千葉県","茨城県","栃木県","群馬県","山梨県","新潟県","長野県","富山県","石川県","福井県","愛知県","岐阜県","静岡県","三重県","大阪府","兵庫県","京都府","滋賀県","奈良県","和歌山県","鳥取県","島根県","岡山県","広島県","山口県","徳島県","香川県","愛媛県","高知県","福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県","鹿児島県","沖縄県"];
    var areas = ['','北海道','東北','北陸・甲信越','関東','東海','近畿','中国','四国','九州・沖縄'];
    location.href.match(/area\/([0-9]+)\/*([^\/]*)\/*([\/0-9]*)/); /**/
    var area_id = parseInt(RegExp.$1, 10);
    var state_id = parseInt(RegExp.$2, 10) || 'all';
    var _items = RegExp.$3.split('/');
    var _loading = false;
    var _d = document;

    $(document).ready(function(){
        // noscript
        $('#noscript').remove();
//        $('.mapbtn').show();   /* for got2do.com */
    
        if (readHash()) return;

//		console.log(items);
        init(area_id, state_id, _items);
    });
    
    var init = function(area_id, state_id, items) {
        if (isNaN(parseInt(state_id, 10))) {
            _d.title = _d.title.replace(/([^-]+-)[^　]+/, '$1 ' + areas[area_id]);
        }

        items.shift();
        if (items) items = $.map(items, function(val){return parseInt(val, 10)});
        _items = items;
        setAreas();
        openStates(area_id, state_id);
        setCategoryMenu(area_id, state_id);
    };
    
    var setHash = function(area_id, state_id, items) {
        if (isNaN(parseInt(state_id, 10))) {
            _d.title = _d.title.replace(/([^-]+-)[^　]+/, '$1 ' + areas[area_id]);
        }

        state_id = state_id || 'all';
        
        items = items || new Array();
        var hash = area_id + '/' + state_id + '/' + items.join('/'); 

	    if (navigator.userAgent.toLowerCase().indexOf('safari') > -1) {
	        location.hash = hash;
	    } else {
	        location.hash = "#" + hash;
	    }

    };
    
    var readHash = function() {
        var hash = location.hash.replace(/[^#]*#/, '');
        
        if (!hash) return false;
	    hash.match(/([0-9]+)\/*([^\/]*)\/*([\/0-9]*)/); /**/
	    var area_id = parseInt(RegExp.$1, 10);
	    var state_id = parseInt(RegExp.$2, 10) || 'all';
	    var items = RegExp.$3.split('/');
//        console.log(items);

        items.unshift('');
        loading('.contents');

        if ($.browser.msie) {
            $.get('./area/' + hash, '',
            function(v){
               // header exitinct cause crash ie6 
               var html = v.replace(/<head(.|\s)*?\/head>/, '');
               html = $("<div/>").html(html).find('#shoplistBody').html();
               $('#main').html(html);
               init(area_id, state_id, items);loading();
            });
            return true;
        }

        $('#main').load('./area/' + hash + ' #shoplistBody', '',
        function(){init(area_id, state_id, items);loading();});
        return true;
    };
    
    var loading = function(target){
        if (!_loading) {
//        console.log('loading')
            $(target).html('<div id="loadingIcon"><img src="../images/common/loadicon.gif"></div>');
            _loading = true;
            return;
        }
        
        $('#loadingIcon').remove();
        _loading = false;
    }
    
    var setCategoryMenu = function(area_id, state_id, makePL){
        if (makePL) {
            setHash(area_id, state_id, _items);
        }
        
        $('.mapbtn').click(function(){
            $(this).toggleClass('map-off').toggleClass('map-on');
            showMap($(this).attr('id'));
            return false;
        });
        
        $('#categoryMenu').children().click(function(){
        
            var id = parseInt($(this).attr('rel'), 10);
            var key = $.inArray(id, _items)

            if (key == -1) {
                _items.push(id)
            } else {
                _items.splice(key, 1); 
            }
            
            loading('.contents');
            
            if ($.browser.msie) {
	            $.get('./area/' + area_id + '/' + state_id + '/' 
	            + _items.join('/'), '',
	            function(v){
	               // header exitinct cause crash ie6 
                   var html = v.replace(/<head(.|\s)*?\/head>/, '');
                   html = $("<div/>").html(html).find('#shoplistBody').html();
	               $('#main').html(html);
	               setCategoryMenu(area_id, state_id, true);loading();
	            });
	            return false;
            }
            
            $('#main').load('./area/' + area_id + '/' + state_id + '/' 
            + _items.join('/') + ' #shoplistBody', '',
            function(){setCategoryMenu(area_id, state_id, true);loading();});
            return false;
        });
    };
    
    var showMap = function(id){
        var obj = $('#' + id);
        var target = $('#map_' + id.replace(/[^0-9]+/, ''));
        var html = '<iframe src="' + obj.attr('rel') + '" width="496" height="315" scrolling="no" frameborder="0" hspace="0" vspace="0" marginheight="0" marginwidth=""></iframe>';
        target.html(html).slideToggle();
        $.scrollTo('#' + id, 200)
    };
    
    var setAreas = function(){
        var setAreaAct = function(i){
            $('#area' + i +' a' ).click(function(){openStates(i); return false;});
        }
        for (var i=2; i<=9; i++) {
            setAreaAct(i);
        }
    };
    var closeOthers = function(area_id){
        if (!area_id) return;
        $('#area1> a').removeClass('areaInHover');
        for(var i = 2; i <= 9; i++)
        {
            if (i == area_id) continue;
            $('#area'+ i + '> ul').slideUp('fast', function(){$(this).html('')});
            $('#area' + i + '> a').removeClass('areaInHover');
        }
    };
    var openStates = function(area_id, current_state){
        if (!current_state) {
            loading('.contents');

	        if ($.browser.msie) {
	            $.get('./area/' + area_id + '/', '',
	            function(v){
	               // header exitinct cause crash ie6 
	               var html = v.replace(/<head(.|\s)*?\/head>/, '');
	               html = $("<div/>").html(html).find('#shoplistBody').html();
	               $('#main').html(html);
	               _items=[];setCategoryMenu(area_id, 'all', true);loading();
	            });
	        } else {
	            $('#main').load('./area/' + area_id + '/' + ' #shoplistBody', '',
	            function(){_items=[];setCategoryMenu(area_id, 'all', true);loading();});
            }
        }
        closeOthers(area_id);
        var area = area_ids[area_id];
        if (!area_id) return;
        var cont = $('#area' + (area_id ) + ' > ul');
        var state_id, html='';
        for(var i = 0; i < area.length; i++)
        {
            state_id = area[i];
            html += '<li id="state' + state_id + '"><a href="./area/' + area_id + '/' + state_id +  '">' + states[state_id] + '</a></li>';
        }
        cont.html(html).slideDown();
        $('#area' + area_id + ' > a').addClass('areaInHover');
        
		$('#state' + current_state + " > a").addClass('stateOn');
    };
}(jQuery);
