jQuery(function(){
	initDropNav();
	initClear();
	initNav();
	initLightbox ();
	initGallery ();
})

// initClearForm
function initClear(){
	clearFormFields({
		clearInputs: true,
		clearTextareas: true,
		passwordFieldText: true,
		addClassFocus: "focus",
		filterClass: "default"
	});
}
function initDropNav(){
	var wrapp = jQuery('#nav');
	var wrappWidth = wrapp.outerWidth();
	var elements = wrapp.find('>li');
	var dropRight = 'drop-add';

	elements.each(function(){
		var element = jQuery(this);
		var f;
		element.mouseenter(function(){
			var drop = element.find('.drop');
			var dropWidth = drop.outerWidth();
			var posElement = element.position().left;
			var widthRight = (wrappWidth - (posElement + (element.outerWidth() / 2)));

			if((dropWidth / 2) > widthRight){
				element.addClass(dropRight);
			}else{
				drop.css({
					left: '50%',
					marginLeft: - (dropWidth / 2)
				});
			}
			if(f) return; else f = true;
		})
		element.mouseleave(function(){
			if(f) return; else f = true;
			element.removeClass(dropRight)
		})
	})
}

// initLightbox
function initLightbox () {
	jQuery ( 'a.lightbox' ).lightbox ({
		fileLoadingImage : 'js/lightbox/loading.gif',
		fileBottomNavCloseImage : 'js/lightbox/closelabel.gif',
		strings : {
			help: ' \u2190 / P - previous image\u00a0\u00a0\u00a0\u00a0\u2192 / N - next image\u00a0\u00a0\u00a0\u00a0ESC / X - close image gallery',
			prevLinkTitle: 'previous image',
			nextLinkTitle: 'next image',
			prevLinkText:  '&laquo; Prev',
			nextLinkText:  'Next &raquo;',
			closeTitle: 'close image gallery',
			image: 'Image ',
			of: ' of '
		}
	});
}

// initMainGallery
function initGallery(){
	$('div.main-gallery').fadeGalleryAuto({
		slides: '.slide-hold ul >li',
		btnPrev:'a.prev',
		btnNext:'a.next',
		switcherHold: '.gallery-box'
	});
	
	$ ( '.gallery2' ).scrollGallery ({
		sliderHolder: '.gallery2-box',
		btnPrev:'a.prev',
		btnNext:'a.next',
		circleSlide:true,
		pauseOnHover:true,
		autoRotation:false,
		stopAfterClick:false,
		switchTime:5000,
		duration:650,
		step: true
	})
	
	$ ( '#tabGallery' ).scrollGallery ({
		sliderHolder: '.gallery1-box',
		btnPrev:'a.prev',
		btnNext:'a.next',
		circleSlide:true,
		pauseOnHover:true,
		autoRotation:false,
		stopAfterClick:false,
		switchTime:5000,
		duration:300,
		changeSlide: function ( _this, _slides, _currentStep ) {
			jQuery ( '#photo-gallery .gallery2' ).hide ().eq ( _currentStep ).show ();
		}
	})
}

