//-----------------------------------------------------------------------------
// singleton class: CoordUtils
var coordUtils = new function() {

    // method: moveElementTo
    this.moveElementTo = function(element, coords) {
        try {
            element.x = coords.left;
            element.y = coords.top;
            element.style.position = "absolute";
            element.style.left = coords.left + "px";
            element.style.top = coords.top + "px";
        } catch (e) {
        }
    }

    // method: getTopLeft
    this.getTopLeft = function(element, relative) {
        var left = element.offsetLeft;
        var top = element.offsetTop;
        if (relative == null || !relative) {
        	var parent = element.offsetParent;
	        while (parent != null) {
	            left += parent.offsetLeft;
	            top += parent.offsetTop;
	            parent = parent.offsetParent;
	        }
	    }    
        return new Coords(left, top);
    }
    
    // method: getBottomLeft
    this.getBottomLeft = function(element, relative) {
        var left = element.offsetLeft;
        var top = element.offsetTop;
        var height = element.offsetHeight;
        if (relative == null || !relative) {
	        var parent = element.offsetParent;
	        while (parent != null) {
	            left += parent.offsetLeft;
	            top += parent.offsetTop;
	            parent = parent.offsetParent;
	        }
	    }
        return new Coords(left, top+height);
    }

    // method: getTopRight
    this.getTopRight = function(element, relative) {
        var left = element.offsetLeft;
        var top = element.offsetTop;
        var width = element.offsetWidth;
        if (relative == null || !relative) {
	        var parent = element.offsetParent;
	        while (parent != null) {
	            left += parent.offsetLeft;
	            top += parent.offsetTop;
	            parent = parent.offsetParent;
	        }
	    }
        return new Coords(left+width, top);
    }

}

//-----------------------------------------------------------------------------
// class: Coords
function Coords(left, top) {

	// constructor
    this.left = parseInt(left);
    this.top = parseInt(top);

    // method: moveElement
    this.moveElement = function(element) {
        coordUtils.moveElementTo(element, this);
    }

    // method: toString
    this.toString = function() {
        return "(" + left + ", " + top + ")";
    }


}