﻿
var resize_flag;

(function($) {
    $.galleryUtility = {};
    $.galleryUtility.centerImage = {};
    $.galleryUtility.rightImage = {};
    $.galleryUtility.leftImage = {};
    $.galleryUtility.rightImageStorage = {};
    $.galleryUtility.leftImageStorage = {};
    $.galleryUtility.zoomImage = {};
    $.galleryUtility.gallery = {};

    $.galleryUtility.Options = {
        Lheight: 300,
        Lwidth: 400,
        Lshrink:
                        function(dimension) {
                            return dimension * 0.75;
                        },
        Lzoom:
                        function(dimension) {
                            return dimension * 2;
                        },
        Pheight: 400,
        Pwidth: 300,
        Pshrink:
                        function(dimension) {
                            return dimension * 0.75;
                        },
        Pzoom:
                        function(dimension) {
                            return dimension * 2;
                        },
        defaultLayout: 'landscape',
        startClass: 'start',
        slideSpeed: 'normal',
        zoomSpeed: 'fast',
        gutterWidth: 50,
        captionUpPath: 'Images/SlidingGallery/captionUpArrow.png',
        captionUpWidth: 24,
        captionUpHeight: 17,
        captionUpID: 'captionArrowUp',
        captionDownPath: 'Images/SlidingGallery/captionDownArrow.png',
        captionDownWidth: 24,
        captionDownHeight: 17,
        captionDownID: 'captionArrowDown',
        captionHeight:
                        function(zoomHeight) {
                            return zoomHeight * 0.1;
                        },
        captionStyle: 'background-color:white; font-weight:bold; color:black; opacity: 0.6; filter: alpha(opacity = 60); font-size: 16px; text-align:center;',
        captionClass: 'captionBox',
        captionID: 'activeCaption',
        captionTextAttribute: 'caption',
        useCaptions: false
    };

    $.fn.slidingGallery = function(options) {
        //global settings
        $.extend($.galleryUtility.Options, options);
        //$.galleryUtility.gallery = $(this).css('cursor', 'pointer');

		$.galleryUtility.gallery = $(this).css('cursor', '');
        $.galleryUtility.definePositions();

        if ($.galleryUtility.Options.useCaptions) {
            $('body').append('<img src="' + $.galleryUtility.Options.captionUpPath + '" style="width: ' + $.galleryUtility.Options.captionUpWidth + '; display: none;"' + 'id="' + $.galleryUtility.Options.captionUpID + '" />').append('<img src="' + $.galleryUtility.Options.captionDownPath + '" style="width: ' + $.galleryUtility.Options.captionDownWidth + '; display: none;"' + 'id="' + $.galleryUtility.Options.captionDownID + '" />');
            $('#' + $.galleryUtility.Options.captionUpID + ',#' + $.galleryUtility.Options.captionDownID).css('cursor', 'help');
        }

        //eliminate overflow
        //$('body').css('overflow', 'hidden');

        //setup existing images
        var lastIndex = 0;
        var gallerySize = $.galleryUtility.gallery.each(function(i) {
            $(this).attr({
                'index': i,
                'prev': (i - 1),
                'next': (i + 1)
            }).css('position', 'absolute');
            if (($(this).attr('layout') !== 'portrait') && ($(this).attr('layout') !== 'landscape')) {
                $(this).attr('layout', $.galleryUtility.Options.defaultLayout);
            }
            lastIndex = i;
        }).hide().size();

        //fill in gallery with duplicates until there are at least 7
        var currIndex = 0;
        while (gallerySize < 7) {
            var $clone = $.galleryUtility.gallery.filter('[index=' + currIndex + ']').clone().attr({
                'index': lastIndex + 1,
                'prev': lastIndex,
                'next': lastIndex + 2
            }).removeClass($.galleryUtility.Options.startClass);
            $.galleryUtility.gallery.filter('[index=' + (lastIndex) + ']').after($clone);
            $.galleryUtility.gallery = $.galleryUtility.gallery.add('img[index=' + (lastIndex + 1) + ']');
            lastIndex++;
            currIndex++;
            gallerySize++;
        }
        $.galleryUtility.gallery.filter('[index=' + lastIndex + ']').attr('next', 0);
        $.galleryUtility.gallery.filter('[index=0]').attr('prev', lastIndex);

        //set images
        $.galleryUtility.setCenter($.galleryUtility.gallery.filter('.' + $.galleryUtility.Options.startClass).show());
        $.galleryUtility.setLeft($.galleryUtility.gallery.filter('[index=' + $.galleryUtility.centerImage.image.attr('prev') + ']').show());
        $.galleryUtility.setRight($.galleryUtility.gallery.filter('[index=' + $.galleryUtility.centerImage.image.attr('next') + ']').show());
        $.galleryUtility.setLeftStorage($.galleryUtility.gallery.filter('[index=' + $.galleryUtility.leftImage.image.attr('prev') + ']'));
        $.galleryUtility.setRightStorage($.galleryUtility.gallery.filter('[index=' + $.galleryUtility.rightImage.image.attr('next') + ']'));

        //bind events
       // $.galleryUtility.leftImage.image.one('click', $.galleryUtility.slideRight);
       // $.galleryUtility.rightImage.image.one('click', $.galleryUtility.slideLeft);
	   //console.log($.galleryUtility.centerImage.image.attr('id'));
        //$.galleryUtility.centerImage.image.one('click', $.galleryUtility.zoomIn);
		/*$.galleryUtility.centerImage.image.one('click', function() {
			window.open('http://www.twitter.com/'+$.galleryUtility.centerImage.image.attr('id'));
			}
		);*/


        $(window).resize(function() {
            $.galleryUtility.definePositions();
            $.galleryUtility.setCenter($.galleryUtility.centerImage.image);
            $.galleryUtility.setLeft($.galleryUtility.leftImage.image);
            $.galleryUtility.setRight($.galleryUtility.rightImage.image);
            $.galleryUtility.setLeftStorage($.galleryUtility.leftImageStorage.image);
            $.galleryUtility.setRightStorage($.galleryUtility.rightImageStorage.image);
        });

		$.galleryUtility.centerImage.image.css('cursor', '');

        //return the objects (for chaining purposes)
        return $(this);
    };

    $.galleryUtility.slideRight = function() {


		var z = $.galleryUtility.leftImageStorage.image.css('zIndex');

		$.galleryUtility.leftImage.image.css('zIndex', parseInt(z) + 1);

        var liLeft = $.galleryUtility.leftImage.left($.galleryUtility.leftImageStorage.image, $.galleryUtility.leftImage.image);
        var riLeft = $.galleryUtility.rightImage.left($.galleryUtility.leftImage.image);
        var risLeft = $.galleryUtility.rightImageStorage.left($.galleryUtility.centerImage.image);
        if ($.galleryUtility.leftImageStorage.image.attr('layout') === 'landscape') {

			$.galleryUtility.leftImageStorage.image.show();
			$.galleryUtility.leftImageStorage.image.css({opacity: 0});
            $.galleryUtility.leftImageStorage.image.animate({
                'top': $.galleryUtility.leftImage.Ltop,
                'left': liLeft,
                'height': $.galleryUtility.leftImage.Lheight,
                'width': $.galleryUtility.leftImage.Lwidth
            },
			1,
			'linear',
			function() {
                //$(this).one('', $.galleryUtility.slideRight);
				$(this).animate({
					'opacity' : 1
				},
				'slow',
				'linear'
				);
            }

			);
        } else {
            $.galleryUtility.leftImageStorage.image.animate({
                'top': $.galleryUtility.leftImage.Ptop,
                'left': liLeft,
                'height': $.galleryUtility.leftImage.Pheight,
                'width': $.galleryUtility.leftImage.Pwidth,
                'opacity': 'show'
            },
            $.galleryUtility.Options.slideSpeed, 'linear', function() {
                //$(this).one('', $.galleryUtility.slideRight);
            });
        }
        if ($.galleryUtility.leftImage.image.attr('layout') === 'landscape') {
            $.galleryUtility.leftImage.image.unbind().animate({
                'top': $.galleryUtility.centerImage.Ltop,
                'left': $.galleryUtility.centerImage.Lleft,
                'height': $.galleryUtility.centerImage.Lheight,
                'width': $.galleryUtility.centerImage.Lwidth
            },
            $.galleryUtility.Options.slideSpeed, 'linear', function() {
                //$(this).one('', $.galleryUtility.zoomIn);
				/*$(this).one('click', function() {
			   			window.open('http://www.twitter.com/'+$.galleryUtility.centerImage.image.attr('id'));
					}
				);*/
            });
        } else {
            $.galleryUtility.leftImage.image.unbind().animate({
                'top': $.galleryUtility.centerImage.Ptop,
                'left': $.galleryUtility.centerImage.Pleft,
                'height': $.galleryUtility.centerImage.Pheight,
                'width': $.galleryUtility.centerImage.Pwidth
            },
            $.galleryUtility.Options.slideSpeed, 'linear', function() {
                //$(this).one('click', $.galleryUtility.zoomIn);
				/*$(this).one('click', function() {
			   			window.open('http://www.twitter.com/'+$.galleryUtility.centerImage.image.attr('id'));
					}
				);*/
            });
        }
        if ($.galleryUtility.centerImage.image.attr('layout') === 'landscape') {
            $.galleryUtility.centerImage.image.unbind().animate({
                'top': $.galleryUtility.rightImage.Ltop,
                'left': riLeft,
                'height': $.galleryUtility.rightImage.Lheight,
                'width': $.galleryUtility.rightImage.Lwidth
            },
            $.galleryUtility.Options.slideSpeed, 'linear', function() {
                //$(this).one('click', $.galleryUtility.slideLeft);
            });
        } else {
            $.galleryUtility.centerImage.image.unbind().animate({
                'top': $.galleryUtility.rightImage.Ptop,
                'left': riLeft,
                'height': $.galleryUtility.rightImage.Pheight,
                'width': $.galleryUtility.rightImage.Pwidth
            },
            $.galleryUtility.Options.slideSpeed, 'linear', function() {
                //$(this).one('click', $.galleryUtility.slideLeft);
            });
        }
        if ($.galleryUtility.rightImage.image.attr('layout') === 'landscape') {
           /*
			$.galleryUtility.rightImage.image.unbind().animate({
                'top': $.galleryUtility.rightImageStorage.Ltop,
                'left': risLeft,
                'height': $.galleryUtility.rightImageStorage.Lheight,
                'width': $.galleryUtility.rightImageStorage.Lwidth,
                'opacity': 'hide'
            },

            $.galleryUtility.Options.slideSpeed,
			'linear'
			);
		*/
			var ciz = $.galleryUtility.centerImage.image.css('zIndex');

			$.galleryUtility.rightImage.image.css('zIndex', parseInt(ciz)-1);

			$.galleryUtility.rightImage.image.unbind().animate({
                'opacity': 'hide'
			},
			$.galleryUtility.Options.slideSpeed,
			'linear'
			);
        } else {
            $.galleryUtility.rightImage.image.unbind().animate({
                'top': $.galleryUtility.rightImageStorage.Ptop,
                'left': risLeft,
                'height': $.galleryUtility.rightImageStorage.Pheight,
                'width': $.galleryUtility.rightImageStorage.Pwidth,
                'opacity': 'hide'
            },
            $.galleryUtility.Options.slideSpeed, 'linear');
        }
        $.galleryUtility.rightImageStorage.image = $.galleryUtility.rightImage.image;
        $.galleryUtility.rightImage.image = $.galleryUtility.centerImage.image;
        $.galleryUtility.centerImage.image = $.galleryUtility.leftImage.image;
        $.galleryUtility.leftImage.image = $.galleryUtility.leftImageStorage.image;
        $.galleryUtility.setLeftStorage($.galleryUtility.gallery.filter('[index=' + $.galleryUtility.leftImageStorage.image.attr('prev') + ']'));

		$.galleryUtility.centerImage.image.css('cursor', '');
		$.galleryUtility.leftImage.image.css('cursor', '');
		$.galleryUtility.rightImage.image.css('cursor', '');

    };

    $.galleryUtility.slideLeft = function() {


		var z = $.galleryUtility.rightImageStorage.image.css('zIndex');

		$.galleryUtility.rightImage.image.css('zIndex', parseInt(z) + 1);

        var riLeft = $.galleryUtility.rightImage.left($.galleryUtility.rightImage.image);
        var liLeft = $.galleryUtility.leftImage.left($.galleryUtility.centerImage.image, $.galleryUtility.rightImage.image);
        var lisLeft = $.galleryUtility.leftImageStorage.left($.galleryUtility.leftImage.image, $.galleryUtility.centerImage.image, $.galleryUtility.rightImage.image);
        if ($.galleryUtility.rightImageStorage.image.attr('layout') === 'landscape') {

			$.galleryUtility.rightImageStorage.image.show();
			$.galleryUtility.rightImageStorage.image.css({opacity: 0});
            $.galleryUtility.rightImageStorage.image.animate({
                'top': $.galleryUtility.rightImage.Ltop,
                'left': riLeft,
                'height': $.galleryUtility.rightImage.Lheight,
                'width': $.galleryUtility.rightImage.Lwidth
            },
            1,
			'linear',
			function() {
                //$(this).one('click', $.galleryUtility.slideLeft);
				$(this).animate({
					'opacity' : 1
				},
				'slow',
				'linear'
				);
            });
        } else {
            $.galleryUtility.rightImageStorage.image.animate({
                'top': $.galleryUtility.rightImage.Ptop,
                'left': riLeft,
                'height': $.galleryUtility.rightImage.Pheight,
                'width': $.galleryUtility.rightImage.Pwidth,
                'opacity': 'show'
            },
            $.galleryUtility.Options.slideSpeed, 'linear', function() {
                //$(this).one('click', $.galleryUtility.slideLeft);
            });
        }
        if ($.galleryUtility.rightImage.image.attr('layout') === 'landscape') {
            $.galleryUtility.rightImage.image.unbind().animate({
                'top': $.galleryUtility.centerImage.Ltop,
                'left': $.galleryUtility.centerImage.Lleft,
                'height': $.galleryUtility.centerImage.Lheight,
                'width': $.galleryUtility.centerImage.Lwidth
            },
            $.galleryUtility.Options.slideSpeed, 'linear', function() {
				/*$(this).one('click', function() {
			   			window.open('http://www.twitter.com/'+$.galleryUtility.centerImage.image.attr('id'));
					}
				);*/
                //$(this).one('click', $.galleryUtility.zoomIn);
            });
        } else {
            $.galleryUtility.rightImage.image.unbind().animate({
                'top': $.galleryUtility.centerImage.Ptop,
                'left': $.galleryUtility.centerImage.Pleft,
                'height': $.galleryUtility.centerImage.Pheight,
                'width': $.galleryUtility.centerImage.Pwidth
            },
            $.galleryUtility.Options.slideSpeed, 'linear', function() {
    			/*$(this).one('click', function() {
			   			window.open('http://www.twitter.com/'+$.galleryUtility.centerImage.image.attr('id'));
					}
				);*/
                //$(this).one('click', $.galleryUtility.zoomIn);
            });
        }
        if ($.galleryUtility.centerImage.image.attr('layout') === 'landscape') {
            $.galleryUtility.centerImage.image.unbind().animate({
                'top': $.galleryUtility.leftImage.Ltop,
                'left': liLeft,
                'height': $.galleryUtility.leftImage.Lheight,
                'width': $.galleryUtility.leftImage.Lwidth
            },
            $.galleryUtility.Options.slideSpeed, 'linear', function() {
                //$(this).one('click', $.galleryUtility.slideRight);
            });
        } else {
            $.galleryUtility.centerImage.image.unbind().animate({
                'top': $.galleryUtility.leftImage.Ptop,
                'left': liLeft,
                'height': $.galleryUtility.leftImage.Pheight,
                'width': $.galleryUtility.leftImage.Pwidth
            },
            $.galleryUtility.Options.slideSpeed, 'linear', function() {
                //$(this).one('click', $.galleryUtility.slideRight);
            });
        }
        if ($.galleryUtility.leftImage.image.attr('layout') === 'landscape') {
            /*
			$.galleryUtility.leftImage.image.unbind().animate({
                'top': $.galleryUtility.leftImageStorage.Ltop,
                'left': lisLeft,
                'height': $.galleryUtility.leftImageStorage.Lheight,
                'width': $.galleryUtility.leftImageStorage.Lwidth, 'opacity': 'hide'
            },
            $.galleryUtility.Options.slideSpeed,
			'linear');
			*/
			var ciz = $.galleryUtility.centerImage.image.css('zIndex');

			$.galleryUtility.leftImage.image.css('zIndex', parseInt(ciz)-1);

			$.galleryUtility.leftImage.image.unbind().animate({
				'opacity': 'hide'
			},
            $.galleryUtility.Options.slideSpeed,
			'linear'
			);

        } else {
            $.galleryUtility.leftImage.image.unbind().animate({
                'top': $.galleryUtility.leftImageStorage.Ptop,
                'left': lisLeft,
                'height': $.galleryUtility.leftImageStorage.Pheight,
                'width': $.galleryUtility.leftImageStorage.Pwidth,
                'opacity': 'hide'
            },
            $.galleryUtility.Options.slideSpeed, 'linear');
        }
        $.galleryUtility.leftImageStorage.image = $.galleryUtility.leftImage.image;
        $.galleryUtility.leftImage.image = $.galleryUtility.centerImage.image;
        $.galleryUtility.centerImage.image = $.galleryUtility.rightImage.image;
        $.galleryUtility.rightImage.image = $.galleryUtility.rightImageStorage.image;
        $.galleryUtility.setRightStorage($.galleryUtility.gallery.filter('[index=' + $.galleryUtility.rightImageStorage.image.attr('next') + ']'));

		$.galleryUtility.centerImage.image.css('cursor', '');
		$.galleryUtility.leftImage.image.css('cursor', '');
		$.galleryUtility.rightImage.image.css('cursor', '');

    };

    $.galleryUtility.zoomIn = function() {
        $.galleryUtility.gallery.unbind();
        $.galleryUtility.leftImage.image.add($.galleryUtility.rightImage.image).css('cursor', 'auto');
        if ($.galleryUtility.centerImage.image.attr('layout') === 'landscape') {
            $.galleryUtility.centerImage.image.css('z-index', '99').animate({
                'top': $.galleryUtility.zoomImage.Ltop,
                'left': $.galleryUtility.zoomImage.Lleft,
                'height': $.galleryUtility.zoomImage.Lheight,
                'width': $.galleryUtility.zoomImage.Lwidth
            },
            $.galleryUtility.Options.zoomSpeed, 'linear', function() {
                //$.galleryUtility.centerImage.image.one('click', $.galleryUtility.zoomOut);
                if ($.galleryUtility.Options.useCaptions) {
                    $('#' + $.galleryUtility.Options.captionDownID).css({
                        'height': 0,
                        'top': $.galleryUtility.zoomImage.Ltop + parseInt($.galleryUtility.centerImage.image.css('borderTopWidth'), 10),
                        'left': $.galleryUtility.zoomImage.Lleft + ($.galleryUtility.zoomImage.Lwidth - $.galleryUtility.Options.captionDownWidth) + parseInt($.galleryUtility.centerImage.image.css('borderLeftWidth'), 10),
                        'z-index': 100,
                        'position': 'absolute'
                    }).show().animate({ 'height': $.galleryUtility.Options.captionDownHeight }, 'fast', 'linear', function() {
                        $('#' + $.galleryUtility.Options.captionDownID).one('click', $.galleryUtility.LcaptionDown);
                    });
                }
            });
        } else {
            $.galleryUtility.centerImage.image.css('z-index', '99').animate({
                'top': $.galleryUtility.zoomImage.Ptop,
                'left': $.galleryUtility.zoomImage.Pleft,
                'height': $.galleryUtility.zoomImage.Pheight,
                'width': $.galleryUtility.zoomImage.Pwidth
            },
            $.galleryUtility.Options.zoomSpeed, 'linear', function() {
                //$.galleryUtility.centerImage.image.one('click', $.galleryUtility.zoomOut);
                if ($.galleryUtility.Options.useCaptions) {
                    $('#' + $.galleryUtility.Options.captionDownID).css({
                        'height': 0,
                        'top': $.galleryUtility.zoomImage.Ptop + parseInt($.galleryUtility.centerImage.image.css('borderTopWidth'), 10),
                        'left': $.galleryUtility.zoomImage.Pleft + ($.galleryUtility.zoomImage.Pwidth - $.galleryUtility.Options.captionDownWidth) + parseInt($.galleryUtility.centerImage.image.css('borderLeftWidth'), 10),
                        'z-index': 100,
                        'position': 'absolute'
                    }).show().animate({ 'height': $.galleryUtility.Options.captionDownHeight }, 'fast', 'linear', function() {
                        $('#' + $.galleryUtility.Options.captionDownID).one('click', $.galleryUtility.PcaptionDown);
                    });
                }
            });
        }
    };

    $.galleryUtility.LcaptionDown = function() {
        $.galleryUtility.centerImage.image.unbind();
        $('body').append('<span id="' + $.galleryUtility.Options.captionID + '" style="' + $.galleryUtility.Options.captionStyle + '" class="' + $.galleryUtility.Options.captionClass + '">' + $.galleryUtility.centerImage.image.attr($.galleryUtility.Options.captionTextAttribute) + '</span>');
        $('#' + $.galleryUtility.Options.captionID).css({
            'top': $.galleryUtility.zoomImage.Ltop + parseInt($.galleryUtility.centerImage.image.css('borderTopWidth'), 10),
            'left': $.galleryUtility.zoomImage.Lleft + parseInt($.galleryUtility.centerImage.image.css('borderLeftWidth'), 10),
            'width': $.galleryUtility.zoomImage.Lwidth,
            'height': 0,
            'position': 'absolute',
            'z-index': '100'
        }).animate({ 'height': Math.round($.galleryUtility.Options.captionHeight($.galleryUtility.zoomImage.Lheight)) }, 'normal', 'linear');
        $('#' + $.galleryUtility.Options.captionDownID).animate({
            'height': 0,
            'top': $.galleryUtility.zoomImage.Ltop + (Math.round($.galleryUtility.Options.captionHeight($.galleryUtility.zoomImage.Lheight))) + parseInt($.galleryUtility.centerImage.image.css('borderTopWidth'), 10)
        }, 'normal', 'linear', function() { $('#' + $.galleryUtility.Options.captionDownID).hide(); });
        $('#' + $.galleryUtility.Options.captionUpID).css({
            'top': $.galleryUtility.zoomImage.Ltop + $.galleryUtility.Options.captionDownHeight + parseInt($.galleryUtility.centerImage.image.css('borderTopWidth'), 10),
            'left': $.galleryUtility.zoomImage.Lleft + ($.galleryUtility.zoomImage.Lwidth - $.galleryUtility.Options.captionUpWidth) + parseInt($.galleryUtility.centerImage.image.css('borderLeftWidth'), 10),
            'height': 0,
            'position': 'absolute',
            'z-index': '100'
        }).show().animate({
            'top': $.galleryUtility.zoomImage.Ltop + (Math.round($.galleryUtility.Options.captionHeight($.galleryUtility.zoomImage.Lheight))) + parseInt($.galleryUtility.centerImage.image.css('borderTopWidth'), 10),
            'height': $.galleryUtility.Options.captionUpHeight
        }, 'normal', 'linear', function() {
            $('#' + $.galleryUtility.Options.captionUpID).one('click', function() {
                $.galleryUtility.LcaptionUp(false);
            });
            $.galleryUtility.centerImage.image.one('click', function() {
                $.galleryUtility.LcaptionUp(true);
            });
        });
    };

    $.galleryUtility.PcaptionDown = function() {
        $.galleryUtility.centerImage.image.unbind();
        $('body').append('<span id="' + $.galleryUtility.Options.captionID + '" style="' + $.galleryUtility.Options.captionStyle + '" class="' + $.galleryUtility.Options.captionClass + '">' + $.galleryUtility.centerImage.image.attr($.galleryUtility.Options.captionTextAttribute) + '</span>');
        $('#' + $.galleryUtility.Options.captionID).css({
            'top': $.galleryUtility.zoomImage.Ptop + parseInt($.galleryUtility.centerImage.image.css('borderTopWidth'), 10),
            'left': $.galleryUtility.zoomImage.Pleft + parseInt($.galleryUtility.centerImage.image.css('borderLeftWidth'), 10),
            'width': $.galleryUtility.zoomImage.Pwidth,
            'height': 0,
            'position': 'absolute',
            'z-index': '100'
        }).animate({ 'height': Math.round($.galleryUtility.Options.captionHeight($.galleryUtility.zoomImage.Pheight)) }, 'normal', 'linear');
        $('#' + $.galleryUtility.Options.captionDownID).animate({
            'height': 0,
            'top': $.galleryUtility.zoomImage.Ptop + (Math.round($.galleryUtility.Options.captionHeight($.galleryUtility.zoomImage.Pheight))) + parseInt($.galleryUtility.centerImage.image.css('borderTopWidth'), 10)
        }, 'normal', 'linear', function() { $('#' + $.galleryUtility.Options.captionDownID).hide(); });
        $('#' + $.galleryUtility.Options.captionUpID).css({
            'top': $.galleryUtility.zoomImage.Ptop + $.galleryUtility.Options.captionDownHeight + parseInt($.galleryUtility.centerImage.image.css('borderTopWidth'), 10),
            'left': $.galleryUtility.zoomImage.Pleft + ($.galleryUtility.zoomImage.Pwidth - $.galleryUtility.Options.captionUpWidth) + parseInt($.galleryUtility.centerImage.image.css('borderLeftWidth'), 10),
            'height': 0,
            'position': 'absolute',
            'z-index': '100'
        }).show().animate({
            'top': $.galleryUtility.zoomImage.Ptop + (Math.round($.galleryUtility.Options.captionHeight($.galleryUtility.zoomImage.Pheight))) + parseInt($.galleryUtility.centerImage.image.css('borderTopWidth'), 10),
            'height': $.galleryUtility.Options.captionUpHeight
        }, 'normal', 'linear', function() {
            $('#' + $.galleryUtility.Options.captionUpID).one('click', function() {
                $.galleryUtility.PcaptionUp(false);
            });
            $.galleryUtility.centerImage.image.one('click', function() {
                $.galleryUtility.PcaptionUp(true);
            });
        });
    };

    $.galleryUtility.LcaptionUp = function(unzoom) {
        $('#' + $.galleryUtility.Options.captionID).animate({ 'height': 0 }, 'normal', 'linear', function() { $('#' + $.galleryUtility.Options.captionID).remove(); });
        $('#' + $.galleryUtility.Options.captionUpID).animate({
            'top': $.galleryUtility.zoomImage.Ltop + $.galleryUtility.Options.captionDownHeight + parseInt($.galleryUtility.centerImage.image.css('borderTopWidth'), 10),
            'height': 0
        }, 'normal', 'linear', function() {
            $('#' + $.galleryUtility.Options.captionUpID).hide();
        });
        $('#' + $.galleryUtility.Options.captionDownID).show().animate({
            'height': $.galleryUtility.Options.captionDownHeight,
            'top': $.galleryUtility.zoomImage.Ltop + parseInt($.galleryUtility.centerImage.image.css('borderTopWidth'), 10)
        }, 'normal', 'linear', function() {
            if (unzoom) {
                $('#' + $.galleryUtility.Options.captionUpID).unbind();
                $.galleryUtility.zoomOut();
            } else {
                $('#' + $.galleryUtility.Options.captionDownID).one('click', $.galleryUtility.LcaptionDown);
                $.galleryUtility.centerImage.image.one('click', $.galleryUtility.zoomOut);
            }
        });
    };

    $.galleryUtility.PcaptionUp = function(unzoom) {
        $('#' + $.galleryUtility.Options.captionID).animate({ 'height': 0 }, 'normal', 'linear', function() { $('#' + $.galleryUtility.Options.captionID).remove(); });
        $('#' + $.galleryUtility.Options.captionUpID).animate({
            'top': $.galleryUtility.zoomImage.Ptop + $.galleryUtility.Options.captionDownHeight + parseInt($.galleryUtility.centerImage.image.css('borderTopWidth'), 10),
            'height': 0
        }, 'normal', 'linear', function() {
            $('#' + $.galleryUtility.Options.captionUpID).hide();
        });
        $('#' + $.galleryUtility.Options.captionDownID).show().animate({
            'height': $.galleryUtility.Options.captionDownHeight,
            'top': $.galleryUtility.zoomImage.Ptop + parseInt($.galleryUtility.centerImage.image.css('borderTopWidth'), 10)
        }, 'normal', 'linear', function() {
            if (unzoom) {
                $('#' + $.galleryUtility.Options.captionUpID).unbind();
                $.galleryUtility.zoomOut();
            } else {
                $('#' + $.galleryUtility.Options.captionDownID).one('click', $.galleryUtility.PcaptionDown);
                $.galleryUtility.centerImage.image.one('click', $.galleryUtility.zoomOut);
            }
        });
    };

    $.galleryUtility.zoomOut = function() {
        if ($.galleryUtility.Options.useCaptions) {
            $('#' + $.galleryUtility.Options.captionDownID).animate({ 'height': 0 }, 50, 'linear', $.galleryUtility.zoomOutBody).unbind();
        } else {
            $.galleryUtility.zoomOutBody();
        }
    };

    $.galleryUtility.zoomOutBody = function() {
        //$.galleryUtility.leftImage.image.add($.galleryUtility.rightImage.image).css('cursor', 'pointer');
		$.galleryUtility.leftImage.image.add($.galleryUtility.rightImage.image).css('cursor', '');
        if ($.galleryUtility.centerImage.image.attr('layout') === 'landscape') {
            $.galleryUtility.centerImage.image.animate({
                'top': $.galleryUtility.centerImage.Ltop,
                'left': $.galleryUtility.centerImage.Lleft,
                'height': $.galleryUtility.centerImage.Lheight,
                'width': $.galleryUtility.centerImage.Lwidth
            },
            $.galleryUtility.Options.zoomSpeed, 'linear', function() {
                //$(this).css('z-index', '25').one('click', $.galleryUtility.zoomIn);
                //$.galleryUtility.leftImage.image.one('click', $.galleryUtility.slideRight);
                //$.galleryUtility.rightImage.image.one('click', $.galleryUtility.slideLeft);
            });
        } else {
            $.galleryUtility.centerImage.image.animate({
                'top': $.galleryUtility.centerImage.Ptop,
                'left': $.galleryUtility.centerImage.Pleft,
                'height': $.galleryUtility.centerImage.Pheight,
                'width': $.galleryUtility.centerImage.Pwidth
            },
            $.galleryUtility.Options.zoomSpeed, 'linear', function() {
                $(this).css('z-index', '0').one('click', $.galleryUtility.zoomIn);
                $.galleryUtility.leftImage.image.one('click', $.galleryUtility.slideRight);
                $.galleryUtility.rightImage.image.one('click', $.galleryUtility.slideLeft);
            });
        }
    };

    $.galleryUtility.setRightStorage = function(image) {
        $.galleryUtility.rightImageStorage.image = image;
        if ($.galleryUtility.rightImageStorage.image.attr('layout') === 'landscape') {
            $.galleryUtility.rightImageStorage.image.hide().css({
                'top': $.galleryUtility.rightImageStorage.Ltop,
                'height': $.galleryUtility.rightImageStorage.Lheight,
                'width': $.galleryUtility.rightImageStorage.Lwidth
            });
        } else {
            $.galleryUtility.rightImageStorage.image.hide().css({
                'top': $.galleryUtility.rightImageStorage.Ptop,
                'height': $.galleryUtility.rightImageStorage.Pheight,
                'width': $.galleryUtility.rightImageStorage.Pwidth
            });
        }
        $.galleryUtility.rightImageStorage.image.css('left', $.galleryUtility.rightImageStorage.left($.galleryUtility.rightImage.image));
    };

    $.galleryUtility.setLeftStorage = function(image) {
        $.galleryUtility.leftImageStorage.image = image;
        if ($.galleryUtility.leftImageStorage.image.attr('layout') === 'landscape') {
            $.galleryUtility.leftImageStorage.image.hide().css({
                'top': $.galleryUtility.leftImageStorage.Ltop,
                'height': $.galleryUtility.leftImageStorage.Lheight,
                'width': $.galleryUtility.leftImageStorage.Lwidth
            });
        } else {
            $.galleryUtility.leftImageStorage.image.hide().css({
                'top': $.galleryUtility.leftImageStorage.Ptop,
                'height': $.galleryUtility.leftImageStorage.Pheight,
                'width': $.galleryUtility.leftImageStorage.Pwidth
            });
        }
        $.galleryUtility.leftImageStorage.image
             .css('left', $.galleryUtility.leftImageStorage.left($.galleryUtility.leftImageStorage.image, $.galleryUtility.leftImage.image, $.galleryUtility.centerImage.image));
    };

    $.galleryUtility.setCenter = function(image) {
        $.galleryUtility.centerImage.image = image;
        if ($.galleryUtility.centerImage.image.attr('layout') === 'landscape') {
            $.galleryUtility.centerImage.image.css({
                'top': $.galleryUtility.centerImage.Ltop,
                'left': $.galleryUtility.centerImage.Lleft,
                'height': $.galleryUtility.centerImage.Lheight,
                'width': $.galleryUtility.centerImage.Lwidth
            });
        } else {
            $.galleryUtility.centerImage.image.css({
                'top': $.galleryUtility.centerImage.Ptop,
                'left': $.galleryUtility.centerImage.Pleft,
                'height': $.galleryUtility.centerImage.Pheight,
                'width': $.galleryUtility.centerImage.Pwidth
            });
        }
    };

    $.galleryUtility.setRight = function(image) {
        $.galleryUtility.rightImage.image = image;
        if ($.galleryUtility.rightImage.image.attr('layout') === 'landscape') {
            $.galleryUtility.rightImage.image.css({
                'top': $.galleryUtility.rightImage.Ltop,
                'height': $.galleryUtility.rightImage.Lheight,
                'width': $.galleryUtility.rightImage.Lwidth
            });
        } else {
            $.galleryUtility.rightImage.image.css({
                'top': $.galleryUtility.rightImage.Ptop,
                'height': $.galleryUtility.rightImage.Pheight,
                'width': $.galleryUtility.rightImage.Pwidth
            });
        }
        $.galleryUtility.rightImage.image.css('left', $.galleryUtility.rightImage.left($.galleryUtility.centerImage.image));
    };

    $.galleryUtility.setLeft = function(image) {
        $.galleryUtility.leftImage.image = image;
        if ($.galleryUtility.leftImage.image.attr('layout') === 'landscape') {
            $.galleryUtility.leftImage.image.css({
                'top': $.galleryUtility.leftImage.Ltop,
                'height': $.galleryUtility.leftImage.Lheight,
                'width': $.galleryUtility.leftImage.Lwidth
            });
        } else {
            $.galleryUtility.leftImage.image.css({
                'top': $.galleryUtility.leftImage.Ptop,
                'height': $.galleryUtility.leftImage.Pheight,
                'width': $.galleryUtility.leftImage.Pwidth
            });
        }
        $.galleryUtility.leftImage.image.css('left', $.galleryUtility.leftImage.left($.galleryUtility.leftImage.image, $.galleryUtility.centerImage.image));
    };

    $.galleryUtility.definePositions = function() {

        $.galleryUtility.centerImage.Lheight = Math.round($.galleryUtility.Options.Lheight);
        $.galleryUtility.centerImage.Lwidth = Math.round($.galleryUtility.Options.Lwidth);

		$.galleryUtility.centerImage.Ltop = 299;

		var width = $(window).width();

		var pos = ((width - 1218) * .07) + 371;

		$.galleryUtility.centerImage.Lleft = pos;

		resize_flag = 1;

        $.galleryUtility.centerImage.Pheight = Math.round($.galleryUtility.Options.Pheight);
        $.galleryUtility.centerImage.Pwidth = Math.round($.galleryUtility.Options.Pwidth);
       // $.galleryUtility.centerImage.Ptop = Math.round(($(window).height() / 2) - ($.galleryUtility.centerImage.Pheight / 2));
        $.galleryUtility.centerImage.Ptop = 0;

        // $.galleryUtility.centerImage.Pleft = Math.round(($(window).width() / 2) - ($.galleryUtility.centerImage.Pwidth / 2));
        $.galleryUtility.centerImage.Pleft = pos + 300;

        $.galleryUtility.zoomImage.Lheight = Math.round($.galleryUtility.Options.Lzoom($.galleryUtility.centerImage.Lheight));
        $.galleryUtility.zoomImage.Lwidth = Math.round($.galleryUtility.Options.Lzoom($.galleryUtility.centerImage.Lwidth));

       // $.galleryUtility.zoomImage.Ltop = Math.round(($(window).height() / 2) - ($.galleryUtility.zoomImage.Lheight / 2));
        $.galleryUtility.zoomImage.Ltop = 150;

        // $.galleryUtility.zoomImage.Lleft = Math.round(($(window).width() / 2) - ($.galleryUtility.zoomImage.Lwidth / 2));
        $.galleryUtility.zoomImage.Lleft = pos - (340 / 2);

        $.galleryUtility.zoomImage.Pheight = Math.round($.galleryUtility.Options.Pzoom($.galleryUtility.centerImage.Pheight));
        $.galleryUtility.zoomImage.Pwidth = Math.round($.galleryUtility.Options.Pzoom($.galleryUtility.centerImage.Pwidth));
        //$.galleryUtility.zoomImage.Ptop = Math.round(($(window).height() / 2) - ($.galleryUtility.zoomImage.Pheight / 2));
        $.galleryUtility.zoomImage.Ptop = (200 / 2) - ($.galleryUtility.zoomImage.Pheight / 2);
        //$.galleryUtility.zoomImage.Pleft = Math.round(($(window).width() / 2) - ($.galleryUtility.zoomImage.Pwidth / 2));
        $.galleryUtility.zoomImage.Pleft = (710 / 2) - ($.galleryUtility.zoomImage.Pwidth / 2);
        $.galleryUtility.leftImage.Lheight = Math.round($.galleryUtility.Options.Lshrink($.galleryUtility.centerImage.Lheight));
        $.galleryUtility.leftImage.Lwidth = Math.round($.galleryUtility.Options.Lshrink($.galleryUtility.centerImage.Lwidth));
        $.galleryUtility.leftImage.Ltop = Math.round($.galleryUtility.centerImage.Ltop + (($.galleryUtility.centerImage.Lheight - $.galleryUtility.leftImage.Lheight) / 2));
        $.galleryUtility.leftImage.left = function(left, center) {
            if (center.attr('layout') === 'landscape') {
                if (left.attr('layout') === 'landscape') {
                    return Math.round($.galleryUtility.centerImage.Lleft - ($.galleryUtility.leftImage.Lwidth + $.galleryUtility.Options.gutterWidth));
                } else {
                    return Math.round($.galleryUtility.centerImage.Lleft - ($.galleryUtility.leftImage.Pwidth + $.galleryUtility.Options.gutterWidth));
                }
            } else {
                if (left.attr('layout') === 'landscape') {
                    return Math.round($.galleryUtility.centerImage.Pleft - ($.galleryUtility.leftImage.Lwidth + $.galleryUtility.Options.gutterWidth));
                } else {
                    return Math.round($.galleryUtility.centerImage.Pleft - ($.galleryUtility.leftImage.Pwidth + $.galleryUtility.Options.gutterWidth));
                }
            }
        };
        $.galleryUtility.leftImage.Pheight = Math.round($.galleryUtility.Options.Pshrink($.galleryUtility.centerImage.Pheight));
        $.galleryUtility.leftImage.Pwidth = Math.round($.galleryUtility.Options.Pshrink($.galleryUtility.centerImage.Pwidth));
        $.galleryUtility.leftImage.Ptop = Math.round($.galleryUtility.centerImage.Ptop + (($.galleryUtility.centerImage.Pheight - $.galleryUtility.leftImage.Pheight) / 2));
        $.galleryUtility.rightImage.Lheight = Math.round($.galleryUtility.Options.Lshrink($.galleryUtility.centerImage.Lheight));
        $.galleryUtility.rightImage.Lwidth = Math.round($.galleryUtility.Options.Lshrink($.galleryUtility.centerImage.Lwidth));
        $.galleryUtility.rightImage.Ltop = Math.round($.galleryUtility.centerImage.Ltop + (($.galleryUtility.centerImage.Lheight - $.galleryUtility.rightImage.Lheight) / 2));
        $.galleryUtility.rightImage.left = function(center) {
            if (center.attr('layout') === 'landscape') {
                return Math.round($.galleryUtility.centerImage.Lleft + ($.galleryUtility.centerImage.Lwidth + $.galleryUtility.Options.gutterWidth));
            } else {
                return Math.round($.galleryUtility.centerImage.Pleft + ($.galleryUtility.centerImage.Pwidth + $.galleryUtility.Options.gutterWidth));
            }
        };
        $.galleryUtility.rightImage.Pheight = Math.round($.galleryUtility.Options.Pshrink($.galleryUtility.centerImage.Pheight));
        $.galleryUtility.rightImage.Pwidth = Math.round($.galleryUtility.Options.Pshrink($.galleryUtility.centerImage.Pwidth));
        $.galleryUtility.rightImage.Ptop = Math.round($.galleryUtility.centerImage.Ptop + (($.galleryUtility.centerImage.Pheight - $.galleryUtility.leftImage.Pheight) / 2));
        $.galleryUtility.leftImageStorage.Lheight = Math.round($.galleryUtility.Options.Lshrink($.galleryUtility.leftImage.Lheight));
        $.galleryUtility.leftImageStorage.Lwidth = Math.round($.galleryUtility.Options.Lshrink($.galleryUtility.leftImage.Lwidth));
        $.galleryUtility.leftImageStorage.Ltop = Math.round($.galleryUtility.leftImage.Ltop + (($.galleryUtility.leftImage.Lheight - $.galleryUtility.leftImageStorage.Lheight) / 2));
        $.galleryUtility.leftImageStorage.left = function(leftStorage, left, center) {
            if (leftStorage.attr('layout') === 'landscape') {
                return Math.round($.galleryUtility.leftImage.left(left, center) - ($.galleryUtility.leftImageStorage.Lwidth + $.galleryUtility.Options.gutterWidth));
            } else {
                return Math.round($.galleryUtility.leftImage.left(left, center) - ($.galleryUtility.leftImageStorage.Pwidth + $.galleryUtility.Options.gutterWidth));
            }
        };
        $.galleryUtility.leftImageStorage.Pheight = Math.round($.galleryUtility.Options.Pshrink($.galleryUtility.leftImage.Pheight));
        $.galleryUtility.leftImageStorage.Pwidth = Math.round($.galleryUtility.Options.Pshrink($.galleryUtility.leftImage.Pwidth));
        $.galleryUtility.leftImageStorage.Ptop = Math.round($.galleryUtility.leftImage.Ptop + (($.galleryUtility.leftImage.Pheight - $.galleryUtility.leftImageStorage.Pheight) / 2));
        $.galleryUtility.rightImageStorage.Lheight = Math.round($.galleryUtility.Options.Lshrink($.galleryUtility.rightImage.Lheight));
        $.galleryUtility.rightImageStorage.Lwidth = Math.round($.galleryUtility.Options.Lshrink($.galleryUtility.rightImage.Lwidth));
        $.galleryUtility.rightImageStorage.Ltop = Math.round($.galleryUtility.rightImage.Ltop + (($.galleryUtility.rightImage.Lheight - $.galleryUtility.rightImageStorage.Lheight) / 2));
        $.galleryUtility.rightImageStorage.left = function(right) {
            if (right.attr('layout') === 'landscape') {
                return Math.round($.galleryUtility.rightImage.left(right) + ($.galleryUtility.rightImage.Lwidth + $.galleryUtility.Options.gutterWidth));
            } else {
                return Math.round($.galleryUtility.rightImage.left(right) + ($.galleryUtility.rightImage.Pwidth + $.galleryUtility.Options.gutterWidth));
            }
        };
        $.galleryUtility.rightImageStorage.Pheight = Math.round($.galleryUtility.Options.Pshrink($.galleryUtility.rightImage.Pheight));
        $.galleryUtility.rightImageStorage.Pwidth = Math.round($.galleryUtility.Options.Pshrink($.galleryUtility.rightImage.Pwidth));
        $.galleryUtility.rightImageStorage.Ptop = Math.round($.galleryUtility.rightImage.Ptop + (($.galleryUtility.rightImage.Pheight - $.galleryUtility.rightImageStorage.Pheight) / 2));
    };
})(jQuery);