﻿//координаты курсора мыши
function defPosition(event) {
	var event = event || window.event;
      var x = y = 0; 
      if (document.attachEvent != null) { // Internet Explorer & Opera 
            x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft; 
            y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop; 
			
      } 
      if (!document.attachEvent && document.addEventListener) {
		    x = event.clientX + window.scrollX; 
            y = event.clientY + window.scrollY; 
			
      }
	 
      return {x:x, y:y}; 
}

function initMove(event) { 
	  
      var event = event || window.event; 
      x0 = defPosition(event).x; //координаты мыши при событии down
      y0 = defPosition(event).y; //координаты мыши при событии down
			  
	  switch(control) 
	  {
		  	case "hand":
			{
				moveState = true;
				downX=defPosition(event).x;
				downY=defPosition(event).y;
						
			break;	
			}
			case "lupaInc":
			{
				WorkPlus(x0,y0);
			break;
			}
			case "lupaDec":
			{
				WorkMinus(x0,y0);
			break;
			}
			case "lineika":
			{
				moveLine=true;
				if(event.button!=2)
				{
					MDown(event);
					Distance();
					document.getElementById('noline').style.display="";
				}
			break;
			}
			/*case "kursor":
			{
				if(SelectCanvas)
				{
					var canvas=document.getElementById('select').getContext('2d');
					canvas.clearRect(0,0,screenSize().w,screenSize().h);
					
					xy=new Array();
					xy[0]=new Array();
					xy[1]=new Array();
										
				}
				var objX=DisplayToMap(x0,y0).x;
				var objY=DisplayToMap(x0,y0).y;
				//document.title="X="+objX+"Y="+objY;
				
				ajaxFoto("../foto_info.exe?X="+objX+"&Y="+objY,"foto_text");
				
				var s="../MAPBYMAP.exe?X="+objX+"&Y="+objY;
				makeRequest(s);
				pn="../info_test.exe?X="+objX+"&Y="+objY;
				document.all.my_frame.src = pn;
			break;	
			}*/
	  }
	 
}

//при отпускании кнопки мыши MouseUp
function initMoveFinish(event) {
	
	var event = event || window.event;
	
	switch(control) 
	{
		case "hand":
		{
			upX=defPosition(event).x;
			upY=defPosition(event).y;
			
			//alert(downX-upX);
			
			if(Math.abs(downX-upX)>=3.0 || Math.abs(downY-upY)>=3.0)
			{
				moveState = false;
				removeDiv();
				createDiv();
			}
			else
			{
				if(SelectCanvas)
				{
					var canvas=document.getElementById('select').getContext('2d');
					canvas.clearRect(0,0,screenSize().w,screenSize().h);
					
					xy=new Array();
					xy[0]=new Array();
					xy[1]=new Array();
						
				}
				var objX=DisplayToMap(x0,y0).x;
				var objY=DisplayToMap(x0,y0).y;

                                                                if (isFFF==1)
                                                                {
				//document.title="X="+objX+"Y="+objY;
				var s="../MAPBYMAP.exe?X="+objX+"&Y="+objY;
				ajaxFoto("../foto_info.exe?X="+DisplayToMap(defPosition(event).x,defPosition(event).y).x +"&Y="+DisplayToMap(defPosition(event).x,defPosition(event).y).y,"foto_text");
				//alert("../foto_info.exe?X="+DisplayToMap(defPosition(event).x,defPosition(event).y).x +"&Y="+DisplayToMap(defPosition(event).x,defPosition(event).y).y);
				
					
				makeRequest(s);
				pn="../info_test.exe?X="+objX+"&Y="+objY+"&sc="+GetDiv().result+"&shx="+AbsMapX+"&shy="+AbsMapY+"&x0="+x0+"&y0="+y0;
                                                                document.getElementById("my_frame").src=pn;

				//document.all.my_frame.src = pn;
                                                             }
                                                     else
                                                 {
                                                        pn="../info_test.exe?rbrc=9847"
                                 		//document.all.my_frame.src = pn;
                                                        document.getElementById("my_frame").src=pn;
                                                       isFFF=1;
                                                 }
			}
			
		break;
		}
	
	}
	
						
}

