var AreenaReloadAfterConnect = false;
var AreenaAjaxLoad = true;
$(function() {
    $.blockUI.defaults.message = "<h3 class='loading'>Odota hetki...</h3>";
    $.blockUI.defaults.theme = true;
    $.blockUI.defaults.title = "Ladataan";
    $(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);

    $(document).ajaxComplete(function(event, request, settings) {
        $('.ui-dialog').unblock();
    });

});


jQuery.ajaxSetup({
    'beforeSend': function (xhr) {
        xhr.setRequestHeader("Accept", "text/javascript");
    }
});

function _ajax_request(url, data, callback, type, method) {
    if (jQuery.isFunction(data)) {
        callback = data;
        data = {};
    }
    return jQuery.ajax({
        type: method,
        url: url,
        data: data,
        success: callback,
        dataType: type
    });
}

jQuery.extend({
    put: function(url, data, callback, type) {
        return _ajax_request(url, data, callback, type, 'PUT');
    },
    delete_: function(url, data, callback, type) {
        return _ajax_request(url, data, callback, type, 'DELETE');
    }
});

jQuery.fn.submitWithAjax = function() {
    this.unbind('submit', false);
    this.submit(function() {
        $.post(this.action, $(this).serialize(), null, "script");
        return false;
    })

    return this;
};

//Send data via get if <acronym title="JavaScript">JS</acronym> enabled
jQuery.fn.getWithAjax = function() {
    this.unbind('click', false);
    this.click(function() {
        $.get($(this).attr("href"), $(this).serialize(), null, "script");
        return false;
    })
    return this;
};

//Send data via Post if <acronym title="JavaScript">JS</acronym> enabled
jQuery.fn.postWithAjax = function() {
    this.unbind('click', false);
    this.click(function() {
        $.post($(this).attr("href"), $(this).serialize(), null, "script");
        return false;
    })
    return this;
};

jQuery.fn.putWithAjax = function() {
    this.unbind('click', false);
    this.click(function() {
        $.put($(this).attr("href"), $(this).serialize(), null, "script");
        return false;
    })
    return this;
};

jQuery.fn.deleteWithAjax = function() {
    this.removeAttr('onclick');
    this.unbind('click', false);
    this.click(function() {
        $.delete_($(this).attr("href"), $(this).serialize(), null, "script");
        return false;
    })
    return this;
};

//This will "ajaxify" the links
function ajaxLinks() {
    $('.ajaxForm').submitWithAjax();
    $('a.get').getWithAjax();
    $('a.post').postWithAjax();
    $('a.put').putWithAjax();
    $('a.delete').deleteWithAjax();
}

$(document).ready(function() {

    // All non-GET requests will add the authenticity token
    // if not already present in the data packet
    $(document).ajaxSend(function(event, request, settings) {
        if (typeof(window.AUTH_TOKEN) == "undefined") return;
        // <acronym title="Internet Explorer 6">IE6</acronym> fix for http://dev.jquery.com/ticket/3155
        if (settings.type == 'GET' || settings.type == 'get') return;

        settings.data = settings.data || "";
        settings.data += (settings.data ? "&" : "") + "authenticity_token=" + encodeURIComponent(window.AUTH_TOKEN);
    });

    ajaxLinks();
});

function showInviteDialog() {
    fb_connect_invite_friends({
        type: 'Biitsi.fi Areenalle',
        invitation_copy:'Ota käyttöön Biitsi.fi Areenalle sovellus jotta sinut voidaan kutsua pelaamaan ja voit tehdä omia kutsuja.',
        request_action_text:'Kutsu ystäväsi käyttämään Biitsi.fi Areenalle sovellusta'
    });
}

