function _( elementID, forceNode ){
	if ( forceNode ) {
		return forceNode.getElementById( elementID );
	} else if (typeof __CHECK_PARENT  != 'undefined' ){
		return parent.document.getElementById( elementID );
	} else {
		return document.getElementById( elementID );
	}
}


/**
* кол-во свойств у объекта
*/
function lengthOf( object ){
	var j=0;
	for ( var i in object ) j++;
	return j;
}

Support = {
	
	eventXY: function(e) {
		var posx = 0;
		var posy = 0;
		if (!e) var e = window.event;
		if (e.pageX || e.pageY) 	{
			posx = e.pageX;
			posy = e.pageY;
		}
		else if (e.clientX || e.clientY) 	{
			posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
			posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
		}

		return [posx, posy]
	},
	
	cevent: function(e) {
		e = e || window.event;	
		if(e.preventDefault) e.preventDefault();
		if(e.stopPropagation) e.stopPropagation(); 
		e.cancelBubble = true;
		e.returnValue = false;
		return false;
	},
	
	gevent: function(obj, e, handler) {
		if (!obj._attachedEvents) obj._attachedEvents = new Array();
		//if (obj._attachedEvents[e])	this.removeEvent(obj, e);
		obj._attachedEvents[e] = handler;
		(obj.addEventListener) ? obj.addEventListener(e, handler, false) : obj.attachEvent('on' + e, handler);
	}
}

Function.prototype.bind = function(object) {
    var method = this;
    return function() {
        return method.apply(object, arguments);
    }
}

