/* Export functions on user table results */


function exportResultsBeforeCall() {
    $('.export').hide();
}


function exportResultsShow(userList) {
    $('.export').html(
        '<div class="usernames"> Export <a title="' + userList.join(',') + '" rel="#export_usernames">list of names</a>. </div>' +
        '<div id="export_usernames" class="tableExport hidden">' +
            '<h3> Search results </h3>' +
            '<p>' +
                userList.join(',&#8203;') +
            '</p>' +
            'Enjoy.' +
        '</div>' +
        '<div class="twitterlist"> Create <a title="create twitter list" rel="#export_to_twitter">twitter list</a> from results. </div>'
    ).show();
    $('.export .usernames a').overlay({
        top: '15%',
        expose: '#000'
    });

    if (userData) {
        exportResultsCreateTwitterListForm(userList);
    } else
        $('.export .twitterlist a').click(signInWithTwitter);
}


function exportResultsCreateTwitterListForm(userList) {
    var u = [];
    for (var i = 0; i < userList.length; i++)
        if (userList[i] != userData.username)
            u.push(userList[i]);
    userList = u;
    $('.export').append(
        '<div id="export_to_twitter" class="tableExport hidden">' +
            '<h3> Create twitter list </h3>' +
            '<fieldset><legend> List Name </legend>' +
                '<label>' +
                    userData.username + ' / <input type="text" id="list_name" />' +
                '</label>' +
                '<input type="hidden" id="user_list" value="' + userList.join(',') + '" />' +
            '</fieldset>' +
            '<fieldset>' +
                '<label><em> Visibility </em>' +
                    '<select id="list_visibility">' +
                        '<option value="pubic" selected="selected"> public </option>' +
                        '<option value="private"> private </option>' +
                    '</select>' +
                '</label>' +
                '<label><em> Description </em>' +
                    '<textarea id="list_description"></textarea>' +
                '</label>' +
            '</fieldset>' +
            'List will contain ' + userList.length + ' users.' +
            (userList.length > 25 ? ' Creating it might take a minute...': '') +
            '<button> Create </button>' +
        '</div>'
    );
    $('#export_to_twitter button').click(exportResultsSubmitList);
    $('.export .twitterlist a').overlay({
        top: '15%',
        expose: '#000'
    });
}


function exportResultsSubmitList() {
    if ((list_name = $('#export_to_twitter #list_name').val().trim()) == '') {
        $('#export_to_twitter #list_name').focus();
        return;
    }
    if ((list_description = $('#export_to_twitter #list_description').val().trim()) == '') {
        if (!confirm('Do you want to create a list without description?')) {
            $('#export_to_twitter #list_description').focus();
            return;
        }
    }

    var list_visibility = $('#export_to_twitter #list_visibility').val();

    $('#export_to_twitter').find('*').attr('disabled', 'disabled');

    var data = {
        'csrfmiddlewaretoken': $('#csrfmiddlewaretoken').val(),
        'twitter_list': list_name,
        'user_list': $('#user_list').val(),
        'list_description': list_description,
        'list_visibility': list_visibility
    };

    $('#export_to_twitter').addClass('loading');
    $('.message_ok, .message_error').remove();
    $.ajax({
        type: 'POST',
        dataType: 'json',
        url: siteUrls.actions,
        data: data,
        timeout: 180000,
        error: exportResultsAJAXError,
        success: exportResultsAJAXSuccess
    });
}


function exportResultsAJAXError(data, message) {
    $('#export_to_twitter').removeClass('loading').find('*').removeAttr('disabled');
    if (data.responseText) {
        var error = /exception_value">(.*)<\/pre/.exec(data.responseText);
        if (error && error.length > 0)
            message += ': ' + error[1];
    }
    var error_message = 'There was an error while processing this request (' + message + ') !';
    $('#export_to_twitter button').after('<div class="message_error">' + error_message  + '</div>');
}


function exportResultsAJAXSuccess(data, message) {
    $('#export_to_twitter').removeClass('loading').find('*').removeAttr('disabled');
    if (data.error_message || !data.created) {
        $('#export_to_twitter button').after('<div class="message_error">' + data.error_message + '</div>');
        return;
    }
    $('#export_to_twitter button').after(
        '<div class="message_ok"> List created: <br />' +
            '<a href="http://twitter.com' + data.list_url + '/">' + data.list_name + '</a>'+
        '</div>'
    );
    $('#export_to_twitter input, #export_to_twitter select, #export_to_twitter textarea').val('');
}
