///////////////////////////////////////////////////////////////////////////////
//	Copyright (C) 2001-2006 YaWah.com. All rights reserved.
//
//	This work contains valuable  confidential and proprietary information.
//	Disclosure, use or  reproduction without the  written authorization of
//	YaWah.com is prohibited.
//
//	There is a theory which states that if ever anyone discovers exactly what
//	this code is for and why it is here, it will instantly disappear and be
//	replaced by something even more bizarre and inexplicable.
//
//	There is another which states that this has already happened.
//
//	Created on 2006-09-15
//


var erezview_scales = [1,1.5,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,10000000];

function erezview_getInnnerDiv(id)
{
	return document.getElementById("erez_" + id + "_inner");
}

function erezview_getOuterDiv(id)
{
	return document.getElementById("erez_" + id + "_outer");
}

function erezview_setup(id, erezurl, src, width, height, tilesize, effects)
{
	var outerDiv = erezview_getOuterDiv(id);
	var innerDiv = erezview_getInnnerDiv(id);
	
	innerDiv.erez_id = id;
	innerDiv.erez_url = erezurl;
	innerDiv.erez_imgsrc = src;
	innerDiv.erez_imgwidth = width;
	innerDiv.erez_imgheight = height;
	innerDiv.erez_tilesize = tilesize;
	innerDiv.erez_effects = effects;
	innerDiv.erez_posx = 0.5;
	innerDiv.erez_posy = 0.5;
	innerDiv.erez_viewportwidth = eval(erezview_stripPx(outerDiv.style.width));
	innerDiv.erez_viewportheight = eval(erezview_stripPx(outerDiv.style.height));
	
	var minHScale = innerDiv.erez_imgwidth / innerDiv.erez_viewportwidth;
	var minVScale = innerDiv.erez_imgheight / innerDiv.erez_viewportheight;
	var minScale = (minHScale > minVScale) ? minHScale : minVScale;
	
	innerDiv.erez_zoomLevels = [];
	
	var i = 0;
	
	for(var zoomLevel = 1; zoomLevel < minScale; zoomLevel = erezview_scales[i])
	{
		innerDiv.erez_scale = Math.round(zoomLevel * 100) / 100.0;
		innerDiv.erez_zoom = i;
		innerDiv.erez_zoomLevels[i] = innerDiv.erez_scale;
		i++;
	}
	
	if(innerDiv.erez_scale != minScale)
	{
		if((minScale / innerDiv.erez_scale) < 1.2)
		{
			i--; // replace last entry
		}
		innerDiv.erez_zoomLevels[i] = minScale;
		innerDiv.erez_scale = minScale;
		innerDiv.erez_zoom = i;
	}
	
	erezview_update(id)
}

function erezview_update(id)
{
	var outerDiv = erezview_getOuterDiv(id);
	var innerDiv = erezview_getInnnerDiv(id);
	var p = Math.round(1000 / innerDiv.erez_scale)/10 + " %";
	var pm = document.getElementById("erez_" + id + "_percentage");
	if(pm != null)
	{
		pm.value = p;
	}
	innerDiv.erez_viewimgwidth = Math.round	(innerDiv.erez_imgwidth / innerDiv.erez_scale);
	innerDiv.erez_viewimgheight = Math.round(innerDiv.erez_imgheight / innerDiv.erez_scale);
	innerDiv.style.width = innerDiv.erez_viewimgwidth + "px";
	innerDiv.style.height = innerDiv.erez_viewimgheight + "px";
	
	var dragMinX;
	var dragMaxX;
	var dragMinY;
	var dragMaxY;
	
	if(innerDiv.erez_viewportwidth > innerDiv.erez_viewimgwidth)
	{
		dragMinX = dragMaxX = (innerDiv.erez_viewportwidth - innerDiv.erez_viewimgwidth) / 2;
	}
	else
	{
		dragMinX = innerDiv.erez_viewportwidth-innerDiv.erez_viewimgwidth;
		dragMaxX = 0;
	}
	
	if(innerDiv.erez_viewportheight > innerDiv.erez_viewimgheight)
	{
		dragMinY = dragMaxY = (innerDiv.erez_viewportheight - innerDiv.erez_viewimgheight) / 2;
	}
	else
	{
		dragMinY = innerDiv.erez_viewportheight-innerDiv.erez_viewimgheight;
		dragMaxY = 0;
	}
	
	Drag.init(innerDiv, null, dragMinX, dragMaxX, dragMinY, dragMaxY);				
	
	innerDiv.onDrag = erezview_processMove;
	innerDiv.onDragStart = erezview_onDragStart;
	innerDiv.onDragEnd = erezview_onDragEnd;
	
	var leftPos = Math.round((innerDiv.erez_viewportwidth/2) - (innerDiv.erez_viewimgwidth * innerDiv.erez_posx));	
	
	if(leftPos > dragMaxX)
	{
		leftPos = dragMaxX;
	}
	else if (leftPos < dragMinX)
	{
		leftPos = dragMinX;
	}
	
	var topPos =  Math.round((innerDiv.erez_viewportheight/2) - (innerDiv.erez_viewimgheight * innerDiv.erez_posy))
	
	if(topPos > dragMaxY)
	{
		topPos = dragMaxY;
	}
	else if (topPos < dragMinY)
	{
		topPos = dragMinY;
	}
	
	innerDiv.style.left = leftPos;
	innerDiv.style.top = topPos;
	
	erezview_updateTiles(innerDiv);
	
}

