HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ns3133907 6.8.0-86-generic #87-Ubuntu SMP PREEMPT_DYNAMIC Mon Sep 22 18:03:36 UTC 2025 x86_64
User: cssnetorguk (1024)
PHP: 8.2.28
Disabled: NONE
Upload Files
File: //old_home_backup/eyeconomy.co.uk/public_html/js/photogrid/jquery.photogrid.js
/* dCodes Framework */

$(function () {
	//custom animations to use
	//in the transitions
	var animations = ['right', 'left', 'top', 'bottom', 'rightFade', 'leftFade', 'topFade', 'bottomFade'];
	var total_anim = animations.length;
	//just change this to one of your choice
	var easeType = 'swing';
	//the speed of each transition
	var animSpeed = 450;
	//caching
	var $hs_container = $('#hs_container');
	var $hs_areas = $hs_container.find('.hs_area');
	//first preload all images
	$hs_images = $hs_container.find('img');
	var total_images = $hs_images.length;
	var cnt = 0;
	$hs_images.each(function () {
		var $this = $(this);
		$('<img/>').load(function () {
			++cnt;
			if (cnt == total_images) {
				$hs_areas.each(function () {
					var $area = $(this);
					//when the mouse enters the area we animate the current
					//image (random animation from array animations),
					//so that the next one gets visible.
					//"over" is a flag indicating if we can animate 
					//an area or not (we don't want 2 animations 
					//at the same time for each area)
					$area.data('over', true).bind('mouseenter', function () {
						if ($area.data('over')) {
							$area.data('over', false);
							//how many images in this area?
							var total = $area.children().length;
							//visible image
							var $current = $area.find('img:visible');
							//index of visible image
							var idx_current = $current.index();
							//the next image that's going to be displayed.
							//either the next one, or the first one if the current is the last
							var $next = (idx_current == total - 1) ? $area.children(':first') : $current.next();
							//show next one (not yet visible)
							$next.show();
							//get a random animation
							var anim = animations[Math.floor(Math.random() * total_anim)];
							switch (anim) {
								//current slides out from the right
							case 'right':
								$current.animate({
									'left': $current.width() + 'px'
								},
								animSpeed,
								easeType,

								function () {
									$current.hide().css({
										'z-index': '1',
										'left': '0px'
									});
									$next.css('z-index', '1000');
									$area.data('over', true);
								});
								break;
								//current slides out from the left
							case 'left':
								$current.animate({
									'left': -$current.width() + 'px'
								},
								animSpeed,
								easeType,

								function () {
									$current.hide().css({
										'z-index': '1',
										'left': '0px'
									});
									$next.css('z-index', '1000');
									$area.data('over', true);
								});
								break;
								//current slides out from the top	
							case 'top':
								$current.animate({
									'top': -$current.height() + 'px'
								},
								animSpeed,
								easeType,

								function () {
									$current.hide().css({
										'z-index': '1',
										'top': '0px'
									});
									$next.css('z-index', '1000');
									$area.data('over', true);
								});
								break;
								//current slides out from the bottom	
							case 'bottom':
								$current.animate({
									'top': $current.height() + 'px'
								},
								animSpeed,
								easeType,

								function () {
									$current.hide().css({
										'z-index': '1',
										'top': '0px'
									});
									$next.css('z-index', '1000');
									$area.data('over', true);
								});
								break;
								//current slides out from the right	and fades out
							case 'rightFade':
								$current.animate({
									'left': $current.width() + 'px',
									'opacity': '0'
								},
								animSpeed,
								easeType,

								function () {
									$current.hide().css({
										'z-index': '1',
										'left': '0px',
										'opacity': '1'
									});
									$next.css('z-index', '1000');
									$area.data('over', true);
								});
								break;
								//current slides out from the left and fades out	
							case 'leftFade':
								$current.animate({
									'left': -$current.width() + 'px',
									'opacity': '0'
								},
								animSpeed,
								easeType,

								function () {
									$current.hide().css({
										'z-index': '1',
										'left': '0px',
										'opacity': '1'
									});
									$next.css('z-index', '1000');
									$area.data('over', true);
								});
								break;
								//current slides out from the top and fades out	
							case 'topFade':
								$current.animate({
									'top': -$current.height() + 'px',
									'opacity': '0'
								},
								animSpeed,
								easeType,

								function () {
									$current.hide().css({
										'z-index': '1',
										'top': '0px',
										'opacity': '1'
									});
									$next.css('z-index', '1000');
									$area.data('over', true);
								});
								break;
								//current slides out from the bottom and fades out	
							case 'bottomFade':
								$current.animate({
									'top': $current.height() + 'px',
									'opacity': '0'
								},
								animSpeed,
								easeType,

								function () {
									$current.hide().css({
										'z-index': '1',
										'top': '0px',
										'opacity': '1'
									});
									$next.css('z-index', '1000');
									$area.data('over', true);
								});
								break;
							default:
								$current.animate({
									'left': -$current.width() + 'px'
								},
								animSpeed,
								easeType,

								function () {
									$current.hide().css({
										'z-index': '1',
										'left': '0px'
									});
									$next.css('z-index', '1000');
									$area.data('over', true);
								});
								break;
							}
						}
					});
				});
				//when clicking the hs_container all areas get slided
				//(just for fun...you would probably want to enter the site
				//or something similar)
				$hs_container.bind('click', function () {
					$hs_areas.trigger('mouseenter');
				});
			}
		}).attr('src', $this.attr('src'));
	});
});