function mapClick(evt) 
{
	var pos = DIF_getEventPosition(evt)
	//alert("event fired at pos x: " + pos.x.toString() + " pos.y: " + pos.y.toString())
	var lft = getRealLeft(document.getElementById("mapsurveymap"))
	var tp = getRealTop(document.getElementById("mapsurveymap"))
	//which tool was used
	var t = document.getElementById("maptool").value;
	if (t == "region")
	{
		//add clicked point to the line string
		//removed the subtraction of the left and top elements as this doesn't work in IE5.5
		//Store map points which are passed back to the code
		strRealMapXPoints += pos.x - lft + ","; //used for drawing on the map using real map coords
		strRealMapYPoints += pos.y - tp + ",";
		strXPoints += (pos.x - lft) + ",";//use for drawing on the page with real page coords
		strYPoints += (pos.y - tp) + ",";
		//write string to recieving fields
		document.getElementById("mapclickx").value = strRealMapXPoints;
		document.getElementById("mapclicky").value = strRealMapYPoints;
		//draw it
		drawObject("region");
	}
	if (t == "point")
	{
		//add clicked point to the hidden fields
		document.getElementById("mapclickx").value = pos.x - lft;
		document.getElementById("mapclicky").value = pos.y - tp;
		//draw the point object
		strXPoints = pos.x;//use for drawing on the page with real page coords
		strYPoints = pos.y;
		drawPoint();	
	}
}

//Set map Tool
function setMapTool(type, name)
{
	document.getElementById("maptool").value = type;
	document.getElementById("formother").value = name;				
}			

//From http://www.quirksmode.org/js/findpos.html
//--------------------
function findPosTop(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curtop += obj.offsetTop
		}
	}
	return curtop;
}
//--------------------
//From http://www.quirksmode.org/js/findpos.html
//--------------------
function findPosLeft(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
		}
	}
	return curleft;
}
//--------------------
function getRealLeft(m) {
    xPos = m.offsetLeft;
    tempEl = m.offsetParent;
    while (tempEl != null) {
        xPos += tempEl.offsetLeft;
        tempEl = tempEl.offsetParent;
    }
    return xPos;
}

function getRealTop(m) {
    yPos = m.offsetTop;
    tempEl = m.offsetParent;
    while (tempEl != null) {
        yPos += tempEl.offsetTop;
        tempEl = tempEl.offsetParent;
    }
    return yPos;
}
function drawObject(strType)
{
	var strX = "";
	var strY = "";
	var iarrX = new Array();
	var iarrY =  new Array();
	var i = 0;

	if (strXPoints.length > 0)
	{
		//clear first
		jg.clear();
		
		//remove the trialing comma and split into an array
		if (strType == "region")
		{
			//add extra start coords
			var a = strXPoints.split(",");
			strX = strXPoints + a[0];
			//alert(strXPoints);
			a = strYPoints.split(",");
			strY = strYPoints + a[0];
		}
		else
		{
			strX = strXPoints.substring(0, strXPoints.length -1);
			strY = strYPoints.substring(0, strYPoints.length -1);
		}
		//split into arrays
		var arrX = strX.split(",");
		var arrY = strY.split(",");
		//copy into new arrays
		for (i = 0;i < arrX.length;i++)
		{
			iarrX[i] = parseInt(arrX[i]);
			iarrY[i] = parseInt(arrY[i]);
		}
		if (strType == "line")
		{
			if (iarrX.length > 1)
			{
				jg.setColor("#00ff00");
				jg.setStroke(3); //set line sthickness
				jg.drawPolyline(iarrX, iarrY);
				jg.paint();
			}
		}
		else
		{
			//region object
			if (iarrX.length >= 3)
			{
				//add the first two co-ords again
				jg.setColor("#ff0000");
				jg.setStroke(3); //set line sthickness
				jg.drawPolyline(iarrX, iarrY);
				jg.paint();
			}
		}
	}
}

//Get map co ordinates
function DIF_getEventPosition(evt){
var pos=new Object();
pos.x=0;
pos.y=0;
if(!evt){
	evt = window.event;
}
if(typeof(evt.pageX) == 'number')
{
	pos.x = evt.pageX;
	pos.y = evt.pageY;
}
else
{
	pos.x = evt.clientX;
	pos.y = evt.clientY;
	if(!top.opera)
	{
		if((!window.document.compatMode) ||(window.document.compatMode == 'BackCompat'))
		{
			pos.x += window.document.body.scrollLeft;pos.y += window.document.body.scrollTop;
		}
		else
		{
			pos.x += window.document.documentElement.scrollLeft;pos.y += window.document.documentElement.scrollTop;
		}
	}
}
return pos;
}

function getBrowserDetails(e){
   /*get the event model*/
   emod = (e) ? (e.eventPhase) ? "W3C" : "NN4" : (window.event) ? "IE4+" : "unknown";
}

function coordsAreInMap(pos)
{
	//get map object
	var m = document.getElementById("map");
	var lft = getRealLeft(m);
	var tp = getRealTop(m);
	var w=m.style.width.split('px').join('')*1;
	var h=m.style.height.split('px').join('')*1;
	//now check that the current mouse co-ords are on the map
	if (pos.x > lft && pos.x < (lft + w)){
		if (pos.y > tp && pos.y < (tp + h)){
			return true;
		}
	}
}

function clearDrawing()
{
	jg.clear();
	//hide the point image
	var point = document.getElementById("drawnPoint");
	point.style.top = 0;
	point.style.left = 0;
	point.style.visibility = "hidden";
}

function drawPoint()
{
	//draw an image centred on the clicked location
	var point = document.getElementById("drawnPoint");
	point.style.top = strYPoints - 17;//remove height of image which is anchored to the top left
	point.style.left = strXPoints - 9;//remove half of the width
	//set the image src
	var s = document.getElementById("point_"+document.getElementById("formother").value);
	point.src = s.src;
	point.style.visibility = "visible";
}

//Global Variables//
var cnt=0;
var x;
var y;
var ol;
var ot;
var nw;
var nh;
var nw2;
var nh2;
var w;
var h;
var l;
var t;
var exit=true;
var emod;
var currentmapper;
var strXPoints = "";
var strYPoints = "";
var strRealMapXPoints = "";
var strRealMapYPoints = "";
var jg;
