/**
 * Modal Window - DGmike
 ***************************/

DGwindow = {
  crystarBox: '',
  windowElement: '',
  hide : function (e) {
    DGwindow.windowElement.hide ();
    DGwindow.crystalBox.remove ();
    Event.stop (e);
  },
  createCrystalBox: function () {
    if ($('theCrystalBox')) {
      DGwindow.crystalBox = $('theCrystalBox');
    } else {
      DGwindow.crystalBox = document.createElement ('div');
      DGwindow.crystalBox.id = 'theCrystalBox';
      $(document.body).appendChild (this.crystalBox);
    }
    $('theCrystalBox').setStyle ({
      position: 'absolute',
      top:        (getScrollXY()[1]-50)+'px',
      right:      '0px',
      width:      '3000px',
      height:     (document.viewport.getDimensions().height+100)+'px',
      background: '#DDDDDD',
      zIndex:     100,
      opacity:    '.8'
    });
    Event.observe(window,'scroll',DGwindow.createCrystalBox);
    Event.observe ($('theCrystalBox'), 'click', DGwindow.hide);
  },
  show : function (elm, topPos) {
    Event.stopObserving(window,'scroll');
    DGwindow.createCrystalBox ();
    DGwindow.windowElement = $(elm);
    var lft = parseInt($(document.body).getWidth() / 2)
    lft = lft - (parseInt($(DGwindow.windowElement).getWidth() / 2))
    if (isNaN (topPos)) topPos = (document.viewport.getDimensions().height / 5) + window.scrollY;
    DGwindow.windowElement.setStyle ({
      position:'absolute',
      top: topPos + 'px',
      left: lft + 'px',
      zIndex: '999'
    });
    new Effect.Appear ($(elm));
    new Draggable(DGwindow.windowElement,{handle:'titulo'});
    Event.observe (DGwindow.windowElement.down ('.close'), 'click', DGwindow.hide);
  }
}


/**
 * Retirado da nova verso do prototype
 */
document.viewport = {
  getDimensions: function() {
    var dimensions = { };
    var B = Prototype.Browser;
    $w('width height').each(function(d) {
      var D = d.capitalize();
      dimensions[d] = (B.WebKit && !document.evaluate) ? self['inner' + D] :
        (B.Opera) ? document.body['client' + D] : document.documentElement['client' + D];
    });
    return dimensions;
  },

  getWidth: function() {
    return this.getDimensions().width;
  },

  getHeight: function() {
    return this.getDimensions().height;
  },

  getScrollOffsets: function() {
    return Element._returnOffset(
      window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
      window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);
  }
};