
var Loader = Class.create({
  Version: '0.0.2',
  title  : 'Loading ...',
  img    : false,
  loader : false,

  // {{{ initialize()
  initialize : function() {
    Object.extend(this, arguments[0]);

    if(!this.loader)
      this.loader = $('loader');

    if(!this.loader) {
      var loader = new Element('div', {id: 'loader'});
      loader.appendChild(new Element('h3', {id: 'loadertitle'}).update(this.title));
      if(this.img) {
        if(Object.isString(this.img)) {
          this.img = new Element('img', {src: this.img});
        }
        loader.appendChild(this.img);
      }
      this.loader = loader;
      $$('body')[0].appendChild(loader);
    }

    if(this.position) {
      this.setPosition();
    }

    if(this.show) {
      this.loader.show();
    }

    return this;
  }, // }}}

  setPosition : function(srcEl, offSet) {
    if(srcEl)
      this.position.src = srcEl;

    if(!this.position.offset) {
      this.position.offset = {
        setWidth: false,
        setHeight: false
      };
    }

    if(offSet) {
      this.position.offset = offSet;
    }

    if(this.position.src) {
      Element.clonePosition(
        this.loader,
        this.position.src,
        this.position.offset
      );
    }
  }
});

Event.observe(window, 'unload', function() {
  if($('loader'))
    $('loader').hide();
});

Event.observe(window, 'load', function() {
  if($('loader'))
    $('loader').hide();
});
