﻿//map vars
var viewerBean = null;
var maximized = false;
var theme = "NormalView";
var icons = "-1";
var trajekt = false;
//var additionalLayers = 0;
var routeID = "";
var moveImageX = 0;
var moveImageY = 0;
//var needsPngFilter = /MSIE (5\.5)|[6]/.test(navigator.userAgent) && navigator.platform == "Win32";
var needsPngFilter = /(MSIE 6.0)|(MSIE 5.5)/.test(navigator.userAgent) && navigator.platform == "Win32";
var transparentTiles = (needsPngFilter == false) && false; //if this is false -> runs faster on ff and IE7, but not so sophisticated :-)
var showTLayerCnt = 0;
var markerVisible = false;
var disableTransparentLayer = false;
var initialZL = 9;

var previousPositions=new Array(3);
previousPositions[0] = {'x' : 462210, 'y' :112371, 'z' : 1};
previousPositions[1] = {'x' : 462210, 'y' :112371, 'z' : 1};
previousPositions[2] = {'x' : 462210, 'y' :112371, 'z' : 1};
var prevPosIdx = 2;
var firstPos = true;


/*var mapCommercialTID = null;
var mapCommercialOKATID = null;*/

String.prototype.trim  = function(){ return this.replace(/(^\s+)|\s+$/g,"")} 

glbEncoding="SI";

var xmlHttp = false;
var xmlHttp2 = false;
var xmlHttp3 = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
    try 
    {
        xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        xmlHttp2 = new ActiveXObject("Msxml2.XMLHTTP");
        xmlHttp3 = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) 
    {
        try 
        {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            xmlHttp2 = new ActiveXObject("Microsoft.XMLHTTP");
            xmlHttp23 = new ActiveXObject("Microsoft.XMLHTTP");
        } 
        catch (e2) 
        {
            xmlHttp = false;
            xmlHttp2 = false;
            xmlHttp3 = false;
        }
    }
@end @*/

if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
    xmlHttp = new XMLHttpRequest();
    xmlHttp2 = new XMLHttpRequest();
    xmlHttp3 = new XMLHttpRequest();
}
    

//old map vars
var maxmarks=10
var marksX=new Array(maxmarks);
var marksY=new Array(maxmarks);
var markNames=new Array(maxmarks);
var markAddresses=new Array(maxmarks);
var markPosts=new Array(maxmarks);
var markPhones=new Array(maxmarks);
for (i=0;i<maxmarks;i++)
{
	marksX[i]=0;
	marksY[i]=0;
	markNames[i]="";
	markAddresses[i]="";
	markPosts[i]="";
	markPhones[i]="";
}
var curmark=0;
var hotspotArray = new Array();
var hotspotcount=0;
var highlightedHotspotId="";
var markerWorldX=0;
var markerWorldY=0;
var markerImageX=0;
var markerImageY=0;
var transparentXOffSet = 0;
var transparentYOffSet = 0;
var startWorldX=0;
var startWorldY=0;

var hitsArray = new Array();
var hitscount = 0;

function addNewLocation(xx,yy,n,a,p,t)
{
    addNewLocation(xx,yy,n,a,p,t, 0);
}
function setOtherCoords(xx,yy,n,a,p,t)
{
    setOtherCoords(xx,yy,n,a,p,t, 0);
}
function setCoords(xx,yy,n,a,p,t)
{
    setCoords(xx,yy,n,a,p,t, 0);
}

function addNewLocation2(pid, action) {
    if (action == 1)
    {
        document.getElementById(glbrelayedPostbackContextControlId).value = 'AddFirstLocation|' + pid;
        doRelayedPostBack(glbrelayedPostbackTriggerControlId);
    }
    else if (action == 2)
    {
        document.getElementById(glbrelayedPostbackContextControlId).value = 'AddLastLocation|' + pid;
        doRelayedPostBack(glbrelayedPostbackTriggerControlId);
    }
        
}

function addNewLocation(xx,yy,n,a,p,t, option)
{
    //if exists
    for (i = 0; i < curmark; i++)
    {
        if (marksX[i] == xx &&   marksY[i] ==  yy &&
        markNames[i] ==  n &&  markAddresses[i] == a &&
        markPosts[i] == p &&  markPhones[i] == t)
        {
            var itinerary = window.document.getElementById("itinerary");

            if (itinerary) {
                selectListItem(itinerary.selectedItemIndex);
                scrollToListItem(itinerary.selectedItemIndex);
            }

            moveToMark();
            return;
        }
    }
    
    if (t == "trajekt")
    {
        //document.getElementById("CheckBoxTrajektIcons").checked = true;
        //el1 = document.getElementById('DropDownListMapAddLayers');
        //el1.selectedIndex = 1;
        //additionalLayers = 1;
        _miniMapHandler.selectedLayers = "100";

        trajekt = true;
        
        markerWorldX = xx;
	    markerWorldY = yy;
	    
	    markerVisible = true;
	    moveMapToZ(markerWorldX, markerWorldY, 9);

	    return;
    }
    
    setCoords(xx,yy,n,a,p,t, option);
    
    if (option == 0)
        moveToMark();

    UpdateSessionLocation(xx,yy,n,a,p,t,"ADD",option);
}


function setOtherCoords(xx,yy,n,a,p,t, option)
{
	if (curmark==maxmarks)
	{
		alert(maxItineraryLocationsReached);
		return;
	}

    a = unescape(a);
    p = unescape(p);
    t = unescape(t);
    
    var overwritten = false;
    if (glbUserType == "N" || glbUserType == "F")
    {
        if (option == 1)
        {
            if (curmark < 2)    // insert
            {
                for (i = curmark; i > 0; i--)
                {
	                marksX[i] = marksX[i - 1];
	                marksY[i] = marksY[i - 1];
	                markNames[i] = markNames[i - 1];
	                markAddresses[i] = markAddresses[i - 1];
	                markPosts[i] = markPosts[i - 1];
	                markPhones[i] = markPhones[i - 1];
                }
                marksX[0] = xx;
                marksY[0] = yy;	
                markNames[0] = n;
                markAddresses[0] = a;
                markPosts[0] = p;
                markPhones[0] = t;            
            }
            else    // overwrite
            {
                marksX[0] = xx;
                marksY[0] = yy;	
                markNames[0] = n;
                markAddresses[0] = a;
                markPosts[0] = p;
                markPhones[0] = t;

                overwritten = true;
            }
        }
        else    // if option == 2, 3 or anything else then append as last
        {
            if (curmark < 2)    // append
            {
	            marksX[curmark]=xx;
	            marksY[curmark]=yy;	
	            markNames[curmark]=n;
	            markAddresses[curmark]=a;
	            markPosts[curmark]=p;
	            markPhones[curmark]=t;
	        }
	        else        // overwrite
	        {
	            marksX[curmark - 1]=xx;
	            marksY[curmark - 1]=yy;	
	            markNames[curmark - 1]=n;
	            markAddresses[curmark - 1]=a;
	            markPosts[curmark - 1]=p;
	            markPhones[curmark - 1]=t;
	            
	            overwritten = true;
	        }
	    }
    }
    else
    {
        if (option == 1)
        {
            for (i = curmark; i > 0; i--)
            {
	            marksX[i] = marksX[i - 1];
	            marksY[i] = marksY[i - 1];
	            markNames[i] = markNames[i - 1];
	            markAddresses[i] = markAddresses[i - 1];
	            markPosts[i] = markPosts[i - 1];
	            markPhones[i] = markPhones[i - 1];
            }
            marksX[0] = xx;
            marksY[0] = yy;	
            markNames[0] = n;
            markAddresses[0] = a;
            markPosts[0] = p;
            markPhones[0] = t;            
        }
        else if (option == 3)
        {
            if (curmark > 1)    // insert before last
            {
                // move last
	            marksX[curmark] = marksX[curmark - 1];
	            marksY[curmark] = marksY[curmark - 1];
	            markNames[curmark] = markNames[curmark - 1];
	            markAddresses[curmark] = markAddresses[curmark - 1];
	            markPosts[curmark] = markPosts[curmark - 1];
	            markPhones[curmark] = markPhones[curmark - 1];
            
                // insert new
	            marksX[curmark - 1]=xx;
	            marksY[curmark - 1]=yy;	
	            markNames[curmark - 1]=n;
	            markAddresses[curmark - 1]=a;
	            markPosts[curmark - 1]=p;
	            markPhones[curmark - 1]=t;
            }
            else    // append
            {
	            marksX[curmark]=xx;
	            marksY[curmark]=yy;	
	            markNames[curmark]=n;
	            markAddresses[curmark]=a;
	            markPosts[curmark]=p;
	            markPhones[curmark]=t;
	        }
	    }
        else    // if option == 2 or anything else then append as last
        {
	        marksX[curmark]=xx;
	        marksY[curmark]=yy;	
	        markNames[curmark]=n;
	        markAddresses[curmark]=a;
	        markPosts[curmark]=p;
	        markPhones[curmark]=t;
	    }
	}

	//alert("begore itenerary"); TODO
	return;

	var itinerary = document.getElementById("itinerary");
	var listItem = document.createElement("li");
	if (n.trim() != "")
	    listItem.innerHTML = "<b>" + n + "</b><br /><div style=\"margin-left: 1em; font-size: smaller;\">" + a + "<br />" + p + "<br />" + t + "</div>";
	else
	    listItem.innerHTML = "<b>(brez naziva)</b><br /><div style=\"margin-left: 1em; font-size: smaller;\">" + p + "<br /></div>";
	listItem.onclick = function () { selectListItem(getIndexOfListItem(this)); moveToMark();};
	listItem.className = "deselectedItineraryItem";
	
	if (glbUserType == "N" || glbUserType == "F")
	{
        if (option == 1)
        {
            if (curmark < 2)    // insert
            {
                itinerary.insertBefore(listItem, itinerary.firstChild);
    	        selectListItem(0);
    	        scrollToListItem(0);
    	    }
    	    else    // overwrite
    	    {
                itinerary.replaceChild(listItem, itinerary.firstChild);
    	        selectListItem(0);
    	        scrollToListItem(0);
    	        
    	        overwritten = true;
    	    }
        }
        else    // if option == 2, 3 or anything else then append as last
        {
            if (curmark < 2)    // append
            {
                itinerary.appendChild(listItem);
    	        selectListItem(itinerary.childNodes.length - 1);
    	        scrollToListItem(itinerary.childNodes.length - 1);
    	    }
    	    else    // overwrite
    	    {
                itinerary.replaceChild(listItem, itinerary.lastChild);
    	        selectListItem(itinerary.childNodes.length - 1);
    	        scrollToListItem(itinerary.childNodes.length - 1);

    	        overwritten = true;
    	    }
        }
    }
    else
    {
        if (option == 1)
        {
            itinerary.insertBefore(listItem, itinerary.firstChild);
    	    selectListItem(0);
    	    scrollToListItem(0);
        }
        else if (option == 3)
        {
            if (curmark > 1)
            {
                itinerary.insertBefore(listItem, itinerary.lastChild);
    	        selectListItem(itinerary.childNodes.length - 2);
    	        scrollToListItem(itinerary.childNodes.length - 2);
            }
            else
            {
                itinerary.appendChild(listItem);
    	        selectListItem(itinerary.childNodes.length - 1);
    	        scrollToListItem(itinerary.childNodes.length - 1);
    	    }
        }
        else    // if option == 2 or anything else then append as last
        {
            itinerary.appendChild(listItem);
    	    selectListItem(itinerary.childNodes.length - 1);
    	    scrollToListItem(itinerary.childNodes.length - 1);
        }
    }    
    
    setLeftTab(2); //show bestpathpoints
    
    if (overwritten)    // skip counter increase on overwrite
        return;
        
	curmark++;
}


