
var Balloon = new compono.Balloon.Object("Balloon");

Balloon.create = function(){

	if(this.base)return false;
		
	this.base = document.createElement("div");
	this.base.id="Balloon";
	this.base.className = "balloon";
	this.base.arrow = this.base.appendChild(document.createElement("div"));
	this.base.arrow.className = "arrow";
	this.base.body = this.base.appendChild(document.createElement("div"));
	this.base.body.className = "body";
	this.base._title = this.base.body.appendChild(document.createElement("h3"));
	this.base._text = this.base.body.appendChild(document.createElement("p"));

	return document.body.appendChild(this.base);
	
}



Balloon.show = function(scope, args, e, onShow){
	
	this.create();
	
	if(this.base.intervalID){
		clearTimeout(this.base.intervalID);
	}

	if(onShow && typeof(onShow)=="function" && onShow.call(this,scope,args,e)==false){
		return false;
	}
	
	if(args){
		if(this.base._title){
			if(args.title){
				this.base._title.innerHTML = compono.wiki.render(args.title);
				this.base._title.style.display="block";
			}else{
				this.base._title.style.display="none";
			}
		}
		if(this.base._text){
			if(args.body){
				this.base._text.innerHTML = compono.wiki.render(args.body);
				this.base._text.style.display="block";
			}else{
				this.base._text.style.display="none";
			}
		}
	}
	
	this.appendClassName("balloon-visible",this.base);
	
	this.position(this.base, scope, e);
	
	return this;
}


Balloon.hide = function(scope, e, onHide){
	function f(){
		var f = arguments.callee;
		if(f.onEvent && f.onEvent.call(f.scope,f.element,f.event)!=false){
			f.scope.afterTimeout();		
		}	
	}
	f.onEvent = onHide && typeof(onHide)=="function" ? onHide : false;
	f.scope = this;
	f.event = e;
	f.element = scope;
	
	this.base.intervalID = setTimeout(f, this.delay);
}

