function CustomBrowserXMLObject() {
	var ieVersions = new Array([ "Microsoft.XmlDom", "Microsoft.XMLHTTP" ], [
			"MSXML.DOMDocument", "Microsoft.XMLHTTP" ], [ "Msxml2.DOMDocument",
			"MSXML2.XMLHTTP" ]);
	var xmlHttp = null;
	var xmlDoc = null;
	var client = "";
	function initialize() {
		if (window.ActiveXObject) {
			var i, len = ieVersions.length;
			for (i = 0; i < len; i++) {
				try {
					xmlDoc = new ActiveXObject(ieVersions[i][0]);
					xmlHttp = new ActiveXObject(ieVersions[i][1]);
					client = "ie";
					break
				} catch (e1) {
				}
			}
		} else {
			if (window.XMLHttpRequest) {
				xmlHttp = new XMLHttpRequest();
				xmlDoc = document.implementation.createDocument("", "", null);
				client = navigator.userAgent.toLowerCase().indexOf("chrome") > -1 ? "chrome"
						: "mozilla"
			} else {
				client = "Unknown Client"
			}
		}
	}
	this.operationOnXML = function(url, callback) {
		if (this.getClient() == "ie") {
			xmlDoc.async = false;
			xmlDoc.onreadystatechange = function() {
				if (xmlDoc.readyState == 4) {
					callCallback()
				}
			};
			xmlDoc.load(url)
		} else {
			if (this.getClient() == "mozilla") {
				xmlDoc.load(url);
				xmlDoc.onload = function() {
					callCallback()
				}
			} else {
				if (this.getClient() == "chrome") {
					xmlhttp = this.getXMLHttpObject();
					xmlhttp.open("GET", url, false);
					xmlhttp.send(null);
					xmlDoc = xmlhttp.responseXML;
					callCallback()
				}
			}
		}
		function callCallback() {
			new callback
		}
	};
	this.operationOnAjax = function(url, callback, callback1) {
		if (xmlHttp == null) {
			initialize()
		}
		xmlHttp.open("GET", url, true);
		xmlHttp.send(null);
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
				callback(xmlHttp.responseText)
			} else {
				if (xmlHttp.readyState != 4) {
					if (callback1 != null) {
						callback1(xmlHttp.readyState)
					}
				}
			}
		}
	};
	this.getXMLHttpObject = function() {
		if (xmlHttp == null) {
			initialize()
		}
		return xmlHttp
	};
	this.getXMLDocObject = function(url) {
		if (xmlDoc == null) {
			initialize()
		}
		return xmlDoc
	};
	this.getClient = function() {
		if (xmlDoc == null) {
			initialize()
		}
		return client
	}
}


