/// <reference name="MicrosoftAjax.js"/>


/*
Description:
Contains javascript code logic that is stronly related to the Tips Community framework or
that is needed by other libraries/features throughout the application.
Dependency on the jQuery library.
*/



/* General init method for the framework */
Sys.Application.add_load( commonLoadProcedures );


function commonLoadProcedures(sender, args)
{
    if (!args.get_isPartialLoad())
    {
        // Add UpdatePanel loading/load handlers
        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest( commonPageLoadingHandler );
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest( commonPageLoadedHandler );
    }
}


function commonPageLoadingHandler(sender, args)
{
    $('.loading-target').each( function () { displayLoadingState(this); } );
}


function commonPageLoadedHandler(sender, args)
{
    $('.loading').each( function() { displayLoadedState(this); } );
}


function displayLoadingState(element) 
{
    var $loadTarget = $(element);
    
    var color =
        $loadTarget.hasClass('white') ? 'white' :
        $loadTarget.hasClass('grey') ? 'grey' :
        $loadTarget.hasClass('blue') ? 'blue' : 'black';

    var size =
        $loadTarget.width() > 100 && $loadTarget.height() > 100 ? 'huge' :
        $loadTarget.width() > 50 && $loadTarget.height() > 50 ? 'large' : 'small';
    
    $loadTarget.attr('class', $loadTarget.attr('class').replace('loading-target', 'loading')); 
    $loadTarget.css('background-image', String.format('url(/TipsCommunity/Includes/Images/AjaxLoaders/ajax-loader-{0}-{1}.gif)', color, size));
}


function displayLoadedState(element)
{
    var $loadTarget = $(element);

    $loadTarget.css('background-image', 'none');
    $loadTarget.attr('class', $loadTarget.attr('class').replace('loading', 'loading-target')); 
}


if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
