$(document).ready(function() {

    $("#social-icons").append("<span class='icon-shadows'> </span>");

    /* Language Selector =========================================================== */
    $(".dropdown dt a").click(function() {
        $(".dropdown dd ul").toggle();
    });
    $(".dropdown dd ul li a").click(function() {
        var text = $(this).html();
        $(".dropdown dt a span").html(text);
        $(".dropdown dd ul").hide();

        // Ask AJAX for relevant FQDN
        var errorDiv = $("<div>").css('padding', '20px').css('text-align', 'left'); ;
        SendJsonRequest({
            url: "/ajax/GetFQDN.ashx",
            data: {
                culturename: $('dl[id$="languageSelector"]').find("dt a span.value").html()
            },
            error: function(request, textStatus, errorThrown) {
                var errorContent = $("<p>").css('color', '#000000').html(errorThrown + '<br />' + textStatus);
                errorContent.appendTo(errorDiv);
                AjaxError(textStatus, errorThrown, errorDiv);
            },
            success: function(data, textStatus) {
                if (data.ResponseCode == 0) {
                    document.location.href = data.ExtraValues;
                }
                else {
                    // Exception was caught, display error
                    var errorContent = $("<p>").css('color', '#000000').html(data.FailureMessage);
                    errorContent.appendTo(errorDiv);
                    ShowValidationErrors(errorContent);
                }
            }
        });
    });

    $(document).bind('click', function(e) {
        var $clicked = $(e.target);
        if (!$clicked.parents().hasClass("dropdown"))
            $(".dropdown dd ul").hide();
    });
    /* Language Selector =========================================================== */

    // Launch rel="popup" links in a new window
    $('a[rel=popup]').click(function() { window.open(this.href); return false; });

    // Turn dropdowns into nicely styled elements
    $('select').selectBox();

    // Preload css images
    $.preloadCssImages();

    // Mark accordions
    $('#accordion').accordion({
        autoHeight: false
    });

    // Render Google plus ones
    var po = document.createElement('script');
    po.type = 'text/javascript';
    po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(po, s);

    // Assign Logout button script
    $('a.logout').css('cursor', 'pointer').bind('click', function(e) {
        var errorDiv = $("<div>").css('padding', '20px').css('text-align', 'left'); ;
        SendJsonRequest({
            url: "/ajax/Logout.ashx",
            error: function(request, textStatus, errorThrown) {
                var errorContent = $("<p>").css('color', '#000000').html(errorThrown + '<br />' + textStatus);
                errorContent.appendTo(errorDiv);
                AjaxError(textStatus, errorThrown, errorDiv);
            },
            success: function(data, textStatus) {
                document.location.href = data.Url;
            }
        });
    });

    $('.row').bind('click', function() {
        if ($(this).attr('data-prid'))
            document.location.href = $(this).attr('data-prid');
    });

    $('li.get-bonus a').removeAttr('href');

    // Assign achievement fancybox
    $('li.achievements').bind('click', function() {
        var achievementClass = $.trim($(this).attr('class').replace(/achievements/g, ''));
        
        $.fancybox({
            transitionIn: 'elastic',
            transitionOut: 'elastic',
            href: '/media/images/achievements/' + achievementClass + '.png',
            title: $(this).attr('title')
        });
    });

    // Assign achievement tooltips
    $('li.achievements[title]').qtip({
        position: {
            my: "bottom center",
            at: "top center"
        },
        style: {
            classes: 'ui-tooltip-blue'
        }
    });
});

function SendJsonRequest(settings) {
    $.ajax({
        type: "POST",
        url: settings.url,
        data: settings.data,
        dataType: "json",
        async: false,
        error: settings.error,
        success: settings.success
    });
}

function SendAsyncJsonRequest(settings) {
    $.ajax({
        type: "POST",
        url: settings.url,
        data: settings.data,
        dataType: "json",
        async: true,
        error: settings.error,
        success: settings.success
    });
}

function ShowValidationErrors(errorContainer) {
    var errorDiv = $("<div>").css('width', '500px');
    var errorImage = $("<img>");
    errorImage.attr('alt', 'Error in Submission').attr('src', '/media/images/cross.png').css('float', 'left');
    errorImage.appendTo(errorDiv);

    var errorContent = $("<div>").css('width', '425px');
    errorContent.addClass('errors').css('padding-left', '10px').html(errorContainer.html());
    errorContent.find('li').css('color', '#000000');
    errorContent.appendTo(errorDiv);

    $.fancybox({
        'transitionIn': 'none',
        'transitionOut': 'none',
        'content': errorDiv
    });
}

function ShowSuccess(successText) {
    var div = $("<div>").css('width', '500px');
    var image = $("<img>");
    image.attr('alt', 'Success!').attr('src', '/media/images/tick.png').css('float', 'left');
    image.appendTo(div);

    var textContent = $("<div>").css('width', '425px');
    textContent.addClass('errors').css('padding-left', '10px').html(successText);
    textContent.find('p').css('color', '#000000').css('font-size', '105%');
    textContent.appendTo(div);    
    
    $.fancybox({
        'transitionIn': 'none',
        'transitionOut': 'none',
        'content': div
    });
}

function AjaxError(textStatus, errorThrown, content) {    
    content.find('.validationTitle').html(serverError);
    content.find('ul').empty();
    $('<li>').html(errorThrown).appendTo(content.find('ul'));
    $('<li>').html(textStatus).appendTo(content.find('ul'));
  
    ShowValidationErrors(content);
}

function cvAccount_Validate(sender, args) {
    var isValid = true;
    var pokerRoomId = $('input[id$="hidPokerRoom"]').val();

    if (pokerRoomId > 0) {
        // Get messages from ajax handler
        SendJsonRequest({
            url: "/ajax/PokerRoomDetailsErrorMessages.ashx",
            data: {
                "nodeid": pokerRoomId
            },
            error: function (request, textStatus, errorThrown) {
                var errorContent = $("<p>").css('color', '#000000').html(errorThrown + '<br />' + textStatus).appendTo($("<div>"));
                AjaxError(textStatus, errorThrown, errorContent);
            },
            success: function (data, textStatus) {
                if (data.ResponseCode == -1) {
                    // An exception was found
                    var errorContent = $("<p>").css('color', '#000000').html(data.FailureMessage).appendTo("<div>");
                    ShowValidationErrors(errorContent);
                } else {
                    // Success, populate error message
                    var accountMessage = data.Account;

                    if ($.trim(accountMessage) != '') {
                        var errors = $('.errors:last').find('ul');

                        var account = $('span[id$="cvAccount"]');
                        account.html("<li>" + accountMessage + "</li>").show().appendTo(errors);

                        if ($.trim($('input[id$="txtAccount"]').val()) == '')
                            isValid = false;
                    }
                }
            }
        });
    }

    args.IsValid = isValid;
}