function setCoords(xx,yy,n,a,p,t, option)
{
    window.focus();
    
    setOtherCoords(xx,yy,n,a,p,t, option);
	
	markerWorldX=xx;
	markerWorldY=yy;
}


function setHHID(hhid)
{
	highlightedHotspotId=hhid;
}


function moveToMark()
{
    var i = window.document.getElementById("itinerary").selectedItemIndex;
	if (i == -1)
	    return;
	    
//	moveMapTo(markerWorldX, markerWorldY, 3); //f
	markerWorldX=marksX[i];
	markerWorldY=marksY[i];
//	setTimeout("moveMapTo(markerWorldX, markerWorldY, 3);", 10) //f
//	setTimeout("moveMapTo(markerWorldX, markerWorldY, 9);", 3000) //f
	
	markerVisible = true;
	moveMapToZ(markerWorldX, markerWorldY, 9);
}


function reposSelectedMark()
{
  /*  if (markerVisible)
    {
        var b = viewerBean.getImageCoord(markerWorldX, markerWorldY);
        var c = viewerBean.getScreenCoord(markerWorldX, markerWorldY);
        
        markerImageX = b.x;
        markerImageY = b.y;
        
        document.getElementById('marker').style.top = c.y - parseInt(document.getElementById('marker').style.height)/2 + "px";
        document.getElementById('marker').style.left = c.x - parseInt(document.getElementById('marker').style.width)/2 + "px";
    }*/
}


function removePoint()
{
    var itinerary = window.document.getElementById("itinerary");
    if (itinerary.childNodes.length > 1)
    {
        var si = itinerary.selectedItemIndex;
        if (si < 0)
            return;
        
        var sitm = itinerary.childNodes[itinerary.selectedItemIndex];
        itinerary.removeChild(sitm);
        itinerary.selectedItemIndex = -1;
        
	    //ajax
	    UpdateSessionLocation(marksX[si], marksY[si], markNames[si], markAddresses[si], markPosts[si], markPhones[si], "DELETE", null);   // option parameter irrelevant
	    
	    //remove from javascript array
	    for (i = si; i < curmark-1; i++)
	    {
	        marksX[i] = marksX[i + 1];
	        marksY[i] = marksY[i + 1];
	        markNames[i] = markNames[i + 1];
	        markAddresses[i] = markAddresses[i + 1];
	        markPosts[i] = markPosts[i + 1];
	        markPhones[i] = markPhones[i + 1];
	    }
	    curmark--;
	  
	    markerVisible = false;
        document.getElementById("marker").style.display="none";
	}
}


function removePath()
{
	routeID="";
	hidePath();
	reinitializeGraphic(null);
	//reloadMap();
}


function findPath()
{
//	el = document.getElementById("karta");
//	var itinerary = window.document.getElementById("itinerary");
//	
//	if (itinerary.firstChild == itinerary.lastChild)
//		alert(differentStartAndEndPoint);
//	else
//	{
//		markersString="";
//		for (i=0;i<maxmarks;i++)
//	 	{
//		 	if (marksX[i]!=0 && marksY[i]!=0)
//		 	{
//		 		if (markersString!="")
//		 			markersString+=";";
//		 		markersString+=marksX[i]+","+marksY[i];
//		 	}
//		}
////		document.getElementById("path").src="pathLoading.html";
//		document.getElementById("pointsDiv").style.display="none";
//		document.getElementById("searchDiv").style.display="none";
//		document.getElementById("pathDiv").style.display="block";
////		document.getElementById("pathLoad").style.display="none";
//		options="";
//		options+=document.getElementById("DropDownListSearchType").options[document.getElementById("DropDownListSearchType").options.selectedIndex].value
//		options+=document.getElementById("DropDownListTravelType").options[document.getElementById("DropDownListTravelType").options.selectedIndex].value

//		if (document.getElementById("CheckBoxHighWay").checked==true)
//			options+="1";
//		else
//			options+="0";
//		if (document.getElementById("CheckBoxForest").checked==true)
//			options+="1";
//		else
//			options+="0";

//		var xAll = "";
//		var yAll = "";
//		for (i = 0; i < itinerary.childNodes.length; i++)
//		{
//		    xAll += marksX[i] + ",";
//		    yAll += marksY[i] + ",";
//		}
//        document.getElementById("path").src = "MapFindPath.aspx?" + encrypt("o=" + options + "&xAll=" + xAll.substring(0, xAll.length - 1) + "&yAll=" + yAll.substring(0, yAll.length - 1));
//		
////		alert("../getmap/FindPath.aspx?o="+options+"&x1="+marksX[el1.selectedIndex]+"&y1="+marksY[el1.selectedIndex]+"&x2="+marksX[el2.selectedIndex]+"&y2="+marksY[el2.selectedIndex])

        markerVisible = false;
        document.getElementById("marker").style.display="none";
//	}
}


var refreshPathRequested = null;
function returnPath(uniqueID, bx1, by1, bx2, by2) {
    if (viewerBean == null) {
        if (refreshPathRequested == null) {
            // issue show path request on first load (handled sometime during page load event)
            refreshPathRequested = "returnPath('" + uniqueID + "', " + bx1 + ", " + by1 + ", " + bx2 + ", " + by2 + ");";
        }
        return;
    }

	routeID = uniqueID;
	if (routeID != "")
	{
		var wX = Math.floor((bx1+bx2)/2)
		var wY = Math.floor((by1+by2)/2)
		
		var xdif = Math.abs(Math.floor(bx1 - bx2));
		var ydif = Math.abs(Math.floor(by1 - by2));
		var size = viewerBean.width;
		var numOfTiles = viewerBean.width / viewerBean.tileSize;
		var dxZoom = (xdif * 1000) / (GSIV.WORLDUNITCONST * numOfTiles);
		var dyZoom = (ydif * 1000) / (GSIV.WORLDUNITCONST * numOfTiles);
		var fZoom = getZoomLevel(Math.max(dxZoom, dyZoom))
		
		moveMapToZ2(wX, wY, fZoom, true);
	}
}

function clearPath() {
    routeID = "";
    
    if (viewerBean == null)
        return;
        
    var a = viewerBean.getCenterWorldCoord();
    showTransparentLayer(a.x, a.y);
}


function showHidePathOptions()
{
	if (document.getElementById("DropDownListTravelType").options.selectedIndex==0)
		document.getElementById("pathoptions").style.display="";
	else
		document.getElementById("pathoptions").style.display="none";
}


function resetIcons()
{
	hotspotcount = 0;
	hotspotArray = new Array();
}




function setIcon(wx, wy, xx, yy, hw, hotspotId, name, dataSource, iname)
{
	hotspotArray[hotspotcount] = new Object();
	hotspotArray[hotspotcount].id = hotspotId;
	hotspotArray[hotspotcount].WX = parseInt(wx);
	hotspotArray[hotspotcount].WY = parseInt(wy);
	hotspotArray[hotspotcount].X = parseInt(xx);
	hotspotArray[hotspotcount].Y = parseInt(yy);
	hotspotArray[hotspotcount].HW = parseInt(hw);
	hotspotArray[hotspotcount].dataSource = dataSource;
	hotspotArray[hotspotcount].name = name;
	hotspotArray[hotspotcount].iconName = iname;
	
	hotspotcount++;
}


function resetHits() {
    hitscount = 0;
    hitsArray = new Array();
}

function setHit(wx, wy, xx, yy, hw, hotspotId, name, iname) {
    hitsArray[hitscount] = new Object();
    hitsArray[hitscount].id = hotspotId;
    hitsArray[hitscount].WX = parseInt(wx);
    hitsArray[hitscount].WY = parseInt(wy);
    hitsArray[hitscount].X = parseInt(xx);
    hitsArray[hitscount].Y = parseInt(yy);
    hitsArray[hitscount].HW = parseInt(hw);
    hitsArray[hitscount].name = name;
    hitsArray[hitscount].iconName = iname;
    hitsArray[hitscount].enabled = true;

    hitscount++;
}


var cmname;
var cmaddress;
var cmstreet;
var cmpost;
var cmtel;
var cmhnr;
var cmx;
var cmy;
var cmscreenx;
var cmscreeny;

/*function _drawSpot(x, y, d, i) {
    var _drawOffsetX = 198;
    var _drawOffsetY = 395;
    var body = window.document.getElementsByTagName("body")[0];
    var div = window.document.createElement("div");
    div.style.position = "absolute";
    div.style.borderStyle = "solid";
    div.style.borderWidth = "1px";
    div.style.borderColor = "red";
    div.style.left = (x + _drawOffsetX) + "px";
    div.style.top = (y + _drawOffsetY) + "px";
    div.style.width = div.style.height = d * 2 + "px";
    div.style.zIndex = 1000;
    div.innerHTML = i;
    body.appendChild(div);
}*/

function checkIconPosition(xx,yy) {
    var info = "";
    var joindIdx = -1;
	for (i = 0; i < hotspotcount; i++)
	{
	    //_drawSpot(hotspotArray[i].X, hotspotArray[i].Y, hotspotArray[i].HW, i);
	    
		if (hotspotArray[i].X + transparentXOffSet - hotspotArray[i].HW < xx && 
		    hotspotArray[i].X + transparentXOffSet + hotspotArray[i].HW > xx && 
		    hotspotArray[i].Y + transparentYOffSet - hotspotArray[i].HW < yy && 
		    hotspotArray[i].Y + transparentYOffSet + hotspotArray[i].HW > yy)
		{
		//    document.getElementById("iconoverdiv").style.left = hotspotArray[i].X + transparentXOffSet - 17 + "px";
		 //   document.getElementById("iconoverdiv").style.top = hotspotArray[i].Y + transparentYOffSet - 17 + "px";
		    var text = hotspotArray[i].name;
		    var hsid = hotspotArray[i].id;
		    var hshw = hotspotArray[i].HW;

		    var ok = true;
                
			//alert(text + "-"+ hsid + "-"+ hshw);
			//alert(hotspotArray[i].dataSource);
		    if (hotspotArray[i].dataSource == "tmapcomm") {
		        //alert(hsid);
		        DisableMapSpots();
			    if (hotspotArray[i].iconName == 191) //oka
			        showOKx("OKA", hsid, (hotspotArray[i].X + transparentXOffSet) - 5, (hotspotArray[i].Y + transparentYOffSet) - 5);
			    else if (hotspotArray[i].iconName == 192) //okb
			        showOKx("OKB", hsid, (hotspotArray[i].X + transparentXOffSet) - 5, (hotspotArray[i].Y + transparentYOffSet) - 5);
			    else if (hotspotArray[i].iconName == 193) //okc
			        showOKx("OKC", hsid, (hotspotArray[i].X + transparentXOffSet) - 5, (hotspotArray[i].Y + transparentYOffSet) - 5);
			    else {
			        info += hsid + ";";
			        joindIdx = i;
			        ok = false;
			    }
			}
			else
			{
		   
			}
			
			
			//setMapCommercialTimeout();
			if (ok) {
			    return true;
			}

        }

    }
    if (info != "") {
        showOKx("OKX", info, (hotspotArray[joindIdx].X + transparentXOffSet) - 5, (hotspotArray[joindIdx].Y + transparentYOffSet) - 5);
        return true;
    }
        
	//document.getElementById("iconoverdiv").style.display="none";
	curiconindex=0;
	//setMapCommercialTimeout();



	//find in markers

    
	for (i = 0; i < hitscount; i++) {
	    var screenCoord = viewerBean.getScreenCoord(hitsArray[i].WX, hitsArray[i].WY);
	    if (screenCoord.x - hitsArray[i].HW < xx &&
		    screenCoord.x + hitsArray[i].HW > xx &&
		    screenCoord.y - hitsArray[i].HW < yy &&
		    screenCoord.y + hitsArray[i].HW > yy &&
		    hitsArray[i].enabled == true) {
	        //alert(hotspotcount);
	        //alert(hitsArray[i].iconName);
	            showOKx(hitsArray[i].iconName /*"HIT"*/, hitsArray[i].id, (screenCoord.x) - 5, screenCoord.y - 5);
	            return true;
	            
	        
	    }
	    
	}	
	
	return false;
}


