/**
 * @author Anna Nordin
 */

var loadingImage = '<p class="loading"><img src="protestIcons/loader018.gif" alt="Loading"/></p>';

$(document).ready(function() {
    $('.splashWrapper').css('height', $(document).height() + 'px');

    $('.commentLink').click(setSplash);
    $('.signLink').click(setSplash);
    $('.abuseLink').click(setSplash);
    $('.splashClick').click(setSplash);

    setInputCount();
    registerMoreSignatures();
    registerMoreComments();

    setMapHover();
    registerRate();

    $('#map a').text("");
    
    $('.curCount').hover(function(e) {
        displayTooltip("Antal ifyllda tecken.", e.pageY - 10, e.pageX + 30);
    },
    function() {
        $('.toolTip').remove();
    })

    $('img').each(function() {
        registerToolTip($(this), $(this).attr('alt'));
    })

    $('#protestUnderskrift .padlinks span:gt(10)').hide();
})

function registerToolTip(element, text) {
    $(element).hover(function(e) {
        var large = false;
        if($(element).hasClass('largeTip'))
            large = true;
        displayTooltip(text, e.pageY - 10, e.pageX + 30, large);
    },
    function() {
        $('.toolTip').remove();
    })
}
function registerRate() {
    $('.animation').show();
    $('.input').hide();
    var defaultRadio = Math.floor($('.input input[type = "radio"]').size() / 2);

    $('.input input[type = "radio"]:eq(' + defaultRadio + ')').attr('checked', 'checked');

    $('.animation div').removeClass('hover');
    $('.animation div:lt(' + (defaultRadio + 1) + ')').addClass('hover');
    $('.rate .animation div').hover(rate)
}
function rate() {
    var index = $(this).index();
    $('.animation div').removeClass('hover');
    $('.animation div:lt(' + (index + 1) + ')').addClass('hover');
    $('.input input[type = "radio"]:eq(' + index + ')').attr('checked', 'checked');

}

function displayTooltip(text, top, left, large) {

    var size = 'Small';
    if(large)
        size = 'Large';
    
    var toolTip = $('<p></p>');
    $(toolTip).text(text);
    $(toolTip).addClass('toolTip' + size);
    

    var parentTop = $('<p></p>');
    $(parentTop).addClass('toolTipTop' + size);
    $(parentTop).addClass('toolTip');

    var parentBottom = $('<p></p>');
    $(parentBottom).addClass('toolTipBottom' + size);

    $(parentBottom).append(toolTip);
    $(parentTop).append(parentBottom);
    $('body').prepend(parentTop);


    var maxBottomPx = $(window).scrollTop() + $(window).height();
    var parentBottomPx = top + $(parentTop).height() + 20;

    if(parentBottomPx > maxBottomPx)
        top = top - (parentBottomPx - maxBottomPx) - (large ? 10 : 10);


    $(parentTop).css({
        'left' : left,
        'top' : top
    });


}


function setMapHover() {
    $('#map a').hover(function() {
        var letterCode = $(this).attr('id').replace('map', '');
        $('#mapList' + letterCode).addClass('highlight');
    },
    function() {
        $('#protestmap li').removeClass('highlight');
    })
        
    $('#protestmap li').hover(function() {
        var letterCode = $(this).attr('id').replace('mapList', '');
        var mapPart = $('#map' + letterCode);
        var parentId = $(mapPart).parent().attr('id');
        $(mapPart).addClass(parentId + 'hover');
    },
    function() {
        $('#mapImg a').removeClass();
    })
}

function registerMoreSignatures() {
    $('#protestUnderskrift .padlinks a').click(getMoreSignatures);
}

function getMoreSignatures() {
    var display = function(data, strStatus) {
        var comments = $(data).find('#protestUnderskrift');
        $('#protestUnderskrift').replaceWith($(comments));
            $('#protestUnderskrift .padlinks span:gt(10)').hide();
        registerMoreSignatures();
    }
    $('#protestUnderskrift').children().remove();
    $('#protestUnderskrift').append(loadingImage);

    $.get(
        $(this).attr('href'), // + "?nocache=" + new Date().getTime(),
        {},
        display
        );

    return false;
}

