
var mapScale;
var bBox;
var mapLayer;
var mapImg;
var cross;
var dragActive = false;
var mouseInBbox = new Array();
var bboxParamsPx = new Array();
var mouseX;
var mouseY;

function isGecko(){
   var s = navigator.userAgent;
   return (s.lastIndexOf("Gecko") > -1);
}

var gecko = (isGecko())? true:false

function wmcInitOvMap(){
	bBox = document.getElementById("wmcOvMapBboxLayer").style;
	bBoxImg = document.images['wmcOvMapBboxImg'];
	cross = document.getElementById("wmcOvMapCross").style;
	mapLayer = document.getElementById('wmcOvMapLayer').style;
	mapImg = document.getElementById('wmcOvMapImg');
	mapScale = (wmcOvMapRef[2]-wmcOvMapRef[0])/mapImg.width;
 }

function updateSmallMap(){
	updateBbox();
}	

function updateBbox(){
	if(wmcMapFrame.MapHeight && wmcMapFrame.MapWidth && BboxAct){
		berechneBboxPx(BboxAct);
		if(bboxParamsPx[2] > 12){
			changeSize(bboxParamsPx[2],bboxParamsPx[3]);
			setBbox(bBox,bboxParamsPx[0]+parseInt(mapLayer.marginLeft),bboxParamsPx[1]-bboxParamsPx[3]+parseInt(mapLayer.marginTop));
			if(bBox.visibility == 'hidden')
				bBox.visibility = 'visible';
			if(cross.visibility == 'visible')
				cross.visibility = 'hidden';
		}
		else{
			setBbox(cross,bboxParamsPx[0]+parseInt(mapLayer.marginLeft)-((document.getElementById('wmcOvMapCrossImg').width-bboxParamsPx[2])/2),bboxParamsPx[1]-bboxParamsPx[3]+parseInt(mapLayer.marginTop)-((document.getElementById('wmcOvMapCrossImg').height-bboxParamsPx[3])/2));
			if(cross.visibility == 'hidden')
				cross.visibility = 'visible';
			if(bBox.visibility == 'visible')
				bBox.visibility = 'hidden';
		}
	}
}

function berechneBboxPx(gkCoord){
	bboxParamsPx[0] = (gkCoord[0]-wmcOvMapRef[0]) / mapScale;
	bboxParamsPx[1] = (wmcOvMapRef[3]-gkCoord[1]) / mapScale;
	bboxParamsPx[2] = (gkCoord[2]-gkCoord[0]) / mapScale;
	bboxParamsPx[3] = (gkCoord[3]-gkCoord[1]) / mapScale;
}

function wmcOvDownHandler(e) {	
	mouseX = getMouseX(e);
	mouseY = getMouseY(e);
	if (mouseX != null && mouseX > parseInt(mapLayer.marginLeft) && mouseX < (parseInt(mapLayer.marginLeft)+parseInt(mapImg.width))
			&& mouseY != null && mouseY > parseInt(mapLayer.marginTop) && mouseY < (parseInt(mapLayer.marginTop)+parseInt(mapImg.height))){
		if(bBox.visibility == 'visible')
			mouseDown(bBox,mouseX,mouseY);
		if(cross.visibility == 'visible')
			mouseDown(cross,mouseX,mouseY);
	}
	return false;
}
function wmcOvMoveHandler(e) {
	mouseX = getMouseX(e);                                                                                                              
	mouseY = getMouseY(e);                                                                                                              
	if(bBox.visibility == 'visible')
		mouseMove(bBox,mouseX,mouseY);
	if(cross.visibility == 'visible')
		mouseMove(cross,mouseX,mouseY);
	return false;
}
function wmcOvUpHandler(e) {
	mouseX = getMouseX(e);                                                                                                              
	mouseY = getMouseY(e);                                                                                                              
	mouseUp(mouseX,mouseY);
}

function getMouseX(e){
	return (gecko)? e.pageX:event.x+document.body.scrollLeft
}

function getMouseY(e){
	return (gecko)? e.pageY:event.y+document.body.scrollTop
}

function mouseDown(obj,x,y) {
	if (x>=parseInt(obj.left) && x<=(parseInt(obj.left)+parseInt(obj.width)) && y>=parseInt(obj.top) && y<=(parseInt(obj.top)+parseInt(obj.height))){
		mouseInBbox[0] = x-parseInt(obj.left);
		mouseInBbox[1] = y-parseInt(obj.top);
		dragActive = true;
	}
	return true;
}

function mouseMove(obj,x,y) {
	if (dragActive) {
		if (x!=null && x > parseInt(mapLayer.marginLeft)+mouseInBbox[0] && x < (parseInt(mapLayer.marginLeft)+parseInt(mapImg.width)-(parseInt(obj.width)-mouseInBbox[0])))  
				obj.left = x-mouseInBbox[0];                                                                                                                        
		if (y!=null && y > parseInt(mapLayer.marginTop)+mouseInBbox[1] && y < (parseInt(mapLayer.marginTop)+parseInt(mapImg.height)-(parseInt(obj.height)-mouseInBbox[1])))  
				obj.top = y-mouseInBbox[1];                                                                                                                         
	}
	return false;
}

function mouseUp(x,y) {
	if(dragActive){
		dragActive = false
		loadBigMap();
	}
	return true
}

function setBbox(obj,x,y){
	if(x != null)	obj.left = x;
	if(y != null)	obj.top = y;
}

function changeSize(width,height){
	if(width!=null){
     	bBoxImg.width = width;
     	bBox.width = width+1+'px';
	}
	if(height!=null){
		bBoxImg.height = height;
		bBox.height = height+1+'px';
	}
}

function loadBigMap(){
	var xmin;
	var ymin;
	if(bBox.visibility == 'visible'){
		xmin = parseInt(bBox.left)-parseInt(mapLayer.marginLeft);
		ymin = parseInt(bBox.top)-parseInt(mapLayer.marginTop);
	}
	else{
		xmin = parseInt(cross.left)-parseInt(mapLayer.marginLeft)+parseInt(document.getElementById('wmcOvMapCrossImg').width)/2-bboxParamsPx[2]/2;
		ymin = parseInt(cross.top)-parseInt(mapLayer.marginTop)+parseInt(document.getElementById('wmcOvMapCrossImg').height)/2-bboxParamsPx[3]/2;
	}
	top.wmcMapFrame.loadMapbySmallMap(wmcOvMapRef[0],wmcOvMapRef[1],wmcOvMapRef[2],wmcOvMapRef[3],mapImg.width,mapImg.height,xmin,ymin,Math.round(xmin+bboxParamsPx[2]),Math.round(ymin+bboxParamsPx[3]));
}

