var Element = {
	getPosition : function(elem) {
    var left = 0;   
    var top  = 0;   
    
    while (elem.offsetParent){   
      left += elem.offsetLeft;   
      top += elem.offsetTop;   
      elem = elem.offsetParent;   
    }   
    
    left += elem.offsetLeft;   
    top += elem.offsetTop;   
    return {x: left, y: top};   	
	},
	getDimension : function(elem) {
    var display = elem.style.display;
    if (display != 'none' && display != null) { // Safari bug
      return {width: elem.offsetWidth, height: elem.offsetHeight};
		}

    var originalVisibility = elem.style.visibility;
    var originalPosition = elem.style.position;
    var originalDisplay = elem.style.display;
    elem.style.visibility = 'hidden';
    if (originalPosition != 'fixed') {// necessario per Safari visto che non è supportato fixed
      elem.style.position = 'absolute';
		}
    elem.style.display = 'block';
    var originalWidth = elem.clientWidth;
    var originalHeight = elem.clientHeight;
    elem.style.display = originalDisplay;
    elem.style.position = originalPosition;
    elem.style.visibility = originalVisibility;
    return {width: originalWidth, height: originalHeight};
	},
	isClassName : function(elem, className) {
		var elemClassName = elem.className.split(' ');
		for (var i = 0; i < elemClassName.length; i++) {
			if (elemClassName[i] == className) {
				return true;
			}
			return false;
		}
	},
	addClassName : function(elem, className) {
		if (Element.isClassName(elem, className)) {
			return;
		}
		if (elem.className != '') {
			className = ' ' + className;
		}
		elem.className += className;		
	},
	removeClassName : function(elem, className) {
		var elemClassName = elem.className.split(' ');
		var newClassName = '';
		for (var i = 0; i < elemClassName.length; i++) {
			if (elemClassName[i] != className) {
				if (newClassName != '') {
					newClassName += ' ';				
				}
				newClassName += elemClassName[i];
			}
		}
		elem.className = newClassName;
	}
}
