/*!
 * jQuery Infobox Plugin
 * Author: Stefano Mazzega <stefano.mazzega@gmail.com>
 * Version: 0.1 (09-JUN-2009)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * Requires: jQuery v1.3.1 or later
 *
 */
(function($){ //jQuery.noConflict()compliant
   $.fn.infobox = function(url, options) {
      
      
      // build main options before element iteration
      //----------------------------------------------------------------------
      var s = $.extend({}, $.fn.infobox.defaults, options);
      
      var infoBox = $(s.infoBoxTPL); 
      
      var newBox = null;
      
      // firebug console output
      //----------------------------------------------------------------------
      function debug(msg) {
         if (window.console && window.console.log && opts.debug) {
             window.console.log(msg);
         }
      }
      
      return this.each(function()
      {
         var obj = $(this); 
         
         var _lastElm = null;
       
         
         function getDetails()
         {                            
            if(!obj.hasClass('selected')) 
            {
               //chiduo box se aperto da qualche altro elemento
               $(s.container+" "+s.boxClass).removeClass('selected');
               $('#'+ s.infoBoxId).remove();     
               $(s.container+" "+s.logoImgClass).hide();
               //recupero posizione del nodo
               if(obj.hasClass('exp'))
               {
                  //siamo nell'ultimo elemento della riga
                  _lastElm = obj; 
               }
               else
               {
                  _lastElm = obj.nextAll('.exp').eq(0); 
                  
                  if( !_lastElm.attr('id') )
                     _lastElm = obj.next('div'); 
                     
                  _lastElm = $(_lastElm);
               }
               
               //alert(_lastElm.attr('id'));
               obj.addClass('selected');
               obj.find(s.logoImgClass).show(); 
               // da fare chiamata ajax per recuperare dettagli del prodotto selezionato
               //var boxContent = infoBox.html();   
               var boxContent = '';
               $.post(
                  url, 
                  { 
                     id: obj.attr('title') 
                  },
                  function(data, textStatus){
                     
                     if(textStatus == 'success')
                     {
                        boxContent = data;
                                             
                        //inserisco i contenuti dopo l'ulitmo elemento della riga
                        _lastElm.after('<div id="'+s.infoBoxId+'" style="display:none;">'+boxContent+'</div>');
                        newBox = $('#'+ s.infoBoxId);
                        newBox.find(".close span").click(function(){ close(); });
                        newBox.slideDown('slow');
                     }
                     
                  }, "html", this);
            
               // end ajax

            }
            else
            {
               close();  
            }
         }
         
         function close()
         {
            obj.removeClass('selected'); 
            obj.find(s.infoBoxCloseButtonClass).remove();
            obj.find(s.logoImgClass).hide();
            newBox.slideUp("slow", function(){
               $(this).remove();   
            });
            
            
            newBox = null;
         }

         obj.click(function(){ getDetails(); });   
   
      });
   };                       
   
   $.fn.infobox.defaults = {
         infoBoxTPL: '#product-info-tpl',
         container: '#products-list',
         boxClass: '.product',   
         logoImgClass: '.logo-author',   
         boxPrefix : '#box_',
         infoBoxId : 'product-info',
         infoBoxCloseButtonClass : '.close',
         //ampiezza box  slide selezionata
         curWidth : 121,
         //ampiezza div x bg immagine  slide selezionata
         curImgDivWidth : 92,
         //ampiezza immagine  slide selezionata
         curImgWidth : 106,
         //font-size p  slide selezionata
         curParSize : "15px",
         //per settare ampiezza scrollContainer
         // opts.$container.css('width', (opts.$panels[0].offsetWidth * opts.$panels.length) + (opts.$panels.length * opts.scrollWidth) )
         scrollWidth : 120,
         //spostamento laterale al click
         scrollLeft : '104px',
         //prefisso dei box (numerati progressivamente nell'html '#panel_1, #panel_2)
         panelPrefix : '#panel_',
         //box attivo di default
         curPanel : 2
    };
})(jQuery);
