var highlightsPageOldOnload = window.onload;

window.onload = function()
{
    if (typeof highlightsPageOldOnload == 'function')
    {
         highlightsPageOldOnload();
    }

    window.highlightsPageInstance = new highlightsPage();
    highlightsPageInstance.init();
}

highlightsPage = function ()
{
    this.highlightsBox = null;
    this.highlights = null;
}


highlightsPage.prototype.init = function()
{
    this.initHighlightDetails();
}

highlightsPage.prototype.initHighlightDetails = function()
{
    this.highlightsBox = document.getElementById('highlights');
    if (!this.highlightsBox)
    {
        return;
    }

    this.locateHighlights();

}

highlightsPage.prototype.locateHighlights = function()
{
    var highlights = [];
    for (var i=0; i<this.highlightsBox.childNodes.length; i++)
    {
        var node = this.highlightsBox.childNodes[i];
        if (
            (!node.tagName)
            ||
            (node.tagName.toLowerCase() != 'div')
            ||
            (node.className != 'highlight')
        )
        {
            continue;
        }

        this.initHighlight(node);
        highlights[highlights.length] = node;
    }

    this.highlights = highlights;
}

highlightsPage.prototype.initHighlight = function(highlight)
{
    var script = this;
    highlight.detailsBox = null;
    var divs = highlight.getElementsByTagName('div');
    for (var j=0; j<divs.length; j++)
    {
        if (highlight.detailsBox != null)
        {
            continue;
        }
        if (divs[j].className == 'details')
        {
            highlight.detailsBox = divs[j];
        }
    }

    if (!highlight.detailsBox)
    {
        return;
    }

    highlight.fullDetailsLoaded = false;
    highlight.fullDetailsVisible = false;

    var links = highlight.getElementsByTagName('a');
    for (var j=0; j<links.length; j++)
    {

        var link = links[j];
        this.initBlockLink( highlight, link );
    }
    return;
}

highlightsPage.prototype.initBlockLink = function ( highlight, link )
{
    var script = this;
    link.blockUrl = link.href + '&block=fullDetails&random=' + Math.random();

    link.onclick = function()
    {
        if (!highlight.fullDetailsLoaded)
        {
            var el = this;
            loadXmlHttp(el.blockUrl, function(xmlhttp, params) { script.fullDetailsResponse(xmlhttp, params); }, highlight, 'get', null, true);
            el = null;
        }
        else
        {
            script.toggleFullDetails( highlight );
        }
        if (typeof this.blur != 'undefined')
        {
            this.blur();
        }
        return false;
    }
}

highlightsPage.prototype.fullDetailsResponse = function(xmlhttp, highlight)
{
    var script = this;
    if (!highlight.fullDetailsBox)
    {
        highlight.fullDetailsBox = document.createElement('div');
        highlight.fullDetailsBox.className = 'fullDetails';
        highlight.detailsBox.appendChild( highlight.fullDetailsBox );
    }

    highlight.fullDetailsBox.innerHTML = xmlhttp.responseText;
    highlight.fullDetailsLoaded = true;

    var closeButton = document.createElement('img');
    closeButton.src       = 'images/iconClose.gif';
    closeButton.className = 'collapseIcon';
    closeButton.onclick = function()
    {
        script.toggleFullDetails( highlight, closeButton );
        this.blur();
    }
    highlight.appendChild( closeButton );


    this.toggleFullDetails( highlight );
}

highlightsPage.prototype.toggleFullDetails = function( highlight )
{
    highlight.fullDetailsVisible = !highlight.fullDetailsVisible;
    highlight.className = (highlight.fullDetailsVisible) ? 'highlight fullDetailsOpen' : 'highlight';
}
