// aimsKeyHab.js
/*
*  JavaScript template file for ArcIMS HTML Viewer
*		dependent on aimsXML.js, ArcIMSparam.js, aimsIdentify.js
*		To be interactive, dependent also on aimsDHTML.js, aimsClick.js, and aimsNavigation.js
*/


var khcSelectFields="#ALL#";
var khcLayer="0";
var khcLayerType="polygon";
var khcLayerIndex=11;


// identify reserve
function keyHabIdentify(e) {
	if (checkIfKHCLayerAvailable()) {
		//alert("Made it to NEW resIdentify in NPWS.js");
		highlightedOne="";
		var theX = mouseX;
		var theY = mouseY;
		getMapXY(theX,theY);
		searchTolerance = (xDistance/iWidth) * pixelTolerance;
		var west1 = mapX - searchTolerance;
		var north1 = mapY + searchTolerance;
		var east1= mapX + searchTolerance;
		var south1 = mapY - searchTolerance;
		var theString = writeIdentifyXML(khcLayer,khcLayerType,khcSelectFields,west1,south1,east1,north1,maxFeaturesReturned,useLimitExtent);
		showRetrieveData();
		sendToServer(imsQueryURL,theString,keyHabIDXMLMode);
	}
}

function keyHabDisplayData(theReply) {
// + theRefValue + khcHyperLinkSuffix;
	var khcPath = getPath(document.location.pathname);
	var khcHyperLinkPrefix = khcPath + "assemblage_info/";
	var khcHyperLinkSuffix = ".htm";
	var morePoints=true;
	var moreFeatures=true;
	var featureCount = justGetFeatureCount(theReply);
	var pos = 0;
	var startpos = 0;
	var endpos = xmlEndPos;
	var stillMore = false;
	pos = theReply.indexOf('hasmore="true"',endpos);
	if (pos!=-1) stillMore = true;
	pos=0;
	var tempCount = 0;
	var selectedData="";
	var inData="";
	var xStr="";
	var yStr="";
	var tempString = "";
	var fCount = featureCount;
	selectCount = 0;
	var tempString="";
	var Win1 = parent.QueryFrame; //MES
	var theFrame = "parent.MapFrame";
	var selectPoints=new Array();
	if (featureCount > 0) {
		//alert("theReply = " + theReply);
		var	Win1 = window.open("","QueryWindow","width=400,height=320,scrollbars=yes,resizable=yes");
		Win1.document.writeln('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">');
		Win1.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><head><title>Key Habitats and Corridors Identify</title>');
           Win1.document.writeln('<SCRIPT TYPE="text/javascript">');
           Win1.document.writeln('<!--');
           Win1.document.writeln('function popup(mylink, windowname)');
           Win1.document.writeln('{');
           Win1.document.writeln('if (! window.focus)return true;');
           Win1.document.writeln('var href;');
           Win1.document.writeln('if (typeof(mylink) == \'string\')');
        Win1.document.writeln('href=mylink;');
           Win1.document.writeln('else');
        Win1.document.writeln('href=mylink.href;');
           Win1.document.writeln('window.open(href, windowname, \'width=440,height=670,scrollbars=yes,resizable=yes,dependent=yes\');');
           Win1.document.writeln('return false;');
           Win1.document.writeln('}');
           Win1.document.writeln('//-->');
           Win1.document.writeln('</SCRIPT>');
           Win1.document.writeln('</head>');

//Ajay
//		Win1.document.writeln('<body bgcolor="' + QueryFrameBackColor + '" text="Black" link="Blue"  vlink="Blue" BACKGROUND="http://maps.nationalparks.nsw.gov.au/website/NPWS_Maps/keyhabs/images/yellow_background.gif" LEFTMARGIN=0 onload="window.focus()">');
		Win1.document.writeln('<body bgcolor="' + QueryFrameBackColor + '" text="Black" link="Blue"  vlink="Blue" BACKGROUND="images/yellow_background.gif" LEFTMARGIN=0 onload="window.focus()">');
		
			Win1.document.writeln('<FONT FACE="Verdana" SIZE="-1">');
//Ajay
//			Win1.document.writeln('<TABLE WIDTH="70%" ALIGN="CENTER"  background="http://maps.nationalparks.nsw.gov.au/keyhabs/images/banner.gif">');
			Win1.document.writeln('<TABLE WIDTH="70%" ALIGN="CENTER"  background="images/banner.gif">');
			Win1.document.writeln('<TR>');		
			Win1.document.writeln('<TD>');	
//Ajay
//			Win1.document.writeln('<FONT FACE="Verdana" SIZE="-1">&nbsp;<IMG SRC="http://maps.nationalparks.nsw.gov.au/keyhabs/images/Logo_Small.gif" WIDTH=41 HEIGHT=38></FONT>');
			Win1.document.writeln('<FONT FACE="Verdana" SIZE="-1">&nbsp;<IMG SRC="images/Logo_Small.gif" WIDTH=41 HEIGHT=38></FONT>');
			Win1.document.writeln('</TD>');
			Win1.document.writeln('<TD>');
			Win1.document.writeln('<FONT FACE="Verdana" SIZE=2 COLOR="#ffffff"><P ALIGN="CENTER"><B>IDENTIFIED CORRIDOR</B></FONT>');
			Win1.document.writeln('</TD>');
			Win1.document.writeln('</TR>');
			Win1.document.writeln('</TABLE>');

		endpos = 1;
		for (var i=0;i<fCount;i++) {
			if (fCount > 1) {
				Win1.document.write('<FONT FACE="Verdana" SIZE="-2"><BR><b>Record ' + (i+1) + '</b><BR></FONT>');
			}
			inData = parseRecordString(theReply, endpos);
			endpos = xmlEndPos;
			//selectedData = clearLeadingSpace(inData);
			selectedData = inData;
			theField="CLASS";
			startpos=1;
 			theClass = justGetFieldValue(selectedData,theField,startpos);

			theField="NAME";
			startpos=1;
 			theName = justGetFieldValue(selectedData,theField,startpos);

			theField="LINK1";
			startpos=1;
 			theLink1 = justGetFieldValue(selectedData,theField,startpos);

			theField="LINK2";
			startpos=1;
			theLink2 = justGetFieldValue(selectedData,theField,startpos);

			theField="ASSEMBLAGE";
			startpos=1;
 			theAssem = justGetFieldValue(selectedData,theField,startpos);
			theAssemList = theAssem.split(',');

			Win1.document.writeln('<FONT FACE="Verdana" SIZE="-1">');
			Win1.document.writeln('<TABLE WIDTH="60%" ALIGN="CENTER">');
			Win1.document.writeln('<TR>');		
			Win1.document.writeln('<TD>');	
			Win1.document.writeln('<FONT FACE="Verdana" SIZE="-1"><B>Corridor Name: </B></FONT>');
			Win1.document.writeln('</TD>');	
			Win1.document.writeln('<TD>');
			Win1.document.writeln('<FONT FACE="Verdana" SIZE="-1">' + theName + '</FONT>');
			Win1.document.writeln('</TD>');
			Win1.document.writeln('</TR>');
			Win1.document.writeln('<TR>');
			Win1.document.writeln('<TD>');	
			Win1.document.writeln('<FONT FACE="Verdana" SIZE="-1"><B>Corridor Status:</B></FONT>');
			Win1.document.writeln('</TD>');	
			Win1.document.writeln('<TD>');
			Win1.document.writeln('<FONT FACE="Verdana" SIZE="-1">' + theClass + '</FONT>');
			Win1.document.writeln('</TD>');
			Win1.document.writeln('</TR>');
			Win1.document.writeln('</TABLE>');
			// Print out assemblage table
			Win1.document.writeln('<FONT FACE="Verdana" SIZE="-1">');
			Win1.document.writeln('<TABLE WIDTH="70%" ALIGN="CENTER">');
			Win1.document.writeln('<TR>');
			Win1.document.writeln('<TD ALIGN="CENTER">');	
			Win1.document.writeln('<FONT FACE="Verdana" SIZE="-1">This Corridor is a link between ' + theLink1 + '&nbsp;and&nbsp;' + theLink2 + '</FONT>');
			Win1.document.writeln('</TD>');
			Win1.document.writeln('</TR>');
			Win1.document.writeln('</TABLE><BR>');

			Win1.document.writeln('<FONT FACE="Verdana" SIZE="-1">');
			Win1.document.writeln('<TABLE WIDTH="70%" ALIGN="CENTER">');
			Win1.document.writeln('<TR>');
			Win1.document.writeln('<TD ALIGN="CENTER">');	
//Ajay
//			Win1.document.writeln('<FONT FACE="Verdana" SIZE="-1"><B>The ' + theName + ' Corridor is derived from the following </B></FONT><A HREF="http://maps.nationalparks.nsw.gov.au/keyhabs/assemblage_info/Assemblages.htm" target="_blank"><FONT FACE="Verdana" SIZE="-1"><B>fauna assemblages:</B></FONT></A>');
			Win1.document.writeln('<FONT FACE="Verdana" SIZE="-1"><B>The ' + theName + ' Corridor is derived from the following </B></FONT><A HREF="assemblage_info/Assemblages.htm" target="_blank"><FONT FACE="Verdana" SIZE="-1"><B>fauna assemblages:</B></FONT></A>');
			Win1.document.writeln('</TD></TR>');
			for (var cnt=0;cnt<theAssemList.length;cnt++) {
				if (isEven(cnt)) {
					Win1.document.write('<TR >');
				} else {
					Win1.document.write('<TR >');
				}
				var theRefValue = theAssemList[cnt].replace(/ /g, "_"); 
				//Ajay
				// Changing to lower-case
				theRefValue = theRefValue.toLowerCase(); 
				var theLinkURL = khcHyperLinkPrefix + theRefValue + khcHyperLinkSuffix;
				//var linkString = "width=" + hyperlinkWindowWidth + ",height=" + hyperlinkWindowHeight + ",scrollbars=yes,resizable=yes"
				var linkString = " width=200 height=300 scrollbars=yes resizable=yes"
				theStr = "'notes'";
				var aRef = '<A href="' + theLinkURL + '" onClick="return popup(this, ' + theStr + ')">';
				Win1.document.write('<TD ALIGN="CENTER">' + aRef + '<FONT FACE="Verdana" SIZE="-1">' + theAssemList[cnt] + '</FONT></A></TD>');
		
				//Win1.document.writeln('<TD ALIGN="CENTER"><FONT FACE="Verdana" SIZE="-1">' + theAssemList[cnt] + '</FONT></TD>');
				Win1.document.writeln('</TR>');		
			}						
			Win1.document.writeln('</TABLE><BR>');
			Win1.document.writeln('</FONT>');
			Win1.document.writeln('</body>');
			Win1.document.writeln('</html>');

		}
		Win1.document.close();
	}

	hideRetrieveData();
	
}


