﻿var countryDiv = new Array();
var goldDiv = new Array();
var silverDiv = new Array();
var bronzeDiv = new Array();
var goldCount = new Array();
var silverCount = new Array();
var bronzeCount = new Array();
var totalCount = new Array();
var maxTotalCount = 0;
var maxPixelWidth = 90;
var pixelCoefficient = 0;
var medalTimerID = 0;

for(var item = 1; item <= 5; item++)
{
    var medalTallyItem = document.getElementById("medaltally_item_" + item);
    if(medalTallyItem)
    {
        for(var i = 0; i < medalTallyItem.childNodes.length; i++)
        {
            var medalTallyDiv = medalTallyItem.childNodes[i];
            if(medalTallyDiv.className == "country")
            {
                countryDiv[item] = medalTallyDiv;
            }
            if(medalTallyDiv.className == "medal_bar")
            {
                for(var j = 0; j < medalTallyDiv.childNodes.length; j++)
                {
                    if(medalTallyDiv.childNodes[j].className == "gold_bar")
                    {
                        goldDiv[item] = medalTallyDiv.childNodes[j];
                        goldCount[item] = goldDiv[item].innerHTML;
                        goldDiv[item].innerHTML = "";
                    }
                    if(medalTallyDiv.childNodes[j].className == "silver_bar")
                    {
                        silverDiv[item] = medalTallyDiv.childNodes[j];
                        silverCount[item] = silverDiv[item].innerHTML;
                        silverDiv[item].innerHTML = "";
                    }
                    if(medalTallyDiv.childNodes[j].className == "bronze_bar")
                    {
                        bronzeDiv[item] = medalTallyDiv.childNodes[j];
                        bronzeCount[item] = bronzeDiv[item].innerHTML;
                        bronzeDiv[item].innerHTML = "";
                    }
                }
            }
            if(medalTallyDiv.className == "total")
            {
                for(var j = 0; j < medalTallyDiv.childNodes.length; j++)
                {
                    if(medalTallyDiv.childNodes[j].className == "total_count")
                    {
                        totalCount[item] = medalTallyDiv.childNodes[j].innerHTML;
                    }
                }
            }
        }
    }
}

// remove 4th place if Australia is not in top 4. (i.e. always have only 4 items)
var hasAustraliaExtra = true;
for(var i = 1; i < countryDiv.length; i++)
{
    if(i < 5 && countryDiv[i].innerHTML == "Australia")
    {
        hasAustraliaExtra = false;
    }
}
if(countryDiv[4] && hasAustraliaExtra)
{
    countryDiv[4].parentNode.style.display = "none";
}

// find largest total count
for(var i = 1; i < totalCount.length; i++)
{
    if(totalCount[i])
    {
        if(maxTotalCount < parseInt(totalCount[i]))
        {
            maxTotalCount = parseInt(totalCount[i]);
        }
    }
}
pixelCoefficient = (maxPixelWidth/maxTotalCount);
medalTimerID = setTimeout(function() { MedalWidth(); }, 500);

// adjust width of gold/silver/bronze.
function MedalWidth()
{
    var continueTimer = false;
    for(var i = 1; i < goldCount.length; i++)
    {
        continueTimer = AdjustMedalWidth(goldDiv[i], (pixelCoefficient*parseInt(goldCount[i])), continueTimer);
        continueTimer = AdjustMedalWidth(silverDiv[i], (pixelCoefficient*parseInt(silverCount[i])), continueTimer);
        continueTimer = AdjustMedalWidth(bronzeDiv[i], (pixelCoefficient*parseInt(bronzeCount[i])), continueTimer);
    }
    if(continueTimer)
    {
        medalTimerID = setTimeout(function() { MedalWidth(); }, 5);
    }
    else
    {
        clearTimeout(medalTimerID);
    }
}

// timed adjustment of width
function AdjustMedalWidth(div, maxWidth, continueTimer)
{
    if(div.style.width == "")
    {
        div.style.width = "0px";
    }
    
    var currentWidth = parseInt(div.style.width.replace("px",""));
    
    if(currentWidth < maxWidth)
    {
        div.style.width = (currentWidth + 1) + "px";
        continueTimer = true;
    }
    return continueTimer;
}
