﻿// JScript File

TagCloudObj = function (minsize, maxsize, link, sort, jsonobj, startindex, endindex) {
    var minvalue = 9999;
    var maxvalue = 0;
    var keys = new Array();
    var tagclouddata = new Array();

    if (jsonobj == null || jsonobj.result == null || jsonobj.result.groups == null || jsonobj.result.groups.item < 1) {
        return;
    }

    var items = jsonobj.result.groups.item;

    var name = "";
    var values;
    var value;

    //fix up array values
    for (var i = 0; i < items.length; i++) {
        name = items[i].name;
        keys[keys.length] = name;
        values = items[i].value.split(',');
        value = 0;
        for (j = 0; j < values.length; j++) {
            value += parseInt(values[j]);
        }
        tagclouddata[name] = value;
        if (value > maxvalue) {
            maxvalue = value;
        }
        if (value < minvalue) {
            minvalue = value;
        }
    }

    if (sort != "False") {
        keys = keys.sort(caseInsensitiveSort);
    }

    var spread = maxvalue - minvalue;
    step = (maxsize - minsize) / spread;
    size = 0;

    if (startindex < 0 || startindex > keys.length) {
        startindex = 0;
    }
    if (endindex <= 0 || endindex > keys.length) {
        endindex = keys.length - 1;
    }

  
    for (var i = startindex; i < endindex; i++) {
        size = Math.round(minsize + ((tagclouddata[keys[i]] - minvalue) * step));
        var templink = link.replace("{key}", keys[i]);
        if (i != (endindex - 1)) {
            document.write("<a href=\"" + templink + "\" style=\"font-size:" + size + "px\">" + keys[i] + "</a>, ");
        }
        else {

            document.write("<a href=\"" + templink + "\" style=\"font-size:" + size + "px\">" + keys[i] + "</a>");

        }
    }
}

function caseInsensitiveSort(a, b) {
    var ret = 0;
    try {
        a = a.toLowerCase(); b = b.toLowerCase();
        if (a > b)
            ret = 1;
        if (a < b)
            ret = -1;
    }
    catch (err) {

    }
    return ret;
}

