var estoniaOldOnload = window.onload;
var estoniaInstance = null;

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

    window.estoniaInstance = new estonia();
    estoniaInstance.init();
}

estonia = function()
{
    this.search = null;
    this.searchInputs = {};
}
estonia.contentLoaded = function()
{
    if (window.onContentLoad)
    {
        window.onContentLoad();
    }
}

estonia.prototype.init = function()
{
    this.initFontSizeSwitches();
    this.initExternalLinks();
}

estonia.prototype.initFontSizeSwitches = function()
{
    var switchBox = document.getElementById('toolsBox');

    var forms = switchBox.getElementsByTagName('form');
    var sizeChangeForms = [];

    for (var i=0; i<forms.length; i++)
    {
        if (forms[i].className != 'fontSizeChange')
        {
            continue;
        }
        sizeChangeForms[sizeChangeForms.length] = forms[i];
    }

    var script = this;
    for (var i=0; i<sizeChangeForms.length; i++)
    {
        sizeChangeForms[i].onsubmit = function()
        {
            return script.submitFormAsBlock( this );
        }
    }
}

estonia.prototype.submitFormAsBlock = function(form)
{

    Blocks.submitFormAsBlock(form, 'changeSize', this.processFontSizeSwitchResponse, this);
    return false; // prevent full page form submit
}

estonia.prototype.processFontSizeSwitchResponse = function (xmlhttp, script)
{
    if (xmlhttp.readyState != 4)
    {
        return;
    }

    var sizeClass = xmlhttp.responseText;

    var content = document.getElementById('content');
    if (!content)
    {
        return;
    }

    content.className = 'content '.concat(sizeClass);

}

estonia.prototype.initExternalLinks = function()
{
    var currentUrl = document.location.href.toLowerCase();
    var schemeEnd = currentUrl.indexOf('://');
    if (schemeEnd == -1)
    {
        return;
    }
    var firstSlash = currentUrl.indexOf('/', schemeEnd + 3);

    if (firstSlash == -1)
    {
        var baseUrl = currentUrl.concat('/');
    }
    else
    {
        var baseUrl = currentUrl.substr( 0, firstSlash + 1 );
    }

    var richtexts = this.getElementsByClassName('richtext');
    for (var i=0; i<richtexts.length; i++)
    {
        var links = richtexts[i].getElementsByTagName('a');

        for (var j=0; j<links.length; j++)
        {
            var url = links[j].href.toLowerCase();
            if (!url.match( /(http)(s?)(\:\/\/)/ ))
            {
                continue; // skip non http urls (such as mailto)
            }

            if (url.substring(0, baseUrl.length) == baseUrl)
            {
                continue; // skip internal links
            }
            links[j].target = '_blank';
        }
    }

    return;
}



estonia.prototype.getElementsByClassName = function(c)
{
    var result = [];
    var pattern = new RegExp('\\b' + c + '\\b');
    var nodes = document.getElementsByTagName('*');

    for (var i = 0; i < nodes.length; i++)
    {
        if (!pattern.test( nodes[i].className ))
        {
            continue;
        }
        result[result.length] = nodes[i];
    };

    return result;
}
