function getXYWH(obj)
{
	var x = 0;
	var y = 0;
	var w = 0;
	var h = 0;
		
	if (obj.pixelWidth)
	{
		w = obj.pixelWidth;
		h = obj.pixelHeight;

		while (obj!=null)
		{
			x+=obj.pixelLeft-obj.scrollLeft;
			y+=obj.pixelTop-obj.scrollTop;
			
			obj=obj.offsetParent;
		}		
	}
	else if (obj.offsetParent)
	{
		w = obj.offsetWidth;
		h = obj.offsetHeight;

		while (obj!=null)
		{
			x+=obj.offsetLeft-obj.scrollLeft;
//			if (browserName=='Microsoft Internet Explorer')
//			{
//				if ((obj.style.marginLeft) && (parseInt(obj.style.marginLeft)>=0))
//					x-=parseInt(obj.style.marginLeft);
//			}
			
			y+=(obj.offsetTop-obj.scrollTop);

			obj=obj.offsetParent;
		}
	}
	else if (obj.style.left)
	{
		w = parseInt(obj.style.width);
		h = parseInt(obj.style.height);

		while (obj!=null)
		{
			x+=parseInt(obj.style.left); //-(obj.scrollLeft?obj.scrollLeft:0);
			y+=parseInt(obj.style.top); //-(obj.scrollTop?obj.scrollTop:0);
			
			obj=obj.offsetParent;
		}
	}
		
	return {x:x,y:y,w:w,h:h};
}
function getXYWHLocal(obj)
{
	var x = 0;
	var y = 0;
	var w = 0;
	var h = 0;
		
	if (obj.pixelWidth)
	{
		w = obj.pixelWidth;
		h = obj.pixelHeight;

		x = obj.pixelLeft-obj.scrollLeft;
		y = obj.pixelTop-obj.scrollTop;			
	}
	else if (obj.offsetParent)
	{
		w = obj.offsetWidth;
		h = obj.offsetHeight;

		x = obj.offsetLeft; 
		y = obj.offsetTop;
	}
	else if (obj.style.left)
	{
		w = parseInt(obj.style.width);
		h = parseInt(obj.style.height);

		x = parseInt(obj.style.left);
		y = parseInt(obj.style.top);
	}
		
	return {x:x,y:y,w:w,h:h};
}
function objMoveTo(objID,x,y,w,h)
{
	var obj = getDOMObject(objID,false);
	obj.style.left = x +'px';
	obj.style.top = y +'px';

	if (w)
		obj.style.width = w +'px';
	if (h)
		obj.style.height = h +'px';	
}
function objSetSize(objID,w,h)
{
	var obj = getDOMObject(objID,false);
	if (w)
		obj.style.width = w +'px';
	if (h)
		obj.style.height = h +'px';	
}
function objMoveRelTo(objID,relObjID,offsetX,offsetY,fromBottomLeft,w,h)
{
	var obj = getDOMObject(objID,false);
	var relObj = getDOMObject(relObjID,false);
	var xywhObj = getXYWH(obj);
	var xywh = getXYWH(relObj);

	if (fromBottomLeft)
		var x = xywh.x+xywh.w+offsetX;
	else
		var x = xywh.x+offsetX;
		
	if (x+xywhObj.w>windowWidth)
		x = xywh.x+xywh.w-xywhObj.w+1;
	else if (x<0)
		x = 0;
		
	//var y = xywh.y+xywh.h+offsetY;

	if (fromBottomLeft)
		objMoveTo(objID,x,(xywh.y+xywh.h+offsetY),w,h);
	else
		objMoveTo(objID,x,(xywh.y+offsetY),w,h);
}

// details structure
// move - cABSMOVE or cMOVEREL
// left - if move=cABSMOVE
// top  - if move=cABSMOVE

// only required if move=cMOVEREL
//
// obj - id of object to move relative to
// offset - cRELTOPLEFT, cRELTOPRIGHT, cRELBOTTOMRIGHT or cRELBOTTOMLEFT
// offsetLeft
// offsetTop

// sizeWidth - cSIZEGIVEN or cSIZESAMEWIDTH
// width - if sizeWidth-cSIZEGIVEN

// sizeHeight - cSIZEGIVEN or cSIZESAMEHEIGHT
// height - if sizeHeight=cSIZEGIVEN

// adjustSize - cNOADJUST or cADJUST
// adjustWidth - if adjustSize=cADJUST
// adjustHEIGHT - if adjustSize=cADJUST


var cABSMOVE = 0;
var cMOVEREL = 1;
var cSIZEONLY = 2;

var cRELTOPLEFT = 0;
var cRELTOPRIGHT = 1;
var cRELBOTTOMRIGHT = 2;
var cRELBOTTOMLEFT = 3;

var cSIZENOTGIVEN = 0;
var cSIZEGIVEN = 1;
var cSIZESAMEWIDTH = 2;
var cSIZESAMEHEIGHT = 3;

var cNOADJUST = 0
var cADJUST = 1

var cSTATICPOSITION = 0;
var cDYNAMICPOSITION = 1;
var nPositionTimeout = null;

