//	jQuery Zoombox plugin
//	.based on jQuery lightbox plugin by Benjamin "balupton" Lupton {http://www.balupton.com}
//	.modified and tailored by Story Worldwide
//	.minimized version of Largebox

(function($jq){
	
	$jq.ZoomboxClass = function () {
		this.construct();
	};
	
	$jq.fn.zoombox =  function( params ) {
		$jq.Zoombox = $jq.Zoombox || new $jq.ZoomboxClass();
		var defaults = {
			top:		10, 	// distance from top of page
			width: 		520,	// width of box		
			opacity: 	0.3,	// opacity value
			events: 	true,
			border:		5
		};
		params = $jq.extend(defaults,params);
		$jq.Zoombox.populateParams(params);
		if (params.events) {
			$jq(this).click(function() {
				if ( !$jq.Zoombox.start($jq(this).attr('href'))) return true;
				//	Largebox will load the href of it's assigned tag into itself
				return false;
			})
		}
	};

	$jq.extend($jq.ZoomboxClass.prototype,{
		top:		null,
		width: 		null,
		padding: 	null,
		opacity: 	null,
		border:	 	null,
		speed: 		400,
		construct: function () {
			return true;
		},
		tree: null,
		populateParams: function (params) {
			$jq.Zoombox.top = 			params.top;
			$jq.Zoombox.width = 		params.width;
			$jq.Zoombox.opacity = 		params.opacity;
			$jq.Zoombox.border =		params.border;
		},
		start: function (target) {
			$jq('embed, object, select').css('visibility', 'hidden');//.hide(); - don't use
			var tree = $jq('<img alt="" title="" src="'+target+'" />');
			$jq.Zoombox.appendDOM(tree);
			return true;
		},
		appendDOM: function(tree) {
			//console.log(tree);
			var overlay = $jq('<div id="largebox-overlay"></div>');
			var thebox = $jq('<div id="largebox"></div>');
			var close_button = $jq('<div id="largebox-close"></div>');
			$jq(thebox).css('width',$jq.Zoombox.width+'px').css('top',$jq.Zoombox.top+'px').hide();			//	removed the fixed height!
			$jq('body').append($jq(overlay));
			$jq('body').append($jq(thebox));
			//	click anywhere on the overlay to close the box
			$jq(overlay).unbind().click(function() {
				$jq.Zoombox.finish();
				return false;	
			});
			//	close button
			$jq(thebox).append($jq(close_button));
			$jq(close_button).click(function (){
				$jq.Zoombox.finish();
			});		
			$jq.Zoombox.resizeOverlay();
			$jq.Zoombox.repositionBox();
			$jq(overlay).css('opacity',$jq.Zoombox.opacity).fadeIn(400, function(){
				$jq(thebox).append($jq(tree)).fadeIn(300);
			});
			$jq(window).resize(function () { $jq.Zoombox.resizeOverlay(); $jq.Zoombox.repositionBox(); });
			$jq(window).scroll(function () { $jq.Zoombox.repositionBox(); });
		},
		alertQuantityChange: function (param) {
			//	swaps text panels when quantity is changed
			switch (param) {
				case 'reset':
					if ($jq('.update_box') && $jq('.summary_box'))	{
						$jq('.update_box').hide();
						$jq('.summary_box').fadeIn("1000");
					}
				break;
				default:
					if ($jq('.update_box'))	{
						$jq('.summary_box').hide();
						$jq('.update_box').fadeIn("1000");
					}
				break;
			}
		},
		resizeOverlay: function ( ) {
			$jq('#largebox-overlay').css({
				width:		$jq(window).outerwidth,
				height:		$jq(window).outerheight
			});
			//	ie6...
			if (document.documentElement) $jq('#largebox-overlay').css('height','2000px');
		},
		repositionBox: function ( )		{		
			// Get page scroll
			var pageScroll = this.getPageScroll();
			
			var nTop = pageScroll.yScroll + $jq.Zoombox.top;
			var nLeft = Math.round(($jq(document).width()/2))-Math.round($jq.Zoombox.width/2);	
		
			var outercss = {
				left: 0,
				top: pageScroll.yScroll
			};
			
			var innercss = {
				left: nLeft,
				top: nTop
			};
			
			$jq('#largebox').css(innercss);
			$jq('#largebox-overlay').css(outercss);
		},
		getPageScroll: function ( ) {
			var xScroll, yScroll;
			if (self.pageYOffset)
			{	// Some browser
				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 browsers
				yScroll = document.body.scrollTop;
				xScroll = document.body.scrollLeft;	
			}
			var arrayPageScroll = {'xScroll':xScroll,'yScroll':yScroll};
			return arrayPageScroll;
		},
		finish: function ( )
		{	
			$jq('#largebox').hide();
			$jq('embed, object, select').css({ 'visibility' : 'visible' });//.show();
			$jq('#largebox-overlay').remove();
			$jq('#largebox').remove();
		}
	})
	
	$jq(function() {
		$jq.Zoombox = $jq.Zoombox || new $jq.ZoomboxClass();
	});

})(jQuery);

