function PanelItem()
{
  var oRef=this;
  this.idArticulo = null; 
  this.price = null;  //es el precio que se tomara para el producto, tomando en cuenta promociones.
  this.oPanel = null;
  
  this.init = function()
  {
    var id = 'panelItem_'+Math.random();
    $(document.body).append('<div id="'+id+'" class="panelItem"><div class="panelItem bd" style="padding:0px"></div></div>');

    this.oPanel = new YAHOO.widget.Panel(id,{width:"620px",height:'367px',visible:false,constraintoviewport:true,draggable:true,fixedcenter:true,modal:true,zIndex:2});
    this.oPanel.render(document.body);

    var callback = function(html)
    {
      var content = $(oRef.oPanel.body);

      oRef.oPanel.setBody(html);
      oRef.formAdd = content.find('.formAdd');
      oRef.imageBox = content.find('.imageBox');
      oRef.vchArticulo = content.find('.vchArticulo');
      oRef.txtDescripcion = content.find('.txtDescripcion');
      oRef.inputCantidad = content.find('[name=intCantidad]');
      oRef.opcionesBox = content.find('.opcionesBox');
      oRef.inputOpcion = null;
      oRef.dblPrecio = content.find('.dblPrecio');
      oRef.dblImporte = content.find('.dblImporte');
      oRef.dblCarrito = content.find('.dblCarrito');
      oRef.btnAddItem = content.find('.btnAddItem');
      oRef.btnCancelar = content.find('.btnCancelar');

      /**  Eventos  **/
      oRef.inputCantidad.keypress(function(e){return numberMask(e)});
      oRef.inputCantidad.keyup(function(e){oRef.calculateTotal();});
      oRef.formAdd.submit(function(){oRef.addItem();});
      oRef.btnCancelar.click(function(){oRef.oPanel.hide()});
    }
    $.get('/+js/panelItem/structure.html',callback);
  }

  this.show = function(idArticulo)
  {
    var callback = function(o){
      PanelLoading.hide();

      if(o.status){
        var art = o.articulo;
        oRef.idArticulo = art.idArticulo;
        
        var htmlImg = '<img src="'+jsVars.images_url+art.idArticulo+'.jpg" alt="'+art.vchArticulo+'" '+
                             'title="'+art.vchArticulo+'" width="340" height="340"/>';
        oRef.imageBox.html(htmlImg);
        oRef.vchArticulo.html(art.vchArticulo);
        oRef.txtDescripcion.html(art.txtDescripcion);
        oRef.inputCantidad.val(1);
        var formatPrice = (art.promocion == null) ? '$'+priceFormat(art.precio) : '$<strike>'+priceFormat(art.precio)+'</strike> $'+priceFormat(art.promocion);
        oRef.price = (art.promocion == null) ? parseFloat(art.precio) : parseFloat(art.promocion);
        var carrito = priceFormat(oRef.price+parseFloat(oCarrito.total))
        oRef.dblPrecio.html(formatPrice);
        oRef.dblImporte.html('$'+priceFormat(oRef.price));
        oRef.dblCarrito.html('$'+carrito);
        oRef.buildOpciones(art.opciones);
        oRef.oPanel.show();
      }else{
        PanelAlert.show('Mostrar Articulo',o.msg);
      }   
    }

    PanelLoading.show();
    $.get('/productos/panelItemShow.json.php?idArticulo='+idArticulo,callback,'json');
  }

  this.addItem = function()
  {
    var success = function(){
      oRef.inputCantidad.val(1);
      oRef.calculateTotal();
    }
    oCarrito.addItem(this.idArticulo,this.inputOpcion.val(),this.inputCantidad.val(),success);
  }

  this.calculateTotal = function(){
    var cant = this.inputCantidad.val();
    var total = cant * this.price;
    var carrito = total + parseFloat(oCarrito.total);

    this.dblImporte.html('$'+priceFormat(total));
    this.dblCarrito.html('$'+priceFormat(carrito));
  }

  this.buildOpciones = function(opciones){

    var select = '<select id="pi_opciones">';
    var stock = '';
    if(opciones != ''){
      for(var i=0;i< opciones.length;i++){
        stock = (opciones[i].bolStock == 1) ? '' : ' (fuera de stock)'
        select+= '<option value="'+opciones[i].idOpcion+'">'+opciones[i].vchOpcion + stock+'</option>';
      }
      $('#panelItem_rowOpciones').show();
    }else{
      select+= '<option value="null">----</option>';
      $('#panelItem_rowOpciones').hide();
    }
    select+= '</select>';

    this.opcionesBox.html(select);
    this.inputOpcion = this.opcionesBox.find('select');
  }

  this.init();
}