// initNav
function initNav(){
	initDrop({
		menuId: "nav",
		hoverClass: "hover",
		dropExistenceClass: "hasdrop",
		sideClasses: true,
		cleverMode: true,
		flexibility: true,
		menuPaddings: 0,
		minWidth: 100
	});
}
function initDrop(o){
	if (!o.menuId) o.menuId = "nav";
	if (!o.cleverMode) o.cleverMode = false;
	if (!o.flexibility) o.flexibility = false;
	if (!o.dropExistenceClass) o.dropExistenceClass = false;
	if (!o.hoverClass) o.hoverClass = "hover";
	if (!o.menuHardCodeClass) o.menuHardCodeClass = "menu-hard-code";
	if (!o.sideClasses) o.sideClasses = false;
	if (!o.menuPaddings) o.menuPaddings = 0;
	if (!o.minWidth) o.minWidth = 0;
	if (!o.coeff) o.coeff = 1.7;
	var n = document.getElementById(o.menuId);
	if(n){
		n.className = n.className.replace(o.menuHardCodeClass, "");
		var lfl = [];
		var li = n.getElementsByTagName("li");
		for (var i=0; i<li.length; i++)
		{
			li[i].className += (" " + o.hoverClass);
			var d = li[i].getElementsByTagName("div").item(0);
			if(d)
			{
				if(o.flexibility)
				{
					var a = d.getElementsByTagName("a");
					for (var j=0; j<a.length; j++)
					{
						var w = a[j].parentNode.parentNode.offsetWidth;
						if(w > 0)
						{
							if(typeof(o.minWidth) == "number" && w < o.minWidth)
								w = o.minWidth;
							else if(typeof(o.minWidth) == "string" && li[i].parentNode == n && w < li[i].offsetWidth)
								w = li[i].offsetWidth - 5;
							a[j].style.width = w - o.menuPaddings + "px";
						}
					}
					d.style.width = li[i].getElementsByTagName("div").item(1).clientWidth + "px";
				}
				var t = document.documentElement.clientWidth/o.coeff;
				if(li[i].parentNode != n && (!o.cleverMode || fPX(li[i]) < t))
				{
					d.style.right = "auto";
					d.style.left = li[i].parentNode.offsetWidth + "px";
					d.parentNode.className += " left-side";
				}	
				else if(li[i].parentNode != n && (o.cleverMode || fPX(li[i]) >= t))
				{
					d.style.left = "auto";
					d.style.right = li[i].parentNode.offsetWidth + "px";
					d.parentNode.className += " right-side";
				}
				else if(li[i].parentNode == n && o.cleverMode && fPX(li[i]) >= t)
				{
					li[i].className += " right-side";
				}
			}
			if(o.dropExistenceClass && li[i].getElementsByTagName("ul").length > 0)
			{
				li[i].className += (" " + o.dropExistenceClass);
				li[i].getElementsByTagName("a").item(0).className += (" " + o.dropExistenceClass + "-link");
				li[i].innerHTML += "<em class='pointer'></em>";
			}
			if(li[i].parentNode == n) lfl.push(li[i]);
		}
		if(o.sideClasses)
		{
			lfl[0].className += " first-child";
			lfl[0].getElementsByTagName("a").item(0).className += " first-child-link";
			lfl[lfl.length-1].className += " last-child";
			lfl[lfl.length-1].getElementsByTagName("a").item(0).className += " last-child-link";
		}
		for (var i=0; i<li.length; i++)
		{
			li[i].className = li[i].className.replace(o.hoverClass, "");
			li[i].onmouseover = function()
			{
				this.className += (" " + o.hoverClass);
			}
			li[i].onmouseout = function()
			{
				this.className = this.className.replace(o.hoverClass, "");
			}
		}
	}
	function fPX(a)
	{
		var b = 0;
		while (a.offsetParent) {b += a.offsetLeft; a = a.offsetParent;}
		return b;
	}
}

