var chatAlerts = {

    open: false, collection: [],

    init: function() {
        $('#chatAlertsClose').bind('click', chatAlerts.closeWindow);
        $('#chatAlertsDeleteChanged').bind('click', chatAlerts.deleteChanged);
        $('#chatAlertsSelectAll').jCheckbox({ on: 'chat_chb_on', off: 'chat_chb_off' });
        $('#chatAlertsSelectAll').bind('click', function() { if($(this).attr('class') == 'chat_chb_on') {$('.chat_alert .chat_chb_off').click();} else {$('.chat_alert .chat_chb_on').click();} });
        $('#chatBuddiesSelectAll').jCheckbox({ on: 'chat_chb_on', off: 'chat_chb_off' });
        $('#chatBuddiesSelectAll').bind('click', function() { if($(this).attr('class') == 'chat_chb_on') {$('.buddy_list .chat_chb_off').click();} else {$('.buddy_list .chat_chb_on').click();} });  
        $('#chatAcceptToBuddyCancel').bind('click', function() { $('#chatAcceptToBuddyDialog').hide(); });
        $('#chatAcceptToBuddySend').bind('click', function() {
             $.ajax({ type: "POST", url: '/chat/TakeATourByRequest.php', datatype: 'xml',
                data: { REQ_ID: 'ADD_TO_BUDDY_LIST', 'IDs[]': $('#chatAcceptToBuddyId').attr('value') },
                success: function(data) {
                    check_for_updates();
                    // CR BORIS: Far from perfect, remvoe add_to_buddy_last_alert_id and don't rely on users not clicking other checkboxes
                    $('#alert'+add_to_buddy_last_alert_id +' .chat_chb_off').click()
                    chatAlerts.deleteChanged();
                    $('#chatAcceptToBuddyTitle, #chatAcceptToBuddyInfo, #chatAcceptToBuddyName, #chatAcceptToBuddymssg, #chatAcceptToBuddyCName, #chatAcceptToBuddyImg, #chatAcceptToBuddyText, #chatAcceptToBuddyCancel, #chatAcceptToBuddySend, #chatPersonalMessageLabel').hide();
                    $('#chatAcceptToBuddyCompleteTitle, #chatAcceptToBuddyCompleteClose').show();
                    $('#chatAcceptToBuddyCompleteTitle').text($('response', data).text());
                    buddyListDialog.openWindow();
                },  error: chatAlerts.requestError });
         });
         $('#chatAcceptToBuddyCompleteClose').bind('click', function() { $('#chatAcceptToBuddyDialog').hide(); } );
    },

    openWindow: function() { $('#chatAlerts').show(); },

    closeWindow: function() { $('#chatAlerts').hide(); },

    minimizeWindow: function() { $('#chatAlerts').hide(); },

    // CR BORIS: Naming
    deleteChanged: function() {
        var selected = chatAlerts.getSelected(), index=0, _new = [];
        if (selected.length == 0 ) {
            $("#chatAlertsNothingSelected").show();
            return;
        } else {
            $("#chatAlertsNothingSelected").hide();
        }
        var setmarker = function(i) { if(selected.length > i) { $.ajax({ type: "POST", url: '/chat/TakeATourByRequest.php', datatype: 'xml',
                data: { REQ_ID: 'SET_ALERTREAD_MARKER', id: selected[i] },
                success: function() { setmarker(i + 1); },
                error: chatAlerts.requestError }); }
        };
        setmarker(index);
        $('#chatAlertsContent').empty();

        for(var i=0; i<chatAlerts.collection.length; i++) {
            if(!function(id) {
                for (var j = 0; j < selected.length; j++) {
                    if (id == selected[j])
                        return true;
                }
                return false;
            }(chatAlerts.collection[i].id)) {
                _new.push(chatAlerts.collection[i])
                chatAlerts.writeAlert(chatAlerts.collection[i]);
            }
        }
        chatAlerts.collection.splice(0, chatAlerts.collection.length);
        chatAlerts.collection = _new;
        buddyListDialog.messagesCount();
    },

    getSelected: function() {
        var selected = $('#chatAlertsContent span.chat_chb_on'), to = [];
        selected.each(function() {
            to.push($(this).attr('value'));
        }); return to;
    },

    setAlert: function(alertObj) {
        var collection = this.collection;
        if(function(obj) {
                for (var j = 0; j < collection.length; j++) {
                    if (obj.id == collection[j].id)
                        return true;
                }
                return false;
            }(alertObj)) { return; }
        this.collection.push(alertObj);
        this.writeAlert(alertObj);
    },

    writeAlert: function(alertObj) {

        chatAlerts.openWindow();
        if($('#chatAlertsContent').find('.chat_alert').length > 0)
            $('#chatAlertsContent')
                .append(
                    $('<span/>')
                        .addClass('chat_alert_spacer')
                );

        $('#chatAlertsContent')
            .append(
                $('<span/>')
                    .addClass('chat_alert')
                    .append(
                        $('<span/>')
                            .attr('value', alertObj.id)
                            .append(
                                $('<img/>')
                                    .attr('src', '/images/spacer.gif')
                            )
                            .jCheckbox({ on: 'chat_chb_on', off: 'chat_chb_off' })
                    )
                    .append(
                        $('<span/>')
                            .append(
                                $('<span/>')
                                .addClass('chat_alert_header')
                                .append(
                                    $('<span/>')
                                    .addClass('chat_alert_name')
                                    .html(alertObj.requestTitle)
                                )
                                .append(
                                    $('<span/>')
                                    .addClass('chat_alert_date')
                                    .html(alertObj.serverDate)
                                )
                            )
                            .append(
                                $('<span/>')
                                .addClass('chat_alert_text')
                                .html(this.alertToHTML(alertObj))
                            )
                            .addClass('chat_alert_block')
                    )
                    .attr('id', 'alert' + alertObj.id)
                    .attr('value', alertObj.id)
            ).slideScroll({value : 0});
        $('#chatAlertsNoAlerts').hide();
    },

    openConfirmAddToFriendDialog: function(id, user_name, text, alert_id) {
        add_to_buddy_last_alert_id = alert_id;
        $('#chatAcceptToBuddyTitle, #chatAcceptToBuddyInfo, #chatAcceptToBuddyName, #chatAcceptToBuddyCName, #chatAcceptToBuddyImg, #chatAcceptToBuddyText, #chatAcceptToBuddyCancel, #chatAcceptToBuddySend, #chatPersonalMessageLabel').show();
        $('#chatAcceptToBuddyCompleteTitle, #chatAcceptToBuddyCompleteClose').hide();
        $('#chatAcceptToBuddyDialog').show();
        $('#chatAcceptToBuddyId').attr('value', id);
        $('#chatAcceptToBuddyName').html(user_name);
        $('#chatAcceptToBuddyText').html(text);
        //$('#chatAcceptToBuddyImg').attr('src', pic);
    },

    alertToHTML: function(alertObj) {

        switch(alertObj.requestName) {
            case 'AddToBuddy':
                return alertObj.stringP + ' wants to be your friend. <a href="javascript:void(0);" onclick="chatAlerts.openConfirmAddToFriendDialog(' + alertObj.userId + ', \'' + alertObj.userName + '\', \'' + alertObj.textP + '\', ' + alertObj.id + ')">Click here to see the request</a>';
            break;
            case 'SimpleMessage':
            update_goldies();
  
                return alertObj.textP + '<br />' + alertObj.stringP;
            break;
            case 'RecommendClip':
                return alertObj.textP + '' + alertObj.stringP;
            break;
            case 'GiftClip':
                return alertObj.textP.replace('g1MTwcg8',alertObj.id); // change dummy value 'g1MTwcg8' into id of message for remove message later
            break;
            default:
                return alertObj.textP + '' + alertObj.stringP;
            break;
        }
    },

    requestError: function(xhr, ajaxOptions, thrownError) {
        alert('jQuery Ajax error! xhr: ' + xhr + '; ajaxOptions: ' + ajaxOptions);
    }
}

