var _PANELBORDERCOLOR = "#AAAAAA"
var _RESIZEPANELBORDERCOLOR = "#0000FF"
var _ACTIVEPANELBORDERCOLOR = "#008080"
var _PANELBGCOLOR = "transparent"
var _ACTIVEPANELBGCOLOR = "#FFFFFF"
var _PANELCAPTIONCOLOR = "#808080"
var _ACTIVEPANELCAPTIONCOLOR = "#000000"
var _REQUESTMAXLENGTH = 1800
var _MEASUREMAXDOTS = 12

var upperBarHeight = 25
var defaultLeft, defaultRight, defaultTop, defaultBottom
var extentLeft, extentTop, extentRight, extentBottom
var maxScale, minScale, currentScale, formattedScale
var dragItems = new Array
var aTools = new Array	
var refreshBtns = new Array
var activeTool = 0
var toolDown = false
var viewRect
var atlasXSize = 150
var atlasYSize = 75
var mapXSize = 500//400
var mapYSize = 310//200
var loadedMapXSize = 500//400
var loadedMapYSize = 310//200
var useDefSize = false//true
var mapHistory = new Array()
var historyPos = -1
var tempMapImage = new Image
var tempAtlasImage = new Image
var toolBtns = new Array()
var visibleThemes = ""
var themesInMultiSelect = ""
var selectableThemes = ""
var selection = "{}"
var currentAction = -1
var requestInProgress = false
var abortInProgress = false
var bResizeProc = false
var bPrintPreview = false
var desktopWidth = 2048
var desktopHeight = 2048
var mouseDownObj
var activePanel
var pageCompleteLoaded = false	
var ruler = new Object()
var xFieldTypes
var dots = new Array(_MEASUREMAXDOTS)
var dotLabel = null
var rPoints = new Array()
var rLength = ""
var isRouteRebuildingAction = false

var googleReloadCountDown = 0
	
var btnsDivider = document.createElement("SPAN")
btnsDivider.style.pixelWidth = 5

