﻿var xmlHttpObj;
var QUEUE = new Array();
var METHOD = new Array();
var QUEUE_BUSY = false;
var queueWatcher = setInterval(execAJAX, 100);

function queueRequest(request, method)
{
    QUEUE.push(request);
    METHOD.push(method);  
}

function execAJAX()
{
    var request;

    if(!QUEUE_BUSY && QUEUE.length > 0)
    {
        QUEUE_BUSY = true;
        request = QUEUE.shift();
        
        xmlHttpObj = getXmlHttpObject();
        xmlHttpObj.onreadystatechange = stateChanged;
        xmlHttpObj.open('GET', request, true);
        xmlHttpObj.send(null);    
    }
}

function getXmlHttpObject()
{ 
    var objXMLHttp = null;

    if (window.XMLHttpRequest)
        objXMLHttp = new XMLHttpRequest();
    else if (window.ActiveXObject)
        objXMLHttp = new ActiveXObject('Microsoft.XMLHTTP');
    
    return objXMLHttp;
}

function stateChanged() 
{
    var json;
    var method;
    
    if (xmlHttpObj.readyState == 4 || xmlHttpObj.readyState == 'complete')
    {
        json = xmlHttpObj.responseText;

        method = METHOD.shift();
        
        eval(method + '(' + json + ')');

        QUEUE_BUSY = false;
    } 
}

function updateGameDates(json)
{
    GAMEDATES = json;
    updateDatePicker();
}

function updateLineScores(json)
{
    LINESCORES = json;
    generateLineScores(false);
}

function updatePlayoffLineScores(json)
{
    LINESCORES = json;
    generateLineScores(true);
}

function updateNews(json)
{
    NEWS = json;
    updateNewsItems();
}

function updateStandings(json)
{
    STANDINGS = json;
    updateStandingsGrid();
}

function updatePlayoffs(json)
{
    PLAYOFFS = json;
    updatePlayoffBracket();
}