// fadeGalleryAuto plugin
jQuery.fn.fadeGalleryAuto = function(options){
	var options = jQuery.extend({
		hold: '.slide-hold >ul',
		slides: '.slide-hold ul >li',
		btnPrev:'a.btn-prev',
		btnNext:'a.btn-next',
		activeClass: 'active',
		switcherHold: '.carusel .hold',
		switherSlider:'>ul',
		switcher:'> li',
		eventSwitcher:'click',
		pauseOnHover: false,
		numSlide: false,
		numCurrent: '.current',
		numSumSlide: '.sum-slide',
		autoRotation: false,
		autoHeight: false,
		speed: 650,
		swSpeed: 700,
		switchTime: 5000
	}, options);
	
	return this.each(function(){
		var wrapp = jQuery(this);
		var hold = jQuery(options.hold, wrapp);
		var slides = jQuery(options.slides, wrapp);
		var btnPrev = jQuery(options.btnPrev, wrapp);
		var btnNext = jQuery(options.btnNext, wrapp);
		var switcherHold = jQuery(options.switcherHold, wrapp);
		var switherSlider = jQuery(options.switherSlider, switcherHold);
		var switcher = jQuery(options.switcher, switherSlider);
		var eventSwitcher = options.eventSwitcher;
		var activeClass = options.activeClass;
		var pauseOnHover = options.pauseOnHover;
		var numSlide = options.numSlide;
		var numCurrent = jQuery(options.numCurrent, wrapp);
		var numSumSlide = jQuery(options.numSumSlide, wrapp);
		var autoRotation = options.autoRotation;
		var autoHeight = options.autoHeight;
		var switchTime = options.switchTime;
		var speed = options.speed;
		var swSpeed = options.swSpeed;
		
		var current = 0,
			allWidth = 0,
			swSpeedInit = 0,
			switcherWidth = switcherHold.width(),
			swWidth = switcherWidth,
			timer;
		
		slides.hide();
		slides.eq(0).show();
		switcher.eq(0).addClass(activeClass);
		
		if(autoHeight){hold.css({height: slides.eq(0).outerHeight()});}
		
		slides.each(function(ind){
			var slide = $(this);
			if(slide.hasClass(activeClass)){
				slides.hide();
				slide.show();
				switcher.removeClass(activeClass);
				switcher.eq(ind).addClass(activeClass);
				current = ind;
			}
		})
		switcher.each(function(){
			var btn = $(this);
			btn.bind(eventSwitcher, function(){
				if(btn.hasClass(activeClass)){
					if(autoRotation){
						setTimeout(galRotation, speed);
					}
				}else{
					current = btn.index();
					if(!slides.is(':animated')){
						slide();
					}
				}
				return false;
			})
		})
		
		btnPrev.click(function(){
			prevSlide();
			return false;
		})
		btnNext.click(function(){
			nextSlide();
			return false;
		})
		
		function nextSlide(){
			if(current < slides.length - 1){
				current++;
			}else{current = 0}
			if(timer){clearInterval(timer)};
			slide();
			swSlideNext();
		}
		
		function prevSlide(){
			if(current > 0){
				current--;
			}else{
				current = slides.length - 1
			}
			if(timer){clearInterval(timer)};
			slide();
			swSlidePrev();
		}
		
		function slide(){
			switcher.removeClass(activeClass);
			switcher.eq(current).addClass(activeClass);
			slides.fadeOut(speed);
			slides.eq(current).fadeIn(speed, function(){
				galRotation();
			});
			if(autoHeight){
				hold.animate({height: slides.eq(current).outerHeight()}, {queue:false, duration: speed});
			}
			numSumCurrent();
		}
		
		switcher.each(function(){allWidth += $(this).outerWidth(true);})
		
		if(current > 0){swWidth = switcher.eq(current).position().left;}
		
		function swSlideNext(swSpeed){
			var widtnElements = 0,
				mLeft = 0;
			switcher.each(function(){
				var btn = $(this);
				widtnElements += btn.outerWidth(true);
				if(btn.hasClass(activeClass)){
					if(widtnElements > swWidth){
						mLeft = widtnElements - btn.outerWidth(true);
						swWidth += switcherWidth;
						if(switcherWidth > allWidth - mLeft){
							swWidth = allWidth;
							mLeft -= switcherWidth - (allWidth - mLeft);
						}
						switherSlider.animate({marginLeft: -mLeft}, {duration: swSpeed});
					}else if(current == 0){
						swWidth = switcherWidth;
						switherSlider.animate({marginLeft: 0}, {duration: swSpeed});
					}
				}
			})
		}
		function swSlidePrev(){
			var widtnElements = 0,
				mLeft = 0;
			switcher.each(function(){
				var btn = $(this);
				widtnElements += btn.outerWidth(true);
				if(btn.hasClass(activeClass)){
					if(widtnElements <= (swWidth - switcherWidth)){
						mLeft = widtnElements - switcherWidth;
						swWidth -= switcherWidth;
						if(widtnElements < switcherWidth){
							mLeft = 0;
							swWidth = switcherWidth;
						}
						switherSlider.animate({marginLeft: -mLeft}, {duration: swSpeed});
					}else if(current == slides.length - 1 && widtnElements > switcherWidth){
						swWidth = allWidth;
						mLeft = allWidth -switcherWidth;
						switherSlider.animate({marginLeft: -mLeft}, {duration: swSpeed});
					}
				}
			})
		}
		
		function numSumCurrent(){
			if(numSlide){
				numCurrent.html(current + 1);
				numSumSlide.html(slides.length);
			}
		}
		
		if(pauseOnHover){
			wrapp.hover(function(){
				if(timer){clearInterval(timer)};
			}, function(){
				rotation();
			})
		}
		
		function galRotation(){
			clearInterval(timer);
			if(autoRotation){
				timer = setInterval(nextSlide, switchTime);
			}
		}
		
		swSlideNext(swSpeedInit);
		numSumCurrent();
		galRotation();
	});
};

