var dbTop = 0;
var dbProceed = "true";
var beanNames = new Array();
var methodNames = new Array();
var methodParms = new Array();
var errorMessages = new Array();
var formName = "";
var executeSubmit = "false";
var executeLocationChange = "false";
var locationPage = "";
var executePageOpening = "false";
var pageToOpen = "";
var pageHeight = 1;
var pageWidth = 1;
var pageParms = "";
var windowName = "";
var essentialsId = ""+Math.random();

function callMethod(b,m,p,em){
	try{
		if( m=="runUpdate" || m=="runUpdate2" ){
			p = dashEncode(p);
		}
	  if(dbProceed == "true"){
	    continueDBProcess(b,m,p,em);
	  }else{
	    for(var i=dbTop;i>0;i--){
	      beanNames[i] = beanNames[i-1];
	      methodNames[i] = methodNames[i-1];
	      methodParms[i] = methodParms[i-1];
	      errorMessages[i] = errorMessages[i-1];
	    }
	    beanNames[0] = b;
	    methodNames[0] = m;
	    methodParms[0] = p;
	    errorMessages[0] = em;
	    dbTop++;
	  }
	}catch(error){
		alert("An error occured and below is the error message.\n\n" + error.message);
	}
}

function continueDBProcess(b,m,p,em){
	try{
	  dbProceed = "false";
	  with(frames["MethodCallerFrame"].document.methodCallerForm){
	    beanName.value = b;
	    methodName.value = m;
	    parameters.value = p;
	    errorMessage.value = em;
	    forwardToPage.value = "MethodCaller.jsp?essentialsId="+essentialsId;
	    action = "CallMethodAndForward.jsp";
	    submit();
	  }
	}catch(error){
		alert("An error occured and below is the error message.\n\n" + error.message);
	}
}

function dbDone(id){
	if(essentialsId != id){
		return false;
	}else{
		try{
			if(dbTop == 0){
				dbProceed = "true";
				if(executePageOpening == "true"){
					openPage(pageToOpen,pageHeight,pageWidth,pageParms,windowName);
				}
				if(executeSubmit == "true"){
					mySubmit(formName);
				}
				if(executeLocationChange == "true"){
					goTo(locationPage);
				}
			}else{
				var b = beanNames[dbTop-1];
				var m = methodNames[dbTop-1];
				var p = methodParms[dbTop-1];
				var em = errorMessages[dbTop-1];
				dbTop--;
				continueDBProcess(b,m,p,em);
			}
		}catch(error){
			alert("An error occured and below is the error message.\n\n" + error.message);
		}
		return true;
	}
}

function mySubmit(fn){
	try{
	  if(dbProceed == "true"){
	    with(fn){
	      submit();
	    }
	  }else{
	    formName = fn;
	    executeSubmit = "true";
	  }
	}catch(error){
		alert("An error occured and below is the error message.\n\n" + error.message);
	}
}

function openPage(page, h, w, parms,winName) {
	try{
	  if(dbProceed == "true"){
	    if (h <= 1) { h = Math.floor(screen.height * h); }
	    if (w <= 1) { w = Math.floor(screen.width * w); }
	    var left = Math.floor( (screen.width - w) / 2);
	    var top = Math.floor( (screen.height - h) / 2);
	    var winParms = "top=" + top + ",left=" + left + ",height=" + h + ",width=" + w;
	    if (parms != "") { winParms += "," + parms; }
	    var win = window.open(page,winName,winParms);    
	    win.focus();
	  }else{
	    pageToOpen = page;
	    pageHeight = h;
	    pageWidth = w;
	    pageParms = parms;
	    windowName = winName;
	    executePageOpening = "true";
	  }
	}catch(error){
		alert("An error occurred when attempting to open a new window.  Most likely you have a popup blocker blocking the window from opening.  Either disable the popup blocker or have it allow popups from this site.  You can also hold down the ctrl key, then click while holding the ctrl key, and that usually overrides the popup blocker.");
	}
}

function submitTo(page,formName){
	try{
	  with(formName){
	    action = page;
	    mySubmit(formName);
	  }
	}catch(error){
		alert("An error occured and below is the error message.\n\n" + error.message);
	}
}

function goTo(page){
	try{
	  if(dbProceed == "true"){
	    location.href = page;
	  }else{
	    locationPage = page;
	    executeLocationChange = "true";
	  }
	}catch(error){
		alert("An error occured and below is the error message.\n\n" + error.message);
	}
}

function dashEncode(s1){
	if(s1==null){
		return null;
	}
	s1 = s1.replace(/[\r]+/g, "");
	var s2 = "";
	for( var i=0; i<s1.length; i++){
		s2 += s1.charAt(i) + "_";
	}
	s2 = s2.replace(/[\n]+/g, "[endLine]");
	return "[dashDecode]"+s2;
}

function displayLoadingMessage(msg){
	try{
	  document.getElementById("loadingMessage").innerHTML = "<font style='color:red'>" + msg + "</font>";
	  document.getElementById("loadingMessage").style.visibility = "visible";
	}catch(error){
		alert("An error occured and below is the error message.\n\n" + error.message);
	}
}

function displayMessage(divName,message){
	try{
	  document.getElementById(divName).innerHTML = "<font style='color:red'>" + message + "</font>";
	  document.getElementById(divName).style.visibility = "visible";
	}catch(error){
		alert("An error occured and below is the error message.\n\n" + error.message);
	}
}