(function(){
	var EYE = window.EYE = function() {
		var _registered = {};
		return {
			init: function() {
				$.each(_registered.init, function(nr, fn){
					fn.call();
				});
			},
			extend: function(prop) {
				for (var i in prop) {
					if (prop[i] != undefined) {
						this[i] = prop[i];
					}
				}
			},
			register: function(fn, type) {
				if (!_registered[type]) {
					_registered[type] = [];
				}
				_registered[type].push(fn);
			},
			template: function(tpl, callback) {
				return tpl.replace(/\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g, callback);
			},
			cO: {expires: 7, path: '/'},
			isChildOf: function(parentEl, el, container) {
				if (parentEl == el) {
					return true;
				}
				if (parentEl.contains && !$.browser.safari) {
					return parentEl.contains(el);
				}
				if ( parentEl.compareDocumentPosition ) {
					return !!(parentEl.compareDocumentPosition(el) & 16);
				}
				var prEl = el.parentNode;
				while(prEl && prEl != container) {
					if (prEl == parentEl)
						return true;
					prEl = prEl.parentNode;
				}
				return false;
			}
		};
	}();
	EYE.globalInit = function() {
	};
	EYE.register(EYE.globalInit, 'init');
	$(document).ready(EYE.init);
})();
