
	function openNahled(event) {
			winWidth = 640;
			winHeight = 480;
			if (winWidth>screen.width) { winWidth=screen.width-40; }
			if (winHeight>screen.height) { winHeight=screen.height-40; }
			Gnahled = window.open("","Idetail",'toolbar=0,location=0,scrollbars=1,width='+winWidth+'px,height='+winHeight+'px,resizable=1');
			Gnahled.resizeTo(winWidth,winHeight);
			Gnahled.focus();
	} // openNahled()

	function openFullSearch(path) {
			winWidth = 640;
			winHeight = 480;
			if (winWidth>screen.width) { winWidth=screen.width-40; }
			if (winHeight>screen.height) { winHeight=screen.height-40; }
			Gnahled = window.open(path,"Vyhledavani",'toolbar=0,location=0,scrollbars=1,width='+winWidth+'px,height='+winHeight+'px,resizable=1');
			Gnahled.resizeTo(winWidth,winHeight);
			Gnahled.focus();
	} // openFullSearch()

	function markObject(event){

		if (event.srcElement){
			var id = event.srcElement.parentElement.getAttribute('id');
			var cat = event.srcElement.parentElement.getAttribute('name');
		} else {
			var id = new String(event.target.parentNode.getAttribute('id'));
			var cat = new String(event.target.parentNode.getAttribute('name'));
			//alert(id+"|"+cat);
			
		}

		idob = "ob_" + id; 
		parent.frames['navigation'].location = "navigation.php?parent=" + cat + "#" + id;
		parent.frames['navigation'].document.getElementById(idob).className='nal_obj_list_sel'; 	
	}

	function unmarkObject(event){

		if (event.srcElement){
			var id = event.srcElement.parentElement.getAttribute('id');
			var cat = event.srcElement.parentElement.getAttribute('name');
		} else {
			var id = new String(event.target.parentNode.getAttribute('id'));
			var cat = new String(event.target.parentNode.getAttribute('name'));
		}
		
		idob = "ob_" + id; 
		parent.frames['navigation'].location = "navigation.php?parent=" + cat + "#" + id;
		parent.frames['navigation'].document.getElementById(idob).className='nal_obj_list'; 		
	}

	function winH() {
		if (window.innerHeight) return window.innerHeight;
		else if (document.documentElement && document.documentElement.clientHeight)
		return document.documentElement.clientHeight;
		else if (document.body && document.body.clientHeight)
		return document.body.clientHeight;
		else return null;
	} // winH()
	function winW() {
		if (window.innerWidth) return window.innerWidth;
		else if (document.documentElement && document.documentElement.clientWidth)
		return document.documentElement.clientWidth;
		else if (document.body && document.body.clientWidth)
		return document.body.clientWidth;
		else return null;
	} // winW()

var lastRefPosition;
var lastShObject, lastShObjectTime;


/**
 * funkce se zavola po uplynuti timeoutu na scroll,
 * nebo po oznaceni vyrezu na mape (nastaveno reload a zoom)
 * odesle pozadavek na server pro nove objekty.
 */
function onScroolTimeOut( _koordinaty, _reload, _zoom ) {
	if (zMapa.Scrolling) {
		clearTimeout(zMapa.Scrolling);
	}
        
	var mScale = zMapa.MapScale;
	var dWS = window.parent.document.getElementById('mapasrv');
	var koordinaty;

	if (typeof _koordinaty=="object") {
		koordinaty	= _koordinaty;
		if (koordinaty.leftCorner != koordinaty.rightCorner) {
			_zoom = -2;
/*			mScale = 20; */
		}
	} else {
		koordinaty = zMapa.getKrovakCoordinate();
	}

	if ( (typeof lastRefPosition=="object") &&
		((lastRefPosition.leftCorner == koordinaty.leftCorner)) && 
		((lastRefPosition.rightCorner == koordinaty.rightCorner) ) &&
		((lastRefPosition.bottomCorner == koordinaty.bottomCorner) ) &&
		((lastRefPosition.topCorner == koordinaty.topCorner) )
		) {
			return;
		}
	lastRefPosition = koordinaty;
	var srcb = "server.php";
        var src = "?MapScale="+mScale;
	if (_zoom==1)	src += "&zoom=1";
		else if (_zoom==-1)	src += "&zoom=-1";
		else if (_zoom==-2){	
		    src += "&zoom=-2";  //nacte posledni zoom , funguje nespravne
		    //_reload = true;
		}    
		
	if (_reload){	
	    src += "&reload=true";
	}
	src += "&coords[leftCorner]="+koordinaty.leftCorner;
	src += "&coords[rightCorner]="+koordinaty.rightCorner;
	src += "&coords[bottomCorner]="+koordinaty.bottomCorner;
	src += "&coords[topCorner]="+koordinaty.topCorner;
	src += '&winH='+winH();
	src += '&winW='+winW();
	
        //window.top.location = "http://www.mapsector.cz/devel/index2.html"+src;
        dWS.src = srcb + src;
	return;
} // onScroolTimeOut