function fb_connect_invite_friends(options) {

    if (typeof options != 'object') {
        options = {}
    }
    if (options.title == undefined) {
        options.title = "Kutsu ystäviä"
    }
    if (options.type == undefined) {
        options.type = window.location.hostname
    }
    if (options.all_friends_invited == undefined) {
        options.all_friends_invited = "<div style='padding: 10px; font-size: 1.2em;'>Olet jo kutsunut kaikki ystäväsi ja he ovat hyväksyneet kutsun.</div>"
    }
    if (options.invitation_copy == undefined) {
        options.invitation_copy = ""
    }
    if (options.invitation_choice_url == undefined) {
        options.invitation_choice_url = window.location.protocol + '//' + window.location.host + '/'
    }
    if (options.invitation_choice_label == undefined) {
        options.invitation_choice_label = 'Hyväksy'
    }
    if (options.request_action_url == undefined) {
        options.request_action_url = window.location.href
    }
    if (options.request_action_text == undefined) {
        options.request_action_text = options.title
    }
    if (options.friend_selector_rows == undefined) {
        options.friend_selector_rows = 3
    }
    if (options.friend_selector_email_invite == undefined) {
        options.friend_selector_email_invite = 'true'
    }
    if (options.friend_selector_bypass == undefined) {
        options.friend_selector_bypass = 'Peruuta'
    }
    if (isNaN(options.width)) {
        options.width = 600
    }
    if (isNaN(options.height)) {
        options.height = 510
    }

    var api = FB.Facebook.apiClient
    var sequencer = new FB.BatchSequencer()
    var friends = api.friends_get(null, sequencer)
    var friends_app_users = api.friends_getAppUsers(sequencer)

    sequencer.execute(function() {

        var friend_ids = ''
        try {
            friend_ids = friends.result.sort().join(',')
        } catch(e) {
            ;
        }

        var exclude_ids = ''
        try {
            exclude_ids = friends_app_users.result.sort().join(',')
        } catch(e) {
            ;
        }

        var dialog = new FB.UI.FBMLPopupDialog(options.title, '')

        if (friend_ids.length > 0 && exclude_ids.length > 0 && friend_ids == exclude_ids) {
            var fbml = ''
            fbml += '<fb:fbml>'
            fbml += options.all_friends_invited
            fbml += '</fb:fbml>'

            dialog.setFBMLContent(fbml)
            dialog.setContentWidth(300)
            dialog.setContentHeight(70)
        } else {
            var content = ''
            content += options.invitation_copy
            content += "<fb:req-choice url='" + options.invitation_choice_url + "' label='" + options.invitation_choice_label + "' />"

            var fbml = ''
            fbml += '<fb:fbml>'
            fbml += '<fb:request-form type="' + options.type + '" content="' + content + '" invite="true" action="' + options.request_action_url + '" method="post">'
            fbml += '<fb:multi-friend-selector'
            fbml += ' actiontext="' + options.request_action_text + '" '
            fbml += ' showborder="true" '
            fbml += ' rows="' + options.friend_selector_rows + '" '
            fbml += ' exclude_ids="' + exclude_ids + '" '
            fbml += ' bypass="' + options.friend_selector_bypass + '" '
            fbml += ' email_invite="' + options.friend_selector_email_invite + '" '
            fbml += '/>'
            fbml += '</fb:request-form>'
            fbml += '</fb:fbml>'

            dialog.setFBMLContent(fbml)
            dialog.setContentWidth(options.width)
            dialog.setContentHeight(options.height)
        }
        dialog.show()
    })
}

function open_ajax_dialog(id, url) {
    $('#' + id).html('<p class=loading>Ladataan</p>').load(url, "", function() {
        $('#' + id).dialog('open');
    });
    return false;
}

function addDialog(selector) {
    $(selector).dialog({
        width: 500,
        autoOpen: false,
        modal:true
    });
}


function click_to_open_dialog(selector, id, url) {
    $(selector).click(function() {
        open_ajax_dialog(id, url);
    });
}


function ajaxUpdate(id, url) {
    $('#' + id).html('<p class=loading>Ladataan</p>').load(url);
}

function publishToStream(message, header, action_link, ready_callback) {
    FB.ensureInit(function () {
        FB.Connect.streamPublish(message, null, action_link, '', header, ready_callback);
    });
}

function publishToAreenaStream(message, header, action_link, ready_callback) {
    FB.ensureInit(function () {
        FB.Connect.streamPublish(message, 219582616872, action_link, '', header, ready_callback);
    });
}

function disable_buttons() {
    $("button").addClass("ui-state-disabled");
    $("button").attr('disabled', 'disabled');
}

function disableButton(selector) {
    $(selector).addClass("ui-state-disabled");
    //$(selector).attr('disabled', 'disabled');
}

function enableButton(selector) {
    $(selector).removeClass("ui-state-disabled");
    //$(selector).attr('disabled', '');
}

function blockDialogWithMessage(message) {
    $('.ui-dialog').block({ message: "<h3 class='loading'>" + message + "</h3>",css:{width:'50%'}});
}