﻿function showError(placeholderId, title, messages)
{

    var $placeholder = $("#" + placeholderId);
    $placeholder.empty();
    
    if (messages && messages.length != 0)
    {
        
        var $title = $("<div/>").addClass("title").text(title);
        var $messages = $("<ul/>");

        for (var i = 0; i < messages.length; i++)
        {
            $messages.append($("<li/>").text(messages[i]));
        }

        $("<div/>").
            addClass("errorBox").
            appendTo($placeholder).
            append($("<div/>").
                addClass("errorBoxInternal").
                append($("<div/>").
                    addClass("errorBoxIcon").
                    append($title).
                    append($messages)));

    }
    else
    {

        $("<div/>").
            addClass("errorBox").
            appendTo($placeholder).
            append($("<div/>").
                addClass("errorBoxInternal").
                append($("<div/>").
                    addClass("errorBoxIcon").
                    text(title)));

    }

}

function createEntryPageUrl(entryId)
{
    return "Entry.aspx?ID=" + entryId;
}

function createEntryImageSrc(entryId, profile)
{
    throw "NotSupportedAnymore";

}

var maxLengthValidator = {};

function TextfieldCharactersCounter(fieldId, counterId, maxLength)
{

	var $counter;
	var $field;

    $(document).ready(function()
    {
		$counter = $("#" + counterId);
		$field = $("#" + fieldId);
		update($field.get(0));
		$field.bind("keyup keydown change cut paste", function() { update() });
		maxLengthValidator[fieldId] = maxLength;
    });

    // private    
	function update()
	{
		var charsLeft = maxLength - $field.val().length;
		if (charsLeft == 0)
		{
			$counter.text("You have no characters left.");
		}
		else if (charsLeft < 0)
		{
		    $counter.toggleClass("errorLabel", true);
			$counter.text("You are " + (-charsLeft) + " characters over limit.");
		}
		else
		{
		    $counter.toggleClass("errorLabel", false);
		    $counter.text("You have " + charsLeft + " characters left.");
        }
	}

}

function ValidateMaxLengthValidator(source, arguments)
{
    var maxLength = maxLengthValidators[source.id];
    arguments.IsValid = (arguments.Value.length <= maxLength);
}

function FullScreenMessage(htmlContent)
{

    var $overlay;
    var $message;
    
    init();
    
    // constuctor
    function init()
    {

	    $overlay = $("<div/>").
		    addClass("fullScreenMesssageOverlay").
		    css("position", "absolute").
		    css("top", "0px").
		    css("left", "0px").
		    appendTo($("body"));

	    $message = $("<div/>").
		    addClass("fullScreenMesssage").
		    css("position", "absolute").
		    append($("<div/>").
		        addClass("messageBody").
		        html(htmlContent)).
		    append($("<div/>").
		        addClass("messageButtons").
		        append($("<input type=\"button\"/>").
		            attr("value", "Close").
		            click(closeInternal))).
		    appendTo($("body"));

	    adjustPositions();
	    $(window).resize(adjustPositions);
    
    }

    // private
	function adjustPositions()
	{
	    
		var documentWidth = $(document).width();
		var documentHeight = $(document).height();
		var documentScrollTop = $(document).scrollTop();
		
		var messageLeft = (documentWidth - $message.outerWidth()) / 2;
		var messageTop = documentScrollTop + 200;

		$overlay.
			css("width", documentWidth + "px").
			css("height", documentHeight + "px");

		$message.
			css("left", messageLeft + "px").
			css("top", messageTop + "px");

	}

	// private 
	function closeInternal()
	{
	    $message.remove();
	    $overlay.remove();
	}

	// public
	this.close = function()
	{
	    closeInternal();
	}

}
