var Timer=Class.create({
	initialize: function(){
		this.limit=arguments[0].limit;
		this.action=arguments[0].action;
		this.timer=null;
	},
	start:function(){
		if(this.timer)this.stop();
		this.timer=setTimeout(this.action,this.limit*1000);
//		document.title="started";
	},
	stop:function(){
		clearTimeout(this.timer);
//		document.title="stopped";	
	}
});
var HelpTips=Class.create({
	initialize: function(){
		this.message=typeof(arguments[0])!='undefined'?arguments[0].message:'';
		this.id=arguments[0].id;
		this.header=new Element("div");
		this.content=new Element("div");
		this.timer=new Timer({limit:0.5,action:this.hide.bind(this)});
		this.panel=this.attachPanel();
		this.sameContent=false;
	},
	attachPanel:function()
	{
		if(!$(this.id))
		{
			var tips=new Element("div");
			tips.writeAttribute("id",this.id);
	
			tips.appendChild(this.header);
			tips.appendChild(this.content);
	
			tips.hide();
	
			var $this=this;
	
			Element.observe(window,'load', function(){	document.body.appendChild($this.panel);	});
	
			return tips;
		}

		this.header.update(this.message);

		return $(this.id);
	},
	append:function(item)
	{
		this.panel.appendChild(item);
		this.sameContent=false;
	},
	style:function()
	{
		if(typeof(arguments[0])!='undefined')
		this.panel.setStyle(arguments[0]);
	},
	setMessage:function()
	{
		this.message=arguments[0];
	},
	show:function(){
		var $this=this;
		this.timer.stop();

		var event,message;
		if(typeof(arguments[0])== undefined )
		{
			alert('Event Object is null!');
			return;
		}
		else
			event=arguments[0];
		
		if( arguments[1] != undefined)
		{
			message=arguments[1];

			if(this.message!=message)
			{
				this.sameContent=false;
				this.message=message;
			}
		}
		else
			this.sameContent=true;

		var x,y,width;
		var eventX=Event.pointerX(event);
		var eventY=Event.pointerY(event);
		
		if(typeof window.pageXOffset == "undefined")
		{
			var ie=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body;
			x=ie.scrollLeft+screen.availWidth-386-50;
			y=ie.scrollTop+screen.availHeight-this.panel.offsetHeight-120;
			width=386;
		}
		else
		{				
			x=window.pageXOffset+window.innerWidth-386-50;
			y=window.pageYOffset+window.innerHeight-this.panel.offsetHeight-2;
			width=346;
		}
		
		if(eventX>x)
		{
			eventX=eventX-386-20;
			this.header.setStyle("-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background:transparent url(/stuff/share/images/left-tips.gif) no-repeat scroll 0 0;overflow:hidden;padding:10px 20px 0;width:"+width+"px;text-align:left;word-wrap:break-word;overflow:hidden;border:0px solid #ff0000");
			this.content.setStyle("-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background:transparent url(/stuff/share/images/left-tips.gif) no-repeat scroll 0 100%;margin:0;padding:0 20px 20px;border:0px solid #ffffff;height:5px;width:"+width+"px;");
		}
		else
		{
			eventX+=20;
			this.header.setStyle("-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background:transparent url(/stuff/share/images/right-tips.gif) no-repeat scroll 0 0;overflow:hidden;padding:10px 20px 0;width:"+width+"px;text-align:left;word-wrap:break-word;overflow:hidden;border:0px solid #ff0000");
			this.content.setStyle("-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background:transparent url(/stuff/share/images/right-tips.gif) no-repeat scroll 0 100%;margin:0;padding:0 20px 20px;border:0px solid #ffffff;height:5px;width:"+width+"px;");
		}

		if(eventY>y)eventY=y;

		eventY-=10;

		this.header.update(this.message);
		//alert(this.header.innerHTML);
		this.panel.appendChild(this.header);
		this.panel.appendChild(this.content);

		//alert(this.panel.innerHTML);
		//this.panel.style.border="1px solid #ff0000";
		this.panel.style.width=width+"px";
		this.panel.style.position="absolute";
		this.panel.style.left=eventX+"px";
		this.panel.style.top=eventY+"px";
		this.panel.style.zIndex="10";
		this.panel.show();
		
		Event.observe(this.panel,"mouseover",this.timer.stop.bind(this.timer));
		Event.observe(this.panel,"mouseout",this.timer.start.bind(this.timer));
	},
	hide:function(){
		this.panel.hide();
		this.timer.stop();
	},
	startTimer:function()
	{
		this.timer.start();
	}
});
