var TV_Tips = new Class({
	Extends: Tips,
	
	position: function(event) {
		var size = window.getSize(), scroll = window.getScroll();
		var tip = {x: this.tip.offsetWidth, y: this.tip.offsetHeight};
		var props = {x: 'left', y: 'top'};
		var pos_switch = {x: false, y: false};
		for (var z in props){
			var pos = event.page[z] + this.options.offsets[z];
			if ((pos + tip[z] - scroll[z]) > size[z]) {
				pos = event.page[z] - this.options.offsets[z] - tip[z];
				pos_switch[z] = true
			}
			this.tip.setStyle(props[z], pos);
		}
		if (this.options.className) {
			this.tip.removeClass(this.options.className + '-topleft');
			this.tip.removeClass(this.options.className + '-left');
			this.tip.removeClass(this.options.className + '-top');
			if (pos_switch.x && pos_switch.y) {
				this.tip.addClass(this.options.className + '-topleft');
			} else if (pos_switch.x) {
				this.tip.addClass(this.options.className + '-left');
			} else if (pos_switch.y) {
				this.tip.addClass(this.options.className + '-top');
			}
		}
	},
	
	fireForParent: function(event, element){
		if (!element) return;
		parentNode = element.getParent();
		if (parentNode == document.body) return;
		if (parentNode.retrieve('tip:enter')) parentNode.fireEvent('mouseenter', event);
		else this.fireForParent(event, parentNode);
	},
});