//NPWS MES
// parse XML response for selected features
// modified for reserve query
function XXkeyHabDisplayData(theReply) {
	setLayerFields(reserveLayerIndex);
	checkHyperLinkLayer(reserveLayerIndex);
	//alert("resDisplayData");
	var theError = getXMLErrorMessage(theReply);
	var fList="";
	var lpos1 = 1;
	var lpos2 = 1;
	var epos = 1;
	var spos = 1;
	var morePoints=true;
	var moreFeatures=true;
	var featureCount = justGetFeatureCount(theReply);
	var pos = 0;
	var startpos = 0;
	var endpos = xmlEndPos;
	var stillMore = false;
	pos = theReply.indexOf('hasmore="true"',endpos);
	if (pos!=-1) stillMore = true;
	pos=0;
	var tempCount = 0;
	var selectedData="";
	var inData="";
	var xStr="";
	var yStr="";
	var tempString = "";
	var fCount = featureCount;
	selectCount = 0;
	var tempString="";
	var Win1 = parent.QueryFrame; //MES
	var theFrame = "parent.MapFrame";
	var selectPoints=new Array();
	if (featureCount > 0) {
		newSelectCount += 1;
		showSelectedData = true;
		if (showSelectedData) {
			Win1 = parent.QueryFrame;
			Win1.document.open();
			Win1.document.writeln('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">');
			Win1.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><head><title>' + titleList[7] + '</title></head>');
			Win1.document.writeln('<body bgcolor="' + QueryFrameBackColor + '" text="Black" link="Blue" vlink="Blue" LEFTMARGIN=0 onload="window.focus()">');
			Win1.document.writeln('<center><FONT FACE="Arial" SIZE="-1"><b>' + LayerName[ActiveLayerIndex] + '</b></FONT></center>');
		}
		endpos = 1;
		for (var i=0;i<fCount;i++) {
			if (fCount > 1) {
				Win1.document.write('<FONT FACE="Arial,sans-serif" SIZE="-2"><b>Record ' + (i+1) + '</b></FONT>');
			}
			Win1.document.writeln('<FONT FACE="Arial,sans-serif" SIZE="-1">');
			Win1.document.write('<TABLE WIDTH="100%">');
			if ((toolMode!=4) && (toolMode!=50)) {
				var theXYs = getEnvelopeXYs(theReply, endpos)
				selectLeft[selectCount] = theXYs[0];
				selectBottom[selectCount] = theXYs[1];
				selectRight[selectCount] = theXYs[2];
				selectTop[selectCount] = theXYs[3];
				endpos = xmlEndPos;
			}
			inData = parseRecordString(theReply, endpos);
			endpos = xmlEndPos;
			//selectedData = clearLeadingSpace(inData);
			selectedData = inData;
			epos = theReply.indexOf("</FEATURE",endpos);
			if (showSelectedData) {
				var showHyper = true;
				var fName1 = getFieldNames(selectedData);
				var fValue1 = getFieldValues(selectedData);
				selectPoints[selectCount] = getIdValue(fName1, fValue1);
				var idFieldNum = -1;
				var shapeFieldNum = -1;
				// hide ID column header
				for (var f=0;f<fName1.length;f++) {
					if (fName1[f]==LayerIDField[reserveLayerIndex]) idFieldNum = f;
				}
				// hide Shape column header
				for (var f=0;f<fName1.length;f++) {
					if (fName1[f]==LayerShapeField[reserveLayerIndex]) shapeFieldNum = f;
				}
				/*alert("reached field alias");
				theFieldNames = "RES_CODE,SHORT_NAME,TYPE,IUCN,GAZ_DATE";
				var resAliasFieldName = theFieldNames.split(",");
				
				theFieldAlias = "Code,Reserve Name,Reserve Type,IUCN Cat,Gazette Date";
				var resAliasFieldAlias = theFieldAlias.split(","); */
				
				for (var cnt=0;cnt<fName1.length;cnt++) {
					if ((cnt!=idFieldNum) && (cnt!=shapeFieldNum)) {
						if (isEven(cnt)) {
							//alert("Made it to true");
							Win1.document.write('<TR BGCOLOR="White">');
							} else {
							//alert("Made it to False");
							Win1.document.write('<TR BGCOLOR="Silver">');
						}
						
						var f2 = -1;
						if (useFieldAlias) {
							for (var f3=0;f3<resAliasFieldName.length;f3++) {
								if (resAliasFieldName[f3]==fName1[cnt]) f2 = f3;
							}
						}
						
						if (f2!=-1) {
							var theField = resAliasFieldAlias[f2];
							} else {
							var theField = fName1[cnt];
						}
						
						var s2 = -1;
						for (var s1=0;s1<LayerFields.length;s1++) {
							if (fName1[cnt]==LayerFields[s1]) s2=s1;
						}
						if (LayerFieldType[s2]=="91") {
							if (isNaN(fValue1[cnt])) {
								var theDate = fValue1[cnt];
								} else {
								var theDateObj = new Date(parseFloat(fValue1[cnt]));
								var d = theDateObj.getDate();
								var day = (d < 10) ? '0' + d : d;
								var m = theDateObj.getMonth();
								var month = (m < 10) ? '0' + m : m;
								var y = theDateObj.getYear();
								var year = (y < 1000) ? 1900 + y : y;
								var theDate = day + "/" + month + "/" + year;
							}
							var theValue = theDate;
							theDate=null;
							} else {
							// put html entity for spaces so display is correct
							var theValue = fValue1[cnt].replace(/ /g, "&nbsp;");
						}
						
						var isHyper=false;
						if (showHyper) {
							//alert("made it to showHyper");
							for (var s1=0;s1<hyperLinkFields.length;s1++) {
								if (hyperLinkFields[s1]==fName1[cnt]) {
									var theLinkURL = currentHyperLinkPrefix + fValue1[cnt] + currentHyperLinkSuffix;
									var aRef = '<a href="' + theLinkURL + '" target="_blank">';
									//alert(aRef);
									isHyper=true;
								}
							}
						}
						if (isHyper) {
							Win1.document.write('<TD><FONT FACE="Arial,sans-serif" SIZE="-1"><B>' + theField + '</B></FONT></TD><TD>' + aRef + '<FONT FACE="Arial,sans-serif" SIZE="-1">' + theValue + '</FONT></A></TD>');
							} else {
							Win1.document.write('<TD><FONT FACE="Arial,sans-serif" SIZE="-1"><B>' + theField + '</B></FONT></TD>' + '<TD><FONT FACE="Arial,sans-serif" SIZE="-1">' + theValue + '</FONT></TD>');
						}
						Win1.document.write('</TR>');
					}
				}
				fName1 = null;
				fValue1 = null;
			}
			
			selectCount += 1;
			Win1.document.writeln('</TABLE>');
			Win1.document.writeln('<br>');
		}
		if (showSelectedData) {
			
			Win1.document.writeln('<FONT FACE="Arial" SIZE="-2">');
			if (toolMode!=25) {
				if (queryStartRecord>1) {
					var prevRecord = queryStartRecord - maxFeaturesReturned;
					if (prevRecord<1) prevRecord=1;
					Win1.document.write('<a href="javascript:' + theFrame + '.resGetMoreData(' + prevRecord + ')">' + msgList[61] + maxFeaturesReturned + msgList[62] + '</a>&nbsp;&nbsp;&nbsp;');
				}
				if (stillMore) {
					var nextRecord=featureCount + queryStartRecord;
					Win1.document.writeln('<a href="javascript:' + theFrame + '.resGetMoreData(' + nextRecord + ')">' + msgList[63] + '</a>');
				}
			}
			
			// NPWS Mod to add link to search for Reseve again
			var theImgSource=appDir + "../images/find_1.gif"
			var theAspSource=appDir + "SubMenu.htm"
			Win1.document.writeln('</FONT>');
			Win1.document.writeln('<FONT FACE="Arial,sans-serif" SIZE="-1">');
			//Win1.document.writeln('<BR>');
			Win1.document.write('<img src="' + theImgSource + '" width=22 height=22 hspace=0 ');
			Win1.document.writeln('vspace=0 border=0 name="Park" alt="Return to Menu">');
			Win1.document.writeln('<B><A HREF="' + theAspSource + '">Return to Menu</A></B>');
			
			//Win1.document.writeln('</font></center></body></html>');
			Win1.document.writeln('</font></body></html>');
			Win1.document.close();
		}
		//alert("toolMode:" + toolMode);
		
		if ((queryStartRecord==1) && ((toolMode!=4) && (toolMode!=50)) && (toolMode!=25)) {
			if ((selectCount==1) && (zoomToSingleSelect)) {
				if ((selectCount==1) && (zoomToSingleSelect)) {
					var fWidth = selectRight[0] - selectLeft[0];
					var fHeight = selectTop[0] - selectBottom[0];
					var mWMargin = 0;
					var mHMargin = 0;
					mWMargin = fWidth * selectMargin;
					mHMargin = fHeight * selectMargin;
				}
				saveLastExtent();
				eLeft = selectLeft[0] - mWMargin;
				eRight = selectRight[0] + mWMargin;
				eTop = selectTop[0] + mHMargin;
				eBottom = selectBottom[0] - mHMargin;
				if (!zoomToFeature) {
					eLeft = lastLeft;
					eBottom = lastBottom;
					eRight = lastRight;
					eTop = lastTop;
				}
			}
			selectCount=0;
			
			if (highlightIdentify) {
				highlightedOne=LayerIDField[reserveLayerIndex] + " IN (" + selectPoints + ")";
				sendMapXML();
			}
		}
		
		
		} else {
		Win1 = parent.QueryFrame;
		Win1.document.open();
		
		Win1.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><head>');
		Win1.document.writeln('	<title>' + titleList[8] + '</title>');
		Win1.document.writeln('</head>');
		Win1.document.writeln('<body BGCOLOR="White" TEXT="Black" LEFTMARGIN=0 TOPMARGIN=0>');
		Win1.document.writeln('<FONT FACE="Arial"><B>You are currently searching in the ' + LayerName[reserveLayerIndex] +' layer</B></font><FONT FACE="Arial" size="-2">');
		Win1.document.writeln('<br><br>' + msgList[64]);
		Win1.document.writeln('<br><br>Try zooming in more to find the reserve you are after');
		if (debugOn>0) {
			Win1.document.writeln('<p>' + msgList[65] + '<br>');
			Win1.document.writeln(untag(theReply));
			} else {
			if (theError!="") {
				Win1.document.writeln('<p>' + msgList[66] + '<br>');
				Win1.document.writeln(theError);
			}
		}
		
		//NPWS
		var theAspSource=appDir + "SubMenu.htm";
		Win1.document.writeln('<BR>');
		Win1.document.writeln('<BR>');
		Win1.document.write('<FONT FACE="Arial" SIZE="-1">');
		Win1.document.writeln('<B><A HREF="' + theAspSource + '"> Return to Menu </A></B></FONT>');
		
		Win1.document.writeln('</FONT>');
		Win1.document.writeln('</body></html>');
		Win1.document.close();
	}
	if (toolMode==4) selectCount=0;
	Win1=null;
	hideRetrieveData();
}

// check to see if active layer is in scale threshold and visible
// so it can be used for querying
function checkIfKHCLayerAvailable() {
	// is the override flag set?
	if (canSelectInvisible) {
		return true;
		} else {
		// is the current scale within the scale min and max?
		if ((mapScaleFactor>=LayerMinScale[khcLayerIndex]) && (mapScaleFactor<=LayerMaxScale[khcLayerIndex])) {
			// is the active layer visible?
			if (LayerVisible[khcLayerIndex]==1) {
				return true;
				
				} else {
				var msg = msgList[104] + LayerName[khcLayerIndex] + msgList[102] + LayerName[khcLayerIndex] + msgList[108];
				
				alert(msg);
				return false;
			}
			} else {
			var msg = msgList[104] + LayerName[khcLayerIndex] + msgList[101];
			//if ((!listAllLayers) && (hasTOC)) msg += msgList[103];
			alert(msg);
			return false;
		}
	}
}


