﻿(function($) {
  /* ************************************************************************** */
	// Declare our class
	$.LSExtensionLightboxClass = function () {	// This is the handler for our constructor
		  this.construct();
  }    

  /* ************************************************************************** */
	$.fn.LSExtensionlightbox = function (  ) {	
		$.LSExtensionLightbox = $.LSExtensionLightbox || new $.LSExtensionLightboxClass();
  }
  
  /* ************************************************************************** */
	$.extend($.LSExtensionLightboxClass.prototype, {	
    currentImage: null,
    prevImage: null, 
    nextImage: null,
    navImageFilenamePrevious: null,
    navImageFilenameNext: null,    
    navImageFilenameClose: null,    
    /* ------------------------------------------------------------------------ */
	  construct: function() {
      $.Lightbox.text.help.close = '';
      $.Lightbox.text.help.interact = '';
      $.Lightbox.text.close = '';
      
      document.oncontextmenu = function(){return false;};

      // Override the repositionBoxes method (just changing to position just below the page scroll).
      $.Lightbox.repositionBoxes = function( options ) {
			        // Prepare
			        if ( this.repositioning )
			        {	// Already here
				        this.reposition_failsafe = true;
				        return null;
			        }
			        this.repositioning = true;
        			
			        // Options
			        options = $.extend({}, options);
			        options.callback = options.callback || null;
			        options.speed = options.speed || 'slow';
        			
			        // Get page scroll
			        var pageScroll = this.getPageScroll();
        			
			        // Figure it out
			        // alert($(window).height()+"\n"+$(document.body).height()+"\n"+$(document).height());
			        // var nHeight = options.nHeight || parseInt($('#lightbox').height(),10) || $(document).height()/3;
			        var nHeight = options.nHeight || parseInt($('#lightbox').height(),10);
        			
			        // Display lightbox in center
			        // var nTop = pageScroll.yScroll + ($(document.body).height() /*frame height*/ - nHeight) / 2.5;
			        //lsORIG: var nTop = pageScroll.yScroll + ($(window).height() /*frame height*/ - nHeight) / 2.5;
			        var nTop = pageScroll.yScroll + 20;  //lsNEW
			        var nLeft = pageScroll.xScroll;
        			
			        // Animate
			        var css = {
				        left: nLeft,
				        top: nTop
			        };
			        if (options.speed) {
				        $('#lightbox').animate(css, 'slow', function(){
					        if ( $.Lightbox.reposition_failsafe )
					        {	// Fire again
						        $.Lightbox.repositioning = $.Lightbox.reposition_failsafe = false;
						        $.Lightbox.repositionBoxes(options);
					        }
					        else
					        {	// Done
						        $.Lightbox.repositioning = false;
						        if ( options.callback )
						        {	// Call the user callback
							        options.callback();
						        }
					        }
				        });
			        }
			        else
			        {
				        $('#lightbox').css(css);
				        if ( this.reposition_failsafe )
				        {	// Fire again
					        this.repositioning = this.reposition_failsafe = false;
					        this.repositionBoxes(options);
				        }
				        else
				        {	// Done
					        this.repositioning = false;
				        }
			        }
        			
			        // Done
			        return true;

		        }  //repositionBoxes override

      $.Lightbox.handlers.show = function(image) {        
        $.LSExtensionLightbox.showNav(image);
      }  

      $(document).ready(function() {
			  var sScriptSrc = $('script[src*=lsLightboxExtension.js]:first').attr('src');
			  $.LSExtensionLightbox.navImageFilenamePrevious = sScriptSrc.replace('lsLightboxExtension.js', 'navPrevious.gif');
			  $.LSExtensionLightbox.navImageFilenameNext = sScriptSrc.replace('lsLightboxExtension.js', 'navNext.gif');
			  $.LSExtensionLightbox.navImageFilenameClose = sScriptSrc.replace('lsLightboxExtension.js', 'navClose.gif');

        //Override the colors used
        //$('#lightbox-infoBox').css({backgroundColor:'#f0f0f0', border:'1px solid white', color:'black'});
        $('#lightbox-infoFooter,#lightbox-infoContainer').css({color:'black'});
        //$('#lightbox-imageBox').css({border:'1px solid silver', backgroundColor: 'gray' });
      });
	  }, 
    /* ------------------------------------------------------------------------ */
	  showNav:  function (image) {
	      $.LSExtensionLightbox.currentImage = image;
        var iCurrentIndex = parseInt($.Lightbox.images.active().index);
        $.LSExtensionLightbox.prevImage = $.Lightbox.images.prev();
        $.LSExtensionLightbox.nextImage = $.Lightbox.images.next();

        var sNavWrapper = '<div id="lsNAV-lightbox-currentNumber" style="float: left; width: 49%;"></div>';
        var sNavButtons = 
          '<span>'+
          '<a id="lsNavButton_Prev" href="#" style="float: left; display: none;" onclick="$.Lightbox.showImage($.LSExtensionLightbox.prevImage); return false;"><img src="' + $.LSExtensionLightbox.navImageFilenamePrevious + '" /></a>'+
          '<a id="lsNavButton_Next" href="#" style="float: left; display: none;" onclick="$.Lightbox.showImage($.LSExtensionLightbox.nextImage); return false;"><img src="' + $.LSExtensionLightbox.navImageFilenameNext + '" /></a>'+
          '</span>';
        var sNewCloseButton = 
          '<a id="lsNavButton_Close" onclick="$.Lightbox.finish(); return false;" style="float: right;" href="#"><img src="' + $.LSExtensionLightbox.navImageFilenameClose + '" /></a>';

        if (!document.getElementById('lsNAV-lightbox-currentNumber')) {
          //Remove the click to close from the footer.
	        $('#lightbox-infoFooter').unbind().click(function() {
		        return false;	
	        });
      	  
      	  //Add a wrapper to hold our navigation
          $('#lightbox-currentNumber').wrap(sNavWrapper);
          //Add in our prev/next buttons
          $('#lsNAV-lightbox-currentNumber').prepend(sNavButtons); 
          //Add in our Close button
          $('#lightbox-close').prepend(sNewCloseButton);
		  
		  $('#lightbox-caption').css({fontSize : '16px'});
          
          //CSS fixup
          $('#lightbox-currentNumber').css({ 'clear':'both', 'padding-left':'23' });
        } 
        
        if ($.Lightbox.images.size() <= 1) {
          $('#lsNavButton_Prev').hide();
          $('#lsNavButton_Next').hide();
        } else {
          if ($.LSExtensionLightbox.nextImage === false) {
            $('#lsNavButton_Next').show().fadeTo(250, 0.25);
          } else {
            $('#lsNavButton_Next').show().fadeTo(250, 1);
          }
          if ($.LSExtensionLightbox.prevImage === false) {
            $('#lsNavButton_Prev').show().fadeTo(250, 0.25);
          } else {
            $('#lsNavButton_Prev').show().fadeTo(250, 1);
          }
        }
      }, //showNav end
    /* ------------------------------------------------------------------------ */
    myReposition: function() { //not used right now   
    window.status = $('#lightbox').position().top + ', ' + $.Lightbox.getPageScroll().yScroll  ;
      if ($('#lightbox').position().top < $.Lightbox.getPageScroll().yScroll) {
			  var css = {
				  top: $.Lightbox.getPageScroll().yScroll + 20
			  };
				  $('#lightbox').animate(css, 'slow');
      }
    }
    /* ------------------------------------------------------------------------ */
  });

	// Instantiate
	if ( typeof $.LSExtensionLightbox === 'undefined' ) {	
		$.LSExtensionLightbox = new $.LSExtensionLightboxClass();
	}
  
})(jQuery);