﻿
//------------------------------------------------------------------------------------------------------------------
// Moulinette
//------------------------------------------------------------------------------------------------------------------

// manage the page state
var PostbackIsPending = false; // checked by some controls to prevent postbacks when a postback is being executed
var PageLoadedAlready = false; // checked by the pageLoad function to prevent multiple executions (e.g. when Ajax requests)

// Show hourglass
function ShowHourglass() {
    document.body.style.cursor = 'wait';
} 

// Autopostback
function autoPostBack() {
    if (!document.getElementById("hidAutoPostBack")) {
        return true;
    }
    __doPostBack("hidAutoPostBack");
    return true;
}

// Remember page scroll state
function ScrollIt() {
    window.scrollTo(document.forms[0].hidPageX.value, document.forms[0].hidPageY.value);
}
function SetCoords() {
    var myPageX;
    var myPageY;

    if (typeof (window.pageYOffset) == 'number') {
        //Netscape compliant
        myPageY = window.pageYOffset;
        myPageX = window.pageXOffset;
    }
    else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
        //DOM compliant
        myPageY = document.body.scrollTop;
        myPageX = document.body.scrollLeft;
    }
    else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
        //IE6 standards compliant mode
        myPageY = document.documentElement.scrollTop;
        myPageX = document.documentElement.scrollLeft;
    }
    document.forms[0].hidPageX.value = myPageX;
    document.forms[0].hidPageY.value = myPageY;
}
// End remember page scroll state

// Transporter
function openPopup(data, popupName, popupOptions) {
    var popup = window.open("", popupName, popupOptions);
    var doc = popup.document;
    doc.open("text/html", "replace");
    doc.write(data);
    doc.close();
    popup.focus();
}

//------------------------------------------------------------------------------------------------------------------
// Dialog boxes (deprecated since usage of Telerik dialogs)
//------------------------------------------------------------------------------------------------------------------

function getHiddenUserMessages() {
    return document.getElementById("hidUserMessage");
}

function alertUserMessage() {
    var hidField = getHiddenUserMessages();
    if (!hidField) { return true; }
    if (hidField.value != "") {
        alert(hidField.value);
    }
    return true;
}

function alertUserMessageWithPostBack() {
    var hidField = getHiddenUserMessages();
    if (!hidField) { return true; }
    if (hidField.value != "") {
        alert(hidField.value);
        __doPostBack("hidUserReply");
    }
    return true;
}

function confirmUserMessage() {
    var hidField = getHiddenUserMessages();
    if (!hidField) { return true; }
    if (hidField.value != "") {
        var response = confirm(hidField.value);
        // put the response back in the hidden field
        document.getElementById("hidUserReply").value = response;
        __doPostBack("hidUserReply");
    }
    return true;
}

function promptUserMessage() {
    var hidField = getHiddenUserMessages();
    if (!hidField) { return true; }
    if (hidField.value != "") {
        var response = prompt(hidField.value);
        // put the response back in the hidden field
        document.getElementById("hidUserReply").value = response;
        __doPostBack("hidUserReply");
    }
    return true;
}

//------------------------------------------------------------------------------------------------------------------
// ???
//------------------------------------------------------------------------------------------------------------------

// global variables
var disableSubmit = false;

function declareObjects() {
    // get the declaration list
    // struct = objId:objType;
    var container = document.getElementById("hidJsDeclaration");
    var strDeclaration = container.value;

    var arrObjects = strDeclaration.split(';');

    for (i = 0; i < arrObjects.length; i++) {
        if (arrObjects[i] != "") {
            createObject(arrObjects[i].split(':')[0], arrObjects[i].split(':')[1]);
        }
    }
}

function createObject(strId, strType) {
    var obj = document.getElementById(strId);

    if (strType == "scrollTopRestore") {
        scrollTopRestore(obj);
    }
    else {
        alert("Unsupported javascript object : " + strType);
    }
}

function scrollTopRestore(div) {
    div.hiddenScrollTop = document.getElementById(div.id + "_scrollTop")

    div.restoreScrollTop = restoreScrollTop;
    function restoreScrollTop() {
        if (div.hiddenScrollTop.value != "") {
            div.scrollTop = div.hiddenScrollTop.value;
        }
    }

    div.storeScrollTop = storeScrollTop;
    function storeScrollTop(co) {
        co.hiddenScrollTop.value = co.scrollTop;
    }

    registerSubmit(div, storeScrollTop);
    restoreScrollTop();
}

function registerSubmit(obj, callbackFunction) {
    // CHECK IF THE FORM HAS ALREADY AN ARRAY CONTAINING REGISTERED OBJECTS
    if (!document.forms[0].registeredObjectsOnSubmit) {
        // ADD REGISTERING FUNCTIONALITY TO THE FORM
        document.forms[0].onsubmit = callbackRegisteredObjectsOnSubmit;
        document.forms[0].registeredObjectsOnSubmit = new Array();
    }
    document.forms[0].registeredObjectsOnSubmit[document.forms[0].registeredObjectsOnSubmit.length] = new registeredObject(obj, callbackFunction)
}

function callbackRegisteredObjectsOnSubmit() {
    var i = undefined;
    for (i = 0; i < this.registeredObjectsOnSubmit.length; i++) {
        var obj = this.registeredObjectsOnSubmit[i].callbackObject;
        var func = this.registeredObjectsOnSubmit[i].callbackFunction;
        obj.callback = func(obj);
    }
    if (disableSubmit == true) {
        disableSubmit = false;
        return false;
    }
    else {
        return true;
    }
}

function registeredObject(callbackObject, callbackFunction) {
    this.callbackObject = callbackObject;
    this.callbackFunction = callbackFunction;
}
