// CivXplorer Command Line Startup Extension

// Suzanne Fliege
// PlanSight, LLC

// contains functions to supported startup with a layer search.
cmdstartAvailable = true;
var startQueryString = "";
var nazcaSessionID = "";

// search parameters from URL
function getCXCommandLineParams(cmdString) {
	// Parse out from URL querystring parameters to pass to the viewer.
	// Syntax:
	// ActiveLayerID=layerID			ID of layer to be active as named in AXL
	// Query=queryExpression			query expression to be send on load - expression must be escaped in URL
	// LYRVIS=layerID					ID of layer (or group) to turn on at startup
	// OVRLAY=layerID					ID of overlay layer (or group) to turn on at startup
	// SessionID=NazcaSessionID			Nazca session ID, to be used to send data back
	var cmdString2 = cmdString.toUpperCase();
	var endpos = 0;
	var startpos = 0;
	// query layer
	var pos = cmdString2.indexOf("ACTIVELAYERID=");
	if (pos != -1) {
		startpos = pos + 14;
		endpos = cmdString.indexOf("&",startpos);
		if (endpos==-1) endpos = cmdString.length;
		var actlyr = cmdString.substring(startpos,endpos);
		setActiveLayer(actlyr,false,false);
	}	
	// query string
	pos = cmdString2.indexOf("QUERY=");
	startQueryString = "";
	if ((pos != -1) && (ActiveLayerIndex != -1)) {
		startpos = pos + 6;
		endpos = cmdString.indexOf("&",startpos);
		if (endpos==-1) endpos = cmdString.length;
		var escQuery = cmdString.substring(startpos,endpos);
		// expected format of query is query=fieldname%3D'fieldvalue'%20or%20fieldname%3D'fieldvalue'.....  (%3D="=",%22=""",%20=" ", use ' is ok...no code)
		escQuery = replacePlus(escQuery);
		startQueryString = unescape(escQuery);
	}	
	// set layer visibility
	pos = cmdString2.indexOf("LYRVIS=");
	if (pos!=-1) {
		startpos = pos + 7;
		endpos = cmdString.indexOf("&",startpos);
		if (endpos==-1) endpos = cmdString.length;
		var tempString = unescape(cmdString.substring(startpos,endpos));
		var tempArray = tempString.split(":");
		for (var k=0;k<tempArray.length;k++) {
			for (var i=0;i<tocOptionalList.length;i++) {
				if (tempArray[k] == tocOptionalList[i][1]) {
					tocOptionalList[i][3] = "true";
					if (isNaN(tocOptionalList[i][2])) {  // is a group
						TurnGroupOptionalOn(tempArray[k]);
					} else { // is a single layer
						LayerVisible[tocOptionalList[i][2]] = "true";
					}
				}
			}
		}
	}
	// set map type (overlays)
	pos = cmdString2.indexOf("OVRLAY=");
	if (pos!=-1) {
		startpos = pos + 7;
		endpos = cmdString.indexOf("&",startpos);
		if (endpos==-1) endpos = cmdString.length;
		var tempString = unescape(cmdString.substring(startpos,endpos));
		for (var i=0;i<tocOverlayList.length;i++) {
			if (tempString == tocOverlayList[i][1]) {
				if (isNaN(tocOverlayList[i][3])) {  // is a group
					TurnGroupOverlayOn(tempString);
				} else { // is a single overlay layer
					LayerVisible[tocOverlayList[i][3]] = "true";
					tocOverlayCurrent = tempString;
					tocOverlayCurrentType = LayerTypeUser[tocOverlayList[i][3]];
				}
			}
		}
	}
	// session ID (used for Stearns Nazca integration)
	pos = cmdString2.indexOf("SESSIONID=");
	if (pos!=-1) {
		startpos = pos + 10;
		endpos = cmdString.indexOf("&",startpos);
		if (endpos==-1) endpos = cmdString.length;
		var nazcaSessionID = cmdString.substring(startpos,endpos);
	}
	// refresh layer TOC
	createTOC();
	// write starting query string or just draw map
	if (startQueryString != "") {
		var theString = writeQueryXML(startQueryString);
		zoomToSelected = true;
		webParams = "";
		sendToServer(imsQueryURL,theString,8);
	} else {
		sendMapRequest();
	}
}

