(function($) {
	
var $$,tID;

$$ = $.fn.fsGallery = function(options) {
	var $options = {
		loadingText:'loading...',
		delay: 1000,
		fade: 50,
		raster: false,
		onLoad : function(){}
	};
	$$.options = $.extend($options,options);
	if($('body').find('#fsImage').length < 1) {
		$('body').prepend('<div id="fsImage"><div><table><tr><td><img src="/click/docroot/img/ajax-loader.gif" class="init"></td></tr></table></div></div>');
	}
	
	var queryString = window.location;
	var imageId = parseInt(queryString.hash.substring(1,queryString.hash.length));
	
	
	return this.each(function() {
		$(this).addClass('fsGallery');	
		$$.preload($(this).find('li:first'),0);
		if (isNaN(imageId)) {
			$$.show($(this).find('li:first'));	
		} else {
			$$.show($(this).find('li:eq('+imageId+')'));

		}	
	});
	
	

};

$$.setUrl = function(newHash) {
	window.location.hash = newHash;
}

$$.next = function(element) {
	if (!element || element.length < 1 || element.siblings().length < 1) {
		return false;
	} else {
		clearTimeout(tID);
		element.siblings().find('a').css('display','none');
		var elemToShow = element.next();
		var queryString = window.location;
		if (element.next().length > 0) {
			var hash = parseInt(queryString.hash.substring(1,queryString.hash.length));
		 	if (!hash) {
				hash=0;	
			}
			window.location.hash = hash + 1 ;
		} else {
			window.location.hash = 0 ;
			elemToShow = element.siblings(':first');
		}
		$$.show(elemToShow);
	}
}

$$.prev = function(element) {
	if (!element || element.length < 1 || element.siblings().length < 1) {
		return false;
	} else {
		clearTimeout(tID);
		element.siblings().find('a').css('display','none');
		var elemToShow = element.prev();
		var queryString = window.location;
		if (element.prev().length > 0) {
		 	
			var hash = parseInt(window.location.hash.substring(1,queryString.hash.length));
			if (!hash) {
				hash = 0;
			}
			window.location.hash = hash - 1 ;
		} else {
			window.location.hash = element.siblings().size() ;
			elemToShow = element.siblings(':last');
		}
		$$.show(elemToShow);
	}
}

$$.preload = function(element, position) {
	var anchor  = element.find('a');
	var image   = $(new Image());
	if (anchor.text().length > 0) {
		anchor.text(anchor.text().replace(/ /,'\xa0'));
	}
	element.addClass('loading');
	image.load(function() {
		element.removeClass('loading');
		if(anchor.find('img').length > 0) {
			element.css({backgroundImage:'url('+anchor.find('img').attr('src')+')',backgroundRepeat:'no-repeat',backgroundPosition:'50% 50%'});
		}
		element.addClass('loaded').click(
			function() {
				$$.show($(this),position-1);
				$$.setUrl(position-1);
				return false;
			}
		).hover(
			function() {
				$(this).addClass('hover');
				$('.fsGallery li a').css('display','none');
				anchor.css({
					marginLeft: ((anchor.width()/2))*-1 +'px',
					marginTop: (anchor.height() + 20)*-1+'px'
				});
				//element.siblings().find('a').css('display','none');
				clearTimeout(tID);
				tID = setTimeout(function() {
					if ($$.options.fade > 1) {
						anchor.css({marginLeft: ((anchor.width()/2)+10)*-1 +'px'});
						anchor.fadeIn($$.options.fade,function() {
							$(this).css({display:'block'});
						});
					} else {
						if ($.browser.msie) {
							anchor.css({marginLeft: ((anchor.width()/2)+10)*-1 +'px'});
						}
						anchor.css('display','block');
					}
				},$$.options.delay);
			},
			function() {
				$(this).removeClass('hover');
				clearTimeout(tID);
				anchor.css('display','none');
			}
		);
		if ($('#fsImage td img:not(.init)').length < 1) { $$.show(element); }
		if (element.next().length > 0) { 
			var newPosition = position++; 
			$$.preload(element.next(), position);
		}
		$(this).remove();
		
	}).attr('src',anchor.attr('href'));
};

$$.c = function(e) {
	return $(document.createElement(e));
};

$$.resize = function(image) {
	var ratio = Math.max($(window).width()/image.width(),$(window).height()/image.height());
	if ($(window).width() > $(window).height()) {
		image.css({width:image.width()*ratio,height:'auto'});
	} else {
		image.css({width:'auto',height:image.height()*ratio});
	}
};

$$.show = function(element) {
	element.siblings('.active').removeClass('active');
	element.addClass('active');
	var image = $(new Image).attr({
		src: element.find('a').attr('href'),
		alt: element.find('a').attr('title'),
		id:  element.find('a img').attr('id')
	});
	var left = $$.c('span').addClass('left').click(function() { $$.prev(element); });
	left.mouseover(function() {$('#previous').show();});
	left.mouseout(function() {$('#previous').hide();});
	var right = $$.c('span').addClass('right').click(function() { $$.next(element); });
	right.mouseover(function() {$('#next').show();});
	right.mouseout(function() {$('#next').hide();});
	var raster = $$.options.raster ? $$.c('span').addClass('raster') : false;
	$('#fsImage td').empty();
	$('#fsImage td').append(image.css('display','block')).prepend(left.append('<div class="init" id="previous"></div>')).prepend(right.append('<div id="next"></div>')).prepend(raster);
	if(($.browser.msie && $.browser.version < 7) || $.browser.safari) {
		$(window).resize(function(){ $$.resize($('#fsImage td img:not(.init)')); });
		$(function($){$$.resize(image);});
	}
	$$.options.onLoad();
};

$.fn.hoverClass = function() {
	return this.hover(
		function() { $(this).addClass('hover') },
		function() { $(this).removeClass('hover') }
	);
}

})(jQuery);



/**** Other JQUERY FUNCTIONS ************/
jQuery(function($) {
	

	
	$("#sidebar").mouseover(function() {
		$('#sidebar').stop().animate({
			top: '0px'
		}, {queue:false, duration:600, easing: 'easeOutBounce'});
		$('.switcher').attr('src','/click/docroot/img/menu-up.png');
	});
	
	$("#sidebar").mouseout(function() {
		$('#sidebar').stop().animate({
			top: '-25px'
		}, {queue:false, duration:600, easing: 'easeOutBounce'});
		$('.switcher').attr('src','/click/docroot/img/menu-down.png');	
	});

	/*
	$('.about').click(function() {
		$('.closeme').slideUp('fast');
		$("#about").load("/click/about").slideDown('fast');
	});
	*/
	
	/* $("#about").hide().load("/click/about");
		
	$('a[rel*=facebox]').facebox();
	*/
});




