﻿// WebRequest.js

var hash = new Array();
var scoreQuery = null;
var isExecuting = false;
            
function registerScoreListener(ideaID, control)
{
    var scoreSpan = $get(control);
    
    if(hash[ideaID] == null)
    {
        hash[ideaID] = new Array();
        if(scoreQuery == null)
            scoreQuery = ideaID;
        else
            scoreQuery = scoreQuery + "|" + ideaID;
    }
        
    var len = hash[ideaID].length;
    hash[ideaID][len] = scoreSpan;
}

function pageLoad()
{
    self.setInterval('GetScores()', 5000);
}

// This function performs a GET Web request 
// to retrieve  information from the Url specified in 
// the query string. 
function GetScores()
{
    if(isExecuting)
        return;
    isExecuting = true;
    
    var wRequest =  new Sys.Net.WebRequest();
    wRequest.set_url(webServerUrl+'/Points.ashx?'+scoreQuery);  
    wRequest.set_httpVerb("GET");
    wRequest.add_completed(OnScoreRequestCompleted);
    wRequest.invoke();  
       
}

// This the handler for the Web request completed event
// that is used to display return data.
function OnScoreRequestCompleted(executor, eventArgs) 
{
    isExecuting = false;
     
    if(executor.get_responseAvailable()) 
    {
        ParseScoreResult(executor.get_responseData());
    }
    else
    {
        if (executor.get_timedOut())
            alert("Timed Out");
        else
            if (executor.get_aborted())
                alert("Aborted");
    }
}

function ParseScoreResult(result)
{
    var pairs = result.split("|");
    for(var i = 0; i < pairs.length; i++)
    {
        var tuple = pairs[i].split(":");
        var ideaID = tuple[0];
        var score = tuple[1];
        for(var key in hash)
        {
            for(var j in hash[key])
            {
                if(ideaID == key)
                    hash[key][j].innerHTML = score;
            }
        }
    }
}

if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();