var worksPageOldOnload = window.onload;

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

    window.worksPageInstance = new worksPage();
    worksPageInstance.init();
}

worksPage = function ()
{
    this.worksBox = null;
    this.works = null;
}


worksPage.prototype.init = function()
{
    this.initWorkDetails();
}

worksPage.prototype.initWorkDetails = function()
{
    this.worksBox = document.getElementById('works');
    if (!this.worksBox)
    {
        return;
    }

    this.locateWorks();

}

worksPage.prototype.locateWorks = function()
{
    var works = [];
    for (var i=0; i<this.worksBox.childNodes.length; i++)
    {
        var node = this.worksBox.childNodes[i];
        if (
            (!node.tagName)
            ||
            (node.tagName.toLowerCase() != 'div')
            ||
            (node.className != 'work')
        )
        {
            continue;
        }

        this.initWork(node);
        works[works.length] = node;
    }

    this.works = works;

    // workTitle
}

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

    if (!work.detailsBox)
    {
        return;
    }

    work.fullDetailsLoaded = false;
    work.fullDetailsVisible = false;

    var links = work.getElementsByTagName('a');
    for (var j=0; j<links.length; j++)
    {
        var link = links[j];
        if(link.className != "clientHref")
        {
            this.initBlockLink( work, link );
        }
    }
    return;
}

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

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

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

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

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


    this.toggleFullDetails( work );
}

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