// 
//	Element Management
//  usHampton Securities, Inc.
//  Copyright 2007.  All Rights Reserved, Worldwide.
//

function getElementById(elementId) {
    if (document.getElementById) {
        return document.getElementById(elementId);
    }
    else if (document.all) {
        return document.all[elementId];
    }
    else  if (document.layers) {
        return document.layers[elementId];
    }
    else return null;
}

function getElementByTagName(element, tagName) {
    var elements = getElementsByTagName(element, tagName);
    if (elements && elements.length > 0) {
        return elements[0];
    }
    else return null;
}

function getElementsByTagName(element, tagName) {
    if (element && tagName) {
        if (element.getElementsByTagName) {
            return element.getElementsByTagName(tagName);
        }
        if (element.all && element.all.tags) {
            return element.all.tags(tagName);
        }
    }
    return null;
}

function getElementPosition(element) {
    var result = new Object();
    result.x = 0;
    result.y = 0;
    result.width = 0;
    result.height = 0;
    // location x and y
    if (element.offsetParent) {
        result.x = element.offsetLeft;
        result.y = element.offsetTop;
        var parent = element.offsetParent;
        while (parent) {
            result.x += parent.offsetLeft;
            result.y += parent.offsetTop;
            parent = parent.offsetParent;
        }
    }
    else if (element.left && element.top) {
        result.x = element.left;
        result.y = element.top;
    }
    else {
        if (element.x) {
            result.x = element.x;
        }
        if (element.y) {
            result.y = element.y;
        }
    }
    // height and width
    if (element.offsetWidth && element.offsetHeight) {
        result.width = element.offsetWidth;
        result.height = element.offsetHeight;
    }
    else if (element.style && element.style.pixelWidth && element.style.pixelHeight) {
        result.width = element.style.pixelWidth;
        result.height = element.style.pixelHeight;
    }
    else {
        if (element.width) {
            result.width = element.width;
        }
        if (element.height) {
            result.height = element.height;
        }
    }
    return result;
}

function showElement(element) {
	try {
		element.style.visibility = "visible";
	}
	catch(e) {
		var debug = getElementById("debug");
		debug.innerHTML = "Error: Setting visibility on "+element.id;
	}
	try {
		element.style.display = "block";
	}
	catch(e) {
		var debug = getElementById("debug");
		debug.innerHTML = "Error: Setting display on "+element.id;
	}
}

function hideElement(element) {
	element.style.visibility = "hidden";
	element.style.display = "none";
}

function moveElement(element, x, y) {        
    if (element.offsetParent) {	
        var parent = element.offsetParent;
        // skip subtraction for first parent
        //if (parent) { 
					//parent = parent.offsetParent;
				//}
        while (parent) {
            x -= parent.offsetLeft;
            y -= parent.offsetTop;
            parent = parent.offsetParent;
        }
        element.style.left = x+"px";
        element.style.top = y+"px";
    } else if (element.left && element.top) {
        element.left = x;
        element.top = y;
    } else {
        if (element.x) {
            element.x = x;
        }
        if (element.y) {
            element.y = y;
        }
    }
}

function resizeElement(element, w, h) {
	//var debug = getElementById("debug");
	//debug.innerHTML += "DEBUG :: in resizeElement<br />";
	//debug.innerHTML += "DEBUG :: element id is "+element.id+"<br />";
	//debug.innerHTML += "DEBUG :: new width is "+w+"<br />";
	//debug.innerHTML += "DEBUG :: new height is "+h+"<br />";
	
    if (element.style && element.style.pixelWidth && element.style.pixelHeight) {
	    //debug.innerHTML += "DEBUG :: resizing using style<br />";
        element.style.pixelWidth = w;
        element.style.pixelHeight = h;
    } else {
	    //debug.innerHTML += "DEBUG :: resizing using direct setting<br />";
        if (element.width) {
            element.width = w;
        }
        if (element.height) {
            element.height = h;
        }
    }
}