function $(id)
{
    return document.getElementById(id);
}

function nl2br(str)
{
    if(typeof(str)=="string") return str.replace(/(\r\n)|(\n\r)|\r|\n/g,"<BR>");
        else return str;
}

function addEvent(obj, type, fn) {
  if (obj.addEventListener) {
    obj.addEventListener(type, fn, false);
  } else if (obj.attachEvent) {
    obj["e"+type+fn] = fn;
    obj[type+fn] = function() {obj["e"+type+fn](window.event); }
    obj.attachEvent("on"+type, obj[type+fn]);
  }
}

function Tags(tags)
{
    var obj = new Object();

    obj.comma = '|';
    obj.tags = new Array();

    obj.construct = function(tags)
    {
         obj.tags = tags.split(obj.comma);
        obj.tags.shift();
        obj.tags.pop();
    }

    obj.ToArray = function()
    {
        return obj.tags;
    }

    obj.ToString = function(comma)
    {
        if(typeof comma == "undefined" || comma == null) {
            comma = ', ';
        }
        return obj.tags.join(comma);
    }

    obj.construct(tags);
    return obj;
}

function TagsCloud(tags)
{
    var obj = new Object();

    obj.tags = false;

    obj.construct = function(tags)
    {
        if(typeof tags != "object") {
            return -1;
        }
        obj.tags = tags;
    }

    obj.parse = function(url)
    {
        var tags = obj.tags.tags
        var ret = '';
        for(var i = 0; i < tags.length; i++) {
            ret += '<a href="' + url + '/' + tags[i] +'">' + tags[i] + '</a>';
            if(i+1<tags.length) {
                ret += ', ';
            }
        }
        return ret;
    }

    obj.construct(tags);
    return obj;
}