function checkIconClick(xx,yy)
{
	for (i = 0; i < hotspotcount; i++)
	{
		if (hotspotArray[i].X + transparentXOffSet - hotspotArray[i].HW < xx && 
		    hotspotArray[i].X + transparentXOffSet + hotspotArray[i].HW > xx && 
		    hotspotArray[i].Y + transparentYOffSet - hotspotArray[i].HW < yy && 
		    hotspotArray[i].Y + transparentYOffSet + hotspotArray[i].HW > yy)
		{
			return iconClick(hotspotArray[i].X, iconarray[i].Y, hotspotArray[i].dataSource, hotspotArray[i].id);
			return true;
		}
	}
	return false;
}


function iconClick(xx,yy, dataSource, hotspotId)
{
	el1 = document.getElementById("MapViewer1_DropDownListIcons");

	if (dataSource == "tisicons")		
	{
	  	link = "FROMMAP=1&YP=1&ids=";
		list = document.getElementById("listhotspots");
		for (i = 0; i < list.options.length; i++)
		{
			if (list.options[i].value)
				link = link + hotspotArray[list.options[i].value].id + "|";
		}
		//alert(link);
		link = getSite() + "default.aspx?" + encrypt(link);
	}
	else if (dataSource == "tmapcomm")
	{
	    //showCloudMessage(xx, yy - 20, '<b>Hotel union</b><br /><hr /><a href="http://www.gh-union.si/" target="_blank"><img src="_Images/cms/union.jpg" alt="union"  border="0" /><br />http://www.gh-union.si/</a><hr />Hotel Union, ki ga je zgradila Delniška družba Union.je eden izmed največjih hotelskih projektov z začetka 20. stol.. Prvotno naj bi zavzemal celotno stranico stavbnega bloka med Nazorjevo in Miklošičevim parkom. <hr /><a href="javascript:addNewLocation(462190, 101044, cmname, cmaddress, cmpost,cmtel, 1);"><b>Išči pot od</b></a><br /><a href="javascript:addNewLocation(462190, 101044, cmname, cmaddress, cmpost,cmtel, 2);"><b>Išči pot do</b></a><br /><a href=\"javascript:closeCloudMessage();\">Zapri</a>');
	    return false;
	}
	else
	{
		link = getSite() + "MapShowHotSpot.aspx?" + encrypt("dataSource=" + dataSource + "&hotspotId=" + hotspotId);
	}
			
	if (window.opener)
		try
		{
			window.opener.location = link;
			window.opener.focus();
		}
		catch (e)
		{
			xwin = window.open(link); //fix this!
			if (xwin)
			    xwin.focus();
		}
	else
	{
		xwin = window.open(link); //fix this!
		if (xwin)
		    xwin.focus;
	}
	
	return true;
}


function iconDivClick()
{
	if (curiconindex < hotspotcount)
		iconClick(hotspotArray[curiconindex].X, hotspotArray[curiconindex].Y, hotspotArray[curiconindex].dataSource, hotspotArray[curiconindex].id);
}


function iconListClick()
{
	var list = document.getElementById("listhotspots");
	index = list.options[list.selectedIndex].value;
	if (index < hotspotcount)
		iconClick(hotspotArray[index].X, hotspotArray[index].Y, hotspotArray[index].dataSource, hotspotArray[index].id);
}


function getErrorLink()
{
    var curZoom = getCuurentRealZoom();
	var a = viewerBean.getCenterWorldCoord();
	alert()
	opener.location="MapErrorReport.aspx?" + encrypt("x="+ a.x +"&y="+a.y+"&zoom="+curZoom);
	opener.focus();
}


function printThisLocation(x, y, name, address, post, tel)
{
    addNewLocation(x, y, name, address, post, tel, 1);
    printCurrentView();
}

function printCurrentView() //ex: getMapLink()
{
	oTheme = _miniMapHandler.selectedMapViewType;
	markersString = "";
	for (i = 0; i < maxmarks; i++)
 	{
	 	if (marksX[i] != 0 && marksY[i] != 0)
	 	{
	 		if (markersString != "")
	 			markersString += ";";
	 		markersString += marksX[i] + "," + marksY[i];
	 	}
	}
	var curZoom = getCuurentRealZoom();
	var a = viewerBean.getCenterWorldCoord();
	//*** xwin=window.open ("NewMapPrintMap.aspx?" + encrypt("size="+viewerBean.width+"&x="+ a.x +"&y="+a.y+"&zoom="+curZoom+"&icons="+iconsObject.options[iconsObject.selectedIndex].value+"&theme="+oTheme+"&RouteID="+routeID+"&markers="+markersString),"mapprint",'toolbar=no,location=no,scrollbars=yes,status=yes,width=800,height=600');
	//xwin=window.open ("NewMapPrintMap.aspx?" + encrypt("size="+viewerBean.width+"&x="+ a.x +"&y="+a.y+"&zoom="+curZoom+"&icons="+iconsObject.value+"&theme="+oTheme+"&RouteID="+routeID+"&markers="+markersString),"mapprint",'toolbar=no,location=no,scrollbars=yes,status=yes,width=800,height=600');
	xwin = window.open ("Page_MapPrint.aspx?" + encrypt("size=" + viewerBean.width + "&x=" + a.x + "&y=" + a.y + "&zoom=" + curZoom + "&icons=0&theme=" + oTheme + "&RouteID=" + routeID + "&markers=" + markersString + "&printPicture=0"), "mapprint", 'toolbar=no,location=no,scrollbars=yes,status=yes,width=980,height=720');
	if (xwin)
	    xwin.focus();
}

function printCurrentViewPicture()
{
    oTheme = _miniMapHandler.selectedMapViewType;
    markersString = "";
    for (i = 0; i < maxmarks; i++) {
        if (marksX[i] != 0 && marksY[i] != 0) {
            if (markersString != "")
                markersString += ";";
            markersString += marksX[i] + "," + marksY[i];
        }
    }
    var curZoom = getCuurentRealZoom();
    var a = viewerBean.getCenterWorldCoord();
    //*** xwin=window.open ("NewMapPrintMap.aspx?" + encrypt("size="+viewerBean.width+"&x="+ a.x +"&y="+a.y+"&zoom="+curZoom+"&icons="+iconsObject.options[iconsObject.selectedIndex].value+"&theme="+oTheme+"&RouteID="+routeID+"&markers="+markersString),"mapprint",'toolbar=no,location=no,scrollbars=yes,status=yes,width=800,height=600');
    //xwin=window.open ("NewMapPrintMap.aspx?" + encrypt("size="+viewerBean.width+"&x="+ a.x +"&y="+a.y+"&zoom="+curZoom+"&icons="+iconsObject.value+"&theme="+oTheme+"&RouteID="+routeID+"&markers="+markersString),"mapprint",'toolbar=no,location=no,scrollbars=yes,status=yes,width=800,height=600');
    xwin = window.open("Page_MapPrint.aspx?" + encrypt("size=" + viewerBean.width + "&x=" + a.x + "&y=" + a.y + "&zoom=" + curZoom + "&icons=0&theme=" + oTheme + "&RouteID=" + routeID + "&markers=" + markersString + "&printPicture=1"), "mapprint", 'toolbar=no,location=no,scrollbars=yes,status=yes,width=980,height=720');
    if (xwin)
        xwin.focus();
}

function getMapLink2(publicationIDs, pathIDs)
{
    oTheme = _miniMapHandler.selectedMapViewType;

	var curZoom = getCuurentRealZoom();
	var a = viewerBean.getCenterWorldCoord();
	var url = "dl=1&x=" + a.x + "&y=" + a.y + "&zl=" + viewerBean.zoomLevel + "&theme=" + oTheme;

	var hfPathIds = document.getElementById(pathIDs);
	var hfIds = document.getElementById(publicationIDs);

	if (hfPathIds != null)
	{
	    if (hfPathIds.value.toString().length > 0)
	    {
	        if (routeID != null && routeID != "")
	            url += "&path=1";
	        url += "&markers=" + hfPathIds.value.toString();
	    }
	}
	else if ((hfIds != null) && (hfIds.value.toString().length > 0))
	    url += "&ids=" + hfIds.value.toString();
	
	this.location = getSite() + "Page_Map.aspx?" + url;
}

// Tool 'poslji prijatelju' on Page_Map.aspx
// Opens email client containing message and a link to current map view.
function mailToMapLink() {
    oTheme = _miniMapHandler.selectedMapViewType;
    markersString = "";
    for (i = 0; i < maxmarks; i++) {
        if (marksX[i] != 0 && marksY[i] != 0) {
            if (markersString != "")
                markersString += ";";
            markersString += marksX[i] + "," + marksY[i] + "," + markNames[i];
        }
    }
    var curZoom = getCuurentRealZoom();
    var a = viewerBean.getCenterWorldCoord();
    var url = "dl=1%26x=" + a.x + "%26y=" + a.y + "%26zl=" + viewerBean.zoomLevel + "%26theme=" + oTheme;
    if (routeID != null && routeID != "")
        url += "%26path=1";
    if (markersString != "")
        url += "%26markers=" + markersString;

    url = "http://www.itis.si/Page_Map.aspx?" + url;

    var message = "Spo%9Atovani,%0A%0A" +
        "s klikom na aktivno spletno povezavo " + url +
        " se vam bo odprlo okno spletnega brskalnika z prikazom lokacije telefonskega naro%E8nika," +
        " za katerega obiskovalec Telefonskega imenika Slovenije na spletu www.itis.si meni," +
        " da je za vas zanimiva.%0A%A0%A0%0D_______________________________" +
        "%0ATelefonski imenik Slovenije na spletu%0Awww.itis.si";

    var emailMessage = "mailto:?subject=Prijatelj priporo%E8a ogled!&body=" + message;
    
    this.location = emailMessage;
}

var contextMenuDataCoord;
var contextMenuDataEvent;
function showContextMenu(coord, e)
{
    hideNearBySearchForm();
    
    contextMenuDataCoord = coord;
    contextMenuDataEvent = e;
    document.getElementById('rightClickMenu').style.display = 'block';
    document.getElementById('rightClickMenu').style.top = (coord.y - 10) + "px";
    document.getElementById('rightClickMenu').style.left = (coord.x - 10) + "px";
    e.cancelBubble = true;
    e.returnValue = false;
    return false;
}

function hideContextMenu()
{
    document.getElementById('rightClickMenu').style.display = 'none';
    document.getElementById('rightClickMenu').style.top = -100 + "px";
    document.getElementById('rightClickMenu').style.left = -100 + "px";
    hideNearBySearchForm();
    closeCloudMessage();
}

function hideNearBySearchForm() {
    return; //TODO
    document.getElementById('nearBySearch').style.display = 'none';
    document.getElementById('nearBySearch').style.top = -100 + "px";
    document.getElementById('nearBySearch').style.left = -100 + "px";
}

function startNearBySearch()
{
    hideNearBySearchForm();
    var wcoord = viewerBean.getCurrentWorldCoord(contextMenuDataCoord.x, contextMenuDataCoord.y);
    if (document.getElementById('inputNearBySearchWhat').value == "")
    {
        alert("Polje Kaj je obvezno!");
        return;
    }
    findNearBy(document.getElementById('inputNearBySearchWhat').value, document.getElementById('inputNearBySearchRadij').value, wcoord.x, wcoord.y);
}


