var PopUpTopLevel = 999;
var PopUpActive = null;

function PopUp(content,jsCode,speed,clickOutside,elementsClose,width,height){

  PopUpActive = this;

  // Velocidad efecto 'open'
  this._speed = speed ? speed : "normal" ;
  // Cerrar popup al clickear afuera
  this._clickOutside = clickOutside ? true : false ;
  // Selector/es de elemento/s con click cierran popup
  this.elementsClose = (!elementsClose || elementsClose=='') ? null : elementsClose ;

  // Defino html de los elementos del
  this._divPopUp      = $('<div class="popup"></div>');
  this._divContent    = $('<div class="popup-content"></div>');
  this._divBackground = $('<div class="popup-background"></div>');

  // Agrego los elemento al popUp
  this._divContent.appendTo(this._divPopUp);
  this._divBackground.appendTo(this._divPopUp);

  // agrego id al popup
  this._divPopUp.attr('id','popup_'+(++PopUpTopLevel));

  // Guardo referencia del Objeto
  var self = this;

  // Determina si el navegador es IE6
  this.isIE6      = function(){ if($.browser.msie&&parseInt($.browser.version)<7)return true;return false;}
  this._posY      = function(){ var d=$(document),popUpHeight=self._divContent.height(),windowHeight=$(window).height(),y=0;if(popUpHeight<windowHeight)y=(windowHeight-popUpHeight)/4;y+=d.scrollTop();return parseInt(y);}
  this._posX      = function(){ var d=$(document),popUpWidth=self._divContent.width(),windowWidth=$(window).width(),x=0;if(popUpWidth<windowWidth)x=(windowWidth-popUpWidth)/2;return parseInt(x);}
  this._PosAdjust = function(){ var d=$(document);self._divContent.css('top' ,self._posY()+'px');self._divContent.css('left',self._posX()+'px');self._divBackground.width(d.width());self._divBackground.height(d.height());}
  this.PopupClose = function(){ --PopUpTopLevel;self._divPopUp.fadeOut('fast',function(){$(this).remove();});if(self.isIE6())$('select').css('visibility','visible');return false;}

  // Oculto
  if(self.isIE6()){$('select').css('visibility','hidden');this._divContent.css('visibility','visible');}

  var cssObj;
  cssObj = { 'position':'absolute','width':'100%','height':'100%','margin':'0','padding':'0','top':'0','left':'0','z-index':PopUpTopLevel}
  this._divPopUp.css(cssObj);

  // Aplicar estilos del fondo.

  cssObj = {'visibility':'hidden','position':'absolute','width':'100%','height':'100%','margin':'0','padding':'0','top':'0','left':'0','z-index':'1'}
  this._divBackground.css(cssObj);
  if(self.isIE6())
    this._divBackground.css({'visibility':'visible'});

  // Aplicar estilos del contenedor.
  cssObj = {'position':'absolute','display':'none','top':'0','left':'0','z-index':'2','overflow':'hidden'}
  this._divContent.css(cssObj);

  // Asignar el alto y ancho del contenedor, si están definidos correctamente.
  if(!isNaN(width)) this._divContent.width(width);
  if(!isNaN(height))this._divContent.height(height);

  // Agrego el popup al body
  this._divPopUp.prependTo($('body'));

  // Insertar el contenido del popup.
  this._divContent.html('<div class="container"><span class="close"></span><div class="content">'+content+'</div></div>');

  // Ajusto posicion del popup y tamaño del fondo
  this._PosAdjust();
  $(window).resize(self._PosAdjust);

  // Oculto fondo
  this._divBackground.fadeTo(10,0.7,function(){self._divBackground.css({'visibility':'visible'});setTimeout(function(){self._divContent.fadeIn(this._speed);},250);});

  // Si se indica la opción de cerrar al hacer clic fuera del popup, asiganar la acción al fondo.
  if(this._clickOutside==true) self._divBackground.click(self.PopupClose);

  // Si se indica un elemento para cerrar el popup, asignar la acción al mismo.
  if(elementsClose!=null&&elementsClose!='') $(elementsClose,self._divContent).click(self.PopupClose);

  // Ejecutar la JS que se paso como parametro.
  if(jsCode!=undefined && jsCode!='' ) try{ eval(jsCode)}catch(e){};
}