﻿/* Copyright (c) Hoseasons Holidays Limited
 * Author: Chris O'Brien
 * Date: 19 September 2008
 */
//Requires: MicrosoftAjax.js

/// <summary>
/// To show throbber use this script,
/// try{Throbber.beginRequest();}catch(error){}
///
/// To hide throbber use this script,
/// try{Throbber.endRequest();}catch(error){}
/// </summary>
var Throbber = {

    throbberDiv: null,
    pageManager: null,

    init: function() {
        //Style throbber and hide it.
        this.throbberDiv = document.getElementById("throbber");
        this.throbberDiv.style.position = 'absolute';
        this.throbberDiv.style.display = 'none';
        this.throbberDiv.style.backgroundColor = '#FFFFFF';
        this.throbberDiv.style.width = '320px';
        this.throbberDiv.style.border = 'solid 1px #99BBCC';
        this.throbberDiv.style.textAlign = 'center';
        this.throbberDiv.style.paddingTop = '45px';
        this.throbberDiv.style.paddingBottom = '45px';
        var opacity = 90;
        this.throbberDiv.style.opacity = opacity / 100;
        this.throbberDiv.style.filter = 'alpha(opacity=' + opacity + ')';
        this.throbberDiv.style.zIndex = '200000';

        this._setPageManager();
    },

    _setPageManager: function() {
        //Prevent JavaScript error if MicrosoftAjax.js not loaded.
        if (typeof Sys != 'undefined') {
            //Add event handlers.
            Throbber.pageManager = Sys.WebForms.PageRequestManager.getInstance();
            Throbber.pageManager.add_beginRequest(Throbber.beginRequest);
            Throbber.pageManager.add_endRequest(Throbber.endRequest);
        }
    },

    beginRequest: function(sender, args) {
        if (!Throbber.pageManager) {
            Throbber._setPageManager();
        }
        try {
            var scrollLeft = 0, scrollTop = 0;
            if (document.documentElement && document.documentElement.scrollTop) {
                scrollLeft = document.documentElement.scrollLeft;
                scrollTop = document.documentElement.scrollTop;
            }

            var screenWidth = 800,
                screenHeight = 500;
            if (document.documentElement && document.documentElement.clientHeight) {
                screenWidth = document.documentElement.clientWidth;
                screenHeight = document.documentElement.clientHeight;
            }

            Throbber.throbberDiv.style.display = 'block';

            var leftOffset = scrollLeft + (screenWidth - Throbber.throbberDiv.offsetWidth) / 2;
            var topOffset = scrollTop + (screenHeight - Throbber.throbberDiv.offsetHeight) / 2;
            Throbber.throbberDiv.style.top = topOffset + 'px';
            Throbber.throbberDiv.style.left = leftOffset + 'px';

        }
        catch (Error) {
            //Div with id='throbber' is missing.
        }
    },

    endRequest: function(sender, args) {
        try {
            Throbber.throbberDiv.style.display = 'none';
        }
        catch (Error) {
            //Div with id='throbber' is missing.
        }
    }
};
Throbber.init();