/**
 * @author Dipl.-Ing. (FH) Martin Mayrhofer
 * @copyright 2006, Chromos Internet Solutions
 * @since 03.05.2006
 */
 
	var startPosX;
	var startPosY;
	var moveStarted;
	
	//var newPosX;
	//var newPoxY;
	
	function openWindow(url,width,height)
	{
		var par = 'dependent=yes, toolbar=no,location=no,directories=no,status=no,copyhistory=no,scrollbars=yes,resizable=yes,width=' + (width) + ',height=' + (height) + ',screenX=10,screenY=10';
		
		win2 = window.open(url, "cspopup", par);
		win2.resizeTo(width,height);
		win2.focus();
	}
	
	function wait()
	{
	}
		
	function absLeft(el)
	{
	     return (el.offsetParent)? 
	    	 el.offsetLeft+absLeft(el.offsetParent) : el.offsetLeft;
	}
	
	function absLeft2(el)
	{
	    alert(el.offsetLeft);
	     return (el.offsetParent)? 
	    	 el.offsetLeft+absLeft(el.offsetParent) : el.offsetLeft;
	}
	
	function absTop(el)
	{
	     return (el.offsetParent)? 
		     el.offsetTop+absTop(el.offsetParent) : el.offsetTop;
	}
	
	function imagePreload()
    {
        document.preload = new Array();
        if(document.images)
        {
            for(var i = 0; i < imagePreload.arguments.length; i++)
            {
                document.preload[i] = new Image();
                document.preload[i].src = imagePreload.arguments[i];
            }
        }
    }
    
    function getMapLink()
    {
    	var ret = 'http://'+document.location.host+'/page.php?&map='+map+'&zoom='+zoom+'&disease='+disease+'&season='+season+'&lon='+lon+'&lat='+lat;
    	return ret;
    }
    
    function updateLinkToApp()
	{
//		alert(getMapLink());
		$('linkToApp').href = getMapLink();
	}
	
	function correctMapDiv(x,y)
	{
		if(x!=-100)
		{
			$('modKarte').style.left =  x+ 'px';
		}
		if(y!=-100)
		{
			$('modKarte').style.top = y + 'px';	
		}
		
		newPosX = x;
		newPosY = y;
	}
	
	function startMove()
	{
		$('modKarte').style.cursor= 'move';
		
		startPosX = absLeft($('modKarte'));
		startPosY= absTop($('modKarte'));
		moveStarted = true;
		//alert(absLeft2($('modKarte')));
	}
	
	function whileMove()
	{
		//calcNewPos();
		//alert('TEST');
		//$('debug').innerHTML = absLeft($('modKarte'));
	}
	
	function calcNewPos()
	{
		$('modKarte').style.cursor= 'pointer';
	
		var newLeft = pixelX + (absLeftKarte - absLeft($('modKarte')));
		var newTop = pixelY  + (absTopKarte - absTop($('modKarte')));
		
		var moveX = newLeft;
		var moveY = newTop;
		
		var directionX =1;
		var directionY =1;
		if(moveX>pixelX)
		{
			directionX = -1;
		}

		
		if(moveY>pixelY)
		{
			directionY = -1;
		}
				
		var diffTileLeft;
		var diffTileTop;


		var leftNextTile = (pixelX-newLeft);
		leftNextTile = Math.ceil((leftNextTile-tilesize/2)/tilesize);
	
		var topNextTile = (pixelY-newTop);
		topNextTile = Math.ceil((topNextTile-tilesize/2)/tilesize);
	
		//$('debug').innerHTML = leftNextTile +', '+ topNextTile;
		//$('debug').innerHTML = absLeftKarte+', '+absLeft($('modKarte'))+', '+(pixelX-newLeft)+', '+((pixelX-newLeft)/(tilesize/2))+', '+leftNextTile;

		newLeft =pixelX - leftNextTile*tilesize;
		newTop =pixelY - topNextTile*tilesize;
		
		diffTileLeft = Math.abs((absLeft($('modKarte'))- absLeftKarte)%tilesize);
		if(Math.abs(diffTileLeft) >= tilesize/2)
		{
			if(diffTileLeft <0)
			{
				if(moveX>pixelX)
				{
					diffTileLeft = (diffTileLeft - tilesize/2)*(-1);
				}
				else
				{
					diffTileLeft = diffTileLeft + tilesize/2;
				}
			}
			else
			{
				diffTileLeft =(tilesize/2+(tilesize/2 - diffTileLeft))*(-1);
			}
		}
		
		diffTileTop = Math.abs((absTop($('modKarte'))- absTopKarte)%tilesize);
		if(Math.abs(diffTileTop) >= tilesize/2)
		{
			if(diffTileTop <0)
			{
				diffTileTop = diffTileTop + tilesize/2;
			}
			else
			{
				diffTileTop = (tilesize/2+(tilesize/2 - diffTileTop))*(-1) ;
			}
		}
		
		//newLeft *= directionX;
		//newTop *= directionY;
		diffTileLeft *= directionX;
		diffTileTop *= directionY;
		//$('debug').innerHTML = newLeft+', '+newTop+', '+diffTileLeft+', '+ diffTileTop+', directionX ='+ directionX;//Math.floor((pixelX-newLeft)/(tilesize/2))*tilesize;
	}
		
	function endMove()
	{
		$('modKarte').style.cursor= 'pointer';
		
		if(!moveStarted) return;
		
		moveStarted =false;


		if(startPosX - absLeft($('modKarte')) || startPosY - absTop($('modKarte')))
		{

		var newLeft = pixelX + (absLeftKarte - absLeft($('modKarte')));
		var newTop = pixelY  + (absTopKarte - absTop($('modKarte')));
		
		var moveX = newLeft;
		var moveY = newTop;
		var diffTileLeft;
		var diffTileTop;

		var directionX =1;
		var directionY =1;
		if(moveX>pixelX)
		{
			directionX = -1;
		}

		if(moveY>pixelY)
		{
			directionY = -1;
		}

		var leftNextTile = (pixelX-newLeft);
		if(leftNextTile<0)
		{
			leftNextTile = Math.ceil((leftNextTile-tilesize/2)/tilesize);
		}
		else
		{
			leftNextTile = Math.ceil((leftNextTile-tilesize/2)/tilesize);
		}
	
		var topNextTile = (pixelY-newTop);
		if(topNextTile<0)
		{
			topNextTile = Math.ceil((topNextTile-tilesize/2)/tilesize);
		}
		else
		{
			topNextTile = Math.ceil((topNextTile-tilesize/2)/tilesize);
		}

		newLeft =pixelX- leftNextTile*tilesize;
		newTop =pixelY- topNextTile*tilesize;
		
		diffTileLeft = Math.abs((absLeft($('modKarte'))- absLeftKarte)%tilesize);
		if(Math.abs(diffTileLeft) >= tilesize/2)
		{
			if(diffTileLeft <0)
			{
				if(moveX>pixelX)
				{
					diffTileLeft = (diffTileLeft - tilesize/2)*(-1);
				}
				else
				{
					diffTileLeft = diffTileLeft + tilesize/2;
				}
			}
			else
			{
				diffTileLeft =(tilesize/2+(tilesize/2 - diffTileLeft))*(-1) ;
			}
		}
		
		diffTileTop = Math.abs((absTop($('modKarte'))- absTopKarte)%tilesize);
		if(Math.abs(diffTileTop) >= tilesize/2)
		{
			if(diffTileTop <0)
			{
				diffTileTop = diffTileTop + tilesize/2;
			}
			else
			{
				diffTileTop =(tilesize/2+(tilesize/2 - diffTileTop))*(-1) ;
			}
		}
		
		diffTileLeft *= directionX;
		diffTileTop *= directionY;
		
		diffTileLeft -=tilesize;
		diffTileTop -=tilesize;
		//$('modKarte').style.visibility = 'hidden';
		//x = pixelX-diffTileLeft;
		//alert(absLeft($('modKarte'))-absLeftKarte);
		//alert(absLeftKarte); 
		//if(moveX != pixelX -diffTileLeft+tilesize || moveY != pixelY -diffTileTop+tilesize)
		
					
			//$('debug').innerHTML = startPosX - absLeft($('modKarte'));
			//$('modKarte').innerHTML = '';
			//correctMapDiv(absLeft($('modKarte')), absTop($('modKarte')));
			$('indicator').style.visibility = 'visible';
			$('indicatorimg').src='/gfx/indicator.gif';
			var axNavigator = new Ajax.Updater('tmpContainer',
					'/page.php',{
						method: 'get',
						parameters: 'module=karte&map='+map+'&zoom='+zoom+'&disease='+disease+'&season='+season+'&pixelX='+newLeft+'&pixelY='+newTop+'&tilesX='+tilesX+'&tilesY='+tilesY,
						evalScripts:true,
						onComplete: replaceMap,
						onFailure: replaceMap
					});
			newPosX =diffTileLeft;
			newPosY = diffTileTop;
			/*alert(diffTileLeft);
			
			var axNavigator = new Ajax.Request(
					'/page.php',{
						method: 'get',
						parameters: 'module=karte&map='+map+'&zoom='+zoom+'&pixelX='+newLeft+'&pixelY='+newTop+'&tilesX='+tilesX+'&tilesY='+tilesY,
						evalScripts:true,
						onComplete: showLoadedMap
					});*/
		}
		
		//newLeft = -absLeftKarte+diffTileLeft;
		//newTop = -absTopKarte+diffTileTop;
		//alert(diffTileLeft +' '+ diffTileTop);
		
		//$('modKarte').style.visibility = 'hidden';
		
		//$('modKarte').style.visibility = 'visible';

		
//		$('modKarte').style.left =  diffTileLeft+ 'px';
//		$('modKarte').style.top = diffTileTop + 'px';	
		//correctMapDiv(diffTileLeft, diffTileTop);
	}
	
	function replaceMap()
	{
			//alert($('tmpContainer').innerHTML);
			$('modKarte').style.visibility = 'hidden';
			//$('modKarte').innerHTML = 'Hello';
			correctMapDiv(newPosX, newPosY);
			$('modKarte').innerHTML = $('tmpContainer').innerHTML;					
			$('tmpContainer').innerHTML = '';
			$('modKarte').style.visibility = 'visible';
			$('indicator').style.visibility = 'hidden';
	}
	
	/*function showLoadedMap(originalRequest)
	{
		$('modKarte').style.visibility = 'hidden';
		$('modKarte').innerHTML = '';
		$('modKarte').innerHTML = originalRequest.responseText;
		$('modKarte').style.left =  newPosX+ 'px';
		$('modKarte').style.top = newPosY + 'px';	
		$('modKarte').style.visibility = 'visible';
		alert(newPosX);
	}*/	
	
	/*function endMove()
	{
		$('modKarte').style.cursor= 'pointer';
	
		var newLeft = pixelX - (absLeftKarte + absLeft($('modKarte')));
		var newTop = pixelY  - (absTopKarte + absTop($('modKarte')));
		
		newLeft =pixelX+ Math.floor((pixelX-newLeft)/(tilesize/2))*tilesize;
		newTop = pixelY +Math.floor((pixelX-newLeft)/(tilesize/2))*tilesize;
		
		//var diffTileLeft = Math.abs((absLeftKarte- absLeft($('modKarte')))% tilesize)*(-1);
		//var diffTileTop = Math.abs((absTopKarte- absTop($('modKarte')))% tilesize)*(-1);
		//var diffTileLeft = (absLeft($('modKarte')) - absLeftKarte)  % tilesize;
		//var diffTileTop =  (absTop($('modKarte')) - absTopKarte ) % tilesize;
		
		var diffTileLeft;
		var diffTileTop;
		if(Math.abs(absLeft($('modKarte')) - absLeftKarte)<=tilesize/2)
		{
			diffTileLeft = absLeft($('modKarte')) - absLeftKarte;
		}
		else
		{
			//diffTileLeft = ((absLeft($('modKarte')) - absLeftKarte)  % tilesize);//-(tilesize/2);
			diffTileLeft = Math.abs(absLeft($('modKarte')) - absLeftKarte- tilesize/2);
			//diffTileLeft = -(tilesize/2)+diffTileLeft;
			//alert(diffTileLeft);
			if((diffTileLeft % tilesize) < tilesize/2)
			{
				diffTileLeft =(-1)*((tilesize/2)- (diffTileLeft % tilesize));
			}
			else
			{
				//diffTileTop = (-1)*Math.abs((tilesize)-(diffTileTop % tilesize));
				diffTileLeft = tilesize - ((diffTileLeft % tilesize)+(tilesize/2));
			}
				//		alert(diffTileLeft);
		}
		
		if(Math.abs(absTop($('modKarte')) - absTopKarte)<=tilesize/2)
		{
			diffTileTop = absTop($('modKarte')) - absTopKarte;
		}
		else
		{
			diffTileTop = Math.abs(absTop($('modKarte')) - absTopKarte- tilesize/2);
			//alert(diffTileTop);
			if((diffTileTop % tilesize) < tilesize/2)
			{
				diffTileTop =(tilesize/2)- (diffTileTop % tilesize);
			}
			else
			{
				//diffTileTop = (-1)*Math.abs((tilesize)-(diffTileTop % tilesize));
				diffTileTop = tilesize - ((diffTileTop % tilesize)+(tilesize/2));
			}
		}
		

		/* diffTileLeft = Math.abs(diffTileLeft);
		diffTileTop = Math.abs(diffTileTop);
		if(absLeftKarte >= absLeft($('modKarte')))
		{
			diffTileLeft *= -1; 
		}
		
		if(absTopKarte >= absTop($('modKarte')))
		{
			diffTileTop *= -1; 
		}
		
		
		
		//alert(diffTileLeft+', '+ diffTileTop);
		//alert(absLeftKarte+', '+ absLeft($('modKarte')));
		if(absLeftKarte != absLeft($('modKarte')) || absTopKarte!= absTop($('modKarte')))
		{
			//alert(pixelX);
			//alert(pixelX - diffLeft);
			//alert($('modKarte').style.left);
			$('modKarte').style.visibility = 'hidden';
			$('modKarte').innerHTML = '';
			$('modKarte').style.left = diffTileLeft + 'px';
			$('modKarte').style.top = diffTileTop + 'px';	
			$('modKarte').style.visibility = 'visible';
		}
		
		if(newLeft != pixelX || newTop != pixelY)
		{
			var axNavigator = new Ajax.Updater('modKarte',
					'/page.php',{
						method: 'get',
						parameters: 'module=karte&map='+map+'&zoom='+zoom+'&pixelX='+newLeft+'&pixelY='+newTop+'&tilesX='+tilesX+'&tilesY='+tilesY,
						evalScripts:true
					});
			//absLeftKarte = absLeft($('modKarte'));			
			//absTopKarte = absTop($('modKarte'));			
		}

		
	}*/
