/**
 * Copyright 2008 ERDAS, Inc. This document contains unpublished source code of
 * ERDAS, Inc. This notice does not indicate any intention to publish the source
 * code contained herein.
 * 
 * ecwplugins/lib/Scripts/NCSSymbols.js
 *
 */

//
// Global variables (change the offsets if the window is not 0,0 top left).
// ----------------
var ViewOffsetX = 0;
var ViewOffsetY = 0;
var ViewWidth = 0;
var ViewHeight = 0;
var IEOffsetX = 0;
var IEOffsetY = 0;

var OverlaySymbols = null;
var Browser = 0; // 0=UNKNOWN, 1=IE, 2=NS4, 3=NS6/Moz1

// Beginning NCSSymbol Class definition
function ECWSymbol() {
	this.x = 0.0;
	this.y = 0.0;
	this.width = 32;
	this.height = 32;
	this.sName = "";
	this.sImage = "";
	this.sHRef = "";
}

function ECWSymbol_SetCentroid(x, y) {
	this.x = x;
	this.y = y;
}

function ECWSymbol_GetCentroidX() { return(this.x); }

function ECWSymbol_GetCentroidY() { return(this.y); }

function ECWSymbol_SetSize(width, height) {
	this.width = width;
	this.height = height;
}

function ECWSymbol_GetWidth() { return(this.width); }

function ECWSymbol_GetHeight() { return(this.height); }

function ECWSymbol_SetImage(sImage) {	this.sImage = sImage; }

function ECWSymbol_GetImage() { return(this.sImage); }

function ECWSymbol_SetHRef(sHRef) { this.sHRef = sHRef; }

function ECWSymbol_GetHRef() { return(this.sHRef); }

function ECWSymbol_SetName(sName) { this.sName = sName; }

function ECWSymbol_GetName() { return(this.sName); }

ECWSymbol.prototype.SetCentroid  = ECWSymbol_SetCentroid;
ECWSymbol.prototype.GetCentroidX = ECWSymbol_GetCentroidX;
ECWSymbol.prototype.GetCentroidY = ECWSymbol_GetCentroidY;
ECWSymbol.prototype.SetSize 	 = ECWSymbol_SetSize;
ECWSymbol.prototype.GetWidth	 = ECWSymbol_GetWidth;
ECWSymbol.prototype.GetHeight	 = ECWSymbol_GetHeight;
ECWSymbol.prototype.SetImage	 = ECWSymbol_SetImage;
ECWSymbol.prototype.GetImage	 = ECWSymbol_GetImage;
ECWSymbol.prototype.SetHRef 	 = ECWSymbol_SetHRef;
ECWSymbol.prototype.GetHRef 	 = ECWSymbol_GetHRef;
ECWSymbol.prototype.SetName 	 = ECWSymbol_SetName;
ECWSymbol.prototype.GetName 	 = ECWSymbol_GetName;

