// aimsCustom.js
/*
*  JavaScript template file for ArcIMS HTML Viewer
*		dependent on aimsXML.js, ArcIMSparam.js, aimsCommon.js, aimsMap.js,
*		aimsLayers.js, aimsDHTML.js
*		aimsClick.js, aimsNavigation.js,
*/

// global variables
	aimsCustomPresent=true;
	// change these to send XML response to custom function.
	// use numbers >= 1000 and match in useCustomFunction()
	// defaults are defined in aimsXML.js and use standard functions
	
	// xml response mode for selection
	selectXMLMode = 7;
	// xml response mode for identify
	identifyXMLMode = 7;
	// xml response mode for query
	queryXMLMode = 8;
	// xml response mode for find
	findXMLMode = 14;
	// xml response mode hyperlink
	hyperlinkXMLMode = 15;
//varibales for custom labels
var lblsText=new Array();
var lblX=new Array();
var lblY=new Array();
var lblsXY=new Array();
var lblColor=new Array();
var lblSize=new Array();

//varibales for custom symbols
var symbolTypeArr=new Array();
var symbolX=new Array();
var symbolY=new Array();
var symbolXY=new Array();
var symbolColor=new Array();
var symbolSize=new Array();

//varibales for custom leaders
var NumLeaderLines=0;	//Number of Leader Lines
var leaderTypeArr=new Array();
var leaderX=new Array(10);
var leaderY=new Array(10);
var leaderXY=new Array(10);
var NumClicks=new Array(10);
for (var i=0; i <10; i++){
leaderX[i]=new Array(3);
leaderY[i]=new Array(3);
leaderXY[i]=new Array(3);

}
var leaderColor=new Array();
var leaderSize=new Array();


// custom function for handling clicks 
// 		flow redirected here when
//		toolMode set to >=1000
function customMapTool(e) {

				if (toolMode == 1004) { 
						startSelectBox(e);
						return false;
  				}
  				if (toolMode == 1005) { 
						startSelectBox(e);
						return false;
  				}
				if (toolMode == 1001) {
						//custom text
						// insert code here
						var theX = mouseX;
						var theY = mouseY;
						clickCountText=clickCountText+1;
						getMapXY(theX,theY);
						lblX[clickCountText]=mapX;
						lblY[clickCountText]=mapY;
						
						//alert(clickCountText);
						return false;	
				}
				
				//alert(toolMode);
				if (toolMode == 1002) {
						// insert code here
						//custom symbol location
						// insert code here
						var theX = mouseX;
						var theY = mouseY;
						clickCountSymbol=clickCountSymbol+1;
						getMapXY(theX,theY);
						
						//alert(mapX + ' ' + mapY);
						symbolX[clickCountSymbol]=mapX;
						symbolY[clickCountSymbol]=mapY;
						
						return false;	

				}
				
				if (toolMode == 1003) {
						// insert code here
						//custom leader location
						var theX = mouseX;
						var theY = mouseY;
						clickCountLeader=clickCountLeader+1;
						NumClicks[NumLeaderLines+1]=clickCountLeader;
						getMapXY(theX,theY);
						
						//alert(mapX + ' ' + mapY);
						leaderX[NumLeaderLines+1][clickCountLeader]=mapX;
						leaderY[NumLeaderLines+1][clickCountLeader]=mapY;
						
						return false;	

				}

				

}

// send  XML response to custom function
//		flow  redirected here when
//		XMLMode >=1000
function useCustomFunction(theReply) {
	if (XMLMode==1001) {
		// insert code here
	} else if (XMLMode==2002) {
		// get multi select response
			displayIDData(theReply);
    } else if (XMLMode == 1666) {
		      doDrill(theReply);
	} else {
		alert("Unknown Mode:" + XMLMode + "\nUnable to execute request.");
	}
	//hideLayer("LoadData");
}

// add custom leader to Map XML request. . . between selection and geocode
function addCustomLeaderToMap(){
	var customString = "";
	//alert(clickCount)
	// draw click points and lines between them on map
	if (NumLeaderLines>=0) {

	for (var i=1;i<NumLeaderLines+1;i++) {
	
		customString += '<OBJECT units="DATABASE">\n<LINE coords="'
		
		for (var j=1;j<NumClicks[i]+1;j++) {

		leaderXY[i][j]=(leaderX[i][j]) + ' ' + (leaderY[i][j])
	
			if (j!=NumClicks[i]) {
				customString += leaderXY[i][j] + ";" ; 
			}else {
				customString += leaderXY[i][j];
			}
				
		}
				
				customString += '" >\n';
				
				switch (leaderColor[i])

		                {
						case "Red":
							customString += '<SIMPLELINESYMBOL type="'+ leaderTypeArr[i] + '" color="255,0,0" width="2" />\n</LINE>\n</OBJECT>\n'; 			
							break;
						case "Green":
							customString += '<SIMPLELINESYMBOL type="'+ leaderTypeArr[i] + '" color="0,255,0" width="2" />\n</LINE>\n</OBJECT>\n'; 	
							break;
						case "Blue":
							customString += '<SIMPLELINESYMBOL type="'+ leaderTypeArr[i] + '" color="0,0,255" width="2" />\n</LINE>\n</OBJECT>\n'; 	
							break;
						case "Yellow":
							customString += '<SIMPLELINESYMBOL type="'+ leaderTypeArr[i] + '" color="255,255,0" width="2" />\n</LINE>\n</OBJECT>\n'; 	
							break;	
						case "Black":
							customString += '<SIMPLELINESYMBOL type="'+ leaderTypeArr[i] + '" color="0,0,0" width="2" />\n</LINE>\n</OBJECT>\n';
							break;
						case "Cyan":
							customString += '<SIMPLELINESYMBOL type="'+ leaderTypeArr[i] + '" color="0,255,255" width="2" />\n</LINE>\n</OBJECT>\n';
							break;
						case "Magenta":
							customString += '<SIMPLELINESYMBOL type="'+ leaderTypeArr[i] + '" color="255,0,255" width="2" />\n</LINE>\n</OBJECT>\n';
							break;	
						case "White":
							customString += '<SIMPLELINESYMBOL type="'+ leaderTypeArr[i] + '" color="255,255,255" width="2" />\n</LINE>\n</OBJECT>\n';
							break;		
			       		}
			       
		}
		
			
	}
			
	//alert(customString);
	return customString;
}

