﻿// JScript File

var NoShowBox = false;
var BackupAllowedToClose = false;
var BoxResetTimeoutIDs = new Array();
var ensuretime = null;
var checktime = null;
var showtime = null;
var resettime = null;
function checkAllowedToClose(e) {
	if (typeof AllowedToClose != "undefined") {
		if (!AllowedToClose) {
			return CloseAttemptMsg;
		}
	}	
	if (NoShowBox) return;
	showBox();			
}

function showBox() {    
    var mpePopup = $find('mpePleaseWait');
    if (mpePopup) {
        mpePopup.show();
	    changeAllDropDownsVisibility();
	}
}               

function resetNoShowBox() {    
    NoShowBox=false;
	if (typeof AllowedToClose != "undefined") {AllowedToClose = BackupAllowedToClose;}
	BoxResetTimeoutIDs.shift();
}

function ensureNoShowBox() {
    NoShowBox=true;
    while (BoxResetTimeoutIDs.length > 0) 
        clearTimeout(BoxResetTimeoutIDs.shift());
    BoxResetTimeoutIDs.push(setTimeout('resetNoShowBox()', 500));
}


function SetupAllLinks(parent) {
	//get all links
	if (!parent) parent = document;
	setupNodes(parent.getElementsByTagName("A"),false);
	setupNodes(parent.getElementsByTagName("INPUT"),false);
	setupNodes(parent.getElementsByTagName("SELECT"),true);
	setupNodes(parent.getElementsByTagName("TABLE"),true);			
}

function setupNodes(nodes, OnlyIfScript) {			
	for (var i=0;i<nodes.length;i++) {
		var node = nodes[i];
		var pnode = node.parentNode;
		while (pnode != null) {
			if (pnode.onclick != null) break;
			pnode = pnode.parentNode;
		}				
		if (pnode == null && !node.getAttribute("LeavingOrdering")) {
			// TODO: check if href is on current site or not before 
			// setting allowed to leave.
			if (node.tagName == "SELECT") {
				if (((node.onchange || node.getAttribute("onchange")) && OnlyIfScript) || !OnlyIfScript) {
					$addHandler(node,"change",AllowToClose);
				}
			} else {						
				if (((node.onclick || node.getAttribute("onclick") || node.getAttribute("fmonclick")) && OnlyIfScript) || !OnlyIfScript) {
					$addHandler(node,"click",AllowToClose);
				}				
				if (node.getAttribute("NoShowBox") || node.getAttribute("href") == 'javascript:;') {
					$addHandler(node,"mousedown",BackupAndEnsureNoShowBox);
				}
			}
		}
	}
}    

function AllowToClose(evt) {
    if (this.getAttribute("OrderClear")) {
        if (!confirm(CancelAttemptMsg)) {
            BlockClose = true;
            evt.preventDefault();
            return false;            
        }
    }
    AllowedToClose=true;
    var fmonclick = this.getAttribute("fmonclick");
    if (fmonclick)
        eval(fmonclick);
}    

function BackupAndEnsureNoShowBox() {
    ensureNoShowBox();
    BackupAllowedToClose=AllowedToClose;
}

window.onbeforeunload = checkAllowedToClose;		