/** need prototype.js /fb/*.js **/

Element.visible = function(element) {
  return ($(element).style.display != "none")
}

var slideDuration = 0.3

function toggleElement(element, options) {
  Element.visible(element) ? hideElement(element, options) : showElement(element, options)
}

function showElement(element, options) {
  if($(element) && !Element.visible(element)) {
    options = options || {}
    new Effect.BlindDown(element, {duration: slideDuration,
      afterFinish: function() {
        Element.undoClipping(element)
        $(element).style.width = "auto"
        $(element).style.height = "auto"
        if(options.afterFinish) options.afterFinish()
      }})
  }
}

function hideElement(element, options) {
  if($(element) && Element.visible(element)) {
    options = options || {}
    new Effect.BlindUp(element, {duration: slideDuration,
      afterFinish: function() {
        Element.undoClipping(element)
        Element.hide(element)
        if(options.afterFinish) options.afterFinish()
      }})
  }
}


/** new utilit funcs **/
function inputtip(id,events,html)
{
    this.uid = gen_unique();
    this.iframe = null;
    this.events = events.split(',');
    this.el = ge(id);
    this.html = html;
    this.el.inputtip = this;
    this.init();
}
inputtip.prototype.init=function()
{
    var div = ge('input-tip-div');
    if(!div){
	div = document.createElement('div');
	div.id = 'input-tip-div';
	div.setAttribute('style','');
	div.style.position = 'absolute';
	div.style.display = 'none';
	div.style.left = div.style.top = '-10000px';
	div.style.zIndex = '10';
	div.style.backgroundColor = '#eee';
	div.style.textAlign = 'left';
	div.style.fontSize = '12px';
	
	for(var i=0;i<this.events.length;i++){
	    addEventBase(div,this.events[i],function(e){  
		    stopPropagation(e);
		});
	}

	onloadRegisterHandler(function(){document.body.appendChild(div);});
    }
    
    this.tip_div = div;


    if(this.should_use_iframe){
	this.build_iframe();
    }

    for(var i=0;i<this.events.length;i++){
	addEventBase(this.el,this.events[i],function(e){
	    
	    if(this['__disabled']) return;
	    
	    stopPropagation(e);

	    var t = (elementY(this.el) + this.el.offsetHeight -1 );
	    var l = elementX(this.el);
	    var w = this.el.offsetWidth;
	    div.style.top = t + 'px';
	    div.style.left = l + 'px';
	    div.style.width = w + 'px';
	    div.style.display = 'block';
	    set_inner_html(div,'<div style="border:1px solid #bdc7d8;border-top:0;"><div style="border-top:1px solid #ddd;"><div style="padding:3px 3px;"><div style="width:'+(this.el.offsetWidth-8)+'px">'+this.html+'</div></div></div></div>');
	    
	    
	    if(this.iframe){
		var h = this.tip_div.offsetHeight;

		this.iframe.style.left = l + 'px';
		this.iframe.style.top = t + 'px';
		this.iframe.style.width = w + 'px';
		this.iframe.style.height = h + 'px';
		this.iframe.style.display = '';
	    }
	    

	}.bind(this));

	addEventBase(document.body,this.events[i],function(e){
	    this.hide_tip();
	}.bind(this));
    }
    
};
inputtip.prototype.hide_tip=function()
{
    this.tip_div.style.display = 'none';
    if(this.iframe)
	this.iframe.style.display = 'none';
};

inputtip.prototype.close_tip=function()
{
    this.__disabled = true;
};

inputtip.prototype.should_use_iframe=ua.ie()<7||(ua.osx()&&ua.firefox());
inputtip.prototype.build_iframe=function()
{
    if(!this.iframe){
	this.iframe=document.createElement('iframe');
	this.iframe.id='inputtip_iframe_'+this.uid;
    }

    this.iframe.frameBorder='0';
    this.iframe.setAttribute('style','');
    this.iframe.style['filter']='alpha(opacity=0)';
    this.iframe.style['left']='0';
    this.iframe.style['position']='absolute';
    this.iframe.style['top']='0';
    this.iframe.style['z-index']='2';
    this.iframe.style['display']='none';
    onloadRegisterHandler(function(){
	    document.body.appendChild(this.iframe);
	}.bind(this));
};