function erezview_processMove(x, y) 
{
	this.erez_moves++;
	erezview_updateTiles(this);
	this.erez_posx = (erezview_stripPx(this.style.left) - (this.erez_viewportwidth/2)) / (-this.erez_viewimgwidth);
	this.erez_posy = (erezview_stripPx(this.style.top) - (this.erez_viewportheight/2)) / (-this.erez_viewimgheight);
}

function erezview_onDragStart()
{
	this.erez_moves = 0;
	this.style.cursor = "move";
}

function erezview_onDragEnd()
{
	if(this.erez_moves == 0)
	{
		// No move - should we zoom in instead?
	}
	this.style.cursor = "";
}

function erezview_updateTiles(innerDiv) 
{
	var visibleTiles = erezview_getVisibleTiles(innerDiv);	
	var visibleTilesMap = {};      
	for (i = 0; i < visibleTiles.length; i++) 
	{
		var tileArray = visibleTiles[i];
		var tx = tileArray[0];
		var ty = tileArray[1];
		if((tx >= 0) && (ty >= 0))
		{
			var left = (tx * innerDiv.erez_tilesize) / innerDiv.erez_viewimgwidth;
			var top = (ty * innerDiv.erez_tilesize) / innerDiv.erez_viewimgheight;
			
			if((left < 1.0) && (top < 1.0))
			{
				var right = ((tx + 1) * innerDiv.erez_tilesize) / innerDiv.erez_viewimgwidth;
				
				var tileWidth = innerDiv.erez_tilesize;
				var tileHeight = innerDiv.erez_tilesize;
				var xTileWidth = (1.0 * innerDiv.erez_tilesize) / innerDiv.erez_viewimgwidth;
				var yTileHeight = (1.0 * innerDiv.erez_tilesize) / innerDiv.erez_viewimgheight;
				
				if(right > 1.0)
				{
					tileWidth = Math.round(((xTileWidth - (right - 1.0)) / xTileWidth) * innerDiv.erez_tilesize);
					right = 1.0;
				}
				
				var bottom = ((ty + 1) * innerDiv.erez_tilesize) / innerDiv.erez_viewimgheight;
				if(bottom > 1.0)
				{
					tileHeight = Math.round(((yTileHeight - (bottom - 1.0)) / yTileHeight) * innerDiv.erez_tilesize);
					bottom = 1.0;
				}
				
				var tileName = innerDiv.erez_id + ", " + innerDiv.erez_zoom + "," + ty + "," + tx;
				
				var imgSrc = innerDiv.erez_url + "?src=" + innerDiv.erez_imgsrc + "&width=" + tileWidth + "&height=" + tileHeight + "&top=" + top + "&left=" + left + "&bottom=" + bottom + "&right=" + right + innerDiv.erez_effects + "&scale=" + (1.0 / innerDiv.erez_scale);
				
				visibleTilesMap[tileName] = true;
				var img = document.getElementById(tileName);
				if (!img) 
				{
					img = document.createElement("img");					
					img.width = tileWidth;
					img.height = tileHeight;	
					img.src = imgSrc;
					img.style.position = "absolute";
					img.style.left = (tx * innerDiv.erez_tilesize) + "px";
					img.style.top = (ty * innerDiv.erez_tilesize) + "px";
					img.style.zIndex = 0;
					img.setAttribute("id", tileName);
					img.title="Click and Drag to move Image";
					innerDiv.appendChild(img);
				}
			}
		}
	}
	
	var imgs = innerDiv.getElementsByTagName("img");
	for (i = 0; i < imgs.length; i++)
	{
		var id = imgs[i].getAttribute("id");
		if (!visibleTilesMap[id]) 
		{
			innerDiv.removeChild(imgs[i]);
			i--;  // compensate for live nodelist
		}
	}
}