function contextMenuAction(action) {

    hideContextMenu();
    if (action == 1)
    {
        viewerBean.zoom(getZoomStep(-1));
    }
    else if (action == 2)
    {
         viewerBean.zoom(getZoomStep(1));
    }
    else if (action == 3) {
        var wcoord = viewerBean.getCurrentWorldCoord(contextMenuDataCoord.x, contextMenuDataCoord.y);
        ResolveCoordinate(wcoord.x, wcoord.y, 1);
    }
    else if (action == 4) {
        var wcoord = viewerBean.getCurrentWorldCoord(contextMenuDataCoord.x, contextMenuDataCoord.y);
        ResolveCoordinate(wcoord.x, wcoord.y, 2);
    }
    else if (action == 5)
    {
        var wcoord = viewerBean.getCurrentWorldCoord(contextMenuDataCoord.x, contextMenuDataCoord.y);
        ResolveCoordinate(wcoord.x, wcoord.y, 3);
    }
    else if (action == 6)
    {
        document.getElementById('nearBySearch').style.display = 'block';
        document.getElementById('nearBySearch').style.top = (contextMenuDataCoord.y + 20) + "px";
        document.getElementById('nearBySearch').style.left = (contextMenuDataCoord.x - 10) + "px";
    }
    else if (action == 7)
    {
        var wcoord = viewerBean.getCurrentWorldCoord(contextMenuDataCoord.x, contextMenuDataCoord.y);
        ResolveCoordinate(wcoord.x, wcoord.y, 4);        
    }
}

function showCloudMessage(x, y, entry)
{
     document.getElementById('cloudMessageBox').style.display = 'block';
     document.getElementById('cloudMessageBox').style.top = y + "px";
     document.getElementById('cloudMessageBox').style.left = x + "px";
     document.getElementById('cloudMessageBoxText').innerHTML = entry;
}

function closeCloudMessage()
{
     document.getElementById('cloudMessageBox').style.display = 'none';
     document.getElementById('cloudMessageBox').style.top = -100 + "px";
     document.getElementById('cloudMessageBox').style.left = -100 + "px";
     document.getElementById('cloudMessageBoxText').innerHTML = "";
}

/*
var mousePressed = false;
var pressedCoord = null;
function muMapCommercial(event)
{
    mousePressed = false;
    document.getElementById('mapCommercial').style.cursor = GSIV.GRAB_MOUSE_CURSOR;
}

function mdMapCommercial(e)
{
    mousePressed = true;
    pressedCoord = {'x': e.clientX, 'y': e.clientY};
    document.getElementById('mapCommercial').style.cursor = GSIV.GRABBING_MOUSE_CURSOR;
}

function moveMapCommercial(e)
{
    if (mousePressed)
    {
        var dx = pressedCoord.x - e.clientX;
        var dy = pressedCoord.y - e.clientY;
        
        tmpstr = document.getElementById('mapCommercial').style.top;
        tmpstr.replace("px", "");
        var cy = parseInt(tmpstr);
        tmpstr = document.getElementById('mapCommercial').style.left;
        tmpstr.replace("px", "");
        var cx = parseInt(tmpstr);
       
        document.getElementById('mapCommercial').style.top = (cy - dy) + "px";
        document.getElementById('mapCommercial').style.left = (cx - dx) + "px";
        pressedCoord = {'x': e.clientX, 'y': e.clientY};
    }
}

function clearMapCommercialTimeout()
{
    if (mapCommercialTID) 
    {
        clearTimeout(mapCommercialTID);
        mapCommercialTID = null;
    }
}
function setMapCommercialTimeout()
{
    clearMapCommercialTimeout();
    
    if (document.getElementById('mapCommercial').style.display != 'none')
    {   
        mapCommercialTID = setTimeout("closeMapCommercial();", 100);
    }
}

function closeMapCommercial()
{
     document.getElementById('mapCommercial').style.display = 'none';
     document.getElementById('mapCommercial').style.top = -100 + "px";
     document.getElementById('mapCommercial').style.left = -100 + "px";
     document.getElementById('mapCommercialText').innerHTML = "";
}


function muMapCommercialOKA(event)
{
    mousePressed = false;
    document.getElementById('mapCommercialOKA').style.cursor = GSIV.GRAB_MOUSE_CURSOR;
}

function mdMapCommercialOKA(e)
{
    mousePressed = true;
    pressedCoord = {'x': e.clientX, 'y': e.clientY};
    document.getElementById('mapCommercialOKA').style.cursor = GSIV.GRABBING_MOUSE_CURSOR;
}

function moveMapCommercialOKA(e)
{
    if (mousePressed)
    {
        var dx = pressedCoord.x - e.clientX;
        var dy = pressedCoord.y - e.clientY;
        
        tmpstr = document.getElementById('mapCommercialOKA').style.top;
        tmpstr.replace("px", "");
        var cy = parseInt(tmpstr);
        tmpstr = document.getElementById('mapCommercialOKA').style.left;
        tmpstr.replace("px", "");
        var cx = parseInt(tmpstr);
       
        document.getElementById('mapCommercialOKA').style.top = (cy - dy) + "px";
        document.getElementById('mapCommercialOKA').style.left = (cx - dx) + "px";
        
        pressedCoord = {'x': e.clientX, 'y': e.clientY};
    }
}

function clearMapCommercialOKATimeout()
{
    if (mapCommercialOKATID) 
    {
        clearTimeout(mapCommercialOKATID);
        mapCommercialOKATID = null;
    }
}
function setMapCommercialOKATimeout()
{
    clearMapCommercialOKATimeout();
    
    if (document.getElementById('mapCommercialOKA').style.display != 'none')
    {   
        mapCommercialOKATID = setTimeout("closeMapCommercialOKA();", 200);
    }
}


function closeMapCommercialOKA()
{
     document.getElementById('mapCommercialOKA').style.display = 'none';
     document.getElementById('mapCommercialOKA').style.top = -100 + "px";
     document.getElementById('mapCommercialOKA').style.left = -100 + "px";
     document.getElementById('mapCommercialOKAText').innerHTML = "";
}
*/


///Map initialization

function getCuurentRealZoom()
{
    return getRealZoom(viewerBean.zoomLevel);
}

function getRealZoom(zoomLevel)
{
    return 1000 * Math.pow(2,12 - zoomLevel);
}

function getZoomLevel(realZoom)
{
    return 12 - Math.ceil(Math.log(realZoom/1000) / Math.log(2));
}

function viewerZoomed(ze)
{
    // page global object of type MapZoomGauge
    _mapZoomGauge.zoomToLevel(ze.level);
    document.getElementById("scaleImage").src = "_NewMap/assets/gfx/scale" + ze.level + ".gif";
    
    viewerZoom();    
}

function viewerZoom() {
    CloseAllMapCloudBaloons();
    DisableMapSpots();
    
    
    var b = viewerBean.getImageCoord(markerWorldX, markerWorldY);
    var c = viewerBean.getScreenCoord(markerWorldX, markerWorldY);
    
    markerImageX = b.x;
    markerImageY = b.y;
   /* 
    document.getElementById('marker').style.top = c.y - parseInt(document.getElementById('marker').style.height)/2 + "px";
    document.getElementById('marker').style.left = c.x - parseInt(document.getElementById('marker').style.width)/2 + "px";
            */
    var a = viewerBean.getCenterWorldCoord();
    showTransparentLayer(a.x, a.y);
    
}


function viewerMoved(me) {
    CloseAllMapCloudBaloons();
    DisableMapSpots();
    

    var newmarkerX = viewerBean.width/2 - viewerBean.currentX;
    var newmarkerY = viewerBean.height/2 - viewerBean.currentY;

    markerVisible = false;
    if (markerVisible)
    {
        document.getElementById('marker').style.top = parseInt(document.getElementById('marker').style.top) + (moveImageY - newmarkerY) + "px";
        document.getElementById('marker').style.left = parseInt(document.getElementById('marker').style.left) + (moveImageX - newmarkerX) + "px";
        
        //hide if off the view
        if (parseInt(document.getElementById('marker').style.top) < 0 || parseInt(document.getElementById('marker').style.top) > viewerBean.height ||
            parseInt(document.getElementById('marker').style.left) < 0 || parseInt(document.getElementById('marker').style.left) > viewerBean.width)
            document.getElementById('marker').style.display = 'none';
        else
            document.getElementById('marker').style.display = 'block';
    }
    
    
    if (transparentTiles == false)
    {
        document.getElementById('transparent').style.top = parseInt(document.getElementById('transparent').style.top) + (moveImageY - newmarkerY) + "px";
        document.getElementById('transparent').style.left = parseInt(document.getElementById('transparent').style.left) + (moveImageX - newmarkerX) + "px";
    }
    
    transparentXOffSet += (moveImageX - newmarkerX);
    transparentYOffSet += (moveImageY - newmarkerY);
   
    moveImageX = newmarkerX;
    moveImageY = newmarkerY;
}

function viewerMoveStoped(me)
{
    var a = viewerBean.getCenterWorldCoord();    
    showTransparentLayer(a.x, a.y);
}


function initializeGraphic(e) {
	// opera triggers the onload twice
	if (viewerBean == null) {
	    var maxZoomS = 10;
	    if (glbUserType == 'F')
	        maxZoomS = 11;
	    if (glbUserType == 'E' || glbUserType == 'I' || glbUserType == 'X')
	        maxZoomS = 12;
	        
		viewerBean = new GSIV('viewer', {
			tileBaseUri: 'mapgetmap.aspx',
			tileSize: 256,
			tilePrefix: '',
			tileExtension: 'png', //jpg
			maxZoom: maxZoomS,
			initialZoom: 1,
			blankTile: '_NewMap/assets/gfx/blank.gif',
			loadingTile: '_NewMap/assets/gfx/blank.gif' //'_NewMap/assets/gfx/greenBk.gif'//#CEF2BF //'_NewMap/assets/gfx/progress.gif'
		});
		
		document.getElementById('viewer').style.height = document.documentElement.clientHeight - 95 + "px";//'600px';
		document.getElementById('surfaceImg').style.height = document.documentElement.clientHeight - 95 + "px";
        document.getElementById('surfaceImg').style.width = document.documentElement.clientWidth - glb_ViewerBeanWidthOffset + "px"; //270

		//viewerBean.fitToWindow(0);
		viewerBean.init();
		//viewerBean.recenter({'x':400 ,'y':800}, true);
		
		viewerBean.addViewerZoomedListener(this);
		viewerBean.addViewerMovedListener(this);
		viewerBean.addViewerMoveStopedListener(this);

		var offset = 125;
          //  if (window.document.getElementById("DropDownListCityMaps") == null)
          //      offset = 110;
        var zoompos = parseInt(offset - 3*7.7);
		
		AfterInitialization();
		
		if (markerWorldX != 0)
		{
		    //markerVisible = true;
		    moveMapToZ2(markerWorldX, markerWorldY, initialZL, true);
		}
		
		if (startWorldX != 0 && startWorldX != markerWorldX)
		    moveMapToZ2(startWorldX, startWorldY, initialZL, true);
		
		reposSelectedMark();
	}
}

