function GetLayer(layer)
{
         var ReturnLayer = null;
         if(navigator.appName == 'Netscape')
         {
           if(parseInt(navigator.appVersion) == 5)
              ReturnLayer = document.getElementById(layer);
           else
              eval('ReturnLayer = document.' + layer + ';');
         }
         else
         {
           eval('ReturnLayer = document.all.' + layer + ';');
         }
         return ReturnLayer;
}
function Layer(layer, x, y)
{
         this.id = GetLayer(layer);
//         Move(x, y, this.id);
         this.ClickedX = 0;
         this.ClickedY = 0;
}
function SetZ(z, layer)
{
         if(navigator.appName == 'Netscape')
         {
           if(parseInt(navigator.appVersion) == 5)
              layer.style.zIndex = z;
           if(parseInt(navigator.appVersion) == 4)
              layer.zIndex = z;
         }
         else
         {
           layer.style.zIndex = z;
         }
}
function GetZ(layer)
{
         if(navigator.appName == 'Netscape')
         {
           if(parseInt(navigator.appVersion) == 5)
              return(parseInt(layer.style.zIndex));
           if(parseInt(navigator.appVersion) == 4)
              return(layer.zIndex);
         }
         else
         {
           return(layer.style.zIndex);
         }
}
function GetX(layer)
{
         if(navigator.appName == 'Netscape')
         {
           if(parseInt(navigator.appVersion) == 5)
              return(parseInt(layer.style.left));
           if(parseInt(navigator.appVersion) == 4)
              return(layer.left);
         }
         else
         {
           return(layer.style.pixelLeft);
         }
}
function GetW(layer)
{
         if(navigator.appName == 'Netscape')
         {
           if(parseInt(navigator.appVersion) == 5)
              return(parseInt(layer.style.width));
           if(parseInt(navigator.appVersion) == 4)
              return(layer.clip.width);
         }
         else
         {
           if(navigator.appVersion.indexOf('MSIE 4') > 0)
              return(layer.style.pixelWidth);
           else
              return(layer.offsetWidth);
         }
}
function GetY(layer)
{
         if(navigator.appName == 'Netscape')
         {
           if(parseInt(navigator.appVersion) == 5)
              return(parseInt(layer.style.top));
           if(parseInt(navigator.appVersion) == 4)
              return(layer.top);
         }
         else
         {
           return(layer.style.pixelTop);
         }
}
function GetH(layer)
{
         if(navigator.appName == 'Netscape')
         {
           if(parseInt(navigator.appVersion) == 5)
              return(parseInt(layer.style.height));
           if(parseInt(navigator.appVersion) == 4)
              return(layer.clip.height);
         }
         else
         {
           if(navigator.appVersion.indexOf('MSIE 4') > 0)
              return(layer.style.pixelHeight);
           else
              return(layer.offsetHeight);
         }
}
function Move(x, y, layer)
{
	 var minleft=document.all['minleft'].value;
	 var mintop=document.all['mintop'].value;
	 var maxleft=document.all['maxleft'].value;
	 var maxtop=document.all['maxtop'].value;
         if(navigator.appName == 'Netscape')
         {
           if(parseInt(navigator.appVersion) == 5)
           {
         	   var maxx=x+layer.style.width;
         	   var maxy=y+layer.style.height;
   		  	   if (maxx>maxleft) layer.style.left=maxleft-layer.style.width;
   		  	   else if (x<minleft) layer.style.left=minleft;
   		  	   else layer.style.left = x;
	    		   if (maxy>maxtop) layer.style.top=maxtop-layer.style.height;
	    		   if (y<mintop) layer.style.top=mintop;
             else layer.style.top = y;
           }
           if(parseInt(navigator.appVersion) == 4)
           {
         	   var maxx=x+layer.width;
         	   var maxy=y+layer.height;
   		  	   if (maxx>maxleft) layer.left=maxleft-layer.width;
   		  	   if (x<minleft) layer.left=minleft;
   		  	   else layer.left = x;
	    		   if (maxy>maxtop) layer.top=maxtop-layer.height;
	    		   if (y<mintop) layer.top=mintop;
             else layer.top = y;
           }
         }
         else
         {
         	var maxx=x+layer.style.pixelWidth;
         	var maxy=y+layer.style.pixelHeight;
   		if (maxx>maxleft) layer.style.pixelLeft=maxleft-layer.style.pixelWidth;
		else if (x<minleft)  layer.style.pixelLeft=minleft;
   		else layer.style.pixelLeft = x;
	    	if (maxy>maxtop) layer.style.pixelTop=maxtop-layer.style.pixelHeight;
	    	else if (y<mintop) layer.style.pixelTop=mintop;
           	else layer.style.pixelTop = y;
         }
         var posx = 'posx_'+layer.id;
         var posy = 'posy_'+layer.id;
         document.all[posx].value=layer.style.pixelLeft;
         document.all[posy].value=layer.style.pixelTop;
}
function PickUp(layer)
{
         var CurrentZ = GetZ(Layers[layer].id);
         SetZ(Layers.length - 1, Layers[layer].id);
         var currentZ;
         for(var index = 0; index < Layers.length; index++)
         {
            currentZ = GetZ(Layers[index].id);
            if(currentZ >= CurrentZ && index != layer)
            {
              SetZ(currentZ - 1, Layers[index].id);
            }
         }
}
function Selected(x, y, layer)
{
	//next 4 lines added to get dragdrop to work in b and d frame with the offset values
	 var offsetleft=document.all['offsetleft'].value;
	 var offsettop=document.all['offsettop'].value;
	 var x1 = x-offsetleft;
	 var y1 = y-offsettop;
         if(navigator.appName == 'Netscape')
         {
           if(parseInt(navigator.appVersion) == 5)
              if(x > parseInt(layer.style.left) && x < parseInt(layer.style.left) + parseInt(layer.style.width) && y > parseInt(layer.style.top) && y < parseInt(layer.style.top) + parseInt(layer.style.height))
		{
			var x = layer.id.substr(3,1);
			//highlight(x);
			 //for(i=0; i<=9;i++)
			 //{
         		//	var markline = 'row_obj'+i;
	 		//	document.all[markline].style.backgroundColor='';
			 //}
        		 //var markline = 'row_'+layer.id;
			 //document.all[markline].style.backgroundColor='#000000';
                	 return(true);
		}
           if(parseInt(navigator.appVersion) == 4)
              if(x > layer.left && x < layer.left + layer.clip.width && y > layer.top && y < layer.top + layer.clip.height)
		{
			var x = layer.id.substr(3,1);
			//highlight(x);
			 //for(i=0; i<=9;i++)
			 //{
         		//	var markline = 'row_obj'+i;
	 		//	document.all[markline].style.backgroundColor='';
			 //}
        		 //var markline = 'row_'+layer.id;
			 //document.all[markline].style.backgroundColor='#000000';
                	 return(true);
		}
         }
         else
         {
           if(navigator.appVersion.indexOf('MSIE 4') > 0)
           {
             if(x > layer.style.pixelLeft && x < layer.style.pixelLeft + layer.offsetWidth &&
                y > layer.style.pixelTop && y < layer.style.pixelTop + layer.offsetHeight)
		{
			var x = layer.id.substr(3,1);
			//highlight(x);
			 //for(i=0; i<=9;i++)
			 //{
         		//	var markline = 'row_obj'+i;
	 		//	document.all[markline].style.backgroundColor='';
			 //}
        		 //var markline = 'row_'+layer.id;
			 //document.all[markline].style.backgroundColor='#000000';
                	return(true);
		}
           }
           else
           {
             //if(x > layer.style.pixelLeft && x < layer.style.pixelLeft + layer.offsetWidth &&
             //   y > layer.style.pixelTop && y < layer.style.pixelTop + layer.offsetHeight)
             if(x1 > layer.style.pixelLeft && x1 < layer.style.pixelLeft + layer.offsetWidth && y1 > layer.style.pixelTop && y1 < layer.style.pixelTop + layer.offsetHeight)
		{
			var x = layer.id.substr(3,1);
			//highlight(x);
			 //for(i=0; i<=9;i++)
			 //{
         		//	var markline = 'row_obj'+i;
	 		//	if(document.all[markline]) document.all[markline].style.backgroundColor='';
			 //}
        		 //var markline = 'row_'+layer.id;
			 //document.all[markline].style.backgroundColor='#000000';
                	return(true);
		}
           }
         }
         return(false);
}
function mouseDown(e)
{
         if ((navigator.appName == 'Netscape' && e.which!=1) || (navigator.appName == 'Microsoft Internet Explorer' && event.button!=1)) return true;
         var x = (navigator.appName == 'Netscape')? e.pageX : event.x+document.body.scrollLeft;
         var y = (navigator.appName == 'Netscape')? e.pageY : event.y+document.body.scrollTop;
         if (navigator.appName == 'Netscape' && e.target!=document) routeEvent(e);

         ClickedLayer = -1;

         //Check if a div was clicked on.
         for(var layer = 0; layer < Layers.length; layer++)
         {
            if(Selected(x, y, Layers[layer].id))
            {
              if(ClickedLayer == -1)
              {
                Layers[layer].ClickedX = x - GetX(Layers[layer].id);
                Layers[layer].ClickedY = y - GetY(Layers[layer].id);
                ClickedLayer = layer;
              }
              else
                //If divs are overlapping, pick the one on top.
                if(GetZ(Layers[layer].id) > GetZ(Layers[ClickedLayer].id))
                {
                  Layers[layer].ClickedX = x - GetX(Layers[layer].id);
                  Layers[layer].ClickedY = y - GetY(Layers[layer].id);
                  ClickedLayer = layer;
                }
            }
         }
         if(ClickedLayer != -1)
         {
           PickUp(ClickedLayer);
         }
         if(ClickedLayer == -1) return true;
         else return false;
}
function mouseMove(e)
{
         var x = (navigator.appName == 'Netscape')? e.pageX : event.x+document.body.scrollLeft;
         var y = (navigator.appName == 'Netscape')? e.pageY : event.y+document.body.scrollTop;
         if (navigator.appName == 'Netscape' && e.target!=document) routeEvent(e);

         //If a div is selected,
         //make it follow the mouse cursor.

         if(ClickedLayer != -1)
         {
           Move(x - Layers[ClickedLayer].ClickedX,y - Layers[ClickedLayer].ClickedY,Layers[ClickedLayer].id);
         }

         if(ClickedLayer == -1) return true;
         else return false;
}
function mouseUp(e)
{
         var x = (navigator.appName == 'Netscape')? e.pageX : event.x+document.body.scrollLeft;
         var y = (navigator.appName == 'Netscape')? e.pageY : event.y+document.body.scrollTop;
         if (navigator.appName == 'Netscape' && e.target!=document) routeEvent(e);

         ClickedLayer = -1;

         return true;
}
function dragdrop_init(name, number)
{
	 var minleft=document.all['minleft'].value;
	 var mintop=document.all['mintop'].value;
         ClickedLayer = -1;
         document.onmousedown = mouseDown;
         document.onmousemove = mouseMove;
         document.onmouseup = mouseUp;
         if(navigator.appName == 'Netscape')
            document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP);
         Layers = new Array();
         for(var key = 0; key < number; key++)
         {
	         Layers[key] = new Layer(name+key, minleft, mintop);
         }
}