function erezview_getVisibleTiles(innerDiv)
{
	var mapX = erezview_stripPx(innerDiv.style.left);
	var mapY = erezview_stripPx(innerDiv.style.top);
	
	var startX = Math.abs(Math.floor(mapX / innerDiv.erez_tilesize)) - 1;
	var startY = Math.abs(Math.floor(mapY / innerDiv.erez_tilesize)) - 1;
	
	var tilesX = Math.ceil(innerDiv.erez_viewportwidth / innerDiv.erez_tilesize) + 1;
	var tilesY = Math.ceil(innerDiv.erez_viewportheight / innerDiv.erez_tilesize) + 1;
	
	var visibleTileArray = [];
	var counter = 0;
	for (x = startX; x < (tilesX + startX); x++) 
	{
		for (y = startY; y < (tilesY + startY); y++) 
		{
			visibleTileArray[counter++] = [x, y];
		}
	}
	return visibleTileArray;
}


function erezview_stripPx(value) 
{
	if (value == "") return 0;
	return parseFloat(value.substring(0, value.length - 2));
}

function erezview_zoomOut(id)
{   
	var innerDiv = erezview_getInnnerDiv(id);         	
	if(innerDiv.erez_zoom < (innerDiv.erez_zoomLevels.length - 1))
	{
		innerDiv.erez_zoom += 1;
		innerDiv.erez_scale = innerDiv.erez_zoomLevels[innerDiv.erez_zoom];
		erezview_update(id);
	};
}

function erezview_zoomIn(id)
{
	var innerDiv = erezview_getInnnerDiv(id);
	if(innerDiv.erez_zoom > 0)
	{
		innerDiv.erez_zoom -= 1;
		innerDiv.erez_scale = innerDiv.erez_zoomLevels[innerDiv.erez_zoom];
		erezview_update(id);
	}
}

function erezview_zoomReset(id)
{
	var innerDiv = erezview_getInnnerDiv(id);
	if(innerDiv.erez_zoom < (innerDiv.erez_zoomLevels.length - 1))
	{
		innerDiv.erez_zoom = innerDiv.erez_zoomLevels.length - 1;
		innerDiv.erez_scale = innerDiv.erez_zoomLevels[innerDiv.erez_zoom];
		erezview_update(id);
	};
}

function erezview_panUp(id)
{
	var innerDiv = erezview_getInnnerDiv(id);
	innerDiv.erez_posy = (erezview_stripPx(innerDiv.style.top) - (innerDiv.erez_viewportheight/4)) / (-innerDiv.erez_viewimgheight);
	erezview_update(id);
}

function erezview_panDown(id)
{
	var innerDiv = erezview_getInnnerDiv(id);
	innerDiv.erez_posy = (erezview_stripPx(innerDiv.style.top) - (3*innerDiv.erez_viewportheight/4)) / (-innerDiv.erez_viewimgheight);
	erezview_update(id);
}


function erezview_panLeft(id)
{
	var innerDiv = erezview_getInnnerDiv(id);
	innerDiv.erez_posx = (erezview_stripPx(innerDiv.style.left) - (innerDiv.erez_viewportwidth/4)) / (-innerDiv.erez_viewimgwidth);
	erezview_update(id);
}

