/**
* Po tazeni mysi zobrazi vyrez, na ktery se nasledne zaskroluje
*/
var recElem;
var oldPos;
var Drag = false;
var DragMap = false;
var DragL;
var DragR;

/**
* Trida
*/
function ZoomDiv () {
	/**
	* Pomocna trida
	*/  

	function Pos( _left, _top) { this.left = parseInt(_left);	this.top = parseInt(_top); }

	/**
	* vratit aktualni souradnice mysi
	*/
        
	this.getmouseXY = function getmouseXY(e,l,r) {
		if (!e) if (window) e = window.event; else e=event;
		
		var left = ((e.clientX) ? e.clientX : e.offsetX) + 18160;
		var top = ((e.clientY) ? e.clientY : e.offsetY) + 11109;
                if (!l){
		    var left = ((e.clientX) ? e.clientX : e.offsetX) + document.body.scrollLeft;
                } else {
                     var left = ((e.clientX) ? e.clientX : e.offsetX)+l;
                } 
                if (!r){
		    var top = ((e.clientY) ? e.clientY : e.offsetY) + document.body.scrollTop;
                } else {
                    var top = ((e.clientY) ? e.clientY : e.offsetY) + r;
                }        
		return new Pos(left, top);
	}
	/**
	* zaregistruje udalosti pro objekt window, vytvori DIV
	*/
	this.register = function register() {
		if (recElem) document.body.removeChild(recElem);
	    recElem = document.createElement('div');
    	recElem.onDrag = false;
    	recElem.style.filter = 'Alpha(opacity=60)';
    	recElem.style.MozOpacity = '0.6';
     	recElem.style.border = '1px solid black';
     	recElem.style.position = 'absolute';
	    	if (!window.opera) recElem.style.background = '#fafafa';

		document.body.appendChild( recElem );
		document.onmousedown = this.startDrag;
		document.onmousemove = this.moveDrag;
                document.ondblclick = this.zoomPlus;
		document.onmouseup = this.endDrag;
		/*	document.onselectstart = doNothing;	 */
		document.onDrag = false;
		document.oncontextmenu= function ee(e) { return false; }
	} // register()
	
        this.zoomPlus  = function zoomPlus(e){
		        if(e) { var event=e; }
                        var newPos = zoomD.getmouseXY(event);
                        Drag = false;
//                      mainDiv.style.cursor='auto';
                        zoomD.prepniMapu(newPos, newPos, 1);
	}
	/**
	* Uzivatel stiskl tlacitko mysi a zacal presouvat kurzor
	*/
	this.startDrag =  function startDrag(e) {
		var event;
	  	if (e) { event=e;}
		if (window.event) { event=window.event;}
		if (event.target) {
			if (event.target.className=='tag') return false;
		} else if (event.srcElement) {
			if (event.srcElement.className=='tag') return false;	
		}
		if (event.shiftKey) {
		    var pos = zoomD.getmouseXY(event);
		    var L = parseInt((pos.left * zMapa.scaleX) + zMapa.Coordinate.leftCorner);
			var R = parseInt((pos.top * zMapa.scaleY) + zMapa.Coordinate.topCorner);
                        x = prompt("Souřadnice bodu jsou:",L + ',' + R);    
			//alert(L + ',' + R);
			return false;
		}
		
		if ((event.button==0 || event.button==1) && event.ctrlKey){
		    oldPos = zoomD.getmouseXY(event);
		  	recElem.style.top= oldPos.top+'px';
		  	recElem.style.left= oldPos.left+'px';
		  	recElem.style.zIndex = 10;
		  	recElem.style.width = 0;
		  	recElem.style.height = 0;	
		  	recElem.style.visibility='visible';
//		  	mainDiv.style.cursor='se-resize';
		  	Drag = true;
                        DragMap = false;
		} else if ((event.button==0 || event.button==1)){
                        
		        var pos = zoomD.getmouseXY(event,0,0);
		        DragL = parseInt((pos.left * zMapa.scaleX) +  zMapa.Coordinate.leftCorner);
			DragR = parseInt((pos.top * zMapa.scaleY) +  zMapa.Coordinate.topCorner);
                        
                        //if (zMapa.LastPositionX) 
                            stredOnDragX = zMapa.LastPositionX;
                        //else
                        //    stredOnDragX = stredX;

                        //if (zMapa.LastPositionY)        
                            stredOnDragY = zMapa.LastPositionY;
                        //else
                        //    stredOnDragY = stredY;    
                    
                        DragMap = true;
                        scrllLeft = document.body.scrollLeft;
                        scrllTop =  document.body.scrollTop;
                        zMapa.Coordinate.topCorner;
                        Drag = false;
	  	} else if (event.button==2) { // pri kliku pravim tlacitkem zoom-
//	  	  	mainDiv.style.cursor='auto';
		  	recElem.style.visibility='hidden';
		        Drag = false;	  	
                        DragMap = false;
		        oldPos = zoomD.getmouseXY(event);	  		
			zoomD.prepniMapu(oldPos, oldPos, -1); 
	  	} else {
	  	
	  	}
	  return false;
	 } // startDrag()

	/**
	* Zoom in/out v aktualni mape
	**/
	this.prepniMapu = function prepniMapu(oldPos, newPos, zoom) {
	
    	var noveMeritko = new KrovakCoordinate(
    		parseInt((oldPos.left * zMapa.scaleX) + zMapa.Coordinate.leftCorner),	 //_leftCorner
    		parseInt((newPos.left * zMapa.scaleX) + zMapa.Coordinate.leftCorner), // _rightCorner
    		parseInt((newPos.top * zMapa.scaleY) + zMapa.Coordinate.topCorner), // _bottomCorner
    		parseInt((oldPos.top * zMapa.scaleY) + zMapa.Coordinate.topCorner) // _topCorner
  		);

//	  	writeDebugInfo('End Drag : [' + noveMeritko.leftCorner + ',' + noveMeritko.topCorner + ']  [' + noveMeritko.rightCorner + ',' + noveMeritko.bottomCorner + ']');
		var stredX = parseInt( noveMeritko.leftCorner +  ((noveMeritko.rightCorner - noveMeritko.leftCorner)/2) );
		var stredY = parseInt( noveMeritko.topCorner + (( noveMeritko.bottomCorner - noveMeritko.topCorner)/2) );		
		
		onScroolTimeOut( noveMeritko, true, zoom );
//		zMapa.scroolToKrovak(window, stredX, stredY );
	} // prepniMapu()
	
	/**
	* Uvolneni tlacitka mysi
	*/
	this.endDrag = function endDrag(e) {
		if (Drag)  {
			if(e) { var event=e; }
			var newPos = zoomD.getmouseXY(event);
		    	Drag = false;
//		  	mainDiv.style.cursor='auto';
		  	recElem.style.visibility='hidden';
                        
			zoomD.prepniMapu(oldPos, newPos,1 );
	        }

                if (DragMap){
                    DragMap = false;
                }        
                
	  return false;
	}
	/**
	* pohyb mysi v monitorovane oblasti
	*/
	this.moveDrag = function moveDrag(e) { 
                if (DragMap){
		    if(e) { var event=e;}
    		    var pos = zoomD.getmouseXY(event, scrllLeft, scrllTop);
		    var L = parseInt(((pos.left) * zMapa.scaleX) + zMapa.Coordinate.leftCorner);
   		    var R = parseInt(((pos.top) * zMapa.scaleY) + zMapa.Coordinate.topCorner);
                    
                    //L1 = parseInt(zMapa.Coordinate.leftCorner 
                    // R1 = parseInt(zMapa.Coordinate.topCorner
                    //L1 = parseInt(2*DragL-L);
                    //R1 = parseInt(2*DragR-R);
                    //L1 = parseInt(((L-DragL) - DragL)*-1);
                    //R1 = parseInt(((R-DragR) - DragR)*-1);

                    
                    L2 = parseInt((DragL-L) + stredOnDragX);
                    R2 = parseInt((DragR-R) + stredOnDragY);

                    //L2 = parseInt(((L1-DragL)+ stredOnDragX)); //-()*-1;                 
                    //R2 = parseInt(((R1-DragR)+ stredOnDragY)); //-()*-1;
                     //zMapa.scrollLeft = 18160;
                     //zMapa.scrollTop =  11109;

                    //stredY=10;
            


                    zMapa.scroolToKrovak(L2,R2);
                    //stredY = parseInt( zMapa.Coordinate.topCorner + ((zMapa.Coordinate.bottomCorner - zMapa.Coordinate.topCorner)/2));
                    //stredX = parseInt( zMapa.Coordinate.leftCorner + ((zMapa.Coordinate.rightCorner - zMapa.Coordinate.leftCorner)/2));

                    //document.body.scrollLeft =  do:cument.body.scrollLeft-pos.left;
                    //stredX = L1;
                    //stredY = R1; 
                    
                }    
		
		if ( Drag ) {
		        if(e) { var event=e;}
        		var pos = zoomD.getmouseXY(event);
	        	var L = parseInt(((pos.left) * zMapa.scaleX) + zMapa.Coordinate.leftCorner);
   		        var R = parseInt(((pos.top) * zMapa.scaleY) + zMapa.Coordinate.topCorner);
			var tTop = oldPos.top;
		        var tLeft = oldPos.left;
			var tWidth = pos.left - oldPos.left;
			var tHeight = pos.top - oldPos.top;
			
			if ( tWidth < 0 ) {	
				tLeft = pos.left;	
				tWidth = -tWidth; 
			}
			if ( tHeight < 0 ) { 
				tTop = pos.top; 
				tHeight = -tHeight; 
			}
			recElem.style.top = tTop+'px';
			recElem.style.left = tLeft+'px';
			recElem.style.width= tWidth+'px';
			recElem.style.height= tHeight+'px';
		}
		return false; 
	} // moveDrag()

} // END class ZoomDiv