function documentX(el){
	var x = el.offsetLeft
	while (el.offsetParent != null){
		el = el.offsetParent
		x += el.offsetLeft
	}
	return x
}
function documentY(el){
	y = el.offsetTop
	while (el.offsetParent != null){
		el = el.offsetParent
		y += el.offsetTop
	}
	return y
}
function parentPanel(el){
	var p = el
	while (p) {
		if (p.className == "flPanel") break
		p = p.offsetParent
	}
	return p
}
function getCookie(name){
	var cl = document.cookie.split("; ")
	for (var i = 0; i < cl.length; i++){
		var pair = cl[i].split("=")
		if (pair[0] == name) return pair[1]
	}
	return null
}
function setCookie(name, value){
	var cookie = name + "=" + value
	var expireDate = new Date()
	expireDate.setYear(expireDate.getYear() + 1)
	cookie += "; expires=" + expireDate.toGMTString()
	document.cookie = cookie
}
function deleteAllCookie(){
	var cl = document.cookie.split("; ")
	for (var i = 0; i < cl.length; i++){
		var pair = cl[i].split("=")
		deleteCookie(pair[0])
	}
	return null
}
function deleteCookie(name){
	document.cookie = name + "=0; expires=Fri, 31 Dec 1900 23:59:59"
}
function resizeBody(){
	var d = document.body
	uBar.style.left = d.scrollLeft
	uBar.style.top = d.scrollTop
	mapShowMessage.style.pixelTop = d.clientHeight/2-70 + d.scrollTop
	mapShowMessage.style.pixelLeft = d.clientWidth/2-237 + d.scrollLeft

}
function mouseUp(){
	if (toolDown) mapImage.removeDots()
	toolDown = false
	mapImage.removeViewRect()
	if (activeTool == 4 && !requestInProgress){
		mapImage.style.pixelLeft = 0
		mapImage.style.pixelTop = 0			
	}
}
function respKey(key){
	return responseXML.XMLDocument.selectSingleNode(key)
}
function themeIsVisible(themeName){
	var vThemes = visibleThemes.split(",")
	var ex = false
	for (var j = 0; j < vThemes.length; j++)
		if ('"' + themeName.toUpperCase() + '"' == vThemes[j].toUpperCase()){
			ex = true
			break
		}
	return ex
}
function themeIsMultiSel(themeName){
	var sThemes = themesInMultiSelect.split(",")
	var ex = false
	for (var j = 0; j < sThemes.length; j++)
		if ('"' + themeName.toUpperCase() + '"' == sThemes[j].toUpperCase()){
			ex = true
			break
		}
	return ex
}
function fieldType(themeName, fieldName)
{
	var res = null
	var xTheme = xFieldTypes.firstChild
	while (xTheme){
		var xItem = xTheme.firstChild
		if (themeName.toUpperCase() == xItem.text.toUpperCase()){
			xItem = xItem.nextSibling
			var fields = xItem.text.split("`,`")
			for (var i = 0; i < fields.length; i++){
				var fld = fields[i].split("`_`")
				if (fieldName.toUpperCase() == fld[0].toUpperCase()){
					res = fld[1]
					break
				}
			}
			break
		}
		xTheme = xTheme.nextSibling
	}
	return res
}
function showMenu()
{
	if (pageCompleteLoaded) mapBody.showMenu()
}
function reloadGoogle(){
/*
	googleReloadCountDown--
	if (googleReloadCountDown <= 0){
		googleReloadCountDown = 5

		g = document.all("googleFrame")
		if (g) g.src="google.asp?l=" + _LANGUAGE + "&v=" + _SRVVIEWNAME
	}
*/
}
function openHelp(){
	window.open("doc/doc.htm", "_blank")
}
function openGlossary(){
	window.open("glossary/" + _LANGUAGE + "/a_0.htm", "_blank")
}
function receiveResponse(){
	if (responseXML.src != null)
	if (responseXML.readyState == "complete" && requestInProgress)
			try{
				if (abortInProgress)
					try{
						if (respKey("Response").text == "aborted"){
							abortInProgress = false
							requestInProgress = false
							mapShowMessage.abort()
						} 
					}catch(err){}
				else
					if (!abortInProgress)
						switch (currentAction){
						case -1:
							if (respKey("Response").text == "OK"){
								requestInProgress = false
								mapBody.initPanels()
							}else{
								alert(_TXTCHARSETERROR)
								window.navigate("default.asp?l=eng")
							}
							break
						case 12:
							mapImage.showMeasureData()
							break
						case 16:
							mapImage.showIdentifyData()
							break
						case 17:
							mapImage.identifyData4RoutePoint()
							break
						case 19:
							var p = respKey("Response/Point").text.split("@")
							var x = parseFloat(p[0])
							var y = parseFloat(p[1])
							mapImage.addRoutePoint(x, y, true, respKey("Response/IdentifyData").text)
							loadingDone()
							break
						case 100:
							searchOptions.fillSearchingOptions(respKey("Response"))
							break
						case 101:
						case 102:
						case 111:
						case 112:
							searchPanel.scrollArea.fillData(respKey("Response/SearchData"), "SEARCHRESULT")
							mapImage.loadingDone()
							searchOptions.focusOn1stField()
							break
						case 103:
							mapImage.objAdded2Selection()
							break
						case 104:
							selection = respKey("Response/Selection").text
							objPanel.scrollArea.fillData(respKey("Response/SelectionData"), "SELECTION")
							mapImage.loadingDone()
							break
						default:
							var source = respKey("Response/RenderFileName").text
							tempMapImage.src = "/RenderResult/" + source + ".gif"
							tempAtlasImage.src = "/RenderResult/" + source + "_atlas.gif"
						}
			}catch(err){
//alert(err.description)
				requestInProgress = currentAction == 0
				mapShowMessage.abort()
			}
}