// version 2.00
// for internet explorer all layer must be called with function move_layer before use.


var engaged;
var engagedZindex;
var eX;
var	eY;
var	offsetX;
var	offsetY;
var currentOffsetX;
var currentOffsetY;
var differL;
var	differT;
var OGG;						// layer object for mouse follow
var	obj_layer;					// layer object for ie select bug
var	is_explorer;				// true for ie and false for others


engaged			= false;
engagedZindex	= 0;

is_explorer		= (navigator.appName.indexOf("Internet Explorer")!=-1);

eX				= is_explorer	?	"event.clientX"	:	"e.clientX";
eY				= is_explorer	?	"event.clientY"	:	"e.clientY";

offsetX			= is_explorer	?	"document.body.scrollLeft"	:	"pageXOffset";
offsetY			= is_explorer	?	"document.body.scrollTop"	:	"pageYOffset";



function engager(e,namer)
	{
	engaged	=	(engaged)	?	namer	:	false
	
	if(engaged)
		{
		OGG	= document.getElementById(engaged).style;
           
		currentOffsetX	= (document.layers)	?	0	:	eval(offsetX);
		currentOffsetY	= (document.layers)	?	0	:	eval(offsetY);
		engagedZindex	= OGG.zIndex;
		
		OGG.zIndex		= 101;
		var eXin		= eval(eX);
		var eYin		= eval(eY);
		
		differL			= (eXin+currentOffsetX)-parseFloat(OGG.left);
		differT			= (eYin+currentOffsetY)-parseFloat(OGG.top);
		
		document.onmousemove = dragLayerByCorner;
		
		return
		}

	OGG.zIndex				= engagedZindex;
	document.onmousemove	= null;
	}

function dragLayerByCorner(e)
	{
	if(!engaged)
		return true;
	var eXin	= eval(eX);
	var eYin	= eval(eY);
	
	new_x		= (eXin+currentOffsetX)-differL;
	new_y		= (eYin+currentOffsetY)-differT;
	
	try
		{
		x_min *= 1;

		if (x_min>0)	if (new_x<x_min)	new_x = x_min;
		if (x_max>0)	if (new_x>x_max)	new_x = x_max;
		if (y_min>0)	if (new_y<y_min)	new_y = y_min;
		if (y_max>0)	if (new_y>y_max)	new_y = y_max;
		}
	catch(oException)
		{
		// no def
		}
		
	// dont move in indicated axis
	if (!(x_min==-1 || x_max==-1)) OGG.left	= new_x;
	if (!(y_min==-1 || y_max==-1)) OGG.top	= new_y;
	}


// move layer whith mouse
function move(e,layer_name,xmin,xmax,ymin,ymax)
	{
	activation	= false;
	
	if (e.type=='mousedown')
		{
		activation	= true;
		x_min		= xmin;
		x_max		= xmax;
		y_min		= ymin;
		y_max		= ymax;
		}

	engaged = activation;
	engager(e,layer_name);
	}


// move layer
function move_layer(name_layer,xx,yy)
	{
	obj_layer = document.getElementById(name_layer);

	obj_layer.style.visibility  = 'visible';
	obj_layer.style.top 		= yy;
	obj_layer.style.left 		= xx;

	// div over select ignore z-index bug correction (only for ie)
	if (is_explorer)	showSubMenu(obj_layer);
	}


// hide layer	
function hide_layer(name_layer)
	{
	document.getElementById(name_layer).style.visibility  = 'hidden';
	}


// show layer
function show_layer(name_layer)
	{
	document.getElementById(name_layer).style.visibility  = 'visible';
	}
	

// only for ie
// work for windowed select object bug
// that ignores zindex values
function showSubMenu(obj_)
	{
	var submenu_obj = obj_.getElementsByTagName('table')[0];
	if (submenu_obj)
		{
		iframe_name = 'iframe_' + obj_.id;
		iframe_obj	= document.getElementsByTagName('iframe')[iframe_name];

		if (!iframe_obj)
			{
			iframe_obj						= document.createElement('iframe');

			iframe_obj.frameBorder			= 0;
			iframe_obj.style.display		= 'block';
			iframe_obj.style.position		= 'absolute';
			iframe_obj.style.top			= submenu_obj.offsetTop;
			iframe_obj.style.left			= 0;
			iframe_obj.style.width			= submenu_obj.offsetWidth;
			iframe_obj.style.height			= submenu_obj.offsetHeight;
			iframe_obj.style.backgroundColor= 'transparent';

			obj_.insertBefore(iframe_obj, submenu_obj);
			}
		}
	}