// (un)maximizes map
function toggleMapSize(e) {
    var a = viewerBean.getCenterWorldCoord();


    if (maximized) {
        maximized = !maximized;
	    // HACK: remove auto-fit to window (this needs to be a function)
        var mapPanelElement = document.getElementById('mapPanel');
        var mapPanelParentElement = mapPanelElement.parentNode;
        mapPanelElement.style.cssText = "";

        viewerBean.border = -1;
        SetMapSize(876, 678);

        if (viewerBean.zoomLevel > 0) {     // if possible zoom out 1 level
            var step = getZoomStep(-1);
            moveMapToZ2(a.x, a.y, viewerBean.zoomLevel + step, true);
        }
    } else {
    maximized = !maximized;
	    // HACK allow auto-fit to window (this needs to be a function)
        var mapPanelElement = document.getElementById('mapPanel');
        var mapPanelParentElement = mapPanelElement.parentNode;
        mapPanelElement.style.position = "fixed";
        mapPanelElement.style.zIndex = "10";
        mapPanelParentElement.style.zIndex = "2";
        mapPanelElement.style.top = "0px";
        mapPanelElement.style.left = "0px";
        mapPanelElement.style.backgroundColor = "white";
        
	    //viewerBean.border = 0;

	    var calcWidth = 0;
	    var calcHeight = 0;
	    if (window.innerWidth) {
	        calcWidth = window.innerWidth;
	        calcHeight = window.innerHeight;
	    } else {
	        calcWidth = (document.compatMode == 'CSS1Compat' ? document.documentElement.clientWidth : document.body.clientWidth);
	        calcHeight = (document.compatMode == 'CSS1Compat' ? document.documentElement.clientHeight : document.body.clientHeight);
	    }

	    calcHeight -= 12;
	    calcWidth -= 56;

	    if (calcWidth % 2)
	        calcWidth--;

	    if (calcHeight % 2)
	        calcHeight--;

        // compensate for posible scroll bars
	    calcWidth -= (document.documentElement.scrollLeft || document.body.scrollLeft);
	    calcHeight -= (document.documentElement.scrollTop || document.body.scrollTop);

	    if (calcHeight < 738) {
	        if (isUserAgent("Firefox")) {    // FF handles scroll bars a bit different than IE
	            calcWidth -= 15;
	        }
	    }

	    /*if (isUserAgent("msie 6.0")) {    // IE 6.0 is real pain in the...
	    }*/
	    
	    SetMapSize(calcWidth, calcHeight);
	    viewerZoom();

	    if (viewerBean.zoomLevel < viewerBean.maxZoomLevel) {     // if possible zoom in 1 level
	        var step = getZoomStep(1);
            moveMapToZ2(a.x, a.y, viewerBean.zoomLevel + step, true);
	    }
	}
    
    if (!maximized)
        reinitializeGraphic(e);
}

function ShowHideNaviCtr()
{
    if (document.getElementById('navigatorImg').style.display != 'none') 
    {
        document.getElementById('navigatorImg').style.display = 'none';
        document.getElementById('zoomIndicatorImg').style.display = 'none';
        document.getElementById('viewControls').style.display = 'none';
        document.getElementById('imgHideShowNaviCtr').style.display = '';
    } 
    else 
    {
        document.getElementById('navigatorImg').style.display = '';
        document.getElementById('zoomIndicatorImg').style.display = '';
        document.getElementById('viewControls').style.display = '';
        document.getElementById('imgHideShowNaviCtr').style.display = 'none';
    }
    
    // resize transparent background
    //window.document.getElementById("controlsBackground").style.width = window.document.getElementById("controls").offsetWidth + "px";
    //window.document.getElementById("controlsBackground").style.height = window.document.getElementById("controls").offsetHeight + "px";
}



/*************
Map navigation
*************/

function zoomMapTo(z) {
    if (viewerBean != null) {
        if (glbUserType == 'N') {
            if (z % 2 == 1)
                z = z - 1;
        }
        
        if (z > viewerBean.maxZoomLevel)
            z = viewerBean.maxZoomLevel;

        var zoomdir = z - viewerBean.zoomLevel;
        viewerBean.zoom(zoomdir);
    }    
}

function moveMapToZ2(x,y,z, disableSlide) {
    if (viewerBean == null) {
        if (refreshPathRequested == null && x != 0 && y != 0) {     // coordinates must be different than (0,0)
            // issue show hit request on first load (handled sometime during page load event)
            refreshPathRequested = "moveMapToZ2(" + x + ", " + y + ", " + z + ", " + disableSlide + ");";
        }
        return;
    }

    if (viewerBean != null) {
        disableTransparentLayer = true;
        viewerBean.moveToPosition(x, y, z, disableSlide);

        markerVisible = false;
        if (markerVisible) {
            document.getElementById('marker').style.display = 'block';
            document.getElementById('marker').style.top = viewerBean.height / 2 - parseInt(document.getElementById('marker').style.height) / 2 + "px";
            document.getElementById('marker').style.left = viewerBean.width / 2 - parseInt(document.getElementById('marker').style.width) / 2 + "px";
            
            markerImageX = viewerBean.width / 2 - viewerBean.x;
            markerImageY = viewerBean.height / 2 - viewerBean.y;
        }
        
        disableTransparentLayer = false;
        showTransparentLayer(x, y);
	}
}

function moveMapToZ(x,y,z) {
    moveMapToZ2(x,y,z, false);
}

function moveMapTo(x,y) {
    if (viewerBean != null)
        viewerBean.moveToPosition(x, y, viewerBean.zoomLevel, false);
}

function reloadMap() {
    moveMapTo(markerWorldX, markerWorldY);
}

function moveMapBack() {
    var pos = previousPositions[prevPosIdx-1];
  
    moveMapToZ2(pos.x, pos.y, pos.z, true);
    reposSelectedMark();
}

function getZoomStep(zs) {
    if (zs > 0) {
        if (glbUserType == 'N')
            return 2;
        else
            return 1;
    } else {
        if (glbUserType == 'N')
            return -2;
        else
            return -1;
    }
}

function showTransparentLayer(x, y) {
    var prevPos = previousPositions[prevPosIdx];
    if (!(prevPos.x == x && prevPos.y == y))
    {
        if (firstPos) {
            firstPos = false;
        } else {
            if (y > 28000 && y < 200000 && x > 370000 && x < 630000) {
                previousPositions[prevPosIdx - 2] = previousPositions[prevPosIdx - 1];
                previousPositions[prevPosIdx - 1] = previousPositions[prevPosIdx];
                
                previousPositions[prevPosIdx] = {'x' : x, 'y' :y, 'z' : viewerBean.zoomLevel};
            }
        }
    }

    UpdateMiniMap(x, y);
    if (disableTransparentLayer)
        return;

    var markersstr = "";
    //zakodiramo informacijo o tipku ikone v koordinato
    for (i = 0; i < hitscount; i++) {
        xcoord = hitsArray[i].WX;
        if (hitsArray[i].iconName == "OKA")
            xcoord = xcoord * 10 + 1;
        else if (hitsArray[i].iconName == "OKB")
            xcoord = xcoord * 10 + 2;
        else if (hitsArray[i].iconName == "OKC")
            xcoord = xcoord * 10 + 3;
        markersstr += xcoord + "," + hitsArray[i].WY;
        if (i + 1 < hitscount)
            markersstr += ";";
    }

    hotspotEnabled = (trajekt == true || markersstr != "" ||(icons != "0" && viewerBean.zoomLevel >= 4)) && viewerBean.zoomLevel > 1;
    
    if (hotspotEnabled) {
        // setTimeout("GetHotSpotData("+x+", "+y+");", 100);
        try {
            GetHotSpotData(x, y);
        } catch (eee) {
        }
    } else {
         resetIcons();
    }
    
    transparentXOffSet = 0;
    transparentYOffSet = 0;
    
    if (transparentTiles == false && (hotspotEnabled || routeID != "")) {
         var curZoom = getCuurentRealZoom();

         // show buslines & peaks
         var addlstr = ";" + _miniMapHandler.selectedLayers.substring(1);   // see definition of MiniMapHandler.VIEW_LAYERS_CHECKBOX_IDS
        
        /*var addlstr = ";";
        
        //buslines
        if (additionalLayers == 3 || additionalLayers == 4|| additionalLayers == 5)
            addlstr += "1";
        else
            addlstr += "0";
            
        //peaks    
        if (additionalLayers == 2 || additionalLayers == 5)
            addlstr += "1";
        else
            addlstr += "0";*/


        

         var params = "nocrop=1&zoom=" + curZoom + "&x=" + x + "&y=" + y + "&sizex=" + viewerBean.width + "&sizey=" + viewerBean.height + "&theme=TransparentViewS:Tile" + addlstr + "&icon=" + icons + "&RouteID=" + routeID + "&markers=" + markersstr;
  
        if (trajekt)
            params += "&t=1";

       // alert(params);

        var address = secondMapUrl + "mapgetmapFast.ashx?" + encrypt("type=map&" + params);
        
        document.getElementById('transparentImage').style.width = viewerBean.width + "px";
        document.getElementById('transparentImage').style.height = viewerBean.height + "px";
        
        if (needsPngFilter) {
            document.getElementById('transparentImage').style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + address + "', sizingMethod='scale', enabled='true')" ;
            ShowTransparentImg();
        } else {
            document.getElementById('transparentImage').src = address;
        }
    } else {
        document.getElementById('transparent').style.display = 'none'; 
    }
    
    moveImageX = viewerBean.width / 2 - viewerBean.x;
    moveImageY = viewerBean.height / 2 - viewerBean.y;
   
    var rndVal = Math.random() * 10.0;
    if (rndVal > 8.5) { 
        var n_random = new String (rndVal); 
        //n_random = n_random.substring(2,11);
        
	    if (document.getElementById("banner"))
	        document.getElementById("banner").src = "MapBanner.aspx?" + encrypt("n=" + n_random);
	}
}

function ShowTransparentImg() {
    document.getElementById('transparent').style.top = '0px';
    document.getElementById('transparent').style.left = '0px';
    document.getElementById('transparent').style.display = 'block';    
}

function GetHotSpotData(x, y) {
    DisableMapSpots();
    var curZoom = getCuurentRealZoom();
    var params = "nocrop=1&zoom=" + curZoom + "&x=" + x + "&y=" + y + "&sizex=" + viewerBean.width + "&sizey=" + viewerBean.height + "&theme=TransparentViewS:Tile&icon=" + icons + "&RouteID=" + routeID;
    if (trajekt)
        params += "&t=1";
    var address = "mapgetmapfast.ashx?" + encrypt("type=hotspots2&" + params);
    
    if (xmlHttp.readyState == 2 || xmlHttp.readyState == 3)
        xmlHttp.abort();
        
    xmlHttp.open("GET", address, true);

    // Setup a function for the server to run when it's done
    xmlHttp.onreadystatechange = ProcessDataHS;
    xmlHttp.send(null);
   
    return true;
}

function ProcessDataHS() {
    // data must be in the following form:
    DisableMapSpots();
    if (xmlHttp.readyState == 4) {
        for (hitsi = 0; hitsi < hitscount; hitsi++) {
            hitsArray[hitsi].enabled = true;
        }
        resetIcons();
        var response = new String();
        response = xmlHttp.responseText;
        var p1 = response.indexOf("<hotspots>");
        if (p1 == 0)
            p1 += 10;
       // alert(response);

        p1 = response.indexOf("<hotspot>", p1);
        while ( p1 > 0) {
            p1 += 9;
            var p2 = response.indexOf("</hotspot>", p1);
            var hsl = response.substr(p1, p2 - p1);

            p1 = p2 + 10;
            p1 = response.indexOf("<hotspot>", p1);

            hsinfo = hsl.split("|");
            setIcon(hsinfo[0], hsinfo[1], hsinfo[2], hsinfo[3], hsinfo[4], hsinfo[5], hsinfo[6], hsinfo[7], hsinfo[8]);

            for (hitsi = 0; hitsi < hitscount; hitsi++) {
                if (hitsArray[hitsi].WX == hsinfo[0] && hitsArray[hitsi].WY == hsinfo[1]) {
                    hitsArray[hitsi].enabled = false;
                    //alert(hitsArray[hitsi]);
                }
                    
            }
        }


        DisableMapSpots();
    }
}


