﻿var items = new Array;
var types = new Array;

function getRegularPluralForm(word, count)
{
    if ( (count == 0) || (count > 1) )
    {
        return word + 's';
    }
    
    return word;
}

function registerAjaxNumberLoader(itemType, itemId, baseId) {
    if (items[itemType] == null) {
        items[itemType] = new Array;
        items[itemType + '_tags'] = new Array;
        types.push( itemType );
        types.push( itemType + '_tags' );
    }
    
    items[itemType].push( itemId );
    items[itemType + '_tags'].push( baseId );
}

function parseXML(xmlString) {
   return Try.these(
          function() { var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
                           xmlDoc.loadXML(xmlString);
                           
                           return xmlDoc; },
                           
          function() { return new DOMParser().parseFromString(xmlString, 'text/xml'); }
           ) || null;
}

    
function updateNumbers(request) {
    xml = parseXML(request.responseText);
    response = xml.getElementsByTagName('response')[0];
    
    for(var i = 0; i < response.childNodes.length; i++) {
        var typeEntry = response.childNodes[i];
        type = typeEntry.tagName;
        
        
        for(var j = 0; j < typeEntry.childNodes.length; j++) {
            var base_id = typeEntry.childNodes[j].getAttribute('tag');
        
            var views_id = base_id + '_views';
            var comments_id = base_id + '_comments';
            var span_id = base_id;
            
            var views = typeEntry.childNodes[j].getAttribute('views');
            var comments = typeEntry.childNodes[j].getAttribute('comments');

            
            var viewsSpan = document.getElementById(views_id);
            var commentsSpan = document.getElementById(comments_id);
            var mainSpan = document.getElementById(span_id);
            
            if (viewsSpan != null)
            {
                viewsSpan.innerHTML = views + " " + getRegularPluralForm('View', parseInt(views));
            }
            
            if (commentsSpan != null)
            {
                commentsSpan.innerHTML = comments + " " + getRegularPluralForm('Comment', parseInt(comments));
            }
            
            if (mainSpan != null)
            {          
                mainSpan.style.display = 'inline';
            }
        }
    }
}

function requestNumbers(){
    var request = '?';
           
    for(var i = 0; i < types.length; i++) {
        var type = types[i];
        request += '&' + type + '=';
        
        for(var j = 0; j < items[type].length; j++) {
            request += items[type][j] + ',';
        }
    }
    
    var req = new Ajax.Request(serverPath + '/WebParts/Numbers.aspx' + request,
			         {method:'get', onComplete: updateNumbers} );
}