$(function() {
    Yuigahama.Top.init();
    $('div#sctTopShops > p.subBtn > a').click(Yuigahama.Top.showBeachShops);
});

if(!window.Yuigahama) Yuigahama = {};
Yuigahama.apihost = 'http://www.shonan-clip.jp';

Yuigahama.Top = {
   apipath : '/rest/api/town_search',
   base_param : {
      user     : 'yuigahama',
      category : '1,2',
      perpage  : 50,
      format   : 'json'
   },
   cache : [],
   pager : {
       total : 0,
       current : 1
   }
};

Yuigahama.Util = {};

Yuigahama.Util.shuffle = function(list) {
    var i = list.length;

    while (--i) {
        var j = Math.floor(Math.random() * (i + 1));
        if (i == j) continue;
        var k = list[i];
        list[i] = list[j];
        list[j] = k;
    }
    return list;
};

Yuigahama.Top.createURL = function(param) {
    param["t"] = new Date().getTime();
    //if(!param["page"]) { param["page"] = 1; }
    var _q = $.extend(Yuigahama.Top.base_param, param);

    var url = Yuigahama.apihost;
    url += Yuigahama.Top.apipath;
    url += "?" + jQuery.param(_q) + "&callback=?";
    return url;
};

Yuigahama.Top.showBeachShops = function() {
    var current = Yuigahama.Top.pager.current;
    var total   = Yuigahama.Top.pager.total;

    $("#sctTopShops > div.unitGroup > .unit").remove();

    var shops = (function() {
        var pos = (current - 1) * 5;
        var s = [];
        for(var i = 0; i < 5; i++, pos++) {
            if(Yuigahama.Top.cache[pos]) {
                var p = Yuigahama.Top.cache[pos];
                var anchor = { href:p.url, title:p.name, target:"_blank" };
                s.push($([
                    '<div class="unit unitShop">',
                    '<p class="thumb"><a><img /></a></p>',
                    '<h3><a /></h3>',
                    '</div>'
                    ].join(""))
                    .find("p.thumb > a").attr(anchor)
                        .find('img').attr({src:p.photo, title:p.name}).end().end()
                    .find("h3 > a").attr(anchor).text(p.name).end()
                );
            }
        }
        return s;
    })();

    if(5 * current >= total) {
        Yuigahama.Top.pager.current = 1;
    }
    else {
        Yuigahama.Top.pager.current++;
    }

    setTimeout(function() {
        if(shops.length > 0) {
            var shop = shops.shift();
            setTimeout(function() {
                shop.css({opacity:0}).appendTo("#sctTopShops > div.unitGroup").animate({opacity:1}, 200);
            }, 0);
            setTimeout(arguments.callee, 300);
        }
    }, 10);
};

Yuigahama.Top.init = function() {
    var current = Yuigahama.Top.pager.current;
    Yuigahama.Top.pager.total = Yuigahama.Top.cache.length;
    var total = Yuigahama.Top.pager.total;

    var shops = (function() {
        var pos = (current - 1) * 5;
        var s = [];
        var list = $("div.unitGroup > div.unit");
        for (var i = 0, l = list.length; i < l; i++){
            s.push(list[i]);
        }
        return s;
    })();

    if(5 * current >= total) {
        Yuigahama.Top.pager.current = 1;
    }
    else {
        Yuigahama.Top.pager.current++;
    }

    setTimeout(function() {
        if(shops.length > 0) {
            var shop = shops.shift();
            setTimeout(function() {
                $(shop).animate({opacity:1}, 200);
            }, 0);
            setTimeout(arguments.callee, 300);
        }
    }, 10);
};