function erezview_panRight(id)
{
	var innerDiv = erezview_getInnnerDiv(id);
	innerDiv.erez_posx = (erezview_stripPx(innerDiv.style.left) - (3*innerDiv.erez_viewportwidth/4)) / (-innerDiv.erez_viewimgwidth);
	erezview_update(id);
}

var erezview_nextid = 42;
var erezview_preloadedimages= false;
var erezview_installed = false;
var erezview_oldonload = null;
var erezview_initlist = [];
var erezview_defaulterezurl = "";

function erezview_changeImagesArray(array)
{
	if (document.images && (erezview_preloadedimages== true))
	{
		for (var i=0; i<array.length; i+=2)
		{
			document[array[i]].src = array[i+1];
		}
	}
}
			
function erezview_changeImages() 
{
	erezview_changeImagesArray(erezview_changeImages.arguments);
}

function erezview_onload()
{
	if(erezview_oldonload != null)
	{
		try{ erezview_oldonload() } catch(e) {};
	}

	for(var i = 0; i < erezview_initlist.length; i++)
	{
		erezview_setup(erezview_initlist[i][0],erezview_initlist[i][1],erezview_initlist[i][2],erezview_initlist[i][3],erezview_initlist[i][4],erezview_initlist[i][5],erezview_initlist[i][6]);
	}

	if (document.images) 
	{
		erezview_over_zoomout = erezview_newImage(erezview_defaulterezurl + '/images/frames/reduce_o.gif');
		erezview_down_zoomout = erezview_newImage(erezview_defaulterezurl + '/images/frames/reduce_d.gif');
		erezview_over_zoomin = erezview_newImage(erezview_defaulterezurl + '/images/frames/enlarge_o.gif');
		erezview_down_zoomin = erezview_newImage(erezview_defaulterezurl + '/images/frames/enlarge_d.gif');
		erezview_over_update = erezview_newImage(erezview_defaulterezurl + '/images/frames/reset_o.gif');
		erezview_down_update = erezview_newImage(erezview_defaulterezurl + '/images/frames/reset_d.gif');
		erezview_preloadedimages= true;
	}
}

