var Popin = {
  params:{},
  alert:function(text, options){
    var options = options || {};
    options.show_loading = false;
    this.show(options);
    this.popin.down('.popin_content').update(text);
  },
  load:function(path,options){
    var options = options || {};
    options.show_loading = true;
    this.show(options);
    this.popin.down('.popin_content').update('');
    
    new Ajax.Updater(this.popin.down('.popin_content'), path, {     
      method:'get',
      evalScripts:true,
      parameters: {popin:true},
      
      onComplete:(function(){         
        this.popin.down('.popin_loading').hide();        
        this.popin.setStyle({top: (this.popin.cumulativeScrollOffset().top + 50).toString()+'px'})
      }).bind(this)
    });
  },
  show:function(options_or_id){
    var options = {};
    if(typeof options_or_id == "string") options.id = options_or_id;
    else options = options_or_id;

    this.popin = options.id ? $(options.id) : $('popin_'+(options.style || "sixeighty"));

    $$('.popup_overlay').invoke('show');
    this.popin.appear({duration:0.3});
    
    
    if(options.show_loading) this.popin.down('.popin_loading').show();
    else try{this.popin.down('.popin_loading').hide();}catch(e){}
    
  },
  load_element:function(id){
    this.show($(id).innerHTML);
  },
  hide:function(el){
    $$('.popup_overlay').invoke('hide');
    
    if($(el))
      this.hide_this(el)
    else 
      $$('.popin').each((function(el){Effect.Fade(el, {duration:.3})}));    
  },
  update:function(new_content){
    this.popin.down('.popin_content').update(new_content);
  },
  hide_this:function(el){
    $$('.popup_overlay').invoke('hide');    
    Effect.Fade(el.up('div.popup_container').up('div'), {duration:.3}); 
  },
  size_popin_contents:function(target, source){
    if( !($(target).up('.popin').identify() == 'popin_sixeighty') ){
      var height = $(source).getDimensions().height;

      $(target).setStyle({
        height: height.toString()+'px'
      });          
    }
  },
  resize_popin_contents:function(target, source){
    if( !($(target).up('.popin').identify() == 'popin_sixeighty') ){
      var height = $(source).getDimensions().height;

      new Effect.Morph($(target), {
        style: {
          height: height.toString()+'px'
        },
        afterFinish: (function(){ 
          $(target).setStyle({height:'auto'});         
        }).bind(this)
      })
    }
  }
}