
window.initHandlers = new Array();

window.addInitHandler = function(handler) {
    this.initHandlers[this.initHandlers.length] = handler;
}

window.onload = function() {
    for (var i=0; i<this.initHandlers.length; ++i) {
        this.initHandlers[i]();
    }
}

/* Borrar valores por defecto */
window.addInitHandler(function() {
	var els = getElementsByClassName('cleardefaultvalue');

	for (var i=0; i<els.length; ++i) {
		var el = els[i];
		el.cleared = false;

		el.clearDefaultValue = function() {
			if (this.cleared || this.value != this.defaultValue) return;
			this.value = '';
			this.cleared = true;
		}

		el.onfocus = function() {
			this.clearDefaultValue();
		}
	}
});

/* Función que retorna los elementos html con el class especificado */
function getElementsByClassName(searchClass, node, tag) {
    var classElements = new Array();
    if (node == null) node = document;
    if (tag == null) tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    for (i = 0, j = 0; i < elsLen; ++i) {
        if ( pattern.test(els[i].className) ) {
            classElements[j++] = els[i];
        }
    }
    return classElements;
}

function getElementPosition(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
		return { x: curleft, y: curtop };
	}
}

function getMousePosition(e) {
	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;

	posx = e.pageX || (e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft));
	posy = e.pageY || (e.clientY + (document.documentElement.scrollTop || document.body.scrollTop));

	return { x: posx, y: posy };
}

function getWheelDelta(event) {
	var delta = 0;
	if (!event) event = window.event;
	if (event.wheelDelta) {
		delta = event.wheelDelta/120;
	} else if (event.detail) { delta = -event.detail/3;	}
	return Math.round(delta); //Safari Round
}

function cancelEvent(event) {
	if (!event) event = window.event;
    if (event.preventDefault) {
		event.preventDefault();
		event.stopPropagation();
    } else {
		event.returnValue = false;
		event.cancelBubble = true;
    }
}
