/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * Tuxes3 wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Tuxes3
 * ----------------------------------------------------------------------------
 */
(function($)
{
	var settings;
    $.fn.tx3TagCloud = function(options)
    {

    	//
    	// DEFAULT SETTINGS
    	//
    	settings = $.extend({
    		multiplier		: 1
    	}, options);
    	main(this);

    }

    function main(element)
    {
    	// adding style attr
    	element.addClass("tx3-tag-cloud");
    	addListElementFontSize(element);
    }

    /**
     * calculates the font size on each li element 
     * according to their data-weight attribut
     */
    function addListElementFontSize(element)
    {
    	var hDataWeight = -9007199254740992;
    	var lDataWeight = 9007199254740992;
    	$.each(element.find("li"), function(){
    		cDataWeight = getDataWeight(this);
    		if (cDataWeight == undefined)
    		{
    			logWarning("No \"data-weight\" attribut defined on <li> element");
    		}
    		else
    		{
    			hDataWeight = cDataWeight > hDataWeight ? cDataWeight : hDataWeight;
    			lDataWeight = cDataWeight < lDataWeight ? cDataWeight : lDataWeight;
    		}
    	});
    	$.each(element.find("li"), function(){
    		var dataWeight = getDataWeight(this);
    		var percent = Math.abs((dataWeight - lDataWeight)/(lDataWeight - hDataWeight));
    		$(this).css('font-size', (1 + (percent * settings['multiplier'])) + "em");
    	});

    }

    function getDataWeight(element)
    {
    	return parseInt($(element).attr("data-weight"));
    }

    function logWarning(message)
    {
    	console.log("[WARNING] " + Date.now() + " : " + message);
    }

}(jQuery));