function erezview_newImage(arg)
{
	if (document.images)
	{
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

function erezview_install(erezurl)
{
	if(!erezview_installed)
	{
		try {erezview_oldonload = window.onload;} catch(e) {};
		window.onload = erezview_onload;
		erezview_defaulterezurl = erezurl;
		erezview_installed = true;
	}
}

function erezview_deferedsetup(id, erezurl, src, width, height, tilesize, effects)
{
	var array = [];
	array[0] = id;
	array[1] = erezurl;
	array[2] = src;
	array[3] = width;
	array[4] = height;
	array[5] = tilesize;
	array[6] = effects;
	erezview_initlist[erezview_initlist.length] = array;
}

function erezview_create(erezurl, src, width, height, tilesize, effects, viewwidth, viewheight) 
{
	erezview_install(erezurl);
	if(effects == "")
	{
		effects = "&tmp=ajax-viewer";
	}
	var id = erezview_nextid++;
	document.write('<table border="0" cellspacing="0" cellpadding="0" align="center"><tr height="10"><td></td><td></td><td></td></tr><tr height="8"><td width="8" height="8" background="' + erezurl + '/images/frames/greybox/ul.gif"></td><td height="8" background="' + erezurl + '/images/frames/greybox/top.gif"></td><td width="8" height="8" background="' + erezurl + '/images/frames/greybox/ur.gif"></td></tr><tr>');
	document.write('<td width="8" background="' + erezurl + '/images/frames/greybox/left.gif"></td><td valign="top" bgcolor="#F2F2F2"><table border="0" cellspacing="0" cellpadding="0" align="center" height="' + viewheight + '"><tr><td align="center" valign="middle">');
	document.write('<div id="erez_' + id + '_outer" style="background-color: #f2f2f2; text-align: center; visibility: visible; display: block; position: relative; width: ' + viewwidth + 'px; height: ' + viewheight + 'px; overflow: hidden;">');
	document.write('<div id="erez_' + id + '_inner" style="background-color: #f2f2f2; text-align: center; visibility: visible; display: block; position: absolute; z-index: 0; top: 0; left: 0;"></div></div>');
	document.write('</td></tr></table></td><td width="8" background="' + erezurl + '/images/frames/greybox/right.gif"></td></tr><tr><td width="8" background="' + erezurl + '/images/frames/greybox/left.gif"></td><td align="center" valign="middle" bgcolor="#F2F2F2" height="5"></td><td width="8" background="' + erezurl + '/images/frames/greybox/right.gif"></td></tr><tr>');
	document.write('<td width="8" background="' + erezurl + '/images/frames/greybox/left.gif"></td>');
	document.write('<td align="center" valign="bottom" bgcolor="#F2F2F2" height="26">');
	document.write('<a onfocus="blur();" title="Reset" onmousedown="erezview_changeImages(\'reset_' + id + '\',\'' + erezurl + '/images/frames/reset_d.gif\');return true" onmouseup="erezview_changeImages(\'reset_' + id + '\',\'' + erezurl + '/images/frames/reset_o.gif\');return true" onmouseover="window.status=\'Reset\';erezview_changeImages(\'reset_' + id + '\',\'' + erezurl + '/images/frames/reset_o.gif\');return true" onmouseout="window.status=\'\';erezview_changeImages(\'reset_' + id + '\',\'' + erezurl + '/images/frames/reset_n.gif\');return true" href="JavaScript:erezview_zoomReset(\'' + id + '\');"><img src="' + erezurl + '/images/frames/reset_n.gif" name="reset_' + id + '" height="17" width="18" border="0"></a>&nbsp;');
	document.write('<a onfocus="blur();" title="Zoom out" onmousedown="erezview_changeImages(\'Zoom_Out' + id + '\',\'' + erezurl + '/images/frames/reduce_d.gif\');return true" onmouseup="erezview_changeImages(\'Zoom_Out' + id + '\',\'' + erezurl + '/images/frames/reduce_o.gif\');return true" onmouseover="window.status=\'Zoom out\';erezview_changeImages(\'Zoom_Out' + id + '\',\'' + erezurl + '/images/frames/reduce_o.gif\');return true" onmouseout="window.status=\'\';erezview_changeImages(\'Zoom_Out' + id + '\',\'' + erezurl + '/images/frames/reduce_n.gif\');return true" href="JavaScript:erezview_zoomOut(\'' + id + '\');"><img src="' + erezurl + '/images/frames/reduce_n.gif" name="Zoom_Out' + id + '" height="17" width="18" border="0"></a>&nbsp;');
	document.write('<a onfocus="blur();" title="Zoom In" onmousedown="erezview_changeImages(\'enlarge_' + id + '\',\'' + erezurl + '/images/frames/enlarge_d.gif\');return true" onmouseup="erezview_changeImages(\'enlarge_' + id + '\',\'' + erezurl + '/images/frames/enlarge_o.gif\');return true" onmouseover="window.status=\'Zoom in\';erezview_changeImages(\'enlarge_' + id + '\',\'' + erezurl + '/images/frames/enlarge_o.gif\');return true" onmouseout="window.status=\'\';erezview_changeImages(\'enlarge_' + id + '\',\'' + erezurl + '/images/frames/enlarge_n.gif\');return true" href="JavaScript:erezview_zoomIn(\'' + id + '\');"><img src="' + erezurl + '/images/frames/enlarge_n.gif" name="enlarge_' + id + '" height="17" width="18" border="0"></a></td>');
	document.write('<td width="8" background="' + erezurl + '/images/frames/greybox/right.gif"></td></tr>');
	document.write('<tr height="8"><td width="8" height="8" background="' + erezurl + '/images/frames/greybox/ll.gif"></td><td height="8" background="' + erezurl + '/images/frames/greybox/bottom.gif"></td><td width="8" height="8" background="' + erezurl + '/images/frames/greybox/lr.gif"></td></tr></table>');
	erezview_deferedsetup(id, erezurl + '/erez', src, width, height, tilesize, effects);
}

var Drag = {

	obj : null,

	init : function(o, oRoot, minX, maxX, minY, maxY, bSwapHorzRef, bSwapVertRef, fXMapper, fYMapper)
	{
		o.onmousedown	= Drag.start;

		o.hmode			= bSwapHorzRef ? false : true ;
		o.vmode			= bSwapVertRef ? false : true ;

		o.root = oRoot && oRoot != null ? oRoot : o ;

		if (o.hmode  && isNaN(parseInt(o.root.style.left  ))) o.root.style.left   = "0px";
		if (o.vmode  && isNaN(parseInt(o.root.style.top   ))) o.root.style.top    = "0px";
		if (!o.hmode && isNaN(parseInt(o.root.style.right ))) o.root.style.right  = "0px";
		if (!o.vmode && isNaN(parseInt(o.root.style.bottom))) o.root.style.bottom = "0px";

		o.minX	= typeof minX != 'undefined' ? minX : null;
		o.minY	= typeof minY != 'undefined' ? minY : null;
		o.maxX	= typeof maxX != 'undefined' ? maxX : null;
		o.maxY	= typeof maxY != 'undefined' ? maxY : null;

		o.xMapper = fXMapper ? fXMapper : null;
		o.yMapper = fYMapper ? fYMapper : null;

		o.root.onDragStart	= new Function();
		o.root.onDragEnd	= new Function();
		o.root.onDrag		= new Function();
	},

	start : function(e)
	{
		var o = Drag.obj = this;
		e = Drag.fixE(e);
		var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
		var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
		o.root.onDragStart(x, y);

		o.lastMouseX	= e.clientX;
		o.lastMouseY	= e.clientY;

		if (o.hmode) {
			if (o.minX != null)	o.minMouseX	= e.clientX - x + o.minX;
			if (o.maxX != null)	o.maxMouseX	= o.minMouseX + o.maxX - o.minX;
		} else {
			if (o.minX != null) o.maxMouseX = -o.minX + e.clientX + x;
			if (o.maxX != null) o.minMouseX = -o.maxX + e.clientX + x;
		}

		if (o.vmode) {
			if (o.minY != null)	o.minMouseY	= e.clientY - y + o.minY;
			if (o.maxY != null)	o.maxMouseY	= o.minMouseY + o.maxY - o.minY;
		} else {
			if (o.minY != null) o.maxMouseY = -o.minY + e.clientY + y;
			if (o.maxY != null) o.minMouseY = -o.maxY + e.clientY + y;
		}

		document.onmousemove	= Drag.drag;
		document.onmouseup		= Drag.end;

		return false;
	},

	drag : function(e)
	{
		e = Drag.fixE(e);
		var o = Drag.obj;

		var ey	= e.clientY;
		var ex	= e.clientX;
		var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
		var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
		var nx, ny;

		if (o.minX != null) ex = o.hmode ? Math.max(ex, o.minMouseX) : Math.min(ex, o.maxMouseX);
		if (o.maxX != null) ex = o.hmode ? Math.min(ex, o.maxMouseX) : Math.max(ex, o.minMouseX);
		if (o.minY != null) ey = o.vmode ? Math.max(ey, o.minMouseY) : Math.min(ey, o.maxMouseY);
		if (o.maxY != null) ey = o.vmode ? Math.min(ey, o.maxMouseY) : Math.max(ey, o.minMouseY);

		nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));
		ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));

		if (o.xMapper)		nx = o.xMapper(y)
		else if (o.yMapper)	ny = o.yMapper(x)

		Drag.obj.root.style[o.hmode ? "left" : "right"] = nx + "px";
		Drag.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px";
		Drag.obj.lastMouseX	= ex;
		Drag.obj.lastMouseY	= ey;

		Drag.obj.root.onDrag(nx, ny);
		return false;
	},

	end : function()
	{
		document.onmousemove = null;
		document.onmouseup   = null;
		Drag.obj.root.onDragEnd(	parseInt(Drag.obj.root.style[Drag.obj.hmode ? "left" : "right"]), 
									parseInt(Drag.obj.root.style[Drag.obj.vmode ? "top" : "bottom"]));
		Drag.obj = null;
	},

	fixE : function(e)
	{
		if (typeof e == 'undefined') e = window.event;
		if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
		if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
		return e;
	}
};

