// JavaScript Document

function TipWindow(){
	
	var ie_iframe;//ie fix for hovering over form elements (select)
	this.display = 'block';
	this.font = 'Verdana';
	this.size = 12;
	this.align = 'left';
	this.bold = '';
	this.color = '#ff0000';
	this.leading = '0';
	this.letterSpacing = '0';
	this.default_align = 'top,right';
	
	this.x_offset = 50;
	var ie_x_offset = 10;
	this.y_offset = 10;
	this.max_width;
	// incase IE
	this.border = '1px solid #009900';
	this.background_color = '#ccffcc';
	this.padding = '5px';
	// called by event on element
	this.tip = function(obj,tip){
		if(!tips_container){makeTipContainer()}
		table.setStyle('display','block');
		if(ie_iframe){ie_iframe.setStyle('display','block');}
		setMsg(this, obj, tip);
		$(obj).addEvent('blur',onBlur);
		//alert(obj.name)
	}
	// called once after js is placed on html page
	this.setTipProperties = function (obj){
		for(prop in obj){
			this[prop] = obj[prop];
		}
		setMsgStyle(this);
	}
	
	/// private
	var isIE = Browser.Engine.trident;
	var tips_container
	var msg
	var table
	if(isIE){
		msg = new Element('div');
		setMsgStyle(this);
		table = new Element('div')
		table.adopt(msg)
		ie_iframe = new Element('iframe',{'styles':{'position':'absolute','border':'0','display':'block'}})
	}else{
		msg = new Element('td', {
				'styles':{
					'background-image':'url(assets/tips/tip_box_msg.png)',
					'color':this.color,
					'font-family':this.font,
					'size':this.size,
					'text-align':this.align
				}});
		table = new Element('table',{'border':'0','cellpadding':'0','cellspacing':'0'})
		var tail = new Element('img', {'src':'assets/tips/tip_box_tail_bl.png', 'styles':{'float':'right'}});
		var tl = new Element('img', {'src':'assets/tips/tip_box_tl.png'});
		var tr = new Element('img', {'src':'assets/tips/tip_box_tr.png'});
		var bl = new Element('img', {'src':'assets/tips/tip_box_bl.png'});
		var br = new Element('img', {'src':'assets/tips/tip_box_br.png'});
		var top = new Element('tr');
		var top_left = new Element('td');
		top_left.adopt(tl);
		var top_right = new Element('td');
		top_right.adopt(tr)
		var top_mid = new Element('td', {'styles':{'background-image':'url(assets/tips/tip_box_t.png)'}});
		top.adopt(top_left,top_mid,top_right);
		var mid = new Element('tr');
		var mid_left = new Element('td', {'styles':{'background-image':'url(assets/tips/tip_box_l.png)'}});
		var mid_right = new Element('td', {'styles':{'background-image':'url(assets/tips/tip_box_r.png)'}});
		mid.adopt(mid_left,msg,mid_right);
		var bot = new Element('tr');
		var bot_left = new Element('td');
		bot_left.adopt(bl);
		var bot_right = new Element('td');
		bot_right.adopt(br);
		var bot_mid = new Element('td', {'styles':{'background-image':'url(assets/tips/tip_box_b.png)'}});
		bot.adopt(bot_left,bot_mid,bot_right);
		table.adopt(top,mid,bot);
	}
	
	function onBlur(e){
		table.setStyle('display','none');
		if(ie_iframe){ie_iframe.setStyle('display','none');}
	}
		
	// create on first tip event - this.tip();
	function makeTipContainer(){
	 tips_container = new Element('div', {
		'id':'tips',
		'styles':{
			'display':'block',
			'position':'absolute'
			}
		});
	 tips_container.adopt(table)
	 if(ie_iframe){$(document.body).adopt(ie_iframe);}
	 $(document.body).adopt(tips_container)
	}
	// called by this.tip()
	function setMsg(_this, obj, tip){
			msg.setProperty('width','0');
			msg.setProperties({
							  'text':tip
							  });
			//alert(window.getScroll().y)
			if(_this.max_width){
				if(tips_container.getSize().x > _this.max_width){
					msg.setProperty('width',_this.max_width);
				}
			}else if(tips_container.getSize().x > obj.getPosition().x){
				msg.setProperty('width',obj.getPosition().x + obj.getSize().x);
			}
			var tip_pos
			if(isIE){
				_this.x_offset = 0;
				_this.y_offset = -4;
			}
			tip_pos = {x:obj.getPosition().x + obj.getSize().x - tips_container.getSize().x + _this.x_offset,y:obj.getPosition().y - tips_container.getSize().y + _this.y_offset}
			var t_pos_y = defaultAlign(_this, 0)
			var t_pos_x = defaultAlign(_this, 1)
			if(tip_pos.y < window.getScroll().y){
				if(t_pos_y == 'top'){ // change it to bottom
					t_pos_y = 'bottom';
					tip_pos.y = obj.getPosition().y + obj.getSize().y - _this.y_offset;
				}
			}
			if(!isIE){setTail(t_pos_x,t_pos_y);}
			tips_container.setPosition(tip_pos);
			if(ie_iframe){
				ie_iframe.setStyles({
							'top':tip_pos.y,
							'left':tip_pos.x,
							'width':table.getSize().x,
							'height':table.getSize().y
						})
			}
	}
	defaultAlign = function(_this, ind){
		var align_arr = _this.default_align.split(",");
		return align_arr[ind];
	}
	function setTail(t_pos_x,t_pos_y){
		tail.dispose();
		var dir;
		if(t_pos_x == 'right'){
			dir = 'l';
		}else{
			dir = 'r';
		}
		if(t_pos_y == 'top'){
			tail.setProperties({'src':'assets/tips/tip_box_tail_b'+dir+'.png'});
			bot_mid.adopt(tail);
		}else{
			tail.setProperties({'src':'assets/tips/tip_box_tail_t'+dir+'.png'});
			top_mid.adopt(tail);
		}
	}
	function setMsgStyle(_this){
		if(isIE){
			msg.setStyles({
				'color':_this.color,
				'font-family':_this.font,
				'font-size':_this.size+'px',
				'text-align':_this.align,
				'border':_this.border,
				'background-color':_this.background_color,
				'padding':_this.padding
				})
		}else{
 		msg.setStyles({
				'background-image':'url(assets/tips/tip_box_msg.png)',
				'color':_this.color,
				'font-family':_this.font,
				'font-size':_this.size+'px',
				'text-align':_this.align
			});
		}
	}
}
var tip_window = new TipWindow();


