vanilla.namespace('biknok.common');

biknok.common.field = 
{
    maxsize : function(field, nbChars)
    {
	field = $(field);
	var pos	    = field.position();
	var height  = field.outerHeight();
	var width   = field.outerWidth();

	var counter = $("<span>0</span>").addClass("counter").insertAfter(field);
	counter.css({position : "absolute", top : (pos.top + height - counter.outerHeight()), left : (pos.left + width)})

	var f = function()
	{
	    var f = $(this);
	    var l = f.val().length;

	    if ( l > nbChars )
	    {
	        f.get(0).value = f.val().substr(0, nbChars);
	        l = nbChars;
	    }

	    counter.text(l + " / " + nbChars);
	};

	field.keyup(f).mouseup(f).change(f).each(f);
    },

    country : function(parent)
    {
	$("div.field.country input.radio", parent).click
	(
	    function()
	    {
		$(this).change();
	    }
	)
	.change
	(
	    function(e, init)
	    {
		if ( this.checked )
		{
		    var visible = $(this).val() == "false";
		    var div	= $("div.field.country div.more", parent);

		    if ( init )
		    {
			div.toggle(visible);
			return;
		    }

		    if ( visible )
		    {
			div.slideDown("fast").find("input").focus(); 
		    }
		    else
		    {
			div.slideUp("fast");
		    }
		}
	    }
	)
	.trigger("change", true);

    }
}

biknok.common.message =
{
    draw : function(ref, msg)
    {
	ref = $(ref);

	var message = $("<div class=\"message\"></div>").text(msg.message);
	var pos	    = ref.offset();
	var width   = ref.outerWidth();
	var height  = ref.outerHeight();
	var bWidth  = $("body").width();

	$("<div class=\"messagePopupContainer\"></div>")
	    .addClass(msg.type)
	    .append(message)
	    .css({display:"none", position:"absolute", top:(pos.top+height), right:((bWidth-pos.left)-width/2)}) 
	    .appendTo($("body"))
	    .fadeIn().delay(3000).fadeOut
	    (
		function()
		{
		    $(this).remove();
		}
	    );
    }
};

biknok.common.flyingItem =
{
    fadeOn : function(type, pos)
    {
	var pos = pos.offset();

	$("<div class=\"flyingItem\"></div>")
	    .addClass(type)
	    .css({position:"absolute", top:pos.top, left:pos.left})
	    .appendTo($("body"))
	    .wait(100).fadeOut
	    (
		function()
		{
		    $(this).remove();
		}
	    );
    },

    flyTo : function(type, from, to)
    {
	var fromPos = from.offset();
	var toPos   = to.offset();

	var fly = $("<div class=\"flyingItem\"></div>")
	    .addClass(type)
	    .css({position:"absolute", top:fromPos.top, left:fromPos.left})
	    .appendTo($("body"));

	fly.animate
	(
	    {top:(toPos.top+1), left:(toPos.left+to.innerWidth() - fly.width())}, 1000, 
	    function()
	    {
		$(this).remove();
	    }
	);
    }
}