function UpdateSessionLocation(x, y, n, a, p, t, method, option) {
    rndNum = Math.random();
    if (method == "ADD")
    	strLink = "newMapAjaxHelper.aspx?" + encrypt("method=ADDLOC&X=" + x + "&Y=" + y + "&n=" + n + "&a=" + a + "&p=" + p + "&t=" + t + "&r=" + rndNum + "&op=" + option);  // option represents point of insertion (1 - first, 2 - last, 3 - before last if more than 2 locations in list)
    else if (method == "DELETE")
        strLink = "newMapAjaxHelper.aspx?" + encrypt("method=REMLOC&X=" + x + "&Y=" + y + "&n=" + n + "&a=" + a + "&p=" + p + "&t=" + t + "&r=" + rndNum);
    else if (method == "MOVE")
        strLink = "newMapAjaxHelper.aspx?" + encrypt("method=MOVELOC&X=" + x + "&Y=" + y + "&n=" + n + "&a=" + a + "&p=" + p + "&t=" + t + "&r=" + rndNum + "&op=" + option);  // option represents move direction of object in list (1 up, -1 down)
        
    if (xmlHttp2.readyState == 2 || xmlHttp2.readyState == 3)
        xmlHttp2.abort();
        
    xmlHttp2.open("GET", strLink, true);

    // Setup a function for the server to run when it's done
    xmlHttp2.onreadystatechange = ProcessDataUSL;
    xmlHttp2.send(null);
   
    return true;
}
	
function ProcessDataUSL() {
    if (xmlHttp2.readyState == 4) {
    }
}


function ResolveCoordinate(x,y, action) {
    rndNum = Math.random();
    strLink = "newMapAjaxHelper.aspx?" + encrypt("method=RESOLVECOORD&TIS=1&ACT=" + action + "&X=" + x + "&Y=" + y + "&r=" + rndNum);
       
    if (xmlHttp3.readyState == 2 || xmlHttp3.readyState == 3)
        xmlHttp3.abort();
        
    xmlHttp3.open("GET", strLink, true);

    // Setup a function for the server to run when it's done
    xmlHttp3.onreadystatechange = ProcessDataRCoord;
    xmlHttp3.send(null);
   
    return true;
}
	
function ProcessDataRCoord() {
    if (xmlHttp3.readyState == 4) {
        var response = new String();
        response = xmlHttp3.responseText;
      //  alert(response);
        address = response.split(" -*- ");
        if (address.length > 5) {
            var action = address[0];
            if (action == "1")      // insert first
            {
                //addNewLocation(address[5], address[6], address[4], address[2] + ' ' + address[3], address[1], '', 1);
                document.getElementById(glbrelayedPostbackContextControlId).value = 'AddFirstLocation|' + address[8];
                doRelayedPostBack(glbrelayedPostbackTriggerControlId);
            }

            else if (action == "2")     // append last
            {
                //addNewLocation(address[5], address[6], address[4], address[2] + ' ' + address[3], address[1], '', 2);
                document.getElementById(glbrelayedPostbackContextControlId).value = 'AddLastLocation|' + address[8];
                doRelayedPostBack(glbrelayedPostbackTriggerControlId);
            }
            else if (action == "3")
                findInTis(address[2], address[3], address[1], address[7])
            else if (action == "4")     // insert before last if more than 2 in list
                addNewLocation(address[5], address[6], address[4], address[2] + ' ' + address[3], address[1], '', 3);
        }
    }

}

function getSite() {
    return "";
    
    var loc = new String();
    loc = window.location.href;
    pos2 = loc.lastIndexOf("/");
    if (pos2 > 0)  
        loc = loc.substring(0, pos2 + 1);
    else loc = "";

    return loc;
}

function findInTis(street, hnr, town, person) {

    if (person== 0)
        link = "contextAction=FreshSearch&page=Page_searchresults.aspx&sessionSearchType=Company&sessionCompaniesStreetName=" + street + "&sessionCompaniesHouseNumber=" + hnr + "&sessionCompaniesPostOffice=" + town;
    else
        link = "contextAction=FreshSearch&page=Page_searchresults.aspx&sessionSearchType=Person&sessionPersonsStreetName=" + street + "&sessionPersonsHouseNumber=" + hnr + "&sessionPersonsPostOffice=" + town;
	
	link = getSite() + "page_redirect.aspx?" + encrypt(link);

	if (window.opener) {
	    try {
	        window.opener.location = link;
	        window.opener.focus();
	    } catch (e) {
	        xwin = window.open(link); //fix this!
	        if (xwin)
	            xwin.focus();
	    }
	} else {
	    xwin = window.open(link); //fix this!
	    if (xwin)
	        xwin.focus;
	}
}

function findInTisOK(street, hnr, town, phone) { 
  	link = "FROMMAP=2&WP=1&street=" + street + "&hnr=" + hnr + "&post=" + town + "&phone=" + phone;
	
	link = getSite() + "default.aspx?" + encrypt(link);

	if (window.opener) {
	    try {
	        window.opener.location = link;
	        window.opener.focus();
	    } catch (e) {
	        xwin = window.open(link); //fix this!
	        if (xwin)
	            xwin.focus();
	    }
	} else {
	    xwin = window.open(link); //fix this!
	    if (xwin)
	        xwin.focus;
	}
}

function findNearBy(what, radij, x, y) {
  	link = "FROMMAP=3&what=" + what + "&x=" + x + "&y=" + y + "&rad=" + radij;
	
	link = getSite() + "default.aspx?" + encrypt(link);

	if (window.opener) {
	    try {
	        window.opener.location = link;
	        window.opener.focus();
	    } catch (e) {
	        xwin = window.open(link); //fix this!
	        if (xwin)
	            xwin.focus();
	    }
	} else {
	    xwin = window.open(link); //fix this!
	    if (xwin)
	        xwin.focus;
	}
}

// -- Map navigation -- end


/***************************
Itinerary list functionality
***************************/

function selectListItem(index) {
    var itinerary = window.document.getElementById("itinerary");
	for (i = 0; i < itinerary.childNodes.length; i++) {
		itinerary.childNodes[i].className = "deselectedItineraryItem";
		if (i == index) {
			itinerary.childNodes[i].className = "selectedItineraryItem";
			window.document.getElementById("itinerary").selectedItemIndex = i;
		}
	}
}

function getIndexOfListItem(item) {
    var itinerary = window.document.getElementById("itinerary");
    for (i = 0; i < itinerary.childNodes.length; i++) {
        if (itinerary.childNodes[i] == item)
            return i;
    }
    
    return -1;
}

function moveSelectedUpList() {
	var listItems = window.document.getElementById("itinerary").childNodes; //window.document.getElementsByTagName("li");
	var si = window.document.getElementById("itinerary").selectedItemIndex;
	for (i = 0; i < listItems.length; i++) {
		if (i == si && i > 0) {                         // move if not first
			swapListItems(listItems, i, i - 1);
			window.document.getElementById("itinerary").selectedItemIndex = i - 1;
			scrollToListItem(i - 1);
			swapMarks(i, i - 1);
			return;
		}
	}
}

function moveSelectedDownList() {
	var listItems = window.document.getElementById("itinerary").childNodes;//window.document.getElementsByTagName("li");
	var si = window.document.getElementById("itinerary").selectedItemIndex;
	for (i = 0; i < listItems.length; i++) {
		if (i == si && i < listItems.length - 1) {      // move if not last
			swapListItems(listItems, i, i + 1);
			window.document.getElementById("itinerary").selectedItemIndex = i + 1;
			scrollToListItem(i + 1);
			swapMarks(i, i + 1);
			return;
		}
	}
}

function swapListItems(listArray, obj1_Index, obj2_Index) {
    var commonParent = listArray[obj1_Index].parentNode;
    if (obj1_Index < obj2_Index)
        commonParent.insertBefore(listArray[obj2_Index], listArray[obj1_Index]);
    else
        commonParent.insertBefore(listArray[obj1_Index], listArray[obj2_Index]);
}

function swapMarks(obj1_Index, obj2_Index) {
    // swap on server first
    if (obj1_Index < obj2_Index)
        UpdateSessionLocation(marksX[obj1_Index],marksY[obj1_Index],markNames[obj1_Index],markAddresses[obj1_Index],markPosts[obj1_Index],markPhones[obj1_Index],"MOVE",-1);
    else
        UpdateSessionLocation(marksX[obj1_Index],marksY[obj1_Index],markNames[obj1_Index],markAddresses[obj1_Index],markPosts[obj1_Index],markPhones[obj1_Index],"MOVE",1);

    var t;

    t = marksX[obj1_Index];
    marksX[obj1_Index] = marksX[obj2_Index];
    marksX[obj2_Index] = t;

    t = marksY[obj1_Index];
    marksY[obj1_Index] = marksY[obj2_Index];
    marksY[obj2_Index] = t;

    t = markNames[obj1_Index];
    markNames[obj1_Index] = markNames[obj2_Index];
    markNames[obj2_Index] = t;

    t = markAddresses[obj1_Index];
    markAddresses[obj1_Index] = markAddresses[obj2_Index];
    markAddresses[obj2_Index] = t;

    t = markPosts[obj1_Index];
    markPosts[obj1_Index] = markPosts[obj2_Index];
    markPosts[obj2_Index] = t;

    t = markPhones[obj1_Index];
    markPhones[obj1_Index] = markPhones[obj2_Index];
    markPhones[obj2_Index] = t;    
}

function scrollToListItem(index) {
    var itinerary = window.document.getElementById("itinerary");
	var div = itinerary.parentNode;
	var ref = itinerary.childNodes[itinerary.selectedItemIndex];
	var totalOffsetTop = 0;
	var totalOffsetBottom = ref.clientHeight;

	// to first ancestor div
	while (ref != null && ref.tagName.toLowerCase() != "div") {
		totalOffsetTop += ref.offsetTop;
		ref = ref.parentNode;
	}

	if (ref && ref.offsetParent && ref.offsetParent.nodeName && ref.offsetParent.nodeName.toLowerCase() == "body") {    // correct Firefox (offsetParent == "body") diffirence to IE (offsetParent == "div")
		totalOffsetTop -= window.document.getElementById("itinerary").parentNode.offsetTop;	// remove "padding" of list container
	}

	totalOffsetBottom += totalOffsetTop;

	if (totalOffsetTop < div.scrollTop) {					                // if selection top above div top
		div.scrollTop = totalOffsetTop;
	} else if (totalOffsetBottom > div.scrollTop + div.clientHeight) {		// if selection bottom bellow div bottom
		div.scrollTop = totalOffsetBottom - div.clientHeight;
	}
}

/*function showItineraryBorderInMSIE() {
    if (navigator.userAgent.indexOf("MSIE") != -1)
        window.document.getElementById("edge").style.borderWidth = "1px";
}

function initializeItinerary() {
    var itinerary = window.document.getElementById("itinerary");
    while (itinerary.hasChildNodes()) {
        itinerary.removeChild(itinerary.lastChild);
    }
    itinerary.selectedItemIndex = -1;
}

// -- Itinerary list functionality -- end*/


/**********************
Map's zoom gauge object
**********************/

// constants
MapZoomGauge.ZOOM_LEVEL_MAX = 12;
MapZoomGauge.ZOOM_LEVEL_MIN = 1;

// properties
MapZoomGauge.zoomLevel = MapZoomGauge.ZOOM_LEVEL_MIN;
MapZoomGauge.imageControlID = "";
MapZoomGauge.imageWidth = 0;
MapZoomGauge.imageHeight = 0;
MapZoomGauge.imageLowestLevelTopOffset = 0;
MapZoomGauge.imageLevelStepHeight = 0;
MapZoomGauge.debugElementID = null;

