$(function () {
    
    //slideshow
	$('.slideshow').scrollGallery({
		sliderHolder: '>div.slidesHolder',
		slider: '.slides',
		autoRotation:true,
		switchTime:6000,//pause between slides
		duration: 2000,//duration of animation
		pagerLinks:'.slideThumbs ul li',
		btnPrev:'a.prevBtn',
		btnNext:'a.nextBtn',
		pauseButton: 'a.pauseBtn'
    });

    //any paging
    if ($(".paged-grid").length > 0) {
        applyPaging(".paged-grid", "#paged-grid-inner", "#pagination");
    }

    //how hears
    $('#HowHearOtherDiv').hide();
    $('select#HowHear').change(function () {
        if (this.value == "Other") {
            $('#HowHearOtherDiv').fadeIn("slow");
        }
        else {
            $('#HowHearOtherDiv').fadeOut("fast");
        }
    });

});

// scrolling gallery plugin
jQuery.fn.scrollGallery = function (_options) {
	var _options = jQuery.extend({
		slides: '>li',
		activeClass: 'active',
		disabledClass: 'disabled',
		generatePagination: 'div.pg-holder',
		curNum: 'em.scur-num',
		allNum: 'em.sall-num',
		circleSlide: true,
		pauseClass: 'paused',
		pauseOnHover: true,
		autoRotation: false,
		stopAfterClick: false,
		easing: 'swing',
		event: 'click',
		afterInit: false,
		vertical: false,
		step: false,
		textHolder: '.slideTexts'
	}, _options);

	return this.each(function () {
		// gallery options
		var _this = jQuery(this);
		var _sliderHolder = jQuery(_options.sliderHolder, _this);
		var _slider = jQuery(_options.slider, _sliderHolder);
		var _slides = jQuery(_options.slides, _slider);
		var _btnPrev = jQuery(_options.btnPrev, _this);
		var _btnNext = jQuery(_options.btnNext, _this);
		var _pagerLinks = jQuery(_options.pagerLinks, _this);
		var _generatePagination = jQuery(_options.generatePagination, _this);
		var _curNum = jQuery(_options.curNum, _this);
		var _allNum = jQuery(_options.allNum, _this);
		var _pauseButton = jQuery(_options.pauseButton, _this);
		var _pauseOnHover = _options.pauseOnHover;
		var _pauseClass = _options.pauseClass;
		var _autoRotation = _options.autoRotation;
		var _activeClass = _options.activeClass;
		var _disabledClass = _options.disabledClass;
		var _easing = _options.easing;
		var _duration = _options.duration;
		var _fadeDelay = _options.fadeDelay;
		var _switchTime = _options.switchTime;
		var _controlEvent = _options.event;
		var _step = _options.step;
		var _vertical = _options.vertical;
		var _circleSlide = _options.circleSlide;
		var _stopAfterClick = _options.stopAfterClick;
		var _afterInit = _options.afterInit;
		var _textHolder = jQuery(_options.textHolder, _this);

		// gallery init
		if (!_slides.length) return;
		var _currentStep = 0;
		var _sumWidth = 0;
		var _sumHeight = 0;
		var _hover = false;
		var _stepWidth;
		var _stepHeight;
		var _stepCount;
		var _offset;
		var _timer;

		_slides.each(function () {
			_sumWidth += $(this).outerWidth(true);
			_sumHeight += $(this).outerHeight(true);
		});

		// calculate gallery offset
		function recalcOffsets() {
			if (_vertical) {
				if (_step) {
					_stepHeight = _slides.eq(_currentStep).outerHeight(true);
					_stepCount = Math.ceil((_sumHeight - _sliderHolder.height()) / _stepHeight) + 1;
					_offset = -_stepHeight * _currentStep;
				} else {
					_stepHeight = _sliderHolder.height();
					_stepCount = Math.ceil(_sumHeight / _stepHeight);
					_offset = -_stepHeight * _currentStep;
					if (_offset < _stepHeight - _sumHeight) _offset = _stepHeight - _sumHeight;
				}
			} else {
				if (_step) {
					_stepWidth = _slides.eq(_currentStep).outerWidth(true) * _step;
					_stepCount = Math.ceil((_sumWidth - _sliderHolder.width()) / _stepWidth) + 1;
					_offset = -_stepWidth * _currentStep;
					if (_offset < _sliderHolder.width() - _sumWidth) _offset = _sliderHolder.width() - _sumWidth;
				} else {
					_stepWidth = _sliderHolder.width();
					_stepCount = Math.ceil(_sumWidth / _stepWidth);
					_offset = -_stepWidth * _currentStep;
					if (_offset < _stepWidth - _sumWidth) _offset = _stepWidth - _sumWidth;
				}
			}
		}

		// gallery control
		if (_btnPrev.length) {
			_btnPrev.bind(_controlEvent, function () {
				if (_stopAfterClick) stopAutoSlide();
				prevSlide();
				return false;
			});
		}
		if (_btnNext.length) {
			_btnNext.bind(_controlEvent, function () {
				if (_stopAfterClick) stopAutoSlide();
				nextSlide();
				return false;
			});
		}
		if (_generatePagination.length) {
			_generatePagination.empty();
			recalcOffsets();
			var _list = $('<ul />');
			for (var i = 0; i < _stepCount; i++) $('<li><a href="#">' + (i + 1) + '</a></li>').appendTo(_list);
			_list.appendTo(_generatePagination);
			_pagerLinks = _list.children();
		}
		if (_pagerLinks.length) {
			_pagerLinks.each(function (_ind) {
				jQuery(this).bind(_controlEvent, function () {
					if (_currentStep != _ind) {
						if (_stopAfterClick) stopAutoSlide();
						_currentStep = _ind;
						switchSlide();
					}
					return false;
				});
			});
		}

		// gallery animation
		function prevSlide() {
			recalcOffsets();
			if (_currentStep > 0) _currentStep--;
			else if (_circleSlide) _currentStep = _stepCount - 1;
			switchSlide();
		}
		function nextSlide() {
			recalcOffsets();
			if (_currentStep < _stepCount - 1) _currentStep++;
			else if (_circleSlide) _currentStep = 0;
			switchSlide();
		}
		function refreshStatus() {
			if (_pagerLinks.length) _pagerLinks.removeClass(_activeClass).eq(_currentStep).addClass(_activeClass);
			if (!_circleSlide) {
				_btnPrev.removeClass(_disabledClass);
				_btnNext.removeClass(_disabledClass);
				if (_currentStep == 0) _btnPrev.addClass(_disabledClass);
				if (_currentStep == _stepCount - 1) _btnNext.addClass(_disabledClass);
			}
			if (_curNum.length) _curNum.text(_currentStep + 1);
			if (_allNum.length) _allNum.text(_stepCount);
		}
		function switchSlide() {
			recalcOffsets();
			if (_vertical) _slider.animate({ marginTop: _offset }, { duration: _duration, queue: false, easing: _easing });
			else _slider.animate({ marginLeft: _offset }, { duration: _duration, queue: false, easing: _easing });
			//Lou added - do text
			_textHolder.children("div:visible").hide();
			_textHolder.children().eq(_currentStep).delay(_duration / 2).fadeIn({duration: _duration});

			refreshStatus();
			autoSlide();
		}

		// autoslide function
		function stopAutoSlide() {
			if (_timer) clearTimeout(_timer);
			_autoRotation = false;
		}
		function autoSlide() {
			if (!_autoRotation || _hover) return;
			if (_timer) clearTimeout(_timer);
			_timer = setTimeout(nextSlide, _switchTime + _duration);
		}
		if (_pauseOnHover) {
			_this.hover(function () {
				_hover = true;
				if (_timer) clearTimeout(_timer);
			}, function () {
				_hover = false;
				autoSlide();
			});
		}
		recalcOffsets();
		refreshStatus();
		autoSlide();

		// pause buttton
		if (_pauseButton.length) {
			_pauseButton.click(function () {
				if (_this.hasClass(_pauseClass)) {
					_this.removeClass(_pauseClass);
					_autoRotation = true;
					autoSlide();
				} else {
					_this.addClass(_pauseClass);
					stopAutoSlide();
				}
				return false;
			});
		}

		if (_afterInit && typeof _afterInit === 'function') _afterInit(_this, _slides);
	});
}

//paged section must have a containing div (div:first)
function applyPaging(container, replacefield, pageSelector, callback) {
    if (pageSelector == null || pageSelector == "")
        pageSelector = ".pages";
    var parent = $(container);
    var replacew = replacefield ? replacefield : "div:first";
    $(pageSelector + " A", $(parent)).live("click", function () {

        //check history supported because of back button issues
        var browserDoesNotSupportsHistory = (typeof history.pushState === 'undefined');
        if (browserDoesNotSupportsHistory) {
            //if not (ie!) then don't bother 'hijaxing' links
            return true;
        }

        //var url = $(this).attr("rel");
        var url = $(this).next("input[name=paging-ajax]").val();
        $.get(url, function (response) {
            var res = replacefield ? $(response).find(replacew) : $(response).filter(replacew);
            $(parent).find(replacew).replaceWith(res);
            $("html,body").animate({ scrollTop: $(parent).offset().top }, "fast");
            history.pushState(null, null, url);
            if (callback) callback();
        });

        return false;
    });
}
