// GLOBALS -- all globals are prefixed with "g"

var gfCGMScale        = -1.0;
var gfCGMScaleModeVal    = 1.00;
var gfMapOffsetX      = 0.0;
var gfMapOffsetY      = 0.0; 
var gsCGMSheets       = "EMPTY";

var gfX  = 0.0;		// Reusable globals. Init before using.
var gfY  = 0.0;
var gfX1 = 0.0;
var gfY1 = 0.0;
var gfX2 = 0.0;                
var gfY2 = 0.0;
var giNumPts = 0;

var gfLinearFactor = 1.0;
var giPrecis = 1;
var gsLinearUOM = "ft";
var propwindow = null;
//	=======================================================================
//	jExecACGMMLCommand -- Send AXCgm a command
//	=======================================================================
function jExecACGMMLCommand( sCommand ) {

	var sResult = "";

// Return if NULL command
	if( sCommand == "" ) return "";
  sResult = document.objACGM.MLCommand( sCommand );
	return sResult;
}

//	=======================================================================
//	jGetACGMSheets -- Get all sheet names and parameters
//	=======================================================================
function jGetACGMSheets() {
	gsCGMSheets = jExecACGMMLCommand ("querysheets");
	return;
}

//	=======================================================================
//	jTransform[] -- Coordinate transformations
//	=======================================================================
function jTransXCoordACGMToStorage (fX1) {
	var fResult = 0.0;
	fResult = ((fX1/gfCGMScaleModeVal) * gfCGMScale) + gfMapOffsetX;
	return fResult;
} 

function jTransYCoordACGMToStorage (fY1) {
	var fResult = 0.0;
	fResult = ((fY1/gfCGMScaleModeVal) * gfCGMScale) + gfMapOffsetY;
	return fResult;
}

function jTransXCoordStorageToACGM (fX1) {
	var fResult = 0.0;
	fResult = ((fX1 - gfMapOffsetX)/gfCGMScale)*gfCGMScaleModeVal;
	return fResult;
} 

function jTransYCoordStorageToACGM (fY1) {
	var fResult = 0.0;
	fResult = ((fY1 - gfMapOffsetY)/gfCGMScale)*gfCGMScaleModeVal;
	return fResult;
}

//	=======================================================================
//	jInitMeasure -- Extract projection/units from background sheet
//	=======================================================================
function jInitMeasure()
{
	var sBuf  = "";
	var sBuf2 = "";
	var sArray;
	var iTmp  = 0;

	if (gsCGMSheets.length < 10) {
		window.alert( "Error getting measure parameters; measuring will be disabled.");
		return;
	}

//--Cut out just the BGROUND sheet info, Position past keyword
	sBuf = "" + gsCGMSheets;

	iTmp = sBuf.indexOf ("BGROUND");
	if( iTmp < 0 ) return; //error in format

	iTmp = iTmp + 7;
	sBuf2 = String(sBuf);
	sBuf = sBuf.substring( iTmp, sBuf2.length );
	iTmp = sBuf.indexOf( "\n" );  // Sheets are separated by newline.
	sBuf = sBuf.substring( 0, iTmp-1 );

//--Get array of info, delimited by semi-colon
	sArray = sBuf.split( ";" );
	gfCGMScaleModeVal	= parseFloat(sArray[1]);
	gfMapOffsetX		= parseFloat(sArray[2]);
	gfMapOffsetY		= parseFloat(sArray[3]);
	gfCGMScale			= parseFloat(sArray[4]);
	return;
}

//	=======================================================================
//	jInitACGMClient -- Initialize CGM / JavaScript stuff
//	=======================================================================
function jInitACGMClient() {
	if( gfCGMScale > 0 ) return 1; //Success -- already initialized

// Get system parameters
	jGetACGMSheets();
	jInitMeasure();

// Error if scale not setup
	if (gfCGMScale <= 0) return 0;
	return 1;
}
//	=======================================================================
//	jZoomBox -- Equiv. to Window Area
//	=======================================================================
function jZoomBox (sMSSFile) {

	var sURL		= "";
	var fPntX1		= 0.0; 	var fPntY1		= 0.0;
	var fPntX2		= 0.0; 	var fPntY2		= 0.0;

//--Init client-side environment
	if( ! jInitACGMClient() ) return;

//--Get points, Store global results, Translate
	if( !jGetACGMRange(1)) return;

//--Transform points
	fPntX1 = jTransXCoordACGMToStorage (gfX1);
	fPntY1 = jTransYCoordACGMToStorage (gfY1); 
	fPntX2 = jTransXCoordACGMToStorage (gfX2);
	fPntY2 = jTransYCoordACGMToStorage (gfY2);

  document.frmCoords.txtX1.value = fPntX1;
  document.frmCoords.txtY1.value = fPntY1;
  document.frmCoords.txtX2.value = fPntX2;
  document.frmCoords.txtY2.value = fPntY2;

	return;
}

function OpenData(key)
{
	//alert(key);

       // if (propwindow != null)
       // {
       //    alert(propwindow.closed);
       // }
        if (window.opener != null && !window.opener.closed)
	{
           window.opener.location = 'http://mobilerevenue.siteonestudio.com/TaxBill/corebill.asp?key=' + key;
	   window.opener.focus();

	};
	else

	{
		if (propwindow != null)

		{
		      if (propwindow.closed)
		         {
                           propwindow = window.open('http://mobilerevenue.siteonestudio.com/TaxBill/corebill.asp?key=' + key);
			   propwindow.focus();
		         };
		      else
                         {
			  propwindow.location = 'http://mobilerevenue.siteonestudio.com/TaxBill/corebill.asp?key=' + key;
			  propwindow.focus();
			  }
		};
		else
		{
			propwindow = window.open('http://mobilerevenue.siteonestudio.com/TaxBill/corebill.asp?key=' + key);
			propwindow.focus();
		}
	}
}

function RemoveSheet(obj){ var sheetName = obj.name.substring(3,obj.name.length); 
var checked = obj.checked; var found = false; 
var cmd = ' -s \"' + sheetName + '\"'; 
var temp = document.objACGM.MLCommand('querysheets'); 
var listOfSheets = temp.split('\n'); 
for( var i = 0; i < listOfSheets.length; i++){ if(listOfSheets[i] == sheetName + '_HS'){ found = true; 
cmd = ' -l alist'; 
document.objACGM.MLCommand('definelist -l alist -e \"' + sheetName + '\" -e \"' + sheetName + '_HS\"');} }if(!checked){ document.objACGM.MLCommand('hidesheet ' + cmd ); obj.value = 'off'; } else { document.objACGM.MLCommand('showsheet ' + cmd); obj.value = 'on'; } if(found){ document.objACGM.MLCommand('deletelist -l alist'); } }