// Global for browser version branching.

var Nav4 = ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) >= 4));

// One object tracks the current modal dialog opened from this window.

var dialogWin = new Object();


function openDialog(url, width, height, returnFunc, args, ctxroot) 
{
	if (!dialogWin.win || (dialogWin.win && dialogWin.win.closed)) {
	
		// Initialize properties of the modal dialog object.
      	dialogWin.returnFunc 		= returnFunc;
      	dialogWin.returnedValue 	= "";
      	dialogWin.args 				= args;

      	dialogWin.url 				= ctxroot+"/RPLinkDisplayController?mode=ttr&showLinkClicked=popupConfirm&odPoint="+url;
      	dialogWin.width 			= width;
      	dialogWin.height 			= height;
      	
	  	// Keep name unique so Navigator doesn't overwrite an existing dialog.
      	dialogWin.name 				= (new Date()).getSeconds().toString();

	 	// Assemble window attributes and try to center the dialog.
	 	if (Nav4) {
			// Center on the main window.
			dialogWin.left 	= window.screenX + ((window.outerWidth - dialogWin.width) / 2);
			dialogWin.top 	= window.screenY + ((window.outerHeight - dialogWin.height) / 2);
			var attr 		= "screenX=" + dialogWin.left + ",screenY=" + dialogWin.top + ",resizable=no,width=" + dialogWin.width + ",height=" + dialogWin.height;
	 	} else {
			// The best we can do is center in screen.
			dialogWin.left 	= (screen.width - dialogWin.width) / 2;
			dialogWin.top 	= (screen.height - dialogWin.height) / 2;
			var attr 		= "left=" + dialogWin.left + ",top=" + dialogWin.top + ",resizable=no,width=" + dialogWin.width + ",height=" + dialogWin.height;
	 	}
	 	// Generate the dialog and make sure it has focus.
	 	dialogWin.win = window.open(dialogWin.url, dialogWin.name, attr);
	 	dialogWin.win.focus();
  	} else {
		dialogWin.win.focus();
  	}
}

function deadend() {
	if (dialogWin.win && !dialogWin.win.closed) {
      	dialogWin.win.focus();
      	return false;
   	}
}

// Since links in Internet Explorer 4 can't be disabled, preserve IE link onclick
// event handlers while they're "disabled." Restore when reenabling the main window.

var IELinkClicks;
var IEOnClicks = new Array();
var flag;

// Disable form elements and links in all frames for IE.

function disableForms() {
	IELinkClicks = new Array();
	for (var i = 0; i < document.forms.length; i++) {
     	for (var j = 0; j < document.forms[i].elements.length; j++) {
        	document.forms[i].elements[j].disabled = true;
     	}
  	}
  	for (i = 0; i < document.links.length; i++) {
     	IELinkClicks[i] = document.links[i].href;
     	if (document.links[i].onclick != null) {
     		IEOnClicks[i] = document.links[i].onclick;
     		document.links[i].onclick = deadend;
     	}
  	}
}

// Restore IE form elements and links to normal behavior.
function enableForms() {
	for (var i = 0; i < document.forms.length; i++) {
		for (var j = 0; j < document.forms[i].elements.length; j++) {
            document.forms[i].elements[j].disabled = false;
		}
	}
	for (i = 0; i < document.links.length; i++) {
		document.links[i].href = IELinkClicks[i];
		if (IEOnClicks[i] != null) {
			document.links[i].onclick = IEOnClicks[i];
		}
	}
}

function checkModal() {
	if (dialogWin.win && !dialogWin.win.closed && flag) {
		dialogWin.win.focus();
	}
}

// Grab all Navigator events that might get through to form elements while
// dialog is open. For Internet Explorer, disable form elements.

function blockEvents() {
	if (Nav4) {
		window.captureEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS);
      	window.onclick = deadend;
   	} else {
      	disableForms();
   	}
   	flag = true;
   	window.onfocus = checkModal;
}

// As dialog closes, restore the main windows original event mechanism.

function unblockEvents() {
	if (Nav4) {
      	window.releaseEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS);
      	window.onclick = null;
      	window.onfocus = null;
   	} else {
      	enableForms();
   	}
   	flag = false;
}

function getFormName() {
	var frmName = null;
  	var frm 	= null;
	var oForm;
	
  	frm = document.forms["frmCommodity"];

  	if (frm == null) {
    	frm = document.forms["frmOdTransload"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmCityState"];
  	}
  	
  	if (frm == null) {
   	 	frm = document.forms["frmRates"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmZipResults"];
  	}

  	if (frm == null) {
    	frm = document.forms["frmCityStateEntry"];
  	}

  	if (frm == null) {
    	frm = document.forms["frmPricesForm"];
  	}

  	if (frm == null) {
    	frm = document.forms["frmErrorPage"];
  	}

  	if (frm == null) {
    	frm = document.forms["frmNewPriceReq"];
  	}

  	if (frm == null) {
    	frm = document.forms["frmEmailFriend"];
  	}

  	if (frm == null) {
    	frm = document.forms["frmEmailUs"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmRailRates"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmCommodityDesc"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmCitiesList"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmTNTHiddenRates"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmTNTRates"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmHiddenStccDesc"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmPriceDetail"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmEquipTypeDesc"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmEquipDesc"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmRateDetails"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmContact"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmGlossary"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmRail101"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmSiteTour"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmAbout"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmRpConfirmation"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmCityList"];
  	}
  	
  	if (frm == null) {
    	frm = document.forms["frmRatesForEquip"];
  	}
  	
  	if (frm != null) {
    	frmName = frm.name;
  	}
  	
  	if (frmName == "frmCityState") {
    	frmName = "frmHidden";
  	}
  	
  	if (frmName == "frmTNTRates") {
    	frmName = "frmTNTHiddenRates";
  	}
  
  	oForm = eval("document."+frmName);
  	return oForm;
}

function loadNextPage(showODPage,odPoint,TransloadServiceEnd) {
	var oForm = getFormName();
	if (showODPage) {
		oForm.mode.value 				= 'ttr';
		oForm.showLinkClicked.value 	= odPoint;
		oForm.TransloadServiceEnd.value = TransloadServiceEnd;
		oForm.odPoint.value 			= odPoint;
		oForm.submit();
	}
	else {
		oForm.mode.value 				= 'rail';
		oForm.showLinkClicked.value 	= odPoint;
		oForm.TransloadServiceEnd.value = TransloadServiceEnd;
		oForm.submit();
	}
}