function objMove(objToMoveID,details)
{
	var x;
	var y;
	var w;
	var h;

alert('move');
	if (nPositionTimeout!=null)
	{
		clearTimeout(nPositionTimeout);
		nPositionTimeout=null;
	}
	
	var objXYWH = getXYWH(document.getElementById(objToMoveID));
	w = objXYWH.w;
	h = objXYWH.h;
	
	if (details.sizeWidth)
	{
		if (details.sizeWidth==cSIZEGIVEN)
			w = details.width;
	}

	if (details.sizeHeight)
	{
		if (details.sizeHeight==cSIZEGIVEN)
			h = details.height;			
	}
	
	if (details.move==cABSMOVE)
	{
		x = details.left;
		y = details.top;		
	}
	else if (details.move==cMOVEREL)
	{
		var objXYWH = getXYWH(document.getElementById(details.objID));
		if (details.offset==cRELTOPLEFT)
		{
			x = objXYWH.x+details.offsetLeft;
			y = objXYWH.y+details.offsetTop;
		}
		else if (details.offset==cRELTOPRIGHT)
		{
			x = objXYWH.x+objXYWH.w+details.offsetLeft;
			y = objXYWH.y+details.offsetTop;
		}
		else if (details.offset==cRELBOTTOMRIGHT)
		{
			x = objXYWH.x+objXYWH.w+details.offsetLeft;
			y = objXYWH.y+objXYWH.h+details.offsetTop;
		}
		else if (details.offset==cRELBOTTOMLEFT)
		{
			x = objXYWH.x+details.offsetLeft;
			y = objXYWH.y+objXYWH.h+details.offsetTop;
		}
		
		if (details.sizeWidth==cSIZESAMEWIDTH)
			w = objXYWH.w;
		if (details.sizeHeight==cSIZESAMEHEIGHT)
			h = objXYWH.h;
	}	
	
	if (details.adjust)
	{
		if (details.adjust==cADJUST)
		{
			w += details.adjustWidth;
			h += details.adjustHeight;
		}
	}
	
	if (x+w>windowWidth)
		x = windowWidth-x-5;
	if (y+h>windowHeight)
		y = windowHeight-h-5;
		
	if (details.move==cSIZEONLY)
		objSetSize(objToMoveID,w,h);
	else
		objMoveTo(objToMoveID,x,y,w,h);
	
	if (details.position==cDYNAMICPOSITION)
		nPositionTimeout = setTimeout(function(){objMove(objToMoveID,details)},100);
}

var objSlideObject;
var objSlideOriginalLeft;
var objSlideOriginalTop;
var objSlideOriginalWidth;
var objSlideOriginalHeight;
var objSlideXStep;
var objSlideYStep;
var objSlideWStep;
var objSlideHStep;
var objSlideNumSteps;
var objSlideStep;
var objSlideSpeed;
function objSlideTo(objID,x,y,w,h,numSteps,speed)
{
	objSlideObject = getDOMObject(objID,false);	
	var xywh = getXYWH(objSlideObject);

	objSlideOriginalLeft = xywh.x;
	objSlideOriginalTop = xywh.y;
	objSlideOriginalWidth = xywh.w;
	objSlideOriginalHeight = xywh.h;
	
	objSlideXStep = (x-xywh.x)/numSteps;
	objSlideYStep = (y-xywh.y)/numSteps;
	objSlideWStep = w;
	objSlideHStep = h;
	
	if (w) 
		objSlideWStep = (w-xywh.w)/numSteps;

	if (h) 
		objSlideHStep = (h-xywh.h)/numSteps;

	objSlideNumSteps = numSteps;
	objSlideStep = 0;
	objSlideSpeed = speed;
//alert(objSlideStepsLeft+' '+objSlideSpeed+' '+objSlideXStep+' '+objSlideYStep);
	setTimeout('objSlide()',objSlideSpeed);
}
function objSlideToRel(objID,offsetX, offsetY,numSteps,speed,w,h)
{
	objSlideObject = getDOMObject(objID,false);	
	var xywh = getXYWH(objSlideObject);
	objSlideTo(objID,(xywh.x+offsetX),(xywh.y+offsetY),numSteps,speed,w,h);
}
function objSlide()
{
	if (objSlideStep<objSlideNumSteps)
	{
		objSlideStep = objSlideStep+1;

		objSlideObject.style.left = (objSlideOriginalLeft+(objSlideStep*objSlideXStep)) +'px';
		objSlideObject.style.top = objSlideOriginalTop+(objSlideStep*objSlideYStep) +'px';
		
		if (objSlideWStep)
			objSlideObject.style.width = (objSlideOriginalWidth+(objSlideStep*objSlideWStep)) +'px';
		if (objSlideHStep)
			objSlideObject.style.height = (objSlideOriginalHeight+(objSlideStep*objSlideHStep)) +'px';

		setTimeout('objSlide()',objSlideSpeed);
	}
}
function objSetHeight(objID,h)
{
	document.getElementById(objID).style.height = h+'px';
}

function makeSameSize(objIDToBeResized,objIDToBeSameSizeAs)
{
	var obj1 = document.getElementById(objIDToBeResized);
	var obj2 = document.getElementById(objIDToBeSameSizeAs);

	var xywhObj1 = getXYWH(obj1);
	var xywhObj2 = getXYWH(obj2);

	if (xywhObj1.x != xywhObj2.x)
		obj1.style.left = xywhObj2.x+'px';

	if (xywhObj1.y != xywhObj2.y)
		obj1.style.top = xywhObj2.y+'px';

	if (xywhObj1.w != xywhObj2.w)
		obj1.style.width = xywhObj2.w+'px';

	if (xywhObj1.h != xywhObj2.h)
		obj1.style.height = xywhObj2.h+'px';
		
	//alert('width:'+xywhObj2.w+'   height:'+xywhObj2.h+'    top:'+xywhObj2.y+'    left:'+xywhObj2.x);
}
