var bPlot = getParam("plot") //use to plot out the coords of the capture. for debug.
aAreas = new Array()
function swapImageLayer(sLayerId,bShow,sId,nCoords){
	var bCreated = false
	if (!bShow){
		aAreas[sLayerId].layerVis(false)
		aAreas[sLayerId].name.layerVis(false)
		return true
	}
	if (typeof(aAreas[sLayerId])=="undefined"){
		sNest = (typeof(window.sUseSwapNest)!="undefined")?window.sUseSwapNest:"document.layers[\"columnBCD\"].layers[\"MapContainer\"]";
		aAreas[sLayerId] = new wrapLayer(sLayerId,"aAreas[\""+sLayerId+"\"]",sNest)
		aAreas[sLayerId].name = new wrapLayer(sLayerId+"Name","aAreas[\""+sLayerId+"\"].name",sNest)
		aAreas[sLayerId].layerVis(true)
		aAreas[sLayerId].polys = new Array()
		var bCreated = true
	}
	if (typeof(aAreas[sLayerId][sId])=="undefined"){
		aAreas[sLayerId][sId] = sId
		modX = aAreas[sLayerId].xpos
		modY = aAreas[sLayerId].ypos
		aPol = new Array()
		for (x=3,y=4;y<arguments.length;x=x+2,y=y+2){
			aPol[aPol.length] = arguments[x]-modX
			aPol[aPol.length] = arguments[y]-modY
			if (bPlot){
				apa = new makeLayer(150,aPol[aPol.length-2]-2,aPol[aPol.length-1]-2 ,4,4,"#FF0000","inherit",null,aAreas[sLayerId],null,true)		
			}
		}
		aAreas[sLayerId].polys[aAreas[sLayerId].polys.length] = new Polygon(aPol)
		if (bCreated){
			fn = new Function("e","e=e||event;bOk = false;mX=(e.layerX)?e.layerX:e.offsetX;mY=(e.layerY)?e.layerY:e.offsetY;for (i=0;i<aAreas[\""+sLayerId+"\"].polys.length;i++){ bOk = aAreas[\""+sLayerId+"\"].polys[i].inPoly(mX,mY); if (bOk) break; } if (!bOk){swapImageLayer(\""+sLayerId+"\",false)}")
			aAreas[sLayerId].addEvent("onmousemove",fn)
			aAreas[sLayerId].addEvent("onmouseout",new Function("e","swapImageLayer(\""+sLayerId+"\",false)"))
		}
	}
	if (window.CurrentShowing) swapImageLayer(window.CurrentShowing,false)
	aAreas[sLayerId].layerVis(true)
	aAreas[sLayerId].name.layerVis(true)
	window.CurrentShowing = sLayerId
}

function Polygon(nX,nY){
		if (typeof(nX)!="number") this.handles = nX
		else {
			this.handles = new Array()
			for (x=0,y=1;y<arguments.length;x=x+2,y=y+2){
				this.handles[x] = arguments[x]
				this.handles[y] = arguments[y]	
			}
		}
}
{
	Polygon.prototype.inPoly = Polygon_inPoly
}

function Polygon_inPoly(px,py){	
	var poly = this.handles
	var npoints = poly.length; // number of points in polygon
	var xnew,ynew,xold,yold,x1,y1,x2,y2,i;
	var inside=false;
	if (npoints/2 < 3) { // points don't describe a polygon
		return false;
	}
  xold=poly[npoints-2];yold=poly[npoints-1];
	for (i=0 ; i < npoints ; i=i+2) {
  	xnew=poly[i];
    ynew=poly[i+1];
    if (xnew > xold) { x1=xold;x2=xnew;y1=yold;y2=ynew; } else { x1=xnew;x2=xold;y1=ynew;y2=yold; }
		if ((xnew < px) == (px <= xold) && ((py-y1)*(x2-x1) < (y2-y1)*(px-x1))) { inside=!inside; }
    xold=xnew; yold=ynew;
	}
	return inside;
}