/*
 * jQuery TagCloud plugin 1.0
 *
 * Copyright (c) 2009 Dimitar Ivanov
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
(function ($) {

    $.fn.addtag = function (options) {

        var defaults = {
            aclass: 'delbutton',
            divider: '-',
            prefix: '',
            sclass: 'tagz'
        };

        var options = $.extend(defaults, options);




        return this.each(function (lid) {

            var text = $(this).val();
            var temp = new Array();
            temp = text.split(',');
            for (var i = 0; i < temp.length; i++) {
                var t = temp[i]
					.toLowerCase()
					.replace(/^\s+|\s+$/g, "")
					.replace(/[_|\s]+/g, "-")
					.replace(/[^a-z\u0400-\u04FF0-9-]+/g, "")
					.replace(/[-]+/g, "-")
					.replace(/^-+|-+$/g, "")
					.replace(/[-]+/g, options.divider)
				;
                if (t.length == 0) continue;

                var last_id = ($('a.' + options.aclass).length == 0) ? 'span' + options.prefix + '_0' : $('a.' + options.aclass + ':last').attr('id');
                var lidBits = new Array();
                lidBits = last_id.split('_');


                var lid = parseInt(lidBits[1]) + 1;

                $(document.createElement('span'))
					.attr('class', options.sclass)
					.attr('id', 'span' + options.prefix + '_' + (lid))
					.append(document.createTextNode(temp[i]))
					.prependTo('#' + options.holder_id)
				;
                $(document.createElement('a'))
					.attr('class', options.aclass)
					.attr('id', 'tag' + options.prefix + '_' + (lid))
					.click(function () {
					    $(this).removetag({ id: $(this).parent().attr('id'), holder_id: options.holder_id });
					})
					.append(document.createTextNode('X'))
					.prependTo('span#span' + options.prefix + '_' + lid)
				;
                $(document.createElement('input'))
					.attr('type', 'hidden')
					.attr('name', 'tags_' + options.prefix + '[]')
					.val(temp[i])
					.prependTo('span#span' + options.prefix + '_' + lid)
				;
                $(document.createElement('input'))
					.attr('type', 'hidden')
					.attr('name', 'slugs_' + options.prefix + '[]')
					.val(t)
					.prependTo('span#span' + options.prefix + '_' + lid)
				;

                $('span#span' + options.prefix + '_' + (lid)).appendTo('#' + options.holder_id);
            }
        });

    };

    $.fn.removetag = function (options) {

        var defaults = {};

        var options = $.extend(defaults, options);

        return this.each(function () {
            if ($('#' + options.id).length > 0) {
                $('#' + options.id).remove();
            }
        });

    };

    $.isenter = function (options) {

        var defaults = {};

        var options = $.extend(defaults, options);

        var charCode = (options.event.which) ? options.event.which : options.event.keyCode;
        if (charCode == 13) {
            return true;
        }
    };

})(jQuery);