// constructors
function MapZoomGauge(initialZoomLevel, imageControlID, imageWidth, imageHeight, imageLowestLevelTopOffset, imageLevelStepHeight, debugElementID) {
    this.zoomLevel = initialZoomLevel;
    this.imageControlID = imageControlID;
    this.imageWidth = imageWidth;
    this.imageHeight = imageHeight;
    this.imageLowestLevelTopOffset = imageLowestLevelTopOffset;
    this.imageLevelStepHeight = imageLevelStepHeight;
    this.debugElementID = debugElementID;
}

// methods
MapZoomGauge.prototype.zoomToLevel = function(level) {
    this.zoomLevel = level;

    // imege specific constants: 164 - top offset of lowest zoom level step rectangle, 12.5 - step rectangle height; other clipping offsets: 20px, 201px, 0px
    window.document.getElementById(this.imageControlID).style.clip = "rect(" + Math.floor(this.imageLowestLevelTopOffset - (level - MapZoomGauge.ZOOM_LEVEL_MIN) * this.imageLevelStepHeight) + "px," + this.imageWidth + "px," + this.imageHeight + "px,0px)";

    // debug
    if (this.debugElementID) {
        window.document.getElementById(this.debugElementID).innerHTML = "zoom: " + this.zoomLevel;
    }
}

// -- MapZoomGauge -- end


/******************************
TisSearch web service & miniTIS
******************************/

function searchminiTIS() {
    var general = $get("TextBoxMTGeneral");
    var activity = $get("TextBoxMTActivity");
    
    TisSearch.MiniTISSearch(general.value, activity.value, SucceededMiniTISCallback);
}

var miniTISRecords = new Array(0);

function SucceededMiniTISCallback(result) {
    ClearMiniTISResultSet();
    
    if (result != null) {
        for (i = 0; i < result.length; i++) {
            AddMiniTISRecord(result[i]);
        }
    }
}

function ClearMiniTISResultSet() {
    miniTISRecords=new Array(0);
    
    var itineraryMT = window.document.getElementById("itineraryMT");
    while (itineraryMT.hasChildNodes()) {
        itineraryMT.removeChild(itineraryMT.lastChild);
    }
    itineraryMT.selectedItemIndex = -1;
}

function AddMiniTISRecord(record) {
    
    // result[i].name, results[0].street, results[0].hnr, results[0].postnr, results[0].post,
    // results[0].telephone, results[0].x, results[0].y
    miniTISRecords.push(record);

    var itineraryMT = document.getElementById("itineraryMT");
    var listItem = document.createElement("li");
    listItem.innerHTML = "<b>"+ miniTISRecords.length + ". " + record.name + "</b><br />" +
        "<div style=\"margin-left: 1em; font-size: smaller;\">" + record.street + " " + record.hnr + "<br />" +
        record.postnr + " "+ record.post + "<br />" + record.telephone + "</div>";

    listItem.onclick = function () { selectListItemMT(getIndexOfListItemMT(this)); moveToMarkMT(); };
    listItem.oncontextmenu = function (e) { e = e ? e : window.event; selectListItemMT(getIndexOfListItemMT(this)); showContextMenuMT(e); };
    listItem.className = "deselectedItineraryItem";

    itineraryMT.appendChild(listItem);
}

function scrollToListItemMT(index) {
    var itineraryMT = document.getElementById("itineraryMT");
    var div = itineraryMT.parentNode;
    var ref = itineraryMT.childNodes[itineraryMT.selectedItemIndex];
    var totalOffsetTop = 0;
    var totalOffsetBottom = ref.clientHeight;

    // to first ancestor div
    while (ref != null && ref.tagName.toLowerCase() != "div") {
        totalOffsetTop += ref.offsetTop;
        ref = ref.parentNode;
    }

    if (ref && ref.offsetParent && ref.offsetParent.nodeName && ref.offsetParent.nodeName.toLowerCase() == "body") {  // correct Firefox (offsetParent == "body") diffirence to IE (offsetParent == "div")
        totalOffsetTop -= window.document.getElementById("itineraryMT").parentNode.offsetTop;	// remove "padding" of list container
    }

    totalOffsetBottom += totalOffsetTop;

    if (totalOffsetTop < div.scrollTop) {					                // if selection top above div top
        div.scrollTop = totalOffsetTop;
    } else if (totalOffsetBottom > div.scrollTop + div.clientHeight) {		// if selection bottom bellow div bottom
        div.scrollTop = totalOffsetBottom - div.clientHeight;
    }
}

function selectListItemMT(index) {
    var itineraryMT = document.getElementById("itineraryMT");
    for (i = 0; i < itineraryMT.childNodes.length; i++) {
        itineraryMT.childNodes[i].className = "deselectedItineraryItem";
        if (i == index) {
	        itineraryMT.childNodes[i].className = "selectedItineraryItem";
	        window.document.getElementById("itineraryMT").selectedItemIndex = i;
        }
    }
}

function getIndexOfListItemMT(item) {
    var itineraryMT = document.getElementById("itineraryMT");
    for (i = 0; i < itineraryMT.childNodes.length; i++) {
        if (itineraryMT.childNodes[i] == item)
            return i;
    }
    
    return -1;
}

function moveToMarkMT() {
    var i = window.document.getElementById("itineraryMT").selectedItemIndex;
    if (i == -1)
        return;
	    
    markerWorldX=miniTISRecords[i].x;
    markerWorldY=miniTISRecords[i].y;
    markerVisible = true;
    moveMapToZ(markerWorldX, markerWorldY, 9);
}

function showContextMenuMT(e) {
    document.getElementById('rightClickMenuMT').style.display='block';
    document.getElementById('rightClickMenuMT').style.top = (e.clientY - 10) + "px";
    document.getElementById('rightClickMenuMT').style.left = (e.clientX - 10) + "px";
    e.cancelBubble = true;
    e.returnValue = false;
    return false;
}

function hideContextMenuMT() {
    document.getElementById('rightClickMenuMT').style.display='none';
    document.getElementById('rightClickMenuMT').style.top = -100 + "px";
    document.getElementById('rightClickMenuMT').style.left = -100 + "px";
}

function contextMenuActionMT(action) {
    hideContextMenuMT();
    
    var i = window.document.getElementById("itineraryMT").selectedItemIndex;
    if (i == -1)
        return;

    if (action == 3) {  // insert first
        //(xx,yy,n,a,p,t)
        addNewLocation(miniTISRecords[i].x, miniTISRecords[i].y, miniTISRecords[i].name, miniTISRecords[i].street + ' ' + miniTISRecords[i].hnr, miniTISRecords[i].post, '', 1);
        setLeftTab(2);
    } else if (action == 4) {   // append last
        addNewLocation(miniTISRecords[i].x, miniTISRecords[i].y, miniTISRecords[i].name, miniTISRecords[i].street+ ' ' + miniTISRecords[i].hnr ,miniTISRecords[i].post,'', 2);
        setLeftTab(2);
    } else if (action == 5) {
        findInTis(miniTISRecords[i].street, miniTISRecords[i].hnr, miniTISRecords[i].post)
    } else if (action == 7) {    // insert before last if more than 2 in list
        addNewLocation(miniTISRecords[i].x, miniTISRecords[i].y, miniTISRecords[i].name, miniTISRecords[i].street+ ' ' + miniTISRecords[i].hnr ,miniTISRecords[i].post,'', 3);
        setLeftTab(2);
    }
}

var activeLeftTab = 0;

function setLeftTab(idx) {
    document.getElementById("imgLeftTab1").src = "_Images/tabs/minitis.gif";
    document.getElementById("imgLeftTab2").src = "_Images/tabs/iscipot.gif";
    if (idx == 1) {
        document.getElementById("imgLeftTab1").src = "_Images/tabs/minitis_a.gif";
        document.getElementById("leftControlsMiniTIS").style.display = "";
        document.getElementById("leftControls").style.display = "none";
        activeLeftTab = 1;
    } else if (idx == 2) {
        document.getElementById("imgLeftTab2").src = "_Images/tabs/iscipot_a.gif";
        document.getElementById("leftControlsMiniTIS").style.display = "none";
        document.getElementById("leftControls").style.display = "";
        activeLeftTab = 2;
    }
}



function UpdateMiniMap(wx, wy) {
    obj = document.getElementById("miniMapCross");
    //width 200 height 129
    // x1 360000 x2 650000  y1 20000 y2 200000
    
    wposx = wx - 360000;
    wposy = wy - 20000;

    x = (200 * wposx) / 290000;
    y = 129 - ((129 * wposy) / 180000);
    y = y - 8;
    x = x - 2;

    if (x < 0)
        x = 0;
    if (x > 176)
        x = 176;
    if (y < -2)
        y = -2;
    if (y > 105)
        y = 105;
    obj.style.top = y + "px";
    obj.style.left = x + "px";


}



var OKxReqX = -10;
var OKxReqY = -10;
var forceOpenBaloon = false;
var BaloonOpenedFromHit = false;

var inOKXSearch = false;
function showOKx(typeOKx, id, x, y) {
    if (inOKXSearch)
        return;
    CloseAllMapCloudBaloons();
    forceOpenBaloon = false;
    BaloonOpenedFromHit = false;
    inOKXSearch = true;
    TisSearch.FindOKx(typeOKx, id, SucceededShowOKxCallback);
    OKxReqX = x;
    OKxReqY = y;
}

function showOKxFromList(typeOKx, id) {
    CloseAllMapCloudBaloons();
    forceOpenBaloon = true;
    BaloonOpenedFromHit = false;
    TisSearch.FindOKx(typeOKx, id, SucceededShowOKxCallback);
}

function showOKxFromHit(typeOKx, id) {
    CloseAllMapCloudBaloons();
    forceOpenBaloon = true;
    BaloonOpenedFromHit = true;
    OKxReqX = viewerBean.width / 2 - 4;
    OKxReqY = viewerBean.height / 2;
    TisSearch.FindOKx(typeOKx, id, SucceededShowOKxCallback);
    
}

function CleanPhone(ph) {
    posokl = ph.indexOf(')', 0);
    ph = ph.substring(posokl + 1);
    ph = ph.replace(' ', '');
    ph = ph.replace(' ', '');
    ph = ph.replace(' ', '');
    
    return ph;
}

function SucceededShowOKxCallback(result) {
    inOKXSearch = false;
    if (result == null)
        return;
    cmname = result.miniTisRecord.name;
    cmaddress = result.miniTisRecord.street + " " + result.miniTisRecord.hnr;
    cmstreet = result.miniTisRecord.street;
    cmhnr = result.miniTisRecord.hnr;
    cmpost = result.miniTisRecord.postnr;
    cmtel = result.miniTisRecord.telephone;
    cmx = result.miniTisRecord.x;
    cmy = result.miniTisRecord.y;
    cmscreenx = OKxReqX;
    cmscreeny = OKxReqY;

    if (result.presentation.cloudType == "")
        result.presentation.cloudType = "HIT";
    
    
    _mapCloudsHandler.setContent(result.presentation.cloudType,
		                OKxReqX,
		                OKxReqY,
		                result.presentation.id,
		                result.presentation.info,
		                result.presentation.contacts,
		                result.presentation.activities,
		                result.presentation.logo,
		                result.presentation.videoOKCOnly,
		                result.presentation.imageOKBOnly,
		                result.presentation.promotion,
		                result.presentation.tool1,
		                result.presentation.tool2,
		                result.presentation.tool3,
		                result.presentation.tool4,
		                result.presentation.tool5);

    if (forceOpenBaloon) {
        window.document.getElementById("mapCloud" + result.presentation.cloudType + "Baloon").style.display = "block";

        window.setTimeout('BaloonOpenedFromHit = false;', 500);
    }
    
}