function registerMoreComments() {
    $('#protestKommentar .padlinks a').click(getMoreComments);
}

function getMoreComments() {
    var display = function(data, strStatus) {
        var comments = $(data).find('#protestKommentar');
        $('#protestKommentar').replaceWith($(comments));
        registerMoreComments();
    }
    $('#protestKommentar').children().remove();
    $('#protestKommentar').append(loadingImage);

    $.get(
        $(this).attr('href'), // + "?nocache=" + new Date().getTime(),
        {},
        display
        );

    return false;
}

function setSplash() {
    $(splash).remove();

    var splashWrapper = $('<div></div>');
    $(splashWrapper).addClass('splashWrapper');
    $(splashWrapper).css('height', $(document).height() + 'px');

    var splash = $('<div></div>');
    $(splash).addClass('splash');
    
    var close = $('<a class="close" href="javascript:void(0)">Stäng</a>');

    $(close).click(function() {
        $(splashWrapper).remove();
        $(splash).remove();
    })
        
    $(splash).append($(close));
    $(splash).append('<div class="splashContent"></div>');
    $('body').prepend($(splashWrapper));
    $('body').prepend($(splash));

    var publishData = function(data, strStatus) {
        var content = $(data).find('#onleft');
        var info = $(data).find('#middle').children().not('h2');

        $('.splashContent').children().remove();
        $('.splashContent').append(content);
        $('.splashContent').append($('<div></div>').append(info).css({
            'font-style' : 'italic',
            'clear' : 'both',
            'padding-top' : '20px'
        }));
        $(splash).css('width', ($(content).width() + 40) + 'px');

        var center = getVerticalCenterPoint();
        var splashHeight = $(splash).height();

        center = center - splashHeight / 2;
        if(center < 20)
            center = 20;
        
        $(splash).css('top', center);
            
        setInputCount();
        $('img').each(function() {
            registerToolTip($(this), $(this).attr('alt'));
        })

        

        var action = $(content).children('form').attr('action');

        $(content).children('form').submit(function() {

            $(splash).children('.splashContent').children().remove();
            $(splash).children('.splashContent').append(loadingImage);
            $.post(
                action + "&nocache=" + new Date().getTime(),
                $($(this)).serialize(),
                publishData
                );

            return false;
        })
    }

    $(splash).children('.splashContent').children().remove();
    $(splash).children('.splashContent').append(loadingImage);

    $('.splashContent .splashClick').click(setSplash);

    var center = getVerticalCenterPoint();
    var splashHeight = $(splash).height();

    center = center - splashHeight / 2;
    if(center < 20)
        center = 20;

    $(splash).css('top', center);

    $.get(
        $(this).attr('href'), // + "?nocache=" + new Date().getTime(),
        {},
        publishData
        );
        
    return false;
}

function setInputCount() {
    $('#main input[type = "text"],#main input[type = "password"], #main textarea').each(function() {
        $(this).after('<span class="curCount">' + $(this).val().length + '</span>');
        $('.curCount').hide();
        $('.curCount').css('color', '#ffed4f');
    })
    $('#main input[type = "text"], #main input[type = "password"], #main textarea').keyup(function() {
        var current = $(this).parent().children('.curCount');
        $(current).text($(this).val().length);
    })
    // On focus, show counter
    $('#main input[type = "text"], #main input[type = "password"], #main textarea').focus(function() {
        var current = $(this).parent().children('.curCount');
        $(current).css('display', 'inline');
        var defaultColor = '#FEA000';
        $(current).animate({
            color:defaultColor
        },  1000);
        
    })
    // Out of focus, hide counter
    $('#main input[type = "text"], #main input[type = "password"], #main textarea').blur(function() {
        $(this).parent().children('.curCount').hide();

    })
}

function getVerticalCenterPoint() {
    var middle = $(window).scrollTop() + $(window).height() / 2;
    return middle;
}

