
// Сюда будем писать текущие координаты
var X, Y, ZoomTo=1;

// Массив горячих действий. То, что надо выполнить сразу 
// после нажатия на кнопку не дожидаясь выбора координат
var hotActions = new Array();

// Костанты определющие действия
var acZoomInTool= 1;
var acZoomOutTool= 2;
var acMark		= 3;
var acMoveUp	= 4;
var acMoveDown	= 5;
var acMoveLeft	= 6;
var acMoveRight	= 7;
var acZoomIn    = 8;
var acZoomOut   = 9;
var acZoomTo   = 10;


// Костанты определющие порядок и индекс загружаемых данных из php
// Бляяяя... можно было без индексов делать... натупил...
var cdLEFT      = 0;
var cdTOP       = 1;
var cdWIDTH     = 2;
var cdHEIGHT    = 3;
var cdscale     = 4;
var cdLEVELS    = 5;
var cdLEV       = 6;
var cdcurAct    = 7;
var cdcenterX   = 8;
var cdcenterY   = 9;
var cdTOTALH    = 10;
var cdTOTALW    = 11;
var cdRATE      = 12;

// Текущее действие
var curAct		= 3;


// Инициализация
function InitMap(){

    // Важно чтобы эта функция вызывалась до назначения Горячих Действий
    ChangeAction( CellData[cdcurAct] );

    // Какие действия относятся к горячим?
    hotActions[acZoomTo] = true;
    hotActions[acZoomIn] = true;
    hotActions[acZoomOut] = true;
    hotActions[acMoveUp] = true;
    hotActions[acMoveDown] = true;
    hotActions[acMoveLeft] = true;
    hotActions[acMoveRight] = true;
    
    // Отключим не действующие кнопочки
	if( CellData[cdTOP] < CellData[cdHEIGHT] ){
	   //alert( document.getElementById('btMoveUp').value );
	}
        

}

function getMouseXY( e, lrObj ) // works on IE6,FF,Moz,Opera7
{

	if(  this.clientX || this.clientY  ){
		X = CellData[cdLEFT] + this.clientX * CellData[cdscale]; 
		Y = CellData[cdTOP] + this.clientY * CellData[cdscale];
		//window.status = "IE: X: " + X + "  Y: " + Y;
		return;
	}

	var obj = document.getElementById('imgMap');
	var relX, relY;

	if( e.pageX || e.pageY ){
		relX = e.pageX - obj.offsetLeft;
		relY = e.pageY - obj.offsetTop;
		//window.status = "e.page: X: " + relX + "  Y: " + relY;
	}
	else if ( e.offsetX || e.offsetY ) {
		relX = e.offsetX;
		relY = e.offsetY;
		//window.status = "e.offset: X: " + relX + "  Y: " + relY;
	}
	else if ( e.clientX || e.clientY ) {
		relX = e.clientX + document.body.scrollLeft - obj.offsetLeft;
		relY = e.clientY + document.body.scrollTop - obj.offsetTop;
		//window.status = "e.client: X: " + relX + "  Y: " + relY;
	}

	X = CellData[cdLEFT] + relX * CellData[cdscale]; 
	Y = CellData[cdTOP] + relY * CellData[cdscale];
	window.status = "X: " + X + "  Y: " + Y;

}

function ChangeAction( act ){

    // Если Горячее действия, то выполняем сразу
	if( hotActions[act] ){
		DoAction( act );
	}
	// В противном случае просто скажем что нужно будет сделать после клика по карте
	else{ 
    	curAct = act;
    }

}

function DoAction( act ){

	switch( act ){

		case acMark:

			document.location.href = '?LEFT=' + X + '&TOP=' + Y;
			break;

		case acMoveUp:
            
			if( CellData[cdTOP] >= CellData[cdHEIGHT] ){
				document.location.href = '?curAct=' + curAct + 
                                         '&LEFT=' + CellData[cdLEFT] + 
                                         '&TOP=' + (CellData[cdTOP]-CellData[cdHEIGHT]) + 
                                         '&LEVEL=' + CellData[cdLEV] ;
			}
			break;

		case acMoveDown:
            
			if( (CellData[cdTOP]+CellData[cdHEIGHT]) < CellData[cdTOTALH] ){
				document.location.href = '?curAct=' + curAct + 
                                         '&LEFT=' + CellData[cdLEFT] + 
                                         '&TOP=' + (CellData[cdTOP]+CellData[cdHEIGHT]) + 
                                         '&LEVEL=' + CellData[cdLEV] ;
			}
			break;

		case acMoveLeft:
            
			if( (CellData[cdLEFT] - CellData[cdWIDTH]) >= 0 ){
				document.location.href = '?curAct=' + curAct + 
                                         '&LEFT=' + (CellData[cdLEFT] - CellData[cdWIDTH]) + 
                                         '&TOP=' + CellData[cdTOP] + 
                                         '&LEVEL=' + CellData[cdLEV] ;
			}
			break;

		case acMoveRight:
            
			if( (CellData[cdLEFT] + CellData[cdWIDTH]) < CellData[cdTOTALW] ){
				document.location.href = '?curAct=' + curAct + 
                                         '&LEFT=' + (CellData[cdLEFT] + CellData[cdWIDTH]) + 
                                         '&TOP=' + CellData[cdTOP] + 
                                         '&LEVEL=' + CellData[cdLEV] ;
			}
			break;

		case acZoomInTool: 

			if( CellData[cdLEV] < CellData[cdLEVELS] ){
				document.location.href = '?curAct=' + curAct + 
                                         '&LEFT=' + X + 
                                         '&TOP=' + Y + 
                                         '&LEVEL=' + ( CellData[cdLEV] + 1 );
			}
			break;

		case acZoomOutTool:
			
			if( CellData[cdLEV] > 1 ){
				document.location.href = '?curAct=' + curAct + 
                                         '&LEFT=' + X + 
                                         '&TOP=' + Y + 
                                         '&LEVEL=' + ( CellData[cdLEV] - 1 );
			}
			break;

		case acZoomOut:
			
			if( CellData[cdLEV] > 1 ){
				document.location.href = '?curAct=' + curAct + 
                                         '&LEFT=' + CellData[cdcenterX] + 
                                         '&TOP=' + CellData[cdcenterY] + 
                                         '&LEVEL=' + ( CellData[cdLEV] - 1 );
			}
			break;

		case acZoomIn: 

			if( CellData[cdLEV] < CellData[cdLEVELS] ){
				document.location.href = '?curAct=' + curAct + 
                                         '&LEFT=' + CellData[cdcenterX] + 
                                         '&TOP=' + CellData[cdcenterY] + 
                                         '&LEVEL=' + ( CellData[cdLEV] + 1 );
			}
			break;

		case acZoomTo: 

			if( ZoomTo <= CellData[cdLEVELS] ){
				document.location.href = '?curAct=' + curAct + 
                                         '&LEFT=' + CellData[cdcenterX] + 
                                         '&TOP=' + CellData[cdcenterY] + 
                                         '&LEVEL=' + ZoomTo;
			}
			break;

	}
}