function DisableMapSpots() {
    if (BaloonOpenedFromHit == true)
        return;
    window.document.getElementById("mapCloudOKX").style.top = "-600px";
    window.document.getElementById("mapCloudOKX").style.left = "-600px";
    window.document.getElementById("mapCloudOKC").style.top = "-600px";
    window.document.getElementById("mapCloudOKC").style.left = "-600px";
    window.document.getElementById("mapCloudOKB").style.top = "-600px";
    window.document.getElementById("mapCloudOKB").style.left = "-600px";
    window.document.getElementById("mapCloudOKA").style.top = "-600px";
    window.document.getElementById("mapCloudOKA").style.left = "-600px";
    window.document.getElementById("mapCloudHIT").style.top = "-600px";
    window.document.getElementById("mapCloudHIT").style.left = "-600px";
}

function CloseAllMapCloudBaloons() {

    if (BaloonOpenedFromHit == true)
        return;
    window.document.getElementById("mapCloudOKXBaloon").style.display = "none";
    window.document.getElementById("mapCloudOKCBaloon").style.display = "none";
    window.document.getElementById("mapCloudOKBBaloon").style.display = "none";
    window.document.getElementById("mapCloudOKABaloon").style.display = "none";
    window.document.getElementById("mapCloudHITBaloon").style.display = "none";
}

// -- TisSearch web service & miniTIS -- end


/*************************
Map's cluds handler object
*************************/

// constants
MapCloudsHandler.OFFSET_CORRECTION_X = 38;
MapCloudsHandler.OFFSET_CORRECTION_Y = -91;
MapCloudsHandler.BALOON_HIDE_TIMEOUT = 500;

// properties
MapCloudsHandler.baloonClosingTimerID = null;
MapCloudsHandler.debugElementID = null;

// constructors
function MapCloudsHandler(debugElementID) {
    this.debugElementID = debugElementID;
}
function showOKxOrMoveMap(cloudType) {
    var prefix = "mapCloud" + cloudType;
    var cloudElement = window.document.getElementById(prefix);
    var baloonElement = window.document.getElementById(prefix + "Baloon");
    
    if (cmscreeny < 100 || cmscreeny > (viewerBean.height - 200) || cmscreenx > (viewerBean.width - 200)) {
        a = viewerBean.getCenterWorldCoord();
        
        moveMapToZ2(cmx,cmy,viewerBean.zoomLevel, false);

       // cloudElement.style.top = posY + MapCloudsHandler.OFFSET_CORRECTION_Y + "px";
        // cloudElement.style.left = posX + MapCloudsHandler.OFFSET_CORRECTION_X + "px";
        a = viewerBean.getCenterWorldCoord();
    }
    else
        baloonElement.style.display = 'block';
    
}

// methods
// cloudType: OKC, OKB, OKA, HIT
MapCloudsHandler.prototype.setContent = function(cloudType, posX, posY, id, info, contacts, activities, logo, videoOKCOnly, imageOKBOnly, promotion, tool1, tool2, tool3, tool4, tool5) {
    var prefix = "mapCloud" + cloudType;
    var cloudElement = window.document.getElementById(prefix);
    var baloonElement = window.document.getElementById(prefix + "Baloon");

    // do not redisplay visible control
    if (baloonElement != null && baloonElement.style.display != "none") {
        return;
    }

    var tagElement = window.document.getElementById(prefix + "Tag");
    var infoElement = window.document.getElementById(prefix + "Info");
    var contactsElement = window.document.getElementById(prefix + "Contacts");
    var activitiesElement = window.document.getElementById(prefix + "Activities");
    var logoElement = window.document.getElementById(prefix + "Logo");
    var videoElement = window.document.getElementById(prefix + "Video");
    var imageElement = window.document.getElementById(prefix + "Image");
    var promotionElement = window.document.getElementById(prefix + "Promotion");
    var tool1Element = window.document.getElementById(prefix + "Tool" + 1);
    var tool2Element = window.document.getElementById(prefix + "Tool" + 2);
    var tool3Element = window.document.getElementById(prefix + "Tool" + 3);
    var tool4Element = window.document.getElementById(prefix + "Tool" + 4);
    var tool5Element = window.document.getElementById(prefix + "Tool" + 5);

    if (cloudElement != null) {
        cloudElement.style.top = posY + MapCloudsHandler.OFFSET_CORRECTION_Y + "px";
        cloudElement.style.left = posX + MapCloudsHandler.OFFSET_CORRECTION_X + "px";
    }



    if (tagElement != null) {
        tagElement.innerHTML = id;
    }

    if (infoElement != null) {
        infoElement.innerHTML = info;
    }

    if (contactsElement != null) {
        contactsElement.innerHTML = contacts;
    }

    if (activitiesElement != null) {
        activitiesElement.innerHTML = activities;
    }

    if (logoElement != null) {
        if (logo != "") {
            logoElement.src = glbMapServerBaseURL + "/_uploads/logos/" + logo + ".jpg";
            logoElement.style.display = "";
        }
        else
            logoElement.style.display = "none";
    }

    if (videoElement != null) {
        //        alert(".flv");
        if (videoOKCOnly != "") {
            videoElement.style.display = "";
            this.prepareVideo(videoOKCOnly).write(videoElement.id);
        }
        else videoElement.style.display = "none";
    }

    if (imageElement != null) {
        if (imageOKBOnly != "") {
            imageElement.innerHTML = "<img class='logo' src='" + glbMapServerBaseURL + "/_uploads/logos/" + imageOKBOnly + ".jpg' alt='' />";
        }
        else
            imageElement.innerHTML = "";
    }

    if (promotionElement != null) {
        promotionElement.innerHTML = promotion;
    }

    if (tool1Element != null) {
        if (tool1 != null) {
            tool1Element.href = tool1;
            tool1Element.style.display = "";
        } else {
            tool1Element.href = "";
            tool1Element.style.display = "none";
        }
    }

    if (tool2Element != null) {
        if (tool2 != null) {
            tool2Element.href = tool2;
            tool2Element.style.display = "";
        } else {
            tool2Element.href = "";
            tool2Element.style.display = "none";
        }
    }

    if (tool3Element != null) {
        if (tool3 != null) {
            tool3Element.href = tool3;
            tool3Element.style.display = "";
        } else {
            tool3Element.href = "";
            tool3Element.style.display = "none";
        }
    }

    if (tool4Element != null) {
        if (tool4 != null) {
            tool4Element.href = tool4;
            tool4Element.style.display = "";
        } else {
            tool4Element.href = "";
            tool4Element.style.display = "none";
        }
    }

    if (tool5Element != null) {
        if (tool5 != null) {
            tool5Element.href = tool5;
            tool5Element.style.display = "";
        } else {
            tool5Element.href = "";
            tool5Element.style.display = "none";
        }
    }

    //baloonElement.style.display = "block";

    // debug
    if (this.debugElementID) {
        window.document.getElementById(this.debugElementID).innerHTML = "setContent(" + cloudType + ", " + posX + ", " + posY + ", " + id + ", " + baloon + ", " + info + ", " + contacts + ", " + activities + ", " + logo + ", " + videoOKCOnly + ", " + imageOKBOnly + ", " + promotion + ", " + tool1 + ", " + tool2 + ", " + tool3 + ", " + tool4 + ", " + tool5 + ")";
    }



}

MapCloudsHandler.prototype.prepareVideo = function(videoAndImageNamePrefix) {
    var s1 = new SWFObject(glbMapServerBaseURL + "/JWPlayer/player.swf", "mpl", "225", "125", "9", "#ffffff");
    s1.addParam("allowfullscreen", "true");
    s1.addParam("allowscriptaccess", "always");
    s1.addParam("wmode", "opaque");
    s1.addParam("flashvars", "file=" + glbMapServerBaseURL + "/_uploads/ok_videos/" + videoAndImageNamePrefix + ".flv&stretching=fill&image=" + glbMapServerBaseURL + "/_uploads/ok_images/" + videoAndImageNamePrefix + ".jpg");
    
    return s1;
}

MapCloudsHandler.prototype.hideBaloonAfterTimeout = function(leftElement, event, baloonElementNameToClose) {
    if (event == null)
        event = window.event;
    var toElement = (event.relatedTarget != null) ? event.relatedTarget : event.toElement; 	// element that has been entered upon mouseout event
    while (toElement != leftElement && toElement != null) 	// leads to either leftElement (which is predecessor of toElement) or beyond body element
        toElement = toElement.parentNode
    if (toElement == leftElement) 	// if not stepped outside leftElement
        return;

    // cursor really left outermost element handling onmouseout event
    this.baloonClosingTimerID = setTimeout("window.document.getElementById('" + baloonElementNameToClose + "').style.display = 'none';", MapCloudsHandler.BALOON_HIDE_TIMEOUT);
}

MapCloudsHandler.prototype.cancelHideBaloonAfterTimeout = function() {
    if (this.baloonClosingTimerID != null) {
        clearTimeout(this.baloonClosingTimerID);
        this.baloonClosingTimerID = null;
    }
}
// -- MapCloudsHandler -- end


/****************************
Zoom & Move tools positioning
****************************/

function PlaceZoomAndMoveGauges(moveGaugeElementName, zoomGaugeElementName, areToolsOpened) {
    var moveGaugeElement = window.document.getElementById(moveGaugeElementName);
    var zoomGaugeElement = window.document.getElementById(zoomGaugeElementName);
    
    if (areToolsOpened) {
        moveGaugeElement.style.left = "270px";
        zoomGaugeElement.style.left = "283px";
    } else {
        moveGaugeElement.style.left = "10px";
        zoomGaugeElement.style.left = "23px";
    }
}

// -- Zoom & Move tools positioning -- end


/******
MiniMap
******/

// constants
MiniMapHandler.VIEW_TYPE_BUTTON_IDS = ["btnNormalView", "btnOrtophotoView", "btnHybridView", "btnRoadMapView"];
MiniMapHandler.VIEW_LAYERS_CHECKBOX_IDS = ["cbArchitectureLayer", "cbBusLinesLayer", "cbHillsPeaksLayer"];

// properties
MiniMapHandler.selectedMapViewType = null;  // should normaly return value "NormalView"
MiniMapHandler.selectedLayers = null;  // should normaly return values (e.g. "000", "100", ...) that depict layers selection (where value: 0 - unselected, 1 - selected); layers have same ordering as MiniMapHandler.VIEW_LAYERS_CHECKBOX_IDS array

// constructors
function MiniMapHandler(selectedMapViewType, selectedLayers) {
    this.selectedMapViewType = selectedMapViewType;
    this.selectedLayers = selectedLayers;
}

// methods
MiniMapHandler.prototype.selectMapViewType = function(clickedButtonId) {
    for (i = 0; i < MiniMapHandler.VIEW_TYPE_BUTTON_IDS.length; i++) {
        var buttonsParent = window.document.getElementById(MiniMapHandler.VIEW_TYPE_BUTTON_IDS[i]).parentNode;
        if (buttonsParent != null) {
            if (MiniMapHandler.VIEW_TYPE_BUTTON_IDS[i] == clickedButtonId) {
                buttonsParent.className = "sel";
                this.selectedMapViewType = clickedButtonId.substring(3);
            } else {
                buttonsParent.className = "";
            }
        }
    }
}

MiniMapHandler.prototype.modifyLeyersSelection = function() {
    var layers = "";
    for (i = 0; i < MiniMapHandler.VIEW_LAYERS_CHECKBOX_IDS.length; i++) {
        var cb = window.document.getElementById(MiniMapHandler.VIEW_LAYERS_CHECKBOX_IDS[i]);
        if (cb != null) {
            layers += (cb.checked ? "1" : "0");
        }
    }
    this.selectedLayers = layers;
}

// -- MiniMap -- end