//
// Create the symbols from the given info
// Array of NCSSymbols returned.
//
function ECWSymbolsCreate(XCoords, YCoords, sImages, sHRefs, sAlts) {
	var Symbols = new Array();
	var i;
	
	if (navigator.appName == "Netscape"){
		if (parseFloat(navigator.appVersion) >= 5.0)
			Browser = 3;
		else
			Browser = 2;
	}
	else if (navigator.appName == "Microsoft Internet Explorer") {
		Browser = 1;
	}

	for(i = 0; i < XCoords.length; i++) {
	  Symbols[i] = new ECWSymbol;
	  Symbols[i].SetCentroid(XCoords[i], YCoords[i]);
	  Symbols[i].SetSize(32, 32);
	  Symbols[i].SetImage(sImages[i]);
	  Symbols[i].SetName("SymbolLayer" + i);
	  Symbols[i].SetHRef(sHRefs[i]);

	  // Use LAYERs under Netscape 4, FRAMES under Netscape6/Mozilla and DIVs under IE
	  if (Browser == 1) {
		document.writeln("<DIV width=\"" + Symbols[i].GetWidth() + "\" height=\"" + Symbols[i].GetHeight() + "\" pageX=\"" + ViewOffsetX + "\" pageY=\"" + ViewOffsetY + "\" zIndex=\"1\" name=\"" + Symbols[i].GetName() + "\">");
		document.writeln("<a href='javascript:ECWSymbolsClickThrough(" + i + ");'>");
		document.writeln("<img id=\"" + Symbols[i].GetName() + "\" src=\"" + Symbols[i].GetImage() + "\" \"" + Symbols[i].GetWidth() + "\" height=\"" + Symbols[i].GetHeight() + "\" style=\"FILTER: alpha(opacity=100); LEFT: " + (ViewOffsetX + IEOffsetX) + "px; POSITION: absolute; TOP: " + (ViewOffsetY + IEOffsetY) + "px;\" alt=\"" + sAlts[i] + "\" border=\"0\">");
		document.writeln("</a>");
		document.writeln("</DIV>");
		document.all[Symbols[i].GetName()].style.visibility = "hidden";
	  } else if (Browser == 2) {
		document.writeln("<LAYER width=\"" + Symbols[i].GetWidth() + "\" height=\"" + Symbols[i].GetHeight() + "\" pageX=\"" + ViewOffsetX + "\" pageY=\"" + ViewOffsetY + "\" zIndex=\"1\" name=\"" + Symbols[i].GetName() + "\">");
		document.writeln("<a href='javascript:ECWSymbolsClickThrough(" + i + ");'>");
		document.writeln("<img id=\"" + Symbols[i].GetName() + "\" src=\"" + Symbols[i].GetImage() + "\" \"" + Symbols[i].GetWidth() + "\" height=\"" + Symbols[i].GetHeight() + "\" style=\"FILTER: alpha(opacity=100); LEFT: " + (ViewOffsetX + IEOffsetX) + "px; POSITION: absolute; TOP: " + (ViewOffsetY + IEOffsetY) + "px;\" alt=\"" + sAlts[i] + "\" border=\"0\">");
		document.writeln("</a>");
		document.writeln("</LAYER>");
		document.layers[Symbols[i].GetName()].visibility = "hidden";
	  } else if (Browser == 3) {
		document.writeln("<DIV style='position:absolute; top:0; left:0; visibility:hidden; background-color:transparent' zIndex='0' id='Frame" + Symbols[i].GetName() + "'>");
		document.writeln("<a href='javascript:ECWSymbolsClickThrough(" + i + ");'>");
		document.writeln("<img id=\"" + Symbols[i].GetName() + "\" src=\"" + Symbols[i].GetImage() + "\" \"" + Symbols[i].GetWidth() + "\" height=\"" + Symbols[i].GetHeight() + "\" style=\"POSITION:absolute;border:0\">");
		document.writeln("</a>");
		document.writeln("</DIV>");
		d = document.getElementById(Symbols[i].GetName());
		d.style.visibility = "hidden";
	  }
	}
	OverlaySymbols = Symbols;
	return(Symbols);
}

//
// Called on clickthrough
//

function ECWSymbolsClickThrough(nSymbol) {
	sURL = OverlaySymbols[nSymbol].GetHRef(); 
	window.open(sURL, 'ECWSymbol', 'dependent,scrollbars,WIDTH=300,HEIGHT=200');
}

//
// Update layers with new extents - called from onExtentsChanged Callback
//
function ECWSymbolsUpdate(Symbols, dWorldTLX, dWorldTLY, dWorldBRX, dWorldBRY, ViewWidth, ViewHeight) {
	XScale = ViewWidth / (dWorldBRX - dWorldTLX);
	YScale = ViewHeight / (dWorldBRY- dWorldTLY);

	for(i = 0; i < Symbols.length; i++) {
	  sIconName = Symbols[i].GetName();
	  IconWidth = Symbols[i].GetWidth();
	  IconHeight = Symbols[i].GetHeight();

	  IconX = (Symbols[i].GetCentroidX() - dWorldTLX) * XScale - (IconWidth / 2);
	  IconY = (Symbols[i].GetCentroidY() - dWorldTLY) * YScale - (IconHeight / 2);

	  if(IconX < 0 || IconX + IconWidth - 1 > ViewWidth || IconY < 0 || IconY + IconHeight - 1 > ViewHeight) {
			if (Browser == 1) {
				document.all[sIconName].style.visibility = "hidden";
			}
			else if(Browser == 2) {
				document.layers[sIconName].visibility = "hidden";
			} if (Browser == 3) {
				d = document.getElementById(sIconName);
				d.style.visibility = "hidden";
			}
	  } else {
			if (Browser == 1) {
				document.all[sIconName].style.pixelLeft = ViewOffsetX + IEOffsetX + IconX;
				document.all[sIconName].style.pixelTop = ViewOffsetY + IEOffsetY + IconY;
				document.all[sIconName].style.visibility = "visible";
			}
			else if(Browser == 2) {
				document.layers[sIconName].pageX = ViewOffsetX + IconX;
				document.layers[sIconName].pageY = ViewOffsetY + IconY;
				document.layers[sIconName].visibility = "visible";
			} if (Browser == 3) {
				d = document.getElementById(sIconName);
				d.style.left = ViewOffsetX + IconX;
				d.style.top  = ViewOffsetY + IconY;
				d.style.visibility = "visible";
			}
	  }
	}
}