function initializeMapServerLayer(map, jsonParams) {
	var urlFetchMinMax = baseUrl + "/GetMSLMinMaxAjax.idi?n="+Math.floor(Math.random()*10001)+"&params="
			+ encodeURI(YAHOO.lang.JSON.stringify(jsonParams.primaryRequest));
	var urlCreateMapFile = baseUrl + "/GetMapFileAjax.idi?m="+Math.floor(Math.random()*10001)+"&params=";
	var jsonResponse;
	var ajaxCallMinMax = new CustomBrowserXMLObject();
	var ajaxCallCreateMapLayer = new CustomBrowserXMLObject();
	var ajaxCallAutoZoom = new CustomBrowserXMLObject();
	var legendObj = null;
	var layerObj = null;
	ajaxCallMinMax
			.operationOnAjax(
					urlFetchMinMax,
					function(response) {
						jsonResponse = YAHOO.lang.JSON.parse(response);
						if (jsonResponse.min != "" || jsonResponse.max != "") {
							if (jsonParams.configuration.autoZoom) {
								var autoZoom = jsonResponse.boundBox;
								var boundBox = new GLatLngBounds(new GLatLng(
										autoZoom.southWest.latitude,
										autoZoom.southWest.longitude),
										new GLatLng(
												autoZoom.northEast.latitude,
												autoZoom.northEast.longitude));
								map.setCenterFromBoundbox(boundBox)
							}
							legendObj = new CS_LayerLegends(
									jsonResponse.min,
									jsonResponse.max,
									jsonParams.legendParams.defaultColourParams,
									jsonParams.legendParams.layerId,
									jsonParams.legendParams.styleClass,
									jsonParams.primaryRequest.indicator);
							map.LEGEND_PANEL_CONTROLLER.addOrUpdateLegend(
									jsonParams.legendParams.layerId, legendObj);
							jsonParams.legendParams.defaultColourParams = legendObj
									.getLegendColourDivition();
							urlCreateMapFile += encodeURI(YAHOO.lang.JSON
									.stringify(jsonParams));
							ajaxCallCreateMapLayer
									.operationOnAjax(
											urlCreateMapFile,
											function(response) {
												jsonResponse = YAHOO.lang.JSON
														.parse(response);
												if (jsonResponse.file != "") {
													var mapServerUrl = mapserverurl
															+ "map="
															+ jsonResponse.file
															+ "&layers="
															+ jsonResponse.layerName
															+ "&mode=tile&tilemode=gmap&tile={X}+{Y}+{Z}";
													layerObj = new CS_LayersMapServer(
															map.getMap(),
															mapServerUrl,
															jsonParams.configuration.transparency,
															legendObj,
															jsonParams.configuration.zPriority);
													layerObj
															.setInfoWindowParams(new CS_LayerInfoWindowData(
																	jsonParams.primaryRequest.indicator,
																	jsonParams.primaryRequest.type,
																	jsonParams.primaryRequest.year));
													map.SLIDER_OBJECT
															.showSlider();
													map.LAYER_OBJECT = layerObj;
													map
															.setListenerForInfoWindow(
																	jsonParams.legendParams.layerId,
																	layerObj
																			.getInfoWindowParams());
													document
															.getElementById("map_heading_"
																	+ jsonParams.legendParams.layerId).innerHTML = jsonParams.primaryRequest.indicator
												} else {
													map.LAYER_OBJECT = null;
													document
															.getElementById("map_heading_"
																	+ jsonParams.legendParams.layerId).innerHTML = ""
												}
											})
						} else {
							document.getElementById("map_heading_"
									+ jsonParams.legendParams.layerId).innerHTML = "[No Map Loaded]";
							map.SLIDER_OBJECT.hideSlider();
							map.removeListenerForInfoWindow()
						}
					})
}
function initializeLocationType_map(from, type, indicator, targetObj,
		targetObj1) {
	var browserObj = new CustomBrowserXMLObject();
	var url = baseUrl + "/GetLocationTypeListForMapAjax.idi?indicator="
			+ encodeURI(indicator);
	var jsonResponse = null;
	var comboBoxOperation = new ComboBoxOperation(targetObj);
	browserObj.operationOnAjax(url,
			function(response) {
				jsonResponse = YAHOO.lang.JSON.parse(response);
				comboBoxOperation.initCombo(jsonResponse.locations);
				if (jsonResponse.locations != null
						&& jsonResponse.locations.length > 0) {
					initializeYear_map(from, type, indicator,
							jsonResponse.locations[0][1], targetObj1)
				} else {
					initializeYear_map(from, type, indicator, "", targetObj1)
				}
			})
}
function initializeYear_map(from, type, indicator, locationType, targetObj) {
	var browserObj = new CustomBrowserXMLObject();
	var url = baseUrl + "/GetYearListForMapAjax.idi?indicator="
			+ encodeURI(indicator) + "&locationType=" + encodeURI(locationType);
	var jsonResponse = null;
	var comboBoxOperation = new ComboBoxOperation(targetObj);
	browserObj.operationOnAjax(url, function(response) {
		jsonResponse = YAHOO.lang.JSON.parse(response);
		comboBoxOperation.initCombo(jsonResponse.year);
		controlLayerOperation(from)
	})
}
function initializeInfoWindow(targetDiv, jsonParams) {
	var browserObj = new CustomBrowserXMLObject();
	var url = baseUrl + "/GetInfoWindowParamsAjax.idi?request="
			+ encodeURI(YAHOO.lang.JSON.stringify(jsonParams));
	browserObj.operationOnAjax(url, function(responseHTML) {
		targetDiv.innerHTML = responseHTML
	}, function(status) {
		targetDiv.innerHTML = "Loading - " + status
	})
};
function GZoomControl(oBoxStyle, oOptions, oCallbacks) {
	GZoomControl.G.style = {
		nOpacity : 0.2,
		sColor : "#000",
		sBorder : "2px solid blue"
	};
	var style = GZoomControl.G.style;
	for ( var s in oBoxStyle) {
		style[s] = oBoxStyle[s]
	}
	var aStyle = style.sBorder.split(" ");
	style.nOutlineWidth = parseInt(aStyle[0].replace(/\D/g, ""));
	style.sOutlineColor = aStyle[2];
	style.sIEAlpha = "alpha(opacity=" + (style.nOpacity * 100) + ")";
	GZoomControl.G.options = {
		bForceCheckResize : false,
		sButtonHTML : "zoom ...",
		oButtonStartingStyle : {
			width : "52px",
			border : "1px solid black",
			padding : "0px 5px 1px 5px"
		},
		oButtonStyle : {
			background : "#FFF"
		},
		sButtonZoomingHTML : "Drag a region on the map",
		oButtonZoomingStyle : {
			background : "#FF0"
		},
		nOverlayRemoveMS : 6000,
		bStickyZoom : false
	};
	for ( var s in oOptions) {
		GZoomControl.G.options[s] = oOptions[s]
	}
	if (oCallbacks == null) {
		oCallbacks = {}
	}
	GZoomControl.G.callbacks = oCallbacks
}
GZoomControl.prototype = new GControl();
GZoomControl.G = {
	bDragging : false,
	mct : null,
	mcr : null,
	mcb : null,
	mcl : null,
	oMapPos : null,
	oOutline : null,
	nMapWidth : 0,
	nMapHeight : 0,
	nMapRatio : 0,
	nStartX : 0,
	nStartY : 0,
	nBorderCorrect : 0
};
GZoomControl.prototype.initButton_ = function(oMapContainer) {
	var G = GZoomControl.G;
	var oButton = document.createElement("div");
	oButton.innerHTML = G.options.sButtonHTML;
	oButton.id = "gzoom-control";
	acl.style([ oButton ], {
		cursor : "pointer",
		zIndex : 200
	});
	acl.style([ oButton ], G.options.oButtonStartingStyle);
	acl.style([ oButton ], G.options.oButtonStyle);
	oMapContainer.appendChild(oButton);
	return oButton
};
GZoomControl.prototype.setButtonMode_ = function(sMode) {
	var G = GZoomControl.G;
	if (sMode == "zooming") {
		G.oButton.innerHTML = G.options.sButtonZoomingHTML;
		acl.style([ G.oButton ], G.options.oButtonZoomingStyle)
	} else {
		G.oButton.innerHTML = G.options.sButtonHTML;
		acl.style([ G.oButton ], G.options.oButtonStyle)
	}
};
GZoomControl.prototype.initialize = function(oMap) {
	var G = GZoomControl.G;
	var oMC = oMap.getContainer();
	var oButton = this.initButton_(oMC);
	var o = document.createElement("div");
	o.id = "gzoom-map-cover";
	o.innerHTML = '<div id="gzoom-outline" style="position:absolute;display:none;"></div><div id="gzoom-mct" style="position:absolute;display:none;"></div><div id="gzoom-mcl" style="position:absolute;display:none;"></div><div id="gzoom-mcr" style="position:absolute;display:none;"></div><div id="gzoom-mcb" style="position:absolute;display:none;"></div>';
	acl.style([ o ], {
		position : "absolute",
		display : "none",
		overflow : "hidden",
		cursor : "crosshair",
		zIndex : 101
	});
	oMC.appendChild(o);
	GEvent
			.addDomListener(oButton, "click",
					GZoomControl.prototype.buttonClick_);
	GEvent.addDomListener(o, "mousedown",
			GZoomControl.prototype.coverMousedown_);
	GEvent.addDomListener(document, "mousemove", GZoomControl.prototype.drag_);
	GEvent.addDomListener(document, "mouseup", GZoomControl.prototype.mouseup_);
	G.oMapPos = acl.getElementPosition(oMap.getContainer());
	G.oOutline = $id("gzoom-outline");
	G.oButton = $id("gzoom-control");
	G.mc = $id("gzoom-map-cover");
	G.mct = $id("gzoom-mct");
	G.mcr = $id("gzoom-mcr");
	G.mcb = $id("gzoom-mcb");
	G.mcl = $id("gzoom-mcl");
	G.oMap = oMap;
	G.nBorderCorrect = G.style.nOutlineWidth * 2;
	this.setDimensions_();
	this.initStyles_();
	debug("Finished Initializing gzoom control");
	return oButton
};
GZoomControl.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(3, 120))
};
GZoomControl.prototype.coverMousedown_ = function(e) {
	var G = GZoomControl.G;
	var oPos = GZoomControl.prototype.getRelPos_(e);
	debug("Mouse down at " + oPos.left + ", " + oPos.top);
	G.nStartX = oPos.left;
	G.nStartY = oPos.top;
	acl.style([ G.mc ], {
		background : "transparent",
		opacity : 1,
		filter : "alpha(opacity=100)"
	});
	acl.style([ G.oOutline ], {
		left : G.nStartX + "px",
		top : G.nStartY + "px",
		display : "block",
		width : "1px",
		height : "1px"
	});
	G.bDragging = true;
	G.mct.style.top = (G.nStartY - G.nMapHeight) + "px";
	G.mct.style.display = "block";
	G.mcl.style.left = (G.nStartX - G.nMapWidth) + "px";
	G.mcl.style.top = (G.nStartY) + "px";
	G.mcl.style.display = "block";
	G.mcr.style.left = (G.nStartX) + "px";
	G.mcr.style.top = (G.nStartY) + "px";
	G.mcr.style.display = "block";
	G.mcb.style.left = (G.nStartX) + "px";
	G.mcb.style.top = (G.nStartY) + "px";
	G.mcb.style.width = "0px";
	G.mcb.style.display = "block";
	if (G.callbacks.dragStart != null) {
		G.callbacks.dragStart(G.nStartX, G.nStartY)
	}
	debug("mouse down done");
	return false
};
GZoomControl.prototype.drag_ = function(e) {
	var G = GZoomControl.G;
	if (G.bDragging) {
		var oPos = GZoomControl.prototype.getRelPos_(e);
		oRec = GZoomControl.prototype.getRectangle_(G.nStartX, G.nStartY, oPos,
				G.nMapRatio);
		G.oOutline.style.width = oRec.nWidth + "px";
		G.oOutline.style.height = oRec.nHeight + "px";
		G.mcr.style.left = (oRec.nEndX + G.nBorderCorrect) + "px";
		G.mcb.style.top = (oRec.nEndY + G.nBorderCorrect) + "px";
		G.mcb.style.width = (oRec.nWidth + G.nBorderCorrect) + "px";
		if (G.callbacks.dragging != null) {
			G.callbacks.dragging(G.nStartX, G.nStartY, oRec.nEndX, oRec.nEndY)
		}
		return false
	}
};
GZoomControl.prototype.mouseup_ = function(e) {
	var G = GZoomControl.G;
	if (G.bDragging) {
		var oPos = GZoomControl.prototype.getRelPos_(e);
		G.bDragging = false;
		var oRec = GZoomControl.prototype.getRectangle_(G.nStartX, G.nStartY,
				oPos, G.nMapRatio);
		debug("mouse up at " + oRec.nEndX + ", " + oRec.nEndY
				+ ". Height/width=" + oRec.nWidth + "," + oRec.nHeight);
		GZoomControl.prototype.resetDragZoom_();
		var nwpx = new GPoint(oRec.nStartX, oRec.nStartY);
		var nepx = new GPoint(oRec.nEndX, oRec.nStartY);
		var sepx = new GPoint(oRec.nEndX, oRec.nEndY);
		var swpx = new GPoint(oRec.nStartX, oRec.nEndY);
		var nw = G.oMap.fromContainerPixelToLatLng(nwpx);
		var ne = G.oMap.fromContainerPixelToLatLng(nepx);
		var se = G.oMap.fromContainerPixelToLatLng(sepx);
		var sw = G.oMap.fromContainerPixelToLatLng(swpx);
		var oZoomArea = new GPolyline([ nw, ne, se, sw, nw ],
				G.style.sOutlineColor, G.style.nOutlineWidth + 1, 0.4);
		try {
			G.oMap.addOverlay(oZoomArea);
			setTimeout(function() {
				G.oMap.removeOverlay(oZoomArea)
			}, G.options.nOverlayRemoveMS)
		} catch (e) {
			jslog.error("error adding zoomarea overlay:" + e.message)
		}
		oBounds = new GLatLngBounds(sw, ne);
		nZoom = G.oMap.getBoundsZoomLevel(oBounds);
		oCenter = oBounds.getCenter();
		G.oMap.setCenter(oCenter, nZoom);
		if (G.callbacks.dragEnd != null) {
			G.callbacks.dragEnd(nw, ne, se, sw, nwpx, nepx, sepx, swpx)
		}
		if (G.options.bStickyZoom) {
			GZoomControl.prototype.initCover_()
		}
	}
};
GZoomControl.prototype.setDimensions_ = function() {
	var G = GZoomControl.G;
	if (G.options.bForceCheckResize) {
		G.oMap.checkResize()
	}
	var oSize = G.oMap.getSize();
	G.nMapWidth = oSize.width;
	G.nMapHeight = oSize.height;
	G.nMapRatio = G.nMapHeight / G.nMapWidth;
	acl.style([ G.mc, G.mct, G.mcr, G.mcb, G.mcl ], {
		width : G.nMapWidth + "px",
		height : G.nMapHeight + "px"
	})
};
GZoomControl.prototype.initStyles_ = function() {
	var G = GZoomControl.G;
	acl.style([ G.mc, G.mct, G.mcr, G.mcb, G.mcl ], {
		filter : G.style.sIEAlpha,
		opacity : G.style.nOpacity,
		background : G.style.sColor
	});
	G.oOutline.style.border = G.style.sBorder;
	debug("done initStyles_")
};
GZoomControl.prototype.buttonClick_ = function() {
	if (GZoomControl.G.mc.style.display == "block") {
		GZoomControl.prototype.resetDragZoom_()
	} else {
		GZoomControl.prototype.initCover_()
	}
};
GZoomControl.prototype.initCover_ = function() {
	var G = GZoomControl.G;
	G.oMapPos = acl.getElementPosition(G.oMap.getContainer());
	GZoomControl.prototype.setDimensions_();
	GZoomControl.prototype.setButtonMode_("zooming");
	acl.style([ G.mc ], {
		display : "block",
		background : G.style.sColor
	});
	acl.style([ G.oOutline ], {
		width : "0px",
		height : "0px"
	});
	if (GZoomControl.G.callbacks.buttonClick != null) {
		GZoomControl.G.callbacks.buttonClick()
	}
	debug("done initCover_")
};
GZoomControl.prototype.getRelPos_ = function(e) {
	var oPos = acl.getMousePosition(e);
	var G = GZoomControl.G;
	return {
		top : (oPos.top - G.oMapPos.top),
		left : (oPos.left - G.oMapPos.left)
	};
};
GZoomControl.prototype.getRectangle_ = function(nStartX, nStartY, oPos, nRatio) {
	var dX = oPos.left - nStartX;
	var dY = oPos.top - nStartY;
	if (dX < 0) {
		dX = dX * -1;
	}
	if (dY < 0) {
		dY = dY * -1;
	}
	delta = dX > dY ? dX : dY;
	return {
		nStartX : nStartX,
		nStartY : nStartY,
		nEndX : nStartX + delta,
		nEndY : nStartY + parseInt(delta * nRatio),
		nWidth : delta,
		nHeight : parseInt(delta * nRatio)
	};
};
GZoomControl.prototype.resetDragZoom_ = function() {
	var G = GZoomControl.G;
	acl.style([ G.mc, G.mct, G.mcr, G.mcb, G.mcl ], {
		display : "none",
		opacity : G.style.nOpacity,
		filter : G.style.sIEAlpha
	});
	G.oOutline.style.display = "none";
	GZoomControl.prototype.setButtonMode_("normal");
	debug("done with reset drag zoom");
};
function $id(sId) {
	return document.getElementById(sId);
}
if (!window.acldefined) {
	var acl = {};
	window.acldefined = true;
}
acl.getMousePosition = function(e) {
	var posx = 0;
	var posy = 0;
	if (!e) {
		var e = window.event;
	}
	if (e.pageX || e.pageY) {
		posx = e.pageX;
		posy = e.pageY;
	} else {
		if (e.clientX || e.clientY) {
			posx = e.clientX
					+ (document.documentElement.scrollLeft ? document.documentElement.scrollLeft
							: document.body.scrollLeft);
			posy = e.clientY
					+ (document.documentElement.scrollTop ? document.documentElement.scrollTop
							: document.body.scrollTop)
		}
	}
	return {
		left : posx,
		top : posy
	};
};
acl.getElementPosition = function(eElement) {
	var nLeftPos = eElement.offsetLeft;
	var nTopPos = eElement.offsetTop;
	var eParElement = eElement.offsetParent;
	while (eParElement != null) {
		nLeftPos += eParElement.offsetLeft;
		nTopPos += eParElement.offsetTop;
		eParElement = eParElement.offsetParent;
	}
	return {
		left : nLeftPos,
		top : nTopPos
	};
};
acl.style = function(a, o) {
	if (typeof (a) == "string") {
		a = acl.getManyElements(a);
	}
	for ( var i = 0; i < a.length; i++) {
		for ( var s in o) {
			a[i].style[s] = o[s];
		}
	}
};
acl.getManyElements = function(s) {
	t = s.split(",");
	a = [];
	for ( var i = 0; i < t.length; i++) {
		a[a.length] = $id(t[i]);
	}
	return a;
};
var jslog = {
	debug : function() {
	},
	info : function() {
	},
	warning : function() {
	},
	error : function() {
	},
	text : function() {
	}
};
var debug = function() {
};
if (location.href.match(/enablejslog/)) {
	document
			.write('<script type="text/javascript" src="http://earthcode.com/includes/scripts/jslog.js"><\/script>');
};
function HtmlControl(_1, _2) {
	this.html = _1;
	this.isVisible = true;
	this.isPrintable = false;
	this.isSelectable = false;
	if (_2) {
		this.isVisible = (_2.visible === false) ? false : true;
		this.isPrintable = (_2.printable === true) ? true : false;
		this.isSelectable = (_2.selectable === true) ? true : false;
	}
}
HtmlControl.prototype = new GControl();
HtmlControl.prototype.initialize = function(_3) {
	this.div = document.createElement("div");
	this.div.innerHTML = this.html;
	this.setVisible(this.isVisible);
	_3.getContainer().appendChild(this.div);
	return this.div;
};
HtmlControl.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7, 7))
};
HtmlControl.prototype.selectable = function() {
	return this.isSelectable;
};
HtmlControl.prototype.printable = function() {
	return this.isPrintable;
};
HtmlControl.prototype.setVisible = function(_4) {
	this.div.style.display = _4 ? "" : "none";
	this.isVisible = _4;
};
HtmlControl.prototype.visible = function() {
	return this.isVisible;
};
var MAX_LEGENDS = 5;
function CS_Map(targetObj, mapName, centerLat, centerLong, zoomLavel) {
	var map = null;
	this.SLIDER_OBJECT = null;
	this.LISTENER = null;
	this.LAYER_NAME = mapName;
	this.LAYER_OBJECT = null;
	this.LAYER_TRANSPARENCY = null;
	this.MARKER_OBJECT = null;
	this.LEGEND_PANEL_CONTROLLER = null;
	if (map == null) {
		map = new google.maps.Map2(targetObj);
		map.setCenter(new google.maps.LatLng(centerLat, centerLong), zoomLavel);
		map.addControl(new GScaleControl());
		map.addControl(new GLargeMapControl3D());
		map.addControl(new GMapTypeControl());
		map.enableScrollWheelZoom();
	}
	this.setListenerForInfoWindow = function(id, layerIWParam) {
		this.LISTENER = GEvent.addListener(map, "click", function(X, latlng) {
			var jsonRequest = {
				indicator : layerIWParam.getIndicator(),
				locationType : layerIWParam.getLocationType(),
				year : layerIWParam.getYear(),
				point : {
					latitude : latlng.lat(),
					longitude : latlng.lng()
				}
			};
			map.openInfoWindowHtml(latlng, getInfoWindowDefaultHtml(id), {
				onOpenFn : function() {
					initializeInfoWindow(document.getElementById("infowindow_"
							+ id), jsonRequest);
				}
			});
		});
		function getInfoWindowDefaultHtml(id) {
			var html = "<div style='text-align:center' id='infowindow_"
					+ id
					+ "'><table align='center' border='0' cellspacing='5' cellpadding='0' class='infoWindow' height='120' ><tr><td align='center' valign='middle'><img src='"
					+ baseUrl
					+ "/assets/images/common/loading/loading_00.gif' width='32' height='32' /></td><td>Loading</td></tr></table></div>";
			return html;
		}
	};
	this.removeListenerForInfoWindow = function() {
		GEvent.removeListener(this.LISTENER);
	};
	this.addSliderControl = function(id) {
		try {
			map.addControl(new HtmlControl(getSliderHtml(id), {
				visible : true,
				selectable : true,
				printable : true
			}), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(215, 8)));
			var sliderObjMap = null;
			sliderObjMap = new CS_Slider(document
					.getElementById("slider-location-" + id), document
					.getElementById("slider-" + id), document
					.getElementById("slider-input-" + id), document
					.getElementById("slider-value-" + id));
			sliderObjMap.setValue(70);
			sliderObjMap.setMinimum(0);
			sliderObjMap.setMaximum(100);
			sliderObjMap.setCallback("transparencyChanged_map" + id + "()");
			sliderObjMap.recalculate();
			this.LAYER_TRANSPARENCY = sliderObjMap.getValue() / 100;
			this.SLIDER_OBJECT = sliderObjMap;
		} catch (e) {
			alert(e);
		}
	};
	this.setCenter = function(centerLat, centerLong, zoomLavel) {
		map.setCenter(new google.maps.LatLng(centerLat, centerLong), zoomLavel);
	};
	this.setCenterFromBoundbox = function(boundbox) {
		map.setCenter(boundbox.getCenter(), map.getBoundsZoomLevel(boundbox));
	};
	this.getBounds = function() {
		return map.getBounds();
	};
	this.addOverlay = function(item) {
		map.addOverlay(item);
	};
	this.removeOverlay = function(item) {
		map.removeOverlay(item);
	};
	this.getContainerDiv = function() {
		return targetObj;
	};
	this.getMap = function() {
		return map;
	};
}
function CS_TwingMapOperation(map1, map2) {
	var dragStart1;
	var dragEnd1;
	var dragging1;
	var zoomStart1;
	var zoomEnd1;
	var zooming1;
	var dragStart2;
	var dragEnd2;
	var dragging2;
	var zoomStart2;
	var zoomEnd2;
	var zooming2;
	this.linkMaps = function() {
		map2.setCenterFromBoundbox(map1.getBounds());
		dragStart1 = GEvent.addListener(map1.getMap(), "dragstart", function() {
			map2.setCenterFromBoundbox(map1.getBounds());
		});
		dragEnd1 = GEvent.addListener(map1.getMap(), "dragend", function() {
			map2.setCenterFromBoundbox(map1.getBounds());
		});
		dragging1 = GEvent.addListener(map1.getMap(), "drag", function() {
			map2.setCenterFromBoundbox(map1.getBounds());
		});
		zoomStart1 = GEvent.addListener(map1.getMap(), "zoomstart", function() {
			map2.setCenterFromBoundbox(map1.getBounds());
		});
		zoomEnd1 = GEvent.addListener(map1.getMap(), "zoomend", function() {
			map2.setCenterFromBoundbox(map1.getBounds());
		});
		zooming1 = GEvent.addListener(map1.getMap(), "zooming", function() {
			map2.setCenterFromBoundbox(map1.getBounds());
		});
		dragStart2 = GEvent.addListener(map2.getMap(), "dragstart", function() {
			map1.setCenterFromBoundbox(map2.getBounds());
		});
		dragEnd2 = GEvent.addListener(map2.getMap(), "dragend", function() {
			map1.setCenterFromBoundbox(map2.getBounds());
		});
		dragging2 = GEvent.addListener(map2.getMap(), "drag", function() {
			map1.setCenterFromBoundbox(map2.getBounds());
		});
		zoomStart2 = GEvent.addListener(map2.getMap(), "zoomstart", function() {
			map1.setCenterFromBoundbox(map2.getBounds());
		});
		zoomEnd2 = GEvent.addListener(map2.getMap(), "zoomend", function() {
			map1.setCenterFromBoundbox(map2.getBounds());
		});
		zooming2 = GEvent.addListener(map2.getMap(), "zooming", function() {
			map1.setCenterFromBoundbox(map2.getBounds());
		})
	};
	this.unlinkMaps = function() {
		GEvent.removeListener(dragStart1);
		GEvent.removeListener(dragEnd1);
		GEvent.removeListener(dragging1);
		GEvent.removeListener(zoomStart1);
		GEvent.removeListener(zoomEnd1);
		GEvent.removeListener(zooming1);
		GEvent.removeListener(dragStart2);
		GEvent.removeListener(dragEnd2);
		GEvent.removeListener(dragging2);
		GEvent.removeListener(zoomStart2);
		GEvent.removeListener(zoomEnd2);
		GEvent.removeListener(zooming2)
	}
}
function CS_LayersMapServer(map, mapServerURL, transparency, legends, zPrty) {
	var tileLayerObj = null;
	var layerObj = null;
	var legendsObj = legends;
	var boundingBox = null;
	var url = mapServerURL;
	var trans = transparency;
	var zPriority = (isNaN(zPrty) ? 0 : zPrty);
	var infoWindowData = null;
	try {
		tileLayerObj = new GTileLayer(null, 0, 18, {
			tileUrlTemplate : url,
			isPng : true,
			opacity : trans
		});
		layerObj = new GTileLayerOverlay(tileLayerObj, {
			zPriority : zPriority
		});
		map.addOverlay(layerObj)
	} catch (e) {
		layerObj = null
	}
	this.showLayer = function() {
		layerObj.show()
	};
	this.hideLayer = function() {
		layerObj.hide()
	};
	this.isHidden = function() {
		return layerObj.isHidden()
	};
	this.removeLayer = function() {
		map.removeOverlay(layerObj)
	};
	this.getLegend = function() {
		return legendsObj.getLegendString()
	};
	this.setLegend = function(lgndObj) {
		legendObj = lgndObj
	};
	this.setTransparency = function(transLevel) {
		this.removeLayer();
		trans = transLevel;
		layerObj = new GTileLayerOverlay(new GTileLayer(null, 0, 18, {
			tileUrlTemplate : url,
			isPng : true,
			opacity : trans
		}), {
			zPriority : zPriority
		});
		map.addOverlay(layerObj)
	};
	this.setBoundingBox = function(bounds) {
		map.setBounds()
	};
	this.setInfoWindowParams = function(params) {
		infoWindowData = params
	};
	this.getInfoWindowParams = function() {
		return infoWindowData
	}
}
function CS_LayerInfoWindowData(indicator, locationType, year) {
	this.getIndicator = function() {
		return indicator
	};
	this.getLocationType = function() {
		return locationType
	};
	this.getYear = function() {
		return year
	}
}
function CS_Markers(map, markerDetails, legend) {
	var gLatLng = null;
	var details = null;
	var legendString = legend;
	var markerCluster = null;
	var markers = [];
	var cIcon = null;
	var htmlText = null;
	var tempMarker = null;
	var tmpTime = null;
	if (map != null && markerDetails != null) {
		tmpTime = new Date().getTime();
		len = markerDetails.length;
		markers = new Array();
		try {
			var i, len;
			for (i = 0; i < len; i++) {
				tempMarker = null;
				gLatLng = markerDetails[i][0];
				details = markerDetails[i][1];
				cIcon = new GIcon(G_DEFAULT_ICON);
				cIcon.image = baseUrl
						+ MARKER_LEGEND_MARKERS[details[0][0]][details[0][1]][0];
				cIcon.shadow = "";
				cIcon.iconSize = new GSize(13, 18);
				cIcon.iconAnchor = new GPoint(6, 18);
				htmlText = getInfoBoxContent(details);
				tempMarker = createMarker(gLatLng, {
					icon : cIcon
				}, htmlText);
				map.addOverlay(tempMarker);
				markers.push(tempMarker)
			}
		} catch (e) {
			alert("[Map file :: Marker] : " + e);
			alert(details[0][0] + ":" + details[0][1])
		}
	} else {
	}
	function createMarker(point, markerOptions, html) {
		var marker = new GMarker(point, markerOptions);
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml(html)
		});
		return marker
	}
	function getInfoBoxContent(details) {
		var startText = '<table width="200px" border="0" cellspacing="2" cellpadding="0" class="infoWindow">';
		var endText = "</table>";
		var ibItr, ibLen;
		var html = null;
		if (details != null && (ibLen = details.length) > 1) {
			html = startText;
			for (ibItr = 1; ibItr < ibLen; ibItr++) {
				html += '<tr><td width="30%" valign="top" class="label">'
						+ (details[ibItr][0] != "" ? details[ibItr][0] + ":"
								: "") + '</td><td width="70%">'
						+ details[ibItr][1] + "</td></tr>"
			}
			html += endText
		} else {
			html = startText + "<tr><td>N/A</td></tr>" + endText
		}
		return html
	}
	this.showClusterMarkers = function(map) {
		markerCluster = new MarkerClusterer(map.getMap(), markers)
	};
	this.removeClusterMarkers = function(map) {
		markerCluster.clearMarkers()
	};
	this.showMarker = function(map) {
		var iS, lenS;
		if (markers != null) {
			lenS = markers.length;
			for (iS = 0; iS < lenS; iS++) {
				markers[iS].show()
			}
		}
	};
	this.hideMarker = function() {
		var iH, lenH;
		if (markers != null) {
			lenH = markers.length;
			for (iH = 0; iH < lenH; iH++) {
				markers[iH].hide()
			}
		}
	};
	this.getLegendString = function() {
		return legendString
	}
}
function CS_MarkerLegends(divId, className, label, dataArray) {
	var id = divId;
	var legStrStart = '<div id="' + divId + '"><ul class="' + className
			+ '"><li class="header">' + label + "</li>";
	var legStrEnd = '</ul><div style="height:1px; clear:both"></div></div>';
	var legStr = null;
	var mlmItr = 0;
	var mlmLen = dataArray.length;
	legStr = legStrStart;
	for (mlmItr = 0; mlmItr < mlmLen; mlmItr++) {
		legStr += "<li style='padding-left:10px'><img src='"
				+ (baseUrl + MARKER_LEGEND_MARKERS[dataArray[mlmItr][0]][dataArray[mlmItr][1]][0])
				+ "' align='absmiddle' />&nbsp;&nbsp;" + dataArray[mlmItr][2]
				+ "</li>"
	}
	legStr += legStrEnd;
	this.getLegendString = function() {
		return legStr
	};
	this.getId = function() {
		return id
	}
}
function CS_LineLegends(colourParams, divId, className, label, type) {
	var id = divId;
	var legStrStart = '<div id="' + divId + '"><ul class="' + className
			+ '"><li class="header">' + label + "</li>";
	var legStrEnd = '</ul><div style="height:1px; clear:both"></div></div>';
	this.getLegendString = function() {
		return legStrStart
				+ '<li style="padding-left:10px"><div style="width:11px; height:1px; float:left; background:rgb('
				+ colourParams[0][0]
				+ "); border: 1px solid rgb("
				+ colourParams[0][1]
				+ ')" ></div><div style="float:left; border:none; position:static">&nbsp;&nbsp;'
				+ colourParams[0][2] + "</div></li>" + legStrEnd
	};
	this.getId = function() {
		return id;
	}
}
function CS_LayerLegends(minm, maxm, colourParams, divId, className, label) {
	var id = divId;
	var legStrStart = '<div id="' + divId + '"><ul class="' + className
			+ '"><li class="header">' + label + "</li>";
	var legStrEnd = '</ul><div style="height:1px; clear:both"></div></div>';
	var divition = new Array();
	if (minm != null && minm != null && colourParams != null
			&& colourParams.length > 2) {
		MAX_LEGENDS = (colourParams.length - 1);
		defaultInitialize(MAX_LEGENDS)
	}
	function defaultInitialize(div) {
		var i;
		divition[0] = minm;
		for (i = 1; i < div; i++) {
			divition[i] = (minm + ((maxm - minm) / (div)) * i).toFixed(4);
			divition[i] = divition[i] < 1000 ? divition[i]
					: parseInt(divition[i])
		}
		divition[div] = maxm
	}
	this.initialize = function(div) {
		var i;
		if (div <= MAX_LEGENDS) {
			divition = new Array();
			divition[0] = minm;
			for (i = 1; i < div; i++) {
				divition[i] = (minm + ((maxm - minm) / (div)) * i).toFixed(4);
				divition[i] = divition[i] < 1000 ? divition[i]
						: parseInt(divition[i])
			}
			divition[div] = maxm
		} else {
			this.initialize(MAX_LEGENDS)
		}
	};
	this.isInitialized = function() {
		if (divition != null && divition.length > 0) {
			return true
		} else {
			return false
		}
	};
	this.getLegendString = function() {
		var legendString = null;
		if (this.isInitialized()) {
			legendString = legStrStart;
			for ( var i = 0; i < (colourParams.length - 1); i++) {
				legendString += '<li style="padding-left:10px"><div style="width:11px; height:11px; float:left; background:rgb('
						+ colourParams[i][0].replace(/ /gi, ",")
						+ "); border: 1px solid rgb("
						+ colourParams[i][1].replace(/ /gi, ",")
						+ ')" ></div><div style="float:left; border:none; position:static">&nbsp;&nbsp;'
						+ ((colourParams[i][2] != null) ? colourParams[i][2]
								: divition[i] + " - " + divition[i + 1])
						+ "</div></li>"
			}
			legendString += '<li style="padding-left:10px"><div style="width:11px; height:11px; float:left; background:rgb('
					+ colourParams[i][0].replace(/ /gi, ",")
					+ "); border: 1px solid rgb("
					+ colourParams[i][1].replace(/ /gi, ",")
					+ ')" ></div><div style="float:left; border:none; position:static">&nbsp;&nbsp;'
					+ colourParams[i][2] + "</div></li>";
			legendString += legStrEnd
		}
		return legendString
	};
	this.getLegendColourDivition = function() {
		var tempArray = new Array();
		if (this.isInitialized()) {
			for ( var i = 0; i < (divition.length); i++) {
				tempArray[i] = new Array();
				if (colourParams[i][2] == null) {
					tempArray[i][0] = divition[i];
					tempArray[i][1] = divition[i + 1];
					tempArray[i][2] = colourParams[i][0];
					tempArray[i][3] = colourParams[i][1]
				} else {
					tempArray[i][0] = null;
					tempArray[i][1] = null;
					tempArray[i][2] = colourParams[i][0];
					tempArray[i][3] = colourParams[i][1];
					tempArray[i][4] = colourParams[i][2]
				}
			}
		}
		return tempArray
	};
	this.getLegendArray = function() {
		return divition
	};
	this.setValue = function(index, value) {
		divition[index] = value
	};
	this.getValue = function(index) {
		return divition[index]
	};
	this.getId = function() {
		return id
	}
}
function CS_Tool(map, targetObj) {
	var measureState = {
		shortSegments : [],
		shortestLength : 0
	};
	var eventListenerObj;
	this.startMesure = function() {
		eventListenerObj = GEvent.addListener(map, "click", function(marker,
				point) {
			doMeasure(marker, point)
		})
	};
	this.stopMesure = function() {
		try {
			GEvent.removeListener(eventListenerObj);
			clearMeasure()
		} catch (e) {
			alert(e)
		}
	};
	function doMeasure(marker, point) {
		var polyline;
		if (measureState.lastPoint) {
			measureState.shortestLength += measureState.lastPoint
					.distanceFrom(point);
			map.addOverlay(polyline = new GPolyline([ measureState.lastPoint,
					point ], "#D5F4FF", 2));
			measureState.shortSegments.push(polyline);
			targetObj.innerHTML = "Total Distance in (m): "
					+ measureState.shortestLength.toFixed(3)
		}
		measureState.lastPoint = point
	}
	function clearMeasure() {
		if (!measureState.lastPoint) {
			return
		} else {
			for (i = 0; i < measureState.shortSegments.length; i++) {
				map.removeOverlay(measureState.shortSegments[i])
			}
			measureState = {
				shortSegments : [],
				shortestLength : 0
			}
		}
	}
};
var baseUrl = null;
var mapserverurl = null;
//var mapserverurl = "http://souravb:3080/cgi-bin/mapserv.exe?";
//var mapserverurl = "http://surajit:3080/cgi-bin/mapserv.exe?";
//var mapserverurl = "http://115.113.193.142:3080/cgi-bin/mapserv.exe?";
var CS_Gmap1 = null;
var CS_Gmap2 = null;
var SELECTED_MAP = null;
var markerArray = new Array();
var boudaryArray = new Array();
var sliderObjMap1 = null;
var sliderObjMap2 = null;
var legendColourParams = new Array([ "250 227 255", "30 30 30" ], [
		"226 191 234", "30 30 30" ], [ "200 140 214", "30 30 30" ], [
		"170 97 188", "30 30 30" ], [ "150 72 169", "30 30 30" ], [
		"124 42 144", "30 30 30" ], [ "95 15 115", "30 30 30" ], [ "37 0 46",
		"30 30 30" ], [ "0 0 0", "40 40 40", "No Data Available" ]);
