/* modal
 * create modal layer
 * autor @ Miroslav Kovar
 * developed for Pilot.cz
 * usage:
 *  new modal();
 */
var modal = new Class({
  Implements: Options,

  options: {
    container: document.body,
    clickClose: false,
    fire: false,
    opacity: 0.8,
    addClass: '',
    onClick: new Function(),
    zIndex: 299,
    fixie: true
  },
  
  initialize: function(options)
  {
    this.setOptions(options);
    this.build();
    this.show();
  },
  build: function()
  {
    this.modal = new Element('div', {'class': 'modal'});
    this.modal.addClass(this.options.addClass);
    this.modal.setStyles({
      'width': 4000,
      'height': 4000,
      'opacity': this.options.opacity,
      'z-index': this.options.zIndex
    });
    
    if (this.options.transparent && !(Browser.Engine.trident4 || Browser.Engine.trident5))
    {
      this.modal.setStyles({
        'background': 'transparent',
        'background-color': 'transparent'
      });
    }
    if (Browser.Engine.trident4 && Browser.Engine.trident5 && this.options.fixie)
    {
      this.modal.set('html', '<!--[if lte IE 6.5]><iframe id="modalframe"></iframe><![endif]-->');
    }
    this.modal.inject(document.body, 'top');
    
    // close on click
    if (this.options.clickClose)
    {
      this.modal.addEvent('click', this.hide.bind(this));
    }
    if (this.options.onClick)
    {
      this.modal.addEvent('click', this.options.onClick);
    }
  },
  show: function()
  {
    this.state = 'show';
    new Fx.Morph(this.modal, {
      duration: 200
    }).start({
      'opacity': this.options.opacity
    });
  },
  hide: function()
  {
    this.modal.dispose();
    // if (this.state !== 'hide')
    // {
      this.state = 'hide';
      if (this.options.fire)
      {
        document.fireEvent('modal_close');
      }
      // new Fx.Morph(this.modal, {
        // duration: 200
      // }).start({
      //   'opacity': [0, this.options.opacity]
      // });
    // }
  }
});
