/*
 * @(#)loader.js
 */

/*
 * Author: Jianmin Liu
 * Created: 2010/01/02
 */

var loaderTime = new Date();
var loaderVersion = loaderTime.getTime();

function loadJS(fileName)
{
    loadjscssfile(fileName, 'js');
}

function loadCSS(fileName)
{
    loadjscssfile(fileName, 'css');
}

function loadjscssfile(fileName, fileType)
{
    var url = fileName;

    // Add the version parameter to the end of a url
    if (url.match(/\?/i))
    {
        // url already contains other parameters
        url += '&version=' + loaderVersion;
    } 
    else
    {
        // url does not contain any parameters
        url += '?version=' + loaderVersion;
    }

    if (fileType == 'js') // if url is a external JavaScript file
    {
        try
        {
            // inserting via DOM fails in Safari 2.0, so brute force approach
            //
            // The loadjscssfile() method must be called while the HTML page is being 
            // created, as it uses document.write() in order to create the <script> tag 
            // which imports the external JavaScript file. If you called loadjscssfile() 
            // after the page is loaded, it would clobber the contents of the page, as 
            // document.write() would overwrite the document's HTML content.
            //
            // What the escape character does here is prevent the unwanted behavior 
            // of the JavaScript string which contains <script> from being executed
            // as if it were an HTML tag.
            document.write('<script type="text/javascript" src="' + url + '"><\/script>');
        }
        catch (e)
        {
            var fileRef = document.createElement('script');
            fileRef.setAttribute('type', 'text/javascript');
            fileRef.setAttribute('src', url);
            document.body.appendChild(fileRef);
            //document.getElementsByTagName('head')[0].appendChild(fileRef);
        }
    }
    else if (fileType == 'css') // if url is an external CSS file
    {
        try
        {
            document.write('<link rel="stylesheet" type="text/css" href="' + url + '" \/>');
        }
        catch (e)
        {
            var fileRef = document.createElement('link');
            fileRef.setAttribute('rel', 'stylesheet');
            fileRef.setAttribute('type', 'text/css');
            fileRef.setAttribute('href', url);
            document.body.appendChild(fileRef);
            //document.getElementsByTagName('head')[0].appendChild(fileRef);
        }
    }
}

function blockPage()
{
    jQuery.blockUI({
        message: jQuery('#ajaxweaver-loading-shell'),   
        css: {border: '3px solid #a00', width: '300px', cursor: 'default'}
    });
}

function unblockPage()
{
    jQuery.unblockUI();
}

function resizeBlocker() {
    var win = jQuery(window); 
    var wh = win.height();
    var ww = win.width();
    jQuery('div.blockPage').each(function(index) {
        var height = jQuery(this).height();
        var width = jQuery(this).width();
        jQuery(this).css({
            top: (wh-height)/2 + 'px',
            left: (ww-width)/2 + 'px'
        });
    }); 
}

/* end of loader.js */