function clearFormFields(o){
	if (o.clearInputs == null) o.clearInputs = true;
	if (o.clearTextareas == null) o.clearTextareas = true;
	if (o.passwordFieldText == null) o.passwordFieldText = false;
	if (o.addClassFocus == null) o.addClassFocus = false;
	if (!o.filter) o.filter = "default";
	if(o.clearInputs) {
		var inputs = document.getElementsByTagName("input");
		for (var i = 0; i < inputs.length; i++ ) {
			if((inputs[i].type == "text" || inputs[i].type == "password") && inputs[i].className.indexOf(o.filterClass)) {
				inputs[i].valueHtml = inputs[i].value;
				inputs[i].onfocus = function ()	{
					if(this.valueHtml == this.value) this.value = "";
					if(this.fake) {
						inputsSwap(this, this.previousSibling);
						this.previousSibling.focus();
					}
					if(o.addClassFocus && !this.fake) {
						this.className += " " + o.addClassFocus;
						this.parentNode.className += " parent-" + o.addClassFocus;
					}
				}
				inputs[i].onblur = function () {
					if(this.value == "") {
						this.value = this.valueHtml;
						if(o.passwordFieldText && this.type == "password") inputsSwap(this, this.nextSibling);
					}
					if(o.addClassFocus) {
						this.className = this.className.replace(o.addClassFocus, "");
						this.parentNode.className = this.parentNode.className.replace("parent-"+o.addClassFocus, "");
					}
				}
				if(o.passwordFieldText && inputs[i].type == "password") {
					var fakeInput = document.createElement("input");
					fakeInput.type = "text";
					fakeInput.value = inputs[i].value;
					fakeInput.className = inputs[i].className;
					fakeInput.fake = true;
					inputs[i].parentNode.insertBefore(fakeInput, inputs[i].nextSibling);
					inputsSwap(inputs[i], null);
				}
			}
		}
	}
	if(o.clearTextareas) {
		var textareas = document.getElementsByTagName("textarea");
		for(var i=0; i<textareas.length; i++) {
			if(textareas[i].className.indexOf(o.filterClass)) {
				textareas[i].valueHtml = textareas[i].value;
				textareas[i].onfocus = function() {
					if(this.value == this.valueHtml) this.value = "";
					if(o.addClassFocus) {
						this.className += " " + o.addClassFocus;
						this.parentNode.className += " parent-" + o.addClassFocus;
					}
				}
				textareas[i].onblur = function() {
					if(this.value == "") this.value = this.valueHtml;
					if(o.addClassFocus) {
						this.className = this.className.replace(o.addClassFocus, "");
						this.parentNode.className = this.parentNode.className.replace("parent-"+o.addClassFocus, "");
					}
				}
			}
		}
	}
	function inputsSwap(el, el2) {
		if(el) el.style.display = "none";
		if(el2) el2.style.display = "inline";
	}
}

