var Prototip = Class.create();

Prototip.prototype = {
	
	initialize:function(config)
	{
		var event = (config.risingEvent) ? config.risingEvent : 'dom:loaded';
		
		document.observe(event, this.onReady.bind(this));
		Object.extend(this.config, config);				
	},
	
	config: {},
	tooltip: null,
	elems: null,
	titleTip: null,
	
	onReady: function()
	{		
		this.tooltip = $(this.config.tplHTML);
		this.elems = $$(this.config.selector);
		
		if (this.elems)
		{
			this.elems.each(function(el){
				
				Event.stopObserving(el, 'mouseover');
				Event.stopObserving(el, 'mouseout');
				
				Event.observe(el, 'mouseover', this._show.bind(this, el));
				Event.observe(el, 'mouseout', this._hide.bind(this, el));
			}.bind(this));
		}		
	},
	
	_show: function(elem){
		if (!this.tooltip.visible())
		{
			if (elem.title.blank())
			{
				return;
			}
			var availableSpace = Utils.getViewportWidth()-Utils.getLeftPos(elem);
			this.titleTip = elem.title;
			elem.title = '';
			$('tooltip-text').update(this.titleTip);
			if (elem.nodeName == 'SPAN' || elem.nodeName == 'span')
			{
				var elementWidth = elem.getWidth() - 18;
			}
			else
			{
				var elementWidth = -4;
			}
			if (availableSpace < 135)
			{
				this.tooltip.addClassName('ico-help-popR');
				this.tooltip.setStyle({
				 	'position': 'absolute',
					'left': Utils.getLeftPos(elem) - 115 + 'px',
					'top': Utils.getTopPos(elem)  - this.tooltip.getHeight() - 15 + 'px'
				});
			}
			else
			{
				this.tooltip.removeClassName('ico-help-popR');
				this.tooltip.setStyle({
				 	'position': 'absolute',
					'left': Utils.getLeftPos(elem) + elementWidth + 'px',
					'top': Utils.getTopPos(elem)  - this.tooltip.getHeight() - 15 + 'px'
				});
			}
			this.tooltip.toggle();
		}
		//ico-help-popR
//		if (!this.tooltip.visible())
//		{
//			if (elem.title.blank())
//			{
//				return;
//			}
//			var availableSpace = Utils.getViewportWidth()-Utils.getLeftPos(ancestor);
//			//213
//			
//			if (availableSpace < 213)
//			{
//				this.tooltip.setStyle({
//				 	'position': 'absolute',
//					'left': Utils.getLeftPos(ancestor) - 213 + 'px',
//					'top': Utils.getTopPos(ancestor) - 38 + 'px'
//				});
//			}
//			else
//			{
//				this.tooltip.setStyle({
//				 	'position': 'absolute',
//					'left': Utils.getLeftPos(ancestor) + 15 + 'px',
//					'top': Utils.getTopPos(ancestor) - 38 + 'px'
//				});
//			}
//			this.titleTip = elem.title;
//			$('tooltip-text').update(this.titleTip);
//			elem.title = '';
//			this.tooltip.toggle();
//		}		
	},
	_hide: function(elem){
		if (this.tooltip.visible())
		{
			elem.title = this.titleTip;
			this.titleTip = '';
			this.tooltip.toggle();
		}
	},
	stopWatching: function(elem)
	{
		Event.stopObserving(elem, 'mouseover');
		Event.stopObserving(elem, 'mouseout');
		this.titleTip = '';
		this.tooltip.hide();
	}
};
