﻿// initialize a PageRequestManager
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm != null) {
    prm.add_initializeRequest(initializeRequestHandler);
    prm.add_beginRequest(beginRequestHandler);
    prm.add_endRequest(endRequestHandler);
    prm.add_pageLoading(pageLoadingHandler);
    prm.add_pageLoaded(pageLoadedHandler);
}

var _panels, _count;
// this function aborts currently in process AsyncPostBack
function abortPostBack() {
    if (prm.get_isInAsyncPostBack()) {
        prm.abortPostBack();
    }
}

// cancel's AsyncPostBacks when another AsyncPostBack is in progress
function initializeRequestHandler(sender, args) {
    if (prm.get_isInAsyncPostBack() == true) {
        args.set_cancel(true);
    }
}

// this function fires just before update panels get updated with new data
function pageLoadingHandler(sender, args) {
    // get's list of updating panels
    if (_panels != undefined && _panels.length > 0) {
        for (i = 0; i < _panels.length; i++)
            _panels[i].dispose();
    }

    var panels = args.get_panelsUpdating();

    if (panels.length > 0) {
        _panels = new Array(panels.length);

        for (i = 0; i < panels.length; i++)
            _panels[i] = new Sys.UI.Control(panels[i]);
    }
}

// this function fires just before AsyncPostBack accures
var pbControl;
function beginRequestHandler(sender, args) {
    pbControl = args.get_postBackElement();  //the control causing the postback
    pbControl.disabled = true;
}

// this function fires just after AsyncPostBack ends and result is ready to use in client side
function endRequestHandler(sender, args) {
    pbControl.disabled = false;
    pbControl = null;
}

// this function fires when update panels have been updated
function pageLoadedHandler(sender, args) {
    // get's list of updated panels
//    if (_panels != undefined && _panels.length > 0) {
//        for (i = 0; i < _panels.length; i++)
//            _panels[i].dispose();
//    }

//    var panels = args.get_panelsUpdated();

//    if (panels.length > 0) {
//        _panels = new Array(panels.length);

//        for (i = 0; i < panels.length; i++)
//            _panels[i] = new Sys.UI.Control(panels[i]);

        //fadePanels();
        ////flashPanels(2);
    //}
}
// this function gives a visual effect of smooth fade in and out to the updated panels
var smoothFadeInterval = 0;
function fadePanels() {
    for (i = 0; i < _panels.length; i++) {
        if (_panels[i]._element.style.width == '' || _panels[i]._element.style.width == null)
            _panels[i]._element.style.width = "100%";
    }
    if (smoothFadeInterval > 0) { clearInterval(smoothFadeInterval); }
    smoothFadeInterval = setInterval(smoothFade, 10);
}

var fadeAmount = 30;
function smoothFade() {
    fadeAmount += 5;
    if (fadeAmount <= 100) { 
        for (i = 0; i < _panels.length; i++) {
            _panels[i]._element.style.opacity = (fadeAmount / 100);
            _panels[i]._element.style.filter = "alpha(opacity=" + fadeAmount + ")";
            }
        }
        else {
            fadeAmount = 70;
            clearInterval(smoothFadeInterval);
        }
}
// this function gives a visual effect of flashing to the updated panels
function flashPanels(count) {
    _count = (count << 1) + 1;

    for (i = 0; i < _panels.length; i++)
        _panels[i].set_visible(false);

    window.setTimeout(toggleVisibility, 1);
}

function toggleVisibility() {
    for (i = 0; i < _panels.length; i++)
        _panels[i].set_visible(!_panels[i].get_visible());

    if (--_count > 0)
        window.setTimeout(toggleVisibility, 1);
}
//===== Update Ads HitCount ===
function js_updateADsHitCount(id) {
    NPWebSiteEShop.GetData.updateADsHitCount(id);
}
