/*
 * jQuery jFrame
 * http://crgdesign.com.br/blog/
 *
 * Copyright (c) 2009 Carlos Roberto Gomes Júnior
 * Dual licensed under the MIT and GPL licenses.
 * 
 * Date: 2009-05-19 18:31:00 +0300 (Wed, 19 Mai 2009)
 * Revision: 2
 */

   function jalert(txt) {
      debug = false;
      if (debug) {
         alert(txt);
      }
   }

   var jsettings = {
      opacity:0.6,
      width:747,
      animationTime:1200,
      closeElement:"#jpopup-close, a.continuar",
      elementToLoad:"#jpopup",
      ajaxUrl:true
   };
   
   $.jf_isopen = false;

   function setInterface(){
      var pageSize = getPageSize();
      var pageScrool = getPageScroll();
      
      jalert(pageSize);
      jalert(pageScrool);
      $("body").append('<div id="jframe-overlay"></div><div id="jframe-container"><div id="jframe"></div></div>');
      $("#jframe-container").css({top:-1600});
      $("#jframe").css({width:jsettings.width}).hide();

      $("body").append('<div id="jframe-preloader-container"><span id="jframe-preloader">Carregando...</span></div>');
      $("#jframe-preloader").css({display:'none', MozBorderRadius:8, WebkitBorderRadius:8, borderRadius:8, marginTop:((pageSize[3]/2)-113)}).fadeIn('fast');
      
      $("#jframe-preloader-container").css({top:getPageScroll()[1]});
         
      $(window).scroll(function(){
        $("#jframe-preloader-container").css({top:getPageScroll()[1]});
      });      

   
   /*opera fix para opacity */
      if($.browser.opera) {
         $.support.opacity = true;
      }    
    
      $("#jframe-overlay").css({opacity:jsettings.opacity, height:pageSize[1]})
      .click(function(){killjframe()})
      .bgiframe();
      
      
      $(jsettings.closeElement).live("click", function(event){
         killjframe();
         event.preventDefault();
      });
      
      jalert("interface criada");
      

   }
   
   function conta_itens_carrinho() {
      var itens_carrinho = 0;
      $("input[name='quantidade']").each(function () {
         itens_carrinho +=  parseInt($(this).val());
      });
      $('#itens-carrinho').text(itens_carrinho);
      if (itens_carrinho==0) {
         $('#jpopup-carrinho').html('').html('<p class="carrinho_vazio">Não há itens no seu carrinho</p>');
      }

   }
      
   function loadUrl(url, title){
      if(jsettings.ajaxUrl){
         if(url.indexOf("#")!=-1){
            url = url.split("#")[1]
         }
      }
      
      $("#jframe").load(url+" "+jsettings.elementToLoad, function(html){
         $(this).empty().append(html);
         var pageSize = getPageSize();
         var pageScrool = getPageScroll();
         $("#jframe-preloader-container").fadeOut("slow", function(){
            $("#jframe-container").animate({top:pageScrool[1]+(pageSize[3]/10)}, jsettings.animationTime, "easeOutBack", function(){
               var pageSize = getPageSize();
               $("#jframe-overlay").css({height:pageSize[1]});
               if(title=="produtos"){
                  $.address.title("Museu da Gula - Produtos :: "+$("#produto-descricao h3").text());
                  var imgW = $('#foto-produto img').width() + 30;
                  $('#foto-produto').animate({width:imgW}, "slow", function(){

                      //$("#foto-zoom").jqzoom({ zoomWidth: 200, zoomHeight: 225, xOffset: 20, yOffset:-20, title: false});
                      $('.cloud-zoom, .cloud-zoom-gallery').CloudZoom({zoomWidth:200, zoomHeight:200, adjustX:30, adjustY:-10});
                  });
                  
                  /* inicia os plugins do lightbox do museu */
                  //$("#galeria-produto").pagegalery({width:300, height:400, type:'thumbs', imagelist:'#thumbs:first',useThumbList:true });
                  

                  
                  
                  // $("#galeria-produto").bind('init', function(){
                  //     $("#jframe-overlay").css({height:getPageSize()[1]});
                  // });
                  
               } else {
                  $.address.title("Museu da Gula - " + title);
                  if (title=="Carrinho de Compras") {
   
                     conta_itens_carrinho();
                  }
               }
            });
         });
         // recaulcula a altura do overlay
         // TODO: voltar addthis: $.addthis();
      }).show();;
   }
   
   function href(obj){
      return $(obj).attr("href");
   }
   
   function jframeopen(url, title){

      if(killjframe()){
         jalert("jframe morto");
      }
      setTimeout(function(){
      jalert("abrir jframe");
      setInterface();
      loadUrl(url, title);
      }, 300);
      
   }
   
   function killjframe(){
      if($("#jframe-overlay, #jframe-container, #jframe").length>0){
      $("#jframe-overlay, #jframe-container, #jframe").fadeOut(150, function(){
         $("#jframe-preloader-container, #jframe-overlay, #jframe-container, #jframe").remove();
      });
      
      /* TODO: fazer essa animação funcionar */
      //var moveLeft = ((getPageSize()[2]- $("#jframe").width())/2 + $("#jframe").width())
      //
      //$("#jframe-container").animate({opacity:0, left:-moveLeft}, 800, "easeOutQuart", function(){
      //   $("#jframe-preloader-container, #jframe-overlay, #jframe-container, #jframe").remove();
      //});
      
      return true;
      } else {
         return false;
      }
      
      
      
   }
   
   
   function getPageSize() {
      var xScroll, yScroll;
      if (window.innerHeight && window.scrollMaxY) {	
         xScroll = window.innerWidth + window.scrollMaxX;
         yScroll = window.innerHeight + window.scrollMaxY;
      } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
         xScroll = document.body.scrollWidth;
         yScroll = document.body.scrollHeight;
      } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
         xScroll = document.body.offsetWidth;
         yScroll = document.body.offsetHeight;
      }
      var windowWidth, windowHeight;
      if (self.innerHeight) {	// all except Explorer
         if(document.documentElement.clientWidth){
            windowWidth = document.documentElement.clientWidth; 
         } else {
            windowWidth = self.innerWidth;
         }
         windowHeight = self.innerHeight;
      } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
         windowWidth = document.documentElement.clientWidth;
         windowHeight = document.documentElement.clientHeight;
      } else if (document.body) { // other Explorers
         windowWidth = document.body.clientWidth;
         windowHeight = document.body.clientHeight;
      }	 
      // for small pages with total height less then height of the viewport       
      if(yScroll < windowHeight){
         pageHeight = windowHeight;
      } else { 
         pageHeight = yScroll;
      }
      // for small pages with total width less then width of the viewport
      if(xScroll < windowWidth){	
         pageWidth = xScroll;		
      } else {
         pageWidth = windowWidth; 
      }
         arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
         return arrayPageSize;
   };    
    
   function getPageScroll() {
      var xScroll, yScroll;
      if (self.pageYOffset) {
          yScroll = self.pageYOffset;
          xScroll = self.pageXOffset;
      } else if (document.documentElement && document.documentElement.scrollTop) {	 // Explorer 6 Strict
          yScroll = document.documentElement.scrollTop;
          xScroll = document.documentElement.scrollLeft;
      } else if (document.body) {// all other Explorers
          yScroll = document.body.scrollTop; 
          xScroll = document.body.scrollLeft;	
      }
      arrayPageScroll = new Array(xScroll,yScroll);
      return arrayPageScroll;
   }

(function() {

jQuery.fn.jframe = function(options) {
   
  // jQuery.easing.def = "easeOutBounce";
   
   
   
    
   return this.each(function(){
      $(this).bind("click", function(){
          jframeopen(href(this));
          return false;
      });

   });
  
};

})(jQuery);
