var favoriteController = function(){
    function currentFavorites() {
        function getCookie(key) {
            var tmp = document.cookie + ';';
            var i = tmp.indexOf(key, 0);
            if (i == -1) {
                return '';
            }
            tmp = tmp.substring(i, tmp.length);
            var i2 = tmp.indexOf('=', 0) + 1;
            var i3 = tmp.indexOf(';', i2);
            return unescape(tmp.substring(i2, i3));
        }

        var roomIds = getCookie('room_id');
        if (roomIds == '') {
            return [];
        }
        return roomIds.split('_');
    }

    function addFavoriteMessage() {
        if (currentFavorites().length < 20) {
            return '物件をお気に入りに追加しました';
        } else {
            return 'お気に入り物件は21件以上登録された場合、古い物件から自動的に削除されます';
        }
    }

    function addFavorite(room_id){
        var message = addFavoriteMessage();
        new Ajax.Request( "/ikebukuro/favorite/add?room_id=" + room_id,
                          {
                              method : "get",
                              onSuccess : function(){
                                  jQuery.jGrowl(message);
                                  invalidateButton([room_id]);
                              }
                          });
    }
    
    function addCheckedFavorite(){
        var message = addFavoriteMessage();
        var roomIds = roomsController.checkedRoomIds();
        if (roomIds.length == 0) {
            return;
        }
        new Ajax.Request(
            "/ikebukuro/favorite/add?" + roomsController.queryString(),
            {
                method : "get",
                onSuccess : function(){
                    jQuery.jGrowl(message);
                    invalidateButton(roomIds);
                }
            });
        
    }
    
    function invalidateButton(roomIds){
        $A(roomIds).each(function(roomId){
            var p = $('addFavorite_'+roomId);
            p.innerHTML = '<img class="Hover" src="/ikebukuro/img/maincolume/search/result/room_list/but_favorite.gif" alt="お気に入り追加済み" />';
        });
    }
    
    return {
        add : addFavorite,
        addChecked : addCheckedFavorite
    }
}();