/**
 * hlavni Trida s definici cele mapy
 */
function ImgMap( _mapName, _scale, _krovakCoordinate, _path, _pxSingleImage, _pxResolution, _streetDatabase, _previewImgPath, _previewImgSize ) {
	var pole;
	if (typeof _krovakCoordinate!="object") {
		 pole = _krovakCoordinate.replace(/[\(\)]/g, '').split(",");
		_krovakCoordinate = new KrovakCoordinate(pole[2], pole[0], pole[3], pole[1]);
	}
	if (typeof _pxResolution!="object") {
		pole = _pxResolution.replace(/[\(\)]/g, '').split(",");
		_pxResolution = new PixelResolution(pole[0], pole[1]);
	}
	if (typeof _pxSingleImage!="object") {
		pole = _pxSingleImage.replace(/[\(\)]/g, '').split(",");
		_pxSingleImage = new PixelResolution(pole[0], pole[1]);
	}

	if (typeof _previewImgSize!="object") {
		pole = _previewImgSize.replace(/[\(\)]/g, '').split(",");
		_previewImgSize = new PixelResolution(pole[0], pole[1]);
	}

	this.previewImgPath = _previewImgPath; //'images/cr.png';
	this.previewImgSize = _previewImgSize; //new PixelResolution(230, 143);

	/**
	* Update nahledu obrazku
	*/		
	//var nahled = window.parent.document.getElementById('mapDetail');
	//var nZvyrazneni = nahled.firstChild;
	//var iNahled = nahled.lastChild;
	//if (iNahled.tagName!="IMG") {
	//	alert('create');
	//}
	//iNahled.width= this.previewImgSize.w;
	//iNahled.height = this.previewImgSize.h;
	//var iLeft = parseInt((280-iNahled.width)/2);
	//var iTop = parseInt((170-iNahled.height)/2);
	//iNahled.style.marginLeft = iLeft+'px';
	//iNahled.style.marginTop = iTop+'px';

	//iNahled.src= this.previewImgPath;


	this.Name = _mapName;
	this.MapScale = _scale;
	this.Coordinate = _krovakCoordinate;
	this.Resolution = _pxResolution;
	this.NahledResolution = _pxSingleImage;
	this.Scrolling = false;
	this.MapPath = _path;
	this.StreetDatabase = _streetDatabase;

	this.ScrollTimeout = 250;			// reload objektu pri skrolovani po x ms
	//this.scaleX = this.scaleY = 1;		// rozliseni (pocet metru na jeden pixel)
	this.scaleX = ((this.Coordinate.rightCorner - this.Coordinate.leftCorner) / (this.Resolution.w));
	this.scaleY = ((this.Coordinate.bottomCorner - this.Coordinate.topCorner) / (this.Resolution.h));


	this.moveScrollTime = 40;			// 'plynule' posouvani se vola po xx ms.
	this.moveScrollSteps = 15;			// pocet kroku pro 'plynule' posouvani

	this.mapIsScrolling = false;
	this.moveScrollTo = new PixelResolution(0,0); // kam se ma zaskrolovat
	this.moveScrollActual = 0;
	

	this.Rows = parseInt(this.Resolution.w / this.NahledResolution.w);
	this.Cols = parseInt(this.Resolution.h / this.NahledResolution.h);

	/**
	 * Funkce se pretizi podle potreby
	 *  zoomIn.....kolikrat lze mape  zvysit meritko
	 *  zoomOut.... kolikrat lze mape snizit meritko
	 */	
	this.onObjectChanges = function onObjectChanges (zoomIn, zoomOut) {
	} // onObjectChanges()

	/**
	 * Funkce se pretizi podle potreby
	 *  
	 */	
	this.mapChangeSetStreet = function mapChangeSetStreet ( mapContainsStreetDatabase ) {
	}


	/**
	 * prehraje stavajici instanci novou mapou a zaskroluje na spravne souradnice
	 */
	this.switchMap = function switchMap(_newMap, _stredX, _stredY) {
		this.Name = _newMap.Name;
		this.MapScale = _newMap.MapScale;
		this.Coordinate = _newMap.Coordinate;
		this.Resolution = _newMap.Resolution;
		this.NahledResolution = _newMap.NahledResolution;
		this.MapPath = _newMap.MapPath;
		this.previewImgPath = _newMap.previewImgPath;
		this.previewImgSize = _newMap.previewImgSize;

		this.Rows = parseInt(this.Resolution.w / this.NahledResolution.w);
		this.Cols = parseInt(this.Resolution.h / this.NahledResolution.h);

		this.scaleX = ((this.Coordinate.rightCorner - this.Coordinate.leftCorner) / (this.Resolution.w));
		this.scaleY = ((this.Coordinate.bottomCorner - this.Coordinate.topCorner) / (this.Resolution.h));

		this.reloadImages();
		if (this.Scrolling) clearTimeout(this.Scrolling);

		//this.mapChangeSetStreet( _newMap.StreetDatabase );
 //Zapina intut pro vyhledavani ulic
		
		this.scroolToKrovak(_stredX, _stredY );
		onScroolTimeOut();

		/**
		* Update nahledu obrazku
		*/		
		/*var nahled = window.parent.document.getElementById('mapDetail');
		var nZvyrazneni = nahled.firstChild;
		var iNahled = nahled.lastChild;
		if (iNahled.tagName!="IMG") {
			alert('create');
		}
		iNahled.width= this.previewImgSize.w;
		iNahled.height = this.previewImgSize.h;

		var iLeft = parseInt((280-iNahled.width)/2);
		var iTop = parseInt((170-iNahled.height)/2);
		iNahled.style.marginLeft = iLeft+'px';
		iNahled.style.marginTop = iTop+'px';

		iNahled.src= this.previewImgPath;
                */
	} // switchMap()
	
	this.scrollMiddle = function scrollMiddle() {
		var _Left = this.Coordinate.leftCorner - (this.Coordinate.leftCorner - this.Coordinate.rightCorner)/2;
		var _Top = this.Coordinate.topCorner + (this.Coordinate.bottomCorner - this.Coordinate.topCorner)/2;
		zMapa.scroolToKrovak(_Left, _Top);
	} // scrollMiddle
	
	/**
	 * Zvetseni / zmenseni mapy  (prechod na jine meritko)
	 */
	this.zoom = function Zoom ( _direction ) {
//		var koordinaty = this.getKrovakCoordinate();
		lastRefPosition = '';
		onScroolTimeOut('', true, _direction)
	} // zoom

	/**
	 * Nastaveni hlavni oblasti pro vykreslovani obrazku
	 */
	this.reloadImages = function reloadImages( ) {
		var sLeft, sTop;
		var el = document.getElementsByTagName('div');
		for (var i=0;i<el.length;i++) {
			var elem = el[i];
			if (elem.id.substring(0,2)!="o_") continue;
			var id = elem.id.substring(2);
			zMapa.showObject(id, elem.getAttribute('krLeft'), elem.getAttribute('krTop'), false, elem.getAttribute('iiLeft'), elem.getAttribute('iiTop'));

/*			
			ssLeft = parseInt((elem.getAttribute('krLeft') - zMapa.Coordinate.leftCorner) / zMapa.scaleX);
			ssTop  = parseInt((elem.getAttribute('krTop') - zMapa.Coordinate.topCorner) / zMapa.scaleY);
			elem.style.left= ssLeft + 'px';
			elem.style.top= ssTop + 'px';
*/			
		} // for
		if (mainDiv) document.body.removeChild(mainDiv);
			mainDiv = document.createElement('div');
			mainDiv.id = 'mapContent';
			mainDiv.style.position = 'absolute';
			mainDiv.style.width = zMapa.Resolution.w + 'px';
			mainDiv.style.height = zMapa.Resolution.h + 'px';
			zMapa.objekty = new Array();
			document.body.appendChild( mainDiv );
	} // reloadImages
	
 
 	this.printMap = function printMap() {
	 	var printMap = window.open('framePages/blank.html','printMap');
	
		var clientWidth = winW();
		var clientHeight = winH();
		var scrollLeft = document.body.scrollLeft;
		var scrollTop = document.body.scrollTop;   

		printMap.resizeTo(clientWidth,clientHeight);
		printMap.focus();
		printMap.document.open();
		printMap.document.write('<body>');

		var vXBegin =  parseInt(scrollLeft / zMapa.NahledResolution.w);
		var vXEnd =  parseInt((clientWidth+scrollLeft) / zMapa.NahledResolution.w);
		var vYBegin =  parseInt(scrollTop / zMapa.NahledResolution.h);
		var vYEnd =  parseInt((clientHeight+scrollTop) / zMapa.NahledResolution.h);
	 	
		if (vYEnd>zMapa.Cols) vYEnd = zMapa.Cols;
		if (vXEnd>zMapa.Rows) vXEnd = zMapa.Rows;
		
		for(var x=vXBegin; x<=vXEnd; x++) {
			for(var y=vYBegin; y<vYEnd; y++) {
				var imgUrl = zMapa.MapPath.replace("%X", x );
				imgUrl = imgUrl.replace("%Y", y );				
/*
				var newImg = zMapa.createImg( imgUrl , parseInt(x-vXBegin), parseInt(y-vYBegin) );
				printMap.document.body.appendChild( newImg );
*/				
			var nPos = new PixelResolution( (parseInt(x-vXBegin) * this.NahledResolution.w), (parseInt(y-vYBegin) * this.NahledResolution.h) );
			var height = (((nPos.h + this.NahledResolution.h) <= this.Resolution.h)?this.NahledResolution.h:(this.Resolution.h-nPos.h));
			var width = (((nPos.w + this.NahledResolution.w) <= this.Resolution.w)?this.NahledResolution.w:(this.Resolution.w-nPos.w));

			var style='style="position:absolute;';
			style += 'left:'+nPos.w + 'px;';
			style += 'top:'+nPos.h + 'px';
			style += '"';
			var iii = '<img src="'+imgUrl+'" '+style+'/>';
			printMap.document.write(iii);
				
			} // for y
		} // for x
		printMap.document.write('</body>');
		printMap.document.close();
		printMap.print();
		printMap.close();
 	} // printMap ()
 
	/**
	 * Zavola se, pokud uzivatel zaskroluje oknem - dokresli se zbyle obrazky
	 */
	this.evScroll = function evScroll( vynuceno ) {
		Drag = false;

		if (zMapa.Scrolling) clearTimeout(zMapa.Scrolling);
		if (vynuceno!=true)	zMapa.Scrolling = setTimeout('onScroolTimeOut()', zMapa.ScrollTimeout);

		if (!zMapa.objekty) zMapa.reloadImages();
		
		var clientWidth = winW();
		var clientHeight = winH();
		var scrollLeft = document.body.scrollLeft;
		var scrollTop = document.body.scrollTop;   

		var vXBegin =  parseInt(scrollLeft / zMapa.NahledResolution.w);
		var vXEnd =  parseInt((clientWidth+scrollLeft) / zMapa.NahledResolution.w);
		var vYBegin =  parseInt(scrollTop / zMapa.NahledResolution.h);
		var vYEnd =  parseInt((clientHeight+scrollTop) / zMapa.NahledResolution.h);

		if (vYEnd>zMapa.Cols) vYEnd = zMapa.Cols;
		if (vXEnd>zMapa.Rows) vXEnd = zMapa.Rows;

		for(var x=vXBegin; x<=vXEnd; x++) {
			if (!zMapa.objekty[x]) zMapa.objekty[x] = new Array();
			for(var y=vYBegin; y<=vYEnd; y++) {
				if (!zMapa.objekty[x][y]) {
					var imgUrl = zMapa.MapPath.replace("%X", x );
					imgUrl = imgUrl.replace("%Y", y );
					var newImg = zMapa.createImg( imgUrl , x, y);
					zMapa.objekty[x][y] = newImg;
					mainDiv.appendChild( newImg );
				}
			} // for y
		} // for x

                /*
		//
		// TODO: aktualizace vyznaceneho vyrezu v nahledu mapy presunout do vlastni funkce
		//
		var nahled = window.parent.document.getElementById('mapDetail');
		var nZvyrazneni = nahled.firstChild;
		var iNahled = nahled.lastChild;
		if (iNahled.tagName!="IMG") return;

		if (!parseInt(iNahled.style.marginLeft)) {
			var iLeft = parseInt((280-iNahled.width)/2);
			var iTop = parseInt((170-iNahled.height)/2);
			iNahled.style.marginLeft = iLeft+'px';
			iNahled.style.marginTop = iTop+'px';
		}		
		var nahledMargin = new PixelResolution(parseInt(iNahled.style.marginLeft), parseInt(iNahled.style.marginTop)); // okraje okolo obrazku - neni nalepen na kraj

		var mapaN = new PixelResolution(iNahled.width, iNahled.height);

		var nscaleX = ((zMapa.Coordinate.rightCorner - zMapa.Coordinate.leftCorner) / (mapaN.w));
		var nscaleY = ((zMapa.Coordinate.bottomCorner - zMapa.Coordinate.topCorner) / (mapaN.h));

		var tt =   zMapa.getKrovakCoordinate();

		var ux = parseInt(((tt.leftCorner + ((tt.rightCorner - tt.leftCorner)/2)) - zMapa.Coordinate.leftCorner)/nscaleX);
		var uy = parseInt(((tt.topCorner + ((tt.bottomCorner - tt.topCorner)/2)) - zMapa.Coordinate.topCorner)/nscaleY);

		var gx = ((tt.rightCorner - tt.leftCorner)/nscaleX);
		var gy = ((tt.bottomCorner - tt.topCorner )/nscaleY);

		var nLeft = parseInt(nahledMargin.w + ux - gx/2);
		var nTop = parseInt(nahledMargin.h + uy - gy/2);
		
		if ((nLeft+gx) > mapaN.w +nahledMargin.w) gx = mapaN.w-nLeft+nahledMargin.w;
		if ((nTop+gy) > mapaN.h+nahledMargin.h) gy = mapaN.h-nTop+nahledMargin.h;

		nZvyrazneni.style.left= nLeft + 'px';
		nZvyrazneni.style.top= nTop + 'px';
		nZvyrazneni.style.width= parseInt(gx) + 'px';
		nZvyrazneni.style.height= parseInt(gy) + 'px';
                */
	} // evScroll()
  
  	/**
  	 * Zvyrazneni objektu na urcitych souradnicich
  	 */
	var cntObj = 0;  	     	
  	this.showObject = function showObject(_idO, _Left, _Top, _scroolToObject, _iLeft, _iTop, _img, _logo ) {
        
        var oDiv;
		var curDate = new Date().getTime();

		if ((lastShObject == _idO) && (curDate < lastShObjectTime+1000) ) {  // 1000ms
                        
			var dWS = window.parent.document.getElementById('mapasrv');			
			var src = 'server.php?MapScale=20&zoom=-2&reload=true';
				src += '&coords[leftCorner]='+_Left;
				src += '&coords[rightCorner]='+ parseInt(_Left);
				src += '&coords[bottomCorner]='+ parseInt(_Top);
				src += '&coords[topCorner]='+_Top;
				src += '&winH='+winH();
				src += '&winW='+winW();
				dWS.src = src;
                                
		} // doubleClick
		//alert(src);
		lastShObject = _idO;
		lastShObjectTime = curDate;
		
		
		/*
		if (_logo) {
			var iLogo = window.parent.document.getElementById('logoImg');
			iLogo.src= _logo;
		}
		*/
		
		/**
		 * je-li objekt mimo aktualni mapu -> nezobrazovat
		 */
		if ( (_Left < zMapa.Coordinate.leftCorner) || (_Left > zMapa.Coordinate.rightCorner) || (_Top < zMapa.Coordinate.bottomCorner) || (_Top > zMapa.Coordinate.topCorner) ) {
			if (document.getElementById('o_'+_idO)) {
		        oDiv = document.getElementById('o_'+_idO);
		        oDiv.style.visibility = 'hidden';
			cntObj++;
			//alert(cntObj);
			}
			return;
		}
		
		//zMapa.Resolution.

		if (_scroolToObject) {
		
			zMapa.scroolToKrovak(_Left, _Top);
		}
		
		var sLeft = parseInt((_Left - zMapa.Coordinate.leftCorner) / zMapa.scaleX);
		var sTop  = parseInt((_Top - zMapa.Coordinate.topCorner) / zMapa.scaleY);

		if (!document.getElementById('o_'+_idO)) {
			oDiv = document.createElement('div');
			var oImg = document.createElement('img');
			var oTag = document.createElement('a');

			oDiv.setAttribute('krLeft', _Left);
			oDiv.setAttribute('krTop', _Top);
			oDiv.setAttribute('iiLeft', _iLeft);
			oDiv.setAttribute('iiTop', _iTop);
			
			oDiv.id='o_'+_idO;
			oDiv.style.position = 'absolute';
			oImg.id = 'im_'+_idO;
			oImg.className = 'tag';
			oDiv.style.zIndex = 20;
			oImg.src=_img;
			if (_idO!='obj') {
				oTag.href= "framePages/objectDetail.php?idO="+_idO;
				oTag.target="Idetail";
				oTag.setAttribute('id', _idO);

			    var loc = parent.frames['navigation'].location.toString();
			    var aparam = loc.split("=");
			    var acnt = aparam.length;
			    oTag.setAttribute('name', aparam[eval(acnt-1)]);
			   // oTag.attachEvent("onmouseover", markObject);
			   // oTag.attachEvent("onmouseout", unmarkObject);
			
			    if (oTag.addEventListener){ 
				oTag.addEventListener('click', openNahled, false);
				oTag.addEventListener('mouseover', markObject,true);
			    	oTag.addEventListener('mouseout', unmarkObject, true);
			    } else if (oTag.attachEvent) { 
				oTag.attachEvent("onmouseover", markObject);
			    	oTag.attachEvent("onmouseout", unmarkObject);
				oTag.attachEvent("onclick", openNahled);
			    }
			}

			oTag.appendChild( oImg );
			oDiv.appendChild( oTag );
			document.body.appendChild( oDiv );
        } else { // objekt jiz existuje
	        oDiv = document.getElementById('o_'+_idO);
        }
		oDiv.style.left = (sLeft+parseInt(_iLeft))+'px';
		oDiv.style.top = (sTop+parseInt(_iTop))+'px';
        	oDiv.style.visibility = 'visible';
  	} // showObject()

	/***
	 * Odebrani zvyrazneneho objektu
	 */	 	
	this.removeObject  = function removeObject( _idO ) {
		var rElem = document.getElementById('o_' + _idO);
		if (rElem) document.body.removeChild(rElem);
	} // removeObject

	this.changeObject  = function changeObject( _idO ) {
		var oImg = document.getElementById('im_' + _idO);
		if (document.getElementById('im_' + _idO)){
			path = new String('images/icons/user04.gif');
			oImg.src = path; 
		}
	} // changeObject

	this.unchangeObject  = function unchangeObject( _idO,_img ) {
		var oImg = document.getElementById('im_' + _idO);
		if (document.getElementById('im_' + _idO)){
			path = new String(_img);	
			oImg.src = path; 
		}
		
	} // unchangeObject

	/***
	 * Odebrani vsech zvyraznenych objektu
	 */	 	
	this.removeAllObjects  = function removeAllObjects( ) {
		var aobj = document.getElementsByTagName('div');
		for (var i=0;i<aobj.length;i++) {
			if (aobj[i].id.substring(0,2)!="o_") continue;

			this.removeObject(aobj[i].id.substring(2,aobj[i].id.length));
			i=0; aobj = document.getElementsByTagName('div');
		}

	} // removeAllObjects()



	/**
	 * Posune vyrez urcitym smerem
	 */
	this.moveMap = function moveMap(_direction ) {
	   	var koordinaty = this.getKrovakCoordinate();
	   	var stredX = koordinaty.leftCorner;
	   	var stredY = koordinaty.topCorner;
		switch (_direction) {
			case "left":
				stredX = koordinaty.leftCorner;
				stredY = parseInt( koordinaty.topCorner + (( koordinaty.bottomCorner - koordinaty.topCorner)/2) );
			break;
			case "leftUp":
				stredX = koordinaty.leftCorner;
				stredY = koordinaty.topCorner;
			break;
			case "leftBottom":
				stredX = koordinaty.leftCorner;
				stredY = koordinaty.bottomCorner;
			break;
			case "right":
				stredX = koordinaty.rightCorner;
				stredY = parseInt( koordinaty.topCorner + (( koordinaty.bottomCorner - koordinaty.topCorner)/2) );
			break;
			case "rightUp":
				stredX = koordinaty.rightCorner;
				stredY = koordinaty.topCorner;
			break;
			case "rightBottom":
				stredX = koordinaty.rightCorner;
				stredY = koordinaty.bottomCorner;
			break;
			case "up":
				stredX = parseInt( koordinaty.leftCorner +  ((koordinaty.rightCorner - koordinaty.leftCorner)/2) );
				stredY = koordinaty.topCorner;
			break;
			case "down":
				stredX = parseInt( koordinaty.leftCorner +  ((koordinaty.rightCorner - koordinaty.leftCorner)/2) );
				stredY = koordinaty.bottomCorner;
			break;
			
		} // switch
		this.scroolToKrovak(stredX, stredY, true);
	} // moveMap()
  
  	/**
  	 * funkce pro 'plynule' posouvani mapy
  	 */	     	
  	this.ScrollToKrovakTimer = function ScrollToKrovakTimer() {
		if (--zMapa.moveScrollActual>0) {
			window.scrollBy(
				parseInt((zMapa.moveScrollTo.w - window.document.body.scrollLeft) / zMapa.moveScrollActual),
				parseInt((zMapa.moveScrollTo.h - window.document.body.scrollTop) / zMapa.moveScrollActual)
			 );
			if (zMapa.mapIsScrolling) clearTimeout(zMapa.mapIsScrolling);	
			zMapa.mapIsScrolling = setTimeout(zMapa.ScrollToKrovakTimer, zMapa.moveScrollTime);
			zMapa.evScroll( );
		} else {
			zMapa.evScroll( );
			window.scrollTo(zMapa.moveScrollTo.w, zMapa.moveScrollTo.h );
		}
  	} // scrollToKrovakTimer()
  	
	/**
	 * Zascroluje tak, aby zadany bod byl uprostred mapy
	 */
		this.scroolToKrovak = function scroolToKrovak(stredX, stredY, viaTimer) {
		var sLeft = parseInt( ((stredX - zMapa.Coordinate.leftCorner) / zMapa.scaleX) - (winW() / 2) );
		var sTop  = parseInt( ((stredY - zMapa.Coordinate.topCorner) / zMapa.scaleY) - (winH() / 2) );
		if (sLeft>(zMapa.Resolution.w-winW())) sLeft = (zMapa.Resolution.w - winW());
		if (sTop>(zMapa.Resolution.h-winH())) sTop = (zMapa.Resolution.h - winH());

		if (sLeft<0) sLeft=0;
		if (sTop<0) sTop=0;

		if (zMapa.mapIsScrolling) clearTimeout(zMapa.mapIsScrolling);		
		if (viaTimer) {
			zMapa.moveScrollActual = zMapa.moveScrollSteps;
			zMapa.moveScrollTo = new PixelResolution(sLeft,sTop);
			zMapa.mapIsScrolling = setTimeout(zMapa.ScrollToKrovakTimer, zMapa.moveScrollTime);
		} else {
			window.scrollTo(sLeft, sTop );
			this.evScroll( true );	// prekreslit, nevolat nacitani novych objektu
		}
                       //parent.document.forms["develFrm"]["Lx"].value=stredX;
                       zMapa.LastPositionX = stredX;
                       zMapa.LastPositionY = stredY;
	} // scroolToKrovak()

	/**
	 * Vratit souradnice pro aktivni okno
	 */
	this.getKrovakCoordinate = function getKrovakCoordinate() {
		var koordinaty = new KrovakCoordinate(
			parseInt((document.body.scrollLeft * this.scaleX) + this.Coordinate.leftCorner),	 //_leftCorner
			parseInt(((document.body.scrollLeft + winW() ) * this.scaleX) + this.Coordinate.leftCorner), // _rightCorner
			parseInt(((document.body.scrollTop + winH()) * this.scaleY) + this.Coordinate.topCorner), // _bottomCorner
			parseInt((document.body.scrollTop * this.scaleY) + this.Coordinate.topCorner) // _topCorner
		);
	return koordinaty;
	} // getKrovakCoordinate

  this.getMapCenterCoordinate = function getMapCenterCoordinate() {
 		var centerX = parseInt( this.getKrovakCoordinate().leftCorner + ((this.getKrovakCoordinate().rightCorner - this.getKrovakCoordinate().leftCorner)/2) );
		var centerY = parseInt( this.getKrovakCoordinate().topCorner + (( this.getKrovakCoordinate().bottomCorner - this.getKrovakCoordinate().topCorner)/2) );		
    var centerCoordinate = new Array(centerX,centerY);
    return centerCoordinate;
  }

	/**
	 * Vytvoreni obrazku pro jeho nasledne vlozeni do hlavni oblasti
	 */
	this.createImg = function createImg( _src, _x, _y ) {
		var newImg = document.createElement('img');
		var nPos = new PixelResolution( (_x * this.NahledResolution.w), (_y * this.NahledResolution.h) );

		newImg.src = _src;
		newImg.style.border = 'none';
		newImg.style.position = 'absolute';

		newImg.height = (((nPos.h + this.NahledResolution.h) <= this.Resolution.h)?this.NahledResolution.h:(this.Resolution.h-nPos.h));
		newImg.width = (((nPos.w + this.NahledResolution.w) <= this.Resolution.w)?this.NahledResolution.w:(this.Resolution.w-nPos.w));
		newImg.style.width = newImg.width + 'px';
		newImg.style.height = newImg.height + 'px';
		newImg.zIndex=10;

		newImg.style.left = nPos.w + 'px';
		newImg.style.top = nPos.h + 'px'
	return newImg;  
	} // createImg()

	window.onscroll=this.evScroll;
	window.onload=this.evScroll;
} // END object ImgMap

/**
 * Pomocna trida pro rozliseni
 */  
function PixelResolution ( _w, _h ) {
	this.w = parseInt(_w); this.h = parseInt(_h);
} // END object PixelResolution

/**
 * Pomocna trida pro uchovani souradnic
 */  
function KrovakCoordinate( _leftCorner, _rightCorner, _bottomCorner, _topCorner) {
	this.leftCorner = parseInt(_leftCorner); this.rightCorner = parseInt(_rightCorner); this.bottomCorner = parseInt(_bottomCorner); this.topCorner = parseInt(_topCorner);
} // END object krovakCoordinate