// add custom text to Map XML request. . . between clickpoints and copyright
function addCustomTextToMap(){

	//add text on the map
	var customString = "";

	for (var j=1;j<clickCountText+1;j++) {	
		
		lblsXY[j]=(lblX[j]) + ' ' + (lblY[j])
		
		customString += '<LAYER type="acetate" name="Label">\n'; 
		customString += '<OBJECT units="database">\n<TEXT coords="' + lblsXY[j] + '" label="' + lblsText[j] + '">\n'; 
		switch (lblColor[j])
		{
		case "Red":
			customString += '<TEXTMARKERSYMBOL fontcolor="255,0,0" fontsize="' + lblSize[j] + '"  halignment="right" valignment="bottom" ';
			break;
		case "Green":
			customString += '<TEXTMARKERSYMBOL fontcolor="0,255,0" fontsize="' + lblSize[j]+ '"  halignment="right" valignment="bottom" ';
			break;
		case "Blue":
			customString += '<TEXTMARKERSYMBOL fontcolor="0,0,255" fontsize="' + lblSize[j] + '"  halignment="right" valignment="bottom" ';
			break;
		case "Yellow":
			customString += '<TEXTMARKERSYMBOL fontcolor="255,255,0" fontsize="' + lblSize[j] + '"  halignment="right" valignment="bottom" ';
			break;	
		case "Black":
			customString += '<TEXTMARKERSYMBOL fontcolor="0,0,0" fontsize="' + lblSize[j] + '"  halignment="right" valignment="bottom" ';
			break;
		case "Cyan":
			customString += '<TEXTMARKERSYMBOL fontcolor="0,255,255" fontsize="' + lblSize[j] + '"  halignment="right" valignment="bottom" ';
			break;
		case "Magenta":
			customString += '<TEXTMARKERSYMBOL fontcolor="255,0,255" fontsize="' + lblSize[j] + '"  halignment="right" valignment="bottom" ';
			break;	
		case "White":
			customString += '<TEXTMARKERSYMBOL fontcolor="255,255,255" fontsize="' + lblSize[j] + '"  halignment="right" valignment="bottom" ';
			break;		
		}
		
		customString += 'overlap="true"'  + ' /></TEXT></OBJECT>\n';
		customString += '</LAYER>\n';  
	}
	//alert(customString);
	return customString;
}
// add custom symbol to Map XML request. . . under modeOnMap
function addCustomSymbolToMap(){

	//add symbol on the map
	var customString = "";
		
	for (var j=1;j<clickCountSymbol+1;j++) {	
		symbolXY[j]=(symbolX[j]) + ' ' + (symbolY[j])
			
		customString += '<LAYER type="acetate" name="acetate" id="acetate">\n'; 
		customString += '<OBJECT units="database">\n<POINT coords="' + symbolXY[j] + '">\n'; 
		switch (symbolColor[j])
		{
		case "Red":
			customString += '<SIMPLEMARKERSYMBOL type="'+ symbolTypeArr[j] + '" color="255,0,0" width="'+symbolSize[j]+'" ';
			break;
		case "Green":
			customString += '<SIMPLEMARKERSYMBOL color="0,255,0"' + ' type="'+ symbolTypeArr[j] +'" width="'+symbolSize[j]+'" ';
			break;
		case "Blue":
			customString += '<SIMPLEMARKERSYMBOL color="0,0,255"' + ' type="'+ symbolTypeArr[j] +'" width="'+symbolSize[j]+'" ';
			break;
		case "Yellow":
			customString += '<SIMPLEMARKERSYMBOL color="255,255,0"' + ' type="'+ symbolTypeArr[j] +'" width="'+symbolSize[j]+'" ';
			break;	
		case "Black":
			customString += '<SIMPLEMARKERSYMBOL color="0,0,0"' + ' type="'+ symbolTypeArr[j] +'" width="'+symbolSize[j]+'" ';
			break;
		case "Cyan":
			customString += '<SIMPLEMARKERSYMBOL color="0,255,255"' + ' type="'+ symbolTypeArr[j] +'" width="'+symbolSize[j]+'" ';
			break;
		case "Magenta":
			customString += '<SIMPLEMARKERSYMBOL color="255,0,255"' + ' type="'+ symbolTypeArr[j] +'" width="'+symbolSize[j]+'" ';
			break;	
		case "White":
			customString += '<SIMPLEMARKERSYMBOL color="255,255,255"' + ' type="'+ symbolTypeArr[j] +'" width="'+symbolSize[j]+'" ';
			break;		
		}
		
		customString += ' /></POINT></OBJECT>\n';
		customString += '</LAYER>\n';  
	}
	//alert(customString);
	return customString;
}

// add custom stuff to Map XML request. . . on top of everything
function addCustomToMap4(){
	var customString = "";
	
	return customString;
}

// extract layers to download
function extractIt() {
	hideLayer("measureBox");
	theurl = serverURL + "ColumbiaCoExtract";
	thestring = writeExtractXML();
//alert(theurl);
//alert(thestring);
	sendToServer(theurl,thestring,1000);
}


