_plusX = 0;
_plusY = 0;

function move(plusX,plusY) {
if (uz) {
	ppX = posX; ppY = posY;
	Xxx = (posX+1)*pWidth + 1;  
	Yyy = (posY+1)*pHeight + 1;
	any_level_to_base();
	Xx = Xxx; Yy = Yyy;
	
	vX = plusX*krokX; vY = plusY*krokY;
	otoc_smer();

	/*if ((posX > 0)&&(plusX == -1))  Xx += vX;
	if ((posX+rozmerX < pocetX)&&(plusX == 1))  Xx += vX;
	if ((posY > 0)&&(plusY == -1))  Yy += vY;
	if ((posY+rozmerY < pocetY)&&(plusY == 1))  Yy += vY;*/
	
	_plusX = plusX;
	_plusY = plusY;
	otoc_smer_move();
	
	var pos = moveInArea( Xx, Yy,    vX, vY,    plusX, plusY);
	Xx = pos.x;
	Yy = pos.y;
		
	//if (((posX > 0)&&(_plusX <0))||((posX+rozmerX < pocetX)&&(_plusX >0)))  Xx += vX;
	//if (((posY > 0)&&(_plusY <0))||((posY+rozmerY < pocetY)&&(_plusY >0)))  Yy += vY;
	zoom(level);
	
}
}

function otoc_smer() {
	uhol = alfa * (Math.PI/180);
	tempX = vX; tempY = -vY;
	vX =   Math.cos(uhol)*tempX + Math.sin(uhol)*tempY;
	vY = - Math.sin(uhol)*tempX + Math.cos(uhol)*tempY;	
}

function otoc_smer_move() {
	uhol   = alfa * (Math.PI/180);
	tempX  = _plusX; tempY = _plusY;
	_plusX =   Math.cos(uhol)*tempX + Math.sin(uhol)*tempY;
	_plusY = - Math.sin(uhol)*tempX + Math.cos(uhol)*tempY;	
}

function stand() {
	 zoom(level);
}

function format3(number) {
	number = ""+number;
	while (number.length < 3) number = "0"+number;
	return number;
}

function base_to_any_level()
{
	Xxx   = Xxx*koef + posunX;
	Yyy   = Yyy*koef + posunY;

	uhol  = -alfa * (Math.PI/180);
	tempX = Xxx;
	tempY = Yyy;
	Xxx   =   Math.cos(uhol)*tempX + Math.sin(uhol)*tempY;
	Yyy   = - Math.sin(uhol)*tempX + Math.cos(uhol)*tempY;
	
	Yyy  *= -1;
}

function any_level_to_base()
{
	Yyy *= -1;
	
	var uhol = alfa * (Math.PI/180);
	tempX = Xxx;
	tempY = Yyy;
	Xxx   =   Math.cos(uhol)*tempX + Math.sin(uhol)*tempY;
	Yyy   = - Math.sin(uhol)*tempX + Math.cos(uhol)*tempY;

	Xxx -= posunX;
	Yyy -= posunY;

	Xxx = Xxx/koef;
	Yyy = Yyy/koef;
}




var minCorner, maxCorner;

function moveInArea( x, y, plusX, plusY, realPlusX, realPlusY)
{
	minCorner = transform( pWidth/2, pHeight/2 );
	maxCorner = transform( pocetX*pWidth, pocetY*pHeight );
	if (minCorner.y>maxCorner.y)
	{
		var bu = minCorner.y;
		minCorner.y = maxCorner.y;
		maxCorner.y = bu;
	}
	var _x = x + plusX;
	var _y = y + plusY;
	
	if ((realPlusX == 0 || realPlusY == 0) &&
	   ((realPlusX != 0 && (_x < minCorner.x || _x > maxCorner.x)) || 
	    (realPlusY != 0 && (_y < minCorner.y || _y > maxCorner.y))))
		{
			_x = x;
			_y = y;
		}
	if (realPlusX != 0 && realPlusY != 0)
	{
		_x = (_x > minCorner.x && _x < maxCorner.x) ? _x : x;
		_y = (_y > minCorner.y && _y < maxCorner.y) ? _y : y;
	}
	//alert( x+", "+y+"\n"+_x+", "+_y);
	return { x: _x, y: _y }
}

function transform( x, y)
{
	return { x: (x-posunX)/koef, y: (-y-posunY)/koef }
}	