function initializeHeight(baseURL) {
	baseUrl = baseURL;
	var screenSize = new BrowserScreenSize();
	try {
		screenSize.setObjectHeight(document.getElementById("middle"),
				-(headerHeight + footerHeight + bodyMargin));
		try {
			screenSize.setObjectHeight(document
					.getElementById("leftPaneContainer"),
					-(headerHeight + footerHeight + bodyMargin
							+ totalCompensation + otherCompensation));
			screenSize.setObjectHeight(
					document.getElementById("bodyContainer"), -(headerHeight
							+ footerHeight + bodyMargin + totalCompensation
							+ otherCompensation + borderCompensation));
			screenSize
					.setObjectHeight(
							document.getElementById("map_canvas"),
							-(headerHeight + footerHeight + bodyMargin
									+ totalCompensation + otherCompensation + borderCompensation))
		} catch (e) {
		}
	} catch (e) {
		alert(e)
	}
}
function initialize2Map(baseURL) {
	baseUrl = baseURL;
	mapserverurl = baseURL+"/MapServerImageHandlerAction.idi?";
	var targetObj = null;
	var targetObj1 = null;
	var screenSize = new BrowserScreenSize();
	try {
		SELECTED_MAP = CS_Gmap1 = new CS_Map(document
				.getElementById("map_container_1"), "map_1", 22, 83, 5);
		CS_Gmap1.addSliderControl(1);
		CS_Gmap1.LEGEND_PANEL_CONTROLLER = new LegendPanelController(document
				.getElementById("legendPanel_l"), document
				.getElementById("legendContainer_1"))
	} catch (e) {
		alert("Initialization Failed:\nPlease Check your internet connection : "
				+ e);
		CS_Gmap1 = null;
		CS_Gmap2 = null
	}
}
function transparencyChanged_map1() {
	changeTransparency(CS_Gmap1)
}
function transparencyChanged_map2() {
	changeTransparency(CS_Gmap2)
}
function changeTransparency(map) {
	transparencyLevel = map.SLIDER_OBJECT.getValue() / 100;
	map.SLIDER_OBJECT.setValue(map.SLIDER_OBJECT.getValue());
	if (map != null && map.LAYER_OBJECT != null) {
		map.LAYER_OBJECT.setTransparency(transparencyLevel);
		map.LAYER_TRANSPARENCY = transparencyLevel
	} else {
		alert("No boundary specified")
	}
}
function LegendPanelController(mainDiv, containerDiv) {
	var legendArray = new Array(0);
	this.addOrUpdateLegend = function(id, object) {
		var i;
		var len = legendArray.length;
		var flag = true;
		for (i = 0; i < len; i++) {
			if (legendArray[i].getId() == id) {
				legendArray[i] = object;
				flag = false
			}
		}
		if (flag) {
			legendArray.push(object)
		}
		displayLegends()
	};
	this.removeLegend = function(id) {
		var i;
		var len = legendArray.length;
		for (i = 0; i < len; i++) {
			if (legendArray[i].getId() == id) {
				legendArray.slice(i, 1)
			}
		}
		displayLegends()
	};
	function displayLegends() {
		var legendString = "";
		var i;
		var len = legendArray.length;
		for (i = 0; i < len; i++) {
			legendString += legendArray[i].getLegendString()
		}
		containerDiv.innerHTML = legendString
	}
	this.hideLegendPanel = function() {
		mainDiv.style.display = "none"
	};
	this.showLegendPanel = function() {
		mainDiv.style.display = "block"
	}
}
function executeMapOperation(from, type) {
	var sourceIndicatorObj = null;
	var targetLocationObj = null;
	var targetYearObj = null;
	if (from == 1) {
		SELECTED_MAP = CS_Gmap1;
		sourceIndicatorObj = document.getElementById("indicators1");
		targetLocationObj = document.getElementById("zoomLevel1");
		targetYearObj = document.getElementById("year1")
	} else {
		if (from == 2) {
			SELECTED_MAP = CS_Gmap2;
			sourceIndicatorObj = document.getElementById("indicators2");
			targetLocationObj = document.getElementById("zoomLevel2");
			targetYearObj = document.getElementById("year2")
		}
	}
	if (type == 1) {
		initializeLocationType_map(from, type, sourceIndicatorObj.value,
				targetLocationObj, targetYearObj)
	} else {
		if (type == 2) {
			initializeLocationType_map(from, type, sourceIndicatorObj.value,
					targetLocationObj.value, targetYearObj)
		} else {
			if (type == 3) {
				controlLayerOperation(from)
			}
		}
	}
}
function controlLayerOperation(type) {
	var indicatorName = null;
	var indicatorType = null;
	var year = null;
	var autoZoom = null;
	if (type == 1) {
		SELECTED_MAP = CS_Gmap1;
		indicatorName = document.getElementById("indicators1").value;
		indicatorType = document.getElementById("zoomLevel1").value;
		year = document.getElementById("year1").value;
		autoZoom = document.getElementById("auto-zoom1").checked
	} else {
		if (type == 2) {
			SELECTED_MAP = CS_Gmap2;
			indicatorName = document.getElementById("indicators2").value;
			indicatorType = document.getElementById("zoomLevel2").value;
			year = document.getElementById("year2").value;
			autoZoom = document.getElementById("auto-zoom2").checked
		}
	}
	if (SELECTED_MAP.LAYER_OBJECT != null) {
		SELECTED_MAP.LAYER_OBJECT.removeLayer()
	}
	createThematicLayer(indicatorName, indicatorType, year, autoZoom)
}
function createThematicLayer(indicatorName, indicatorType, year, autoZoom) {
	var jsonRequest = {
		primaryRequest : {
			indicator : "" + indicatorName,
			type : "" + indicatorType,
			year : "" + year
		},
		configuration : {
			autoZoom : autoZoom,
			zPriority : 5,
			transparency : SELECTED_MAP.LAYER_TRANSPARENCY
		},
		legendParams : {
			layerId : SELECTED_MAP.LAYER_NAME,
			styleClass : "legends",
			defaultColourParams : legendColourParams
		}
	};
	initializeMapServerLayer(SELECTED_MAP, jsonRequest)
}
var linkUnlinkStatus = "unlinked";
var linkUnlingControlObj = null;
function linkUnlinkHoverControl(obj, status) {
	if (linkUnlinkStatus == "unlinked") {
		if (status) {
			obj.src = baseUrl + "/assets/images/mapIcon/map_linked_ov.gif"
		} else {
			obj.src = baseUrl + "/assets/images/mapIcon/map_unlinked.gif"
		}
	} else {
		if (linkUnlinkStatus == "linked") {
			if (status) {
				obj.src = baseUrl
						+ "/assets/images/mapIcon/map_unlinked_ov.gif"
			} else {
				obj.src = baseUrl + "/assets/images/mapIcon/map_linked.gif"
			}
		}
	}
}
function linkUnlinkClickControl(obj) {
	if (linkUnlingControlObj == null) {
		linkUnlingControlObj = new CS_TwingMapOperation(CS_Gmap1, CS_Gmap2)
	}
	if (linkUnlinkStatus == "unlinked") {
		linkUnlingControlObj.linkMaps();
		obj.src = baseUrl + "/assets/images/mapIcon/map_linked.gif";
		linkUnlinkStatus = "linked"
	} else {
		if (linkUnlinkStatus == "linked") {
			linkUnlingControlObj.unlinkMaps();
			obj.src = baseUrl + "/assets/images/mapIcon/map_unlinked.gif";
			linkUnlinkStatus = "unlinked"
		}
	}
}
function splitOrMergeControl(status, from) {
	var map_pane_1 = document.getElementById("map_pane_1");
	var map_pane_cont_1 = document.getElementById("map_pane_cont_1");
	var imgdiv_1_1 = document.getElementById("img_1_1");
	var imgdiv_1_2 = document.getElementById("img_1_2");
	var map_pane_2 = document.getElementById("map_pane_2");
	var map_pane_cont_2 = document.getElementById("map_pane_cont_2");
	var imgdiv_2_1 = document.getElementById("img_2_1");
	var imgdiv_2_2 = document.getElementById("img_2_2");
	var link_unlink = document.getElementById("link_unlink");
	if (status) {
		map_pane_1.style.display = "block";
		map_pane_1.style.width = "50%";
		map_pane_cont_1.style.marginRight = "14px";
		imgdiv_1_1.style.display = "none";
		imgdiv_1_2.style.display = "block";
		map_pane_2.style.display = "block";
		map_pane_2.style.width = "100%";
		if (CS_Gmap2 == null) {
			SELECTED_MAP = CS_Gmap2 = new CS_Map(document
					.getElementById("map_container_2"), "map_2", 22, 83, 5);
			CS_Gmap2.addSliderControl(2);
			CS_Gmap2.LEGEND_PANEL_CONTROLLER = new LegendPanelController(
					document.getElementById("legendPanel_r"), document
							.getElementById("legendContainer_r"))
		}
		map_pane_2.style.width = "50%";
		map_pane_cont_2.style.marginLeft = "14px";
		imgdiv_2_1.style.display = "none";
		imgdiv_2_2.style.display = "block";
		link_unlink.style.display = "block"
	} else {
		link_unlink.style.display = "none";
		if (from == 1) {
			map_pane_1.style.display = "none";
			map_pane_2.style.display = "block";
			map_pane_2.style.width = "100%";
			map_pane_cont_2.style.marginLeft = "";
			imgdiv_2_1.style.display = "block";
			imgdiv_2_2.style.display = "none";
			SELECTED_MAP = CS_Gmap2
		} else {
			if (from == 2) {
				map_pane_1.style.display = "block";
				map_pane_1.style.width = "100%";
				map_pane_cont_1.style.marginRight = "";
				imgdiv_1_1.style.display = "block";
				imgdiv_1_2.style.display = "none";
				map_pane_2.style.display = "none";
				SELECTED_MAP = CS_Gmap1
			}
		}
	}
}
function changeShowHideState(id) {
	var obj = null;
	try {
		obj = document.getElementById(id);
		if (obj.style.display == "none") {
			obj.style.display = "block"
		} else {
			obj.style.display = "none"
		}
	} catch (e) {
		alert("[Show Hide Left Panel] ID : '" + id + "' Doesnot Exists")
	}
}
function expandCollapseLegendPane(imageId, divId, divId1) {
	var imgObj = document.getElementById(imageId);
	var panelDivObj = document.getElementById(divId);
	var panelDivObj1 = document.getElementById(divId1);
	if (panelDivObj.style.width == "200px") {
		try {
			startHiding(panelDivObj, panelDivObj1, 200)
		} catch (e) {
			alert(e)
		}
	} else {
		panelDivObj1.style.display = "block";
		startShowing(panelDivObj, panelDivObj1, 0, 200)
	}
	function startHiding(targetDiv, targetDiv1, size) {
		imgObj.src = baseUrl
				+ "/assets/images/legendPanel/legendPaneSwitchExpand.png";
		imgObj.title = "Show Legend Panel";
		targetDiv.style.width = size + "px";
		targetDiv1.style.width = size + "px";
		while (size >= 0) {
			size = parseInt(size / 3);
			targetDiv.style.width = size + "px";
			targetDiv1.style.width = size + "px";
			if (size == 0 || size == 1) {
				targetDiv1.style.display = "none";
				break
			}
		}
	}
	function startShowing(targetDiv, targetDiv1, size, maxSize) {
		imgObj.src = baseUrl
				+ "/assets/images/legendPanel/legendPaneSwitch.png";
		imgObj.title = "Hide Legend Panel";
		targetDiv.style.width = size + "px";
		targetDiv1.style.width = size + "px";
		while ((maxSize - size) >= 0) {
			size = parseInt(size + ((maxSize - size) / 3) + 1);
			targetDiv.style.width = size + "px";
			targetDiv1.style.width = size + "px";
			if ((maxSize - size) == 0) {
				break
			}
		}
	}
};