// scrolling gallery plugin
jQuery.fn.scrollGallery = function(_options){
	var _options = jQuery.extend({
		sliderHolder: '>div',
		slider:'>ul',
		slides: '>li',
		pagerLinks:'div.pager a',
		btnPrev:'a.link-prev',
		btnNext:'a.link-next',
		activeClass:'active',
		disabledPrevClass:'prev-disabled',
		disabledNextClass:'next-disabled',
		generatePagination:'div.pg-holder',
		curNum:'em.scur-num',
		allNum:'em.sall-num',
		circleSlide:true,
		pauseClass:'gallery-paused',
		pauseButton:'none',
		pauseOnHover:true,
		autoRotation:false,
		stopAfterClick:false,
		switchTime:5000,
		duration:650,
		easing:'swing',
		event:'click',
		splitCount:false,
		afterInit:false,
		changeSlide:false,
		vertical:false,
		step:false
	},_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 _disabledPrevClass = _options.disabledPrevClass;
		var _disabledNextClass = _options.disabledNextClass;
		var _easing = _options.easing;
		var _duration = _options.duration;
		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 _changeSlide = _options.changeSlide
		var _splitCount = _options.splitCount;

		// gallery init
		if(!_slides.length) return;

		if(_splitCount) {
			var curStep = 0;
			var newSlide = $('<slide>').addClass('split-slide');
			_slides.each(function(){
				newSlide.append(this);
				curStep++;
				if(curStep > _splitCount-1) {
					curStep = 0;
					_slider.append(newSlide);
					newSlide = $('<slide>').addClass('split-slide');
				}
			});
			if(curStep) _slider.append(newSlide);
			_slides = _slider.children();
		}

		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 ( ! _btnPrev.hasClass ( _disabledPrevClass ) ) {
					if(_stopAfterClick) stopAutoSlide();
					prevSlide();
				}
				return false;
			});
		}
		if(_btnNext.length) {
			_btnNext.bind(_controlEvent,function(){
				if ( ! _btnNext.hasClass ( _disabledNextClass ) ) {
					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(_disabledPrevClass);
				_btnNext.removeClass(_disabledNextClass);
				if(_currentStep == 0) _btnPrev.addClass(_disabledPrevClass);
				if(_currentStep == _stepCount-1) _btnNext.addClass(_disabledNextClass);
			}
			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});
			if(_changeSlide && typeof _changeSlide === 'function') _changeSlide(_this, _slides, _currentStep);
			refreshStatus();
			autoSlide();
		}

		// autoslide function
		function stopAutoSlide() {
			if(_timer) clearTimeout(_timer);
			_this.addClass(_pauseClass);
			_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(_changeSlide && typeof _changeSlide === 'function') _changeSlide(_this, _slides, _currentStep);
		if(_afterInit && typeof _afterInit === 'function') _afterInit(_this, _slides, _currentStep);
	});
}

/**
 * jQuery Lightbox
 * Version 0.5 - 11/29/2007
 * @author Warren Krewenki
 *
 * Changes by:
 * @author Krzysztof Kotowicz <koto at webworkers dot pl>:
 *  - bugfix: multiple instances of Lightbox galleries allowed
 *    (using opts variable instead of $.fn.lightbox.defaults)
 *  - bugfix: use var for local variables in a few functions
 *  - added support for navbarOnTop setting
 *  - added support for displayTitle setting
 *  - added support for slideNavBar setting (with slideNavBarSpeed)
 *  - added support for displayHelp setting
 *  - added support for fitToScreen setting (ported Lightbox VinDSL hack)
 *    (see http://www.huddletogether.com/forum/comments.php?DiscussionID=307)
 *  - plugin now uses jQuery.width() and jQuery.height()
 *  - removed eval() calls
 *  - removed destroyElement - uses jQuery.remove()
 *  - use of prevLinkText, nextLinkText and help
 *  - all strings are now placed in opts.strings to allow for customization/translation
 *
 * Based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/)
 * Originally written to make use of the Prototype framework, and Script.acalo.us, now altered to use jQuery.
 *
 **/