//передвижение onMouseMove
function moveHandler(event) 
{ 
	  var event = event || window.event;
	  switch(control) 
	  {
			case "hand":
			{
				if (moveState) 
				  {
					  
						var stepX=x0-defPosition(event).x;
						var stepY=y0-defPosition(event).y;
						var object = document.getElementById('work').childNodes;
						 for( var i = 0; i < object.length; i++ ) 
						 {
							 if (object[i]!=null)
							 if (object[i].nodeType == 1)
							 {
								object[i].style.left = parseInt(object[i].style.left)-stepX; 
								object[i].style.top = parseInt(object[i].style.top)-stepY;
													
							 }
						 }
							
						AbsMapX=AbsMapX+stepX/GetDiv().result;
						AbsMapY=AbsMapY-stepY/GetDiv().result;
						x0=defPosition(event).x;
						y0=defPosition(event).y;
						
						if(moveLine!="none")
						{
							clear();
							drawPoly();
							Distance();
						}
						
						if(SelectCanvas)
						{
							var canvas=document.getElementById('select').getContext('2d');
							canvas.clearRect(0,0,screenSize().w,screenSize().h);
							draw('select');
						}
					  
					  					
				  }
			break;
			}
			
			case "lineika":
			{
				if(moveLine==true)
				{
					MMove(event);
					drawPoly();
				}
			break;
			}
	  }

	  
} 

//-------------------------------------Scroll-------------------------------------------------------------------------
function addHandler(object, event, handler, useCapture) {
    if (object.addEventListener) {
        object.addEventListener(event, handler, useCapture ? useCapture : false);
    } else if (object.attachEvent) {
        object.attachEvent('on' + event, handler);
    } else alert("Add handler is not supported");
}
/* Gecko */
if(isGecko) addHandler(window, 'DOMMouseScroll', wheel);
/* Opera */
if(isOpera) addHandler(window, 'mousewheel', wheel);
/* IE */
if(isIE) addHandler(document, 'mousewheel', wheel);
/*Chrome*/
if(is_chrome) addHandler(document, 'mousewheel', wheel);

if(isSafari) addHandler(document, 'mousewheel', wheel);
// Обработчик события
function wheel(event) {
    var delta; // Направление скролла
    // -1 - скролл вниз
    // 1  - скролл вверх
    event = event || window.event;
    // Opera и IE работают со свойством wheelDelta
    if (event.wheelDelta) {
        delta = event.wheelDelta / 120;
        // В Опере значение wheelDelta такое же, но с противоположным знаком
        //if (window.opera) delta = -delta;
    // В реализации Gecko получим свойство detail
    } else if (event.detail) {
        delta = -event.detail / 3;
    }
	
    // Запрещаем обработку события браузером по умолчанию
	if (blockScroll) {
		if (event.preventDefault)  event.preventDefault();
		event.returnValue = false;
	}
	//alert(delta);
	//scale=scale+delta;
	if(scale>-22 && scale<2)
	{
		var tmpOldCoordX=DisplayToMap(defPosition(event).x,defPosition(event).y).x;
		var tmpOldCoordY=DisplayToMap(defPosition(event).x,defPosition(event).y).y;
		
		if(delta>0) delta=1;
		if(delta<0) delta=-1;
		
		scale=scale+delta;
		
		if(scale<-21) scale=-21;
		if(scale>1) scale=1;
		document.getElementById("mic").style.left=getMicX().leftmic;// положение микшера
		var tmpNewCoordX=DisplayToMap(defPosition(event).x,defPosition(event).y).x;
		var tmpNewCoordY=DisplayToMap(defPosition(event).x,defPosition(event).y).y;
		
		var StepX=tmpOldCoordX-tmpNewCoordX;
		var StepY=tmpOldCoordY-tmpNewCoordY;
		
		AbsMapX=AbsMapX+StepX;
		AbsMapY=AbsMapY+StepY;
	}

	clearTimeout(t);
	t = setTimeout('removeDiv(); createDiv(); if(moveLine!="none"){	clear(); drawPoly(); Distance();}if(SelectCanvas){var canvas=document.getElementById("select").getContext("2d");canvas.clearRect(0,0,screenSize().w,screenSize().h);draw("select");}', 400);
	//if(delta<0) WorkMinus(defPosition(event).x,defPosition(event).y);
	//if(delta>0) WorkPlus(defPosition(event).x,defPosition(event).y);
    return delta;
}
//----------------------------------------------------------------------------------------------------------------------