;(function($){var opts;$.fn.lightbox=function(options){opts=$.extend({},$.fn.lightbox.defaults,options);$.fn.lightbox.initialize();return this.each(function(){$(this).click(function(){$(this).lightbox.start(this);return false;});});};$.fn.lightbox.initialize=function(){$("#overlay").remove();$("#lightbox").remove();opts.inprogress=false;var outerImage='<div id="outerImageContainer"><div id="imageContainer"><img id="lightboxImage"><div id="hoverNav"><a href="javascript://" title="'+opts.strings.prevLinkTitle+'" id="prevLink"></a><a href="javascript://" id="nextLink" title="'+opts.strings.nextLinkTitle+'"></a></div><div id="loading"><a href="javascript://" id="loadingLink"><img src="'+opts.fileLoadingImage+'"></a></div></div></div>';var imageData='<div id="imageDataContainer" class="clearfix"><div id="imageData"><div id="imageDetails"><span id="caption"></span><span id="numberDisplay"></span></div><div id="bottomNav">';if(opts.displayHelp){imageData+='<span id="helpDisplay">'+opts.strings.help+"</span>";}imageData+='<a href="javascript://" id="bottomNavClose" title="'+opts.strings.closeTitle+'"><img src="'+opts.fileBottomNavCloseImage+'"></a></div></div></div>';var string;if(opts.navbarOnTop){string='<div id="overlay"></div><div id="lightbox">'+imageData+outerImage+"</div>";$("body").append(string);$("#imageDataContainer").addClass("ontop");}else{string='<div id="overlay"></div><div id="lightbox">'+outerImage+imageData+"</div>";$("body").append(string);}$("#overlay").click(function(){$.fn.lightbox.end();}).hide();$("#lightbox").click(function(){$.fn.lightbox.end();}).hide();$("#loadingLink").click(function(){$.fn.lightbox.end();return false;});$("#bottomNavClose").click(function(){$.fn.lightbox.end();return false;});$("#outerImageContainer").width(opts.widthCurrent).height(opts.heightCurrent);$("#imageDataContainer").width(opts.widthCurrent);};$.fn.lightbox.getPageSize=function(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=window.innerWidth+window.scrollMaxX;yScroll=window.innerHeight+window.scrollMaxY;}else{if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;}}var windowWidth,windowHeight;if(self.innerHeight){if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;}else{windowWidth=self.innerWidth;}windowHeight=self.innerHeight;}else{if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else{if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;}}}if(yScroll<windowHeight){pageHeight=windowHeight;}else{pageHeight=yScroll;}if(xScroll<windowWidth){pageWidth=xScroll;}else{pageWidth=windowWidth;}var arrayPageSize=new Array(pageWidth,pageHeight,windowWidth,windowHeight);return arrayPageSize;};$.fn.lightbox.getPageScroll=function(){var xScroll,yScroll;if(self.pageYOffset){yScroll=self.pageYOffset;xScroll=self.pageXOffset;}else{if(document.documentElement&&document.documentElement.scrollTop){yScroll=document.documentElement.scrollTop;xScroll=document.documentElement.scrollLeft;}else{if(document.body){yScroll=document.body.scrollTop;xScroll=document.body.scrollLeft;}}}var arrayPageScroll=new Array(xScroll,yScroll);return arrayPageScroll;};$.fn.lightbox.pause=function(ms){var date=new Date();var curDate=null;do{curDate=new Date();}while(curDate-date<ms);};$.fn.lightbox.start=function(imageLink){$("select, embed, object").hide();var arrayPageSize=$.fn.lightbox.getPageSize();$("#overlay").hide().css({width:"100%",height:arrayPageSize[1]+"px",opacity:opts.overlayOpacity}).fadeIn();opts.imageArray=[];imageNum=0;var anchors=document.getElementsByTagName(imageLink.tagName);if(!imageLink.rel||(imageLink.rel=="")){opts.imageArray.push(new Array(imageLink.href,opts.displayTitle?imageLink.title:""));}else{$("a").each(function(){if(this.href&&(this.rel==imageLink.rel)){opts.imageArray.push(new Array(this.href,opts.displayTitle?this.title:""));}});for(i=0;i<opts.imageArray.length;i++){for(j=opts.imageArray.length-1;j>i;j--){if(opts.imageArray[i][0]==opts.imageArray[j][0]){opts.imageArray.splice(j,1);}}}while(opts.imageArray[imageNum][0]!=imageLink.href){imageNum++;}}var arrayPageScroll=$.fn.lightbox.getPageScroll();var lightboxTop=arrayPageScroll[1]+(arrayPageSize[3]/10);var lightboxLeft=arrayPageScroll[0];$("#lightbox").css({top:lightboxTop+"px",left:lightboxLeft+"px"}).show();if(!opts.slideNavBar){$("#imageData").hide();}$.fn.lightbox.changeImage(imageNum);};$.fn.lightbox.changeImage=function(imageNum){if(opts.inprogress==false){opts.inprogress=true;opts.activeImage=imageNum;$("#loading").show();$("#lightboxImage").hide();$("#hoverNav").hide();$("#prevLink").hide();$("#nextLink").hide();if(opts.slideNavBar){$("#imageDataContainer").hide();$("#imageData").hide();$.fn.doChangeImage();}else{$.fn.doChangeImage();}}};$.fn.doChangeImage=function(){imgPreloader=new Image();imgPreloader.onload=function(){var newWidth=imgPreloader.width;var newHeight=imgPreloader.height;if(opts.fitToScreen){var arrayPageSize=$.fn.lightbox.getPageSize();var ratio;var initialPageWidth=arrayPageSize[2]-2*opts.borderSize;var initialPageHeight=arrayPageSize[3]-200;if(imgPreloader.height>initialPageHeight){newWidth=parseInt((initialPageHeight/imgPreloader.height)*imgPreloader.width);newHeight=initialPageHeight;}else{if(imgPreloader.width>initialPageWidth){newHeight=parseInt((initialPageWidth/imgPreloader.width)*imgPreloader.height);newWidth=initialPageWidth;}}}$("#lightboxImage").attr("src",opts.imageArray[opts.activeImage][0]).width(newWidth).height(newHeight);$.fn.lightbox.resizeImageContainer(newWidth,newHeight);};imgPreloader.src=opts.imageArray[opts.activeImage][0];};$.fn.lightbox.end=function(){$.fn.lightbox.disableKeyboardNav();$("#lightbox").hide();$("#overlay").fadeOut();$("select, object, embed").show();};$.fn.lightbox.preloadNeighborImages=function(){if((opts.imageArray.length-1)>opts.activeImage){preloadNextImage=new Image();preloadNextImage.src=opts.imageArray[opts.activeImage+1][0];}if(opts.activeImage>0){preloadPrevImage=new Image();preloadPrevImage.src=opts.imageArray[opts.activeImage-1][0];}};$.fn.lightbox.keyboardAction=function(e){if(e==null){var keycode=event.keyCode;var escapeKey=27;}else{var keycode=e.keyCode;var escapeKey=e.DOM_VK_ESCAPE;}var key=String.fromCharCode(keycode).toLowerCase();if((key=="x")||(key=="o")||(key=="c")||(keycode==escapeKey)){$.fn.lightbox.end();}else{if((key=="p")||(keycode==37)){if(opts.activeImage!=0){$.fn.lightbox.disableKeyboardNav();$.fn.lightbox.changeImage(opts.activeImage-1);}}else{if((key=="n")||(keycode==39)){if(opts.activeImage!=(opts.imageArray.length-1)){$.fn.lightbox.disableKeyboardNav();$.fn.lightbox.changeImage(opts.activeImage+1);}}}}};$.fn.lightbox.resizeImageContainer=function(imgWidth,imgHeight){opts.widthCurrent=document.getElementById("outerImageContainer").offsetWidth;opts.heightCurrent=document.getElementById("outerImageContainer").offsetHeight;var widthNew=(imgWidth+(opts.borderSize*2));var heightNew=(imgHeight+(opts.borderSize*2));opts.xScale=(widthNew/opts.widthCurrent)*100;opts.yScale=(heightNew/opts.heightCurrent)*100;wDiff=opts.widthCurrent-widthNew;hDiff=opts.heightCurrent-heightNew;$("#imageDataContainer").animate({width:widthNew},opts.resizeSpeed,"linear");$("#outerImageContainer").animate({width:widthNew},opts.resizeSpeed,"linear",function(){$("#outerImageContainer").animate({height:heightNew},opts.resizeSpeed,"linear",function(){$.fn.lightbox.showImage();});});if((hDiff==0)&&(wDiff==0)){if(jQuery.browser.msie){$.fn.lightbox.pause(250);}else{$.fn.lightbox.pause(100);}}$("#prevLink").height(imgHeight);$("#nextLink").height(imgHeight);};$.fn.lightbox.showImage=function(){$("#loading").hide();$("#lightboxImage").fadeIn("fast");$.fn.lightbox.updateDetails();$.fn.lightbox.preloadNeighborImages();opts.inprogress=false;};$.fn.lightbox.updateDetails=function(){if(opts.imageArray[opts.activeImage][1]){$("#caption").html(opts.imageArray[opts.activeImage][1]).show();}if(opts.imageArray.length>1){var nav_html;nav_html=opts.strings.image+(opts.activeImage+1)+opts.strings.of+opts.imageArray.length;if((opts.activeImage)>0){nav_html='<a title="'+opts.strings.prevLinkTitle+'" href="#" id="prevLinkText">'+opts.strings.prevLinkText+"</a>"+nav_html;}if((opts.activeImage+1)<opts.imageArray.length){nav_html+='<a title="'+opts.strings.nextLinkTitle+'" href="#" id="nextLinkText">'+opts.strings.nextLinkText+"</a>";}$("#numberDisplay").html(nav_html).show();}if(opts.slideNavBar){$("#imageData").slideDown(opts.navBarSlideSpeed);}else{$("#imageData").show();}var arrayPageSize=$.fn.lightbox.getPageSize();$("#overlay").height(arrayPageSize[1]);$.fn.lightbox.updateNav();};$.fn.lightbox.updateNav=function(){$("#hoverNav").show();if(opts.activeImage!=0){$("#prevLink,#prevLinkText").show().click(function(){$.fn.lightbox.changeImage(opts.activeImage-1);return false;});}if(opts.activeImage!=(opts.imageArray.length-1)){$("#nextLink,#nextLinkText").show().click(function(){$.fn.lightbox.changeImage(opts.activeImage+1);return false;});}$.fn.lightbox.enableKeyboardNav();};$.fn.lightbox.enableKeyboardNav=function(){document.onkeydown=$.fn.lightbox.keyboardAction;};$.fn.lightbox.disableKeyboardNav=function(){document.onkeydown="";};$.fn.lightbox.defaults={fileLoadingImage:"images/loading.gif",fileBottomNavCloseImage:"images/closelabel.gif",overlayOpacity:0.8,borderSize:10,imageArray:new Array,activeImage:null,inprogress:false,resizeSpeed:350,widthCurrent:250,heightCurrent:250,xScale:1,yScale:1,displayTitle:true,navbarOnTop:false,slideNavBar:false,navBarSlideSpeed:350,displayHelp:false,strings:{help:" \u2190 / P - previous image\u00a0\u00a0\u00a0\u00a0\u2192 / N - next image\u00a0\u00a0\u00a0\u00a0ESC / X - close image gallery",prevLinkTitle:"previous image",nextLinkTitle:"next image",prevLinkText:"&laquo; Previous",nextLinkText:"Next &raquo;",closeTitle:"close image gallery",image:"Image ",of:" of "},fitToScreen:false};})(jQuery);
