
/**
 * @author Alexander Farkas
 * v. 1.02
 */
(function($) {
	$.extend($.fx.step,{
	    backgroundPosition: function(fx) {
            if (fx.state === 0 && typeof fx.end == 'string') {
                var start = $.curCSS(fx.elem,'backgroundPosition');
                start = toArray(start);
                fx.start = [start[0],start[2]];
                var end = toArray(fx.end);
                fx.end = [end[0],end[2]];
                fx.unit = [end[1],end[3]];
			}
            var nowPosX = [];
            nowPosX[0] = ((fx.end[0] - fx.start[0]) * fx.pos) + fx.start[0] + fx.unit[0];
            nowPosX[1] = ((fx.end[1] - fx.start[1]) * fx.pos) + fx.start[1] + fx.unit[1];
            fx.elem.style.backgroundPosition = nowPosX[0]+' '+nowPosX[1];

           function toArray(strg){
               strg = strg.replace(/left|top/g,'0px');
               strg = strg.replace(/right|bottom/g,'100%');
               strg = strg.replace(/([0-9\.]+)(\s|\)|$)/g,"$1px$2");
               var res = strg.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);
               return [parseFloat(res[1],10),res[2],parseFloat(res[3],10),res[4]];
           }
        }
	});
})(jQuery);


/*
 * jQuery Nivo Slider v2.4
 * http://nivo.dev7studios.com
 *
 * Copyright 2011, Gilbert Pellegrom
 * Free to use and abuse under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 *
 * May 2010 - Pick random effect from specified set of effects by toronegro
 * May 2010 - controlNavThumbsFromRel option added by nerd-sh
 * May 2010 - Do not start nivoRun timer if there is only 1 slide by msielski
 * April 2010 - controlNavThumbs option added by Jamie Thompson (http://jamiethompson.co.uk)
 * March 2010 - manualAdvance option added by HelloPablo (http://hellopablo.co.uk)
 */

(function($) {

    var NivoSlider = function(element, options){

			//Defaults are below
			var settings = $.extend({}, $.fn.nivoSlider.defaults, options);

			//Useful variables. Play carefully.
			var vars = {
					currentSlide: 0,
					currentImage: '',
					totalSlides: 0,
					randAnim: '',
					running: false,
					paused: false,
					stop: false
			};

			//Get this slider
			var slider = $(element);
			slider.data('nivo:vars', vars);
			slider.css('position','relative');
			slider.addClass('nivoSlider');

			//Find our slider children
			var kids = slider.children();
			kids.each(function() {
					var child = $(this);
					var link = '';
					if(!child.is('img')){
							if(child.is('a')){
									child.addClass('nivo-imageLink');
									link = child;
							}
							child = child.find('img:first');
					}
					//Get img width & height
					var childWidth = child.width();
					if(childWidth == 0) childWidth = child.attr('width');
					var childHeight = child.height();
					if(childHeight == 0) childHeight = child.attr('height');
					//Resize the slider
					if(childWidth > slider.width()){
							slider.width(childWidth);
					}
					if(childHeight > slider.height()){
							slider.height(childHeight);
					}
					if(link != ''){
							link.css('display','none');
					}
					child.css('display','none');
					vars.totalSlides++;
			});

			//Set startSlide
			if(settings.startSlide > 0){
					if(settings.startSlide >= vars.totalSlides) settings.startSlide = vars.totalSlides - 1;
					vars.currentSlide = settings.startSlide;
			}

			//Get initial image
			if($(kids[vars.currentSlide]).is('img')){
					vars.currentImage = $(kids[vars.currentSlide]);
			} else {
					vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
			}

			//Show initial link
			if($(kids[vars.currentSlide]).is('a')){
					$(kids[vars.currentSlide]).css('display','block');
			}

			//Set first background
			slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');

			//Set First URL link to run a JS function - e.g. Loading a video
			if(vars.currentImage.attr('name') != "") {
				jQuery("a.link_wrapper").attr('href',vars.currentImage.attr('name'));
				jQuery("a.link_wrapper").prettyPhoto();
			}else {
				jQuery("a.link_wrapper").attr('href','#').unbind('click');
			}

			//Add initial slices
			for(var i = 0; i < settings.slices; i++){
					var sliceWidth = Math.round(slider.width()/settings.slices);
					if(i == settings.slices-1){
							slider.append(
									$('<div class="nivo-slice"></div>').css({ left:(sliceWidth*i)+'px', width:(slider.width()-(sliceWidth*i))+'px' })
							);
					} else {
							slider.append(
									$('<div class="nivo-slice"></div>').css({ left:(sliceWidth*i)+'px', width:sliceWidth+'px' })
							);
					}
			}

			//Create caption
			$('#slide-caption').append(
					$('<div class="nivo-caption"><p></p></div>').css({ display:'none', opacity:settings.captionOpacity })
			);

    //Process initial caption
		if (settings.hideCaptions == false && settings.slideshowCaptionOverride == true && slideshowCaption.length > 1){

				slideshowCaption = "<div class='close-container'><a class='close-caption'>close</a></div>" + slideshowCaption;
				$('#slide-caption .nivo-caption p').html(slideshowCaption);
				$('#slide-caption .nivo-caption').delay(settings.fadeUpDelay).slideDown(1000);

		} else {
			if(vars.currentImage.attr('title') != '' && settings.hideCaptions == false){
				var title = vars.currentImage.attr('title');
				title = "<div class='close-container'><a class='close-caption'>close</a></div>" + title;
				if(title.substr(0,1) == '#') title = $(title).html();
				$('#slide-caption .nivo-caption p').html(title);
				$('#slide-caption .nivo-caption').delay(settings.fadeUpDelay).slideDown(1000); // was fadeIn
					// $( "#slider-holder" ).animate({
					//	marginLeft: 240
					//}, 1000 );
			}
		}



        //In the words of Super Mario "let's a go!"
        var timer = 0;
        if(!settings.manualAdvance && kids.length > 1){
            timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
        }

        //Add Direction nav
        if(settings.directionNav){
 			       //slider.append('<div id="sliderNav"><div class="nivo-directionNav"><a class="nivo-prevNav">Prev</a><a class="nivo-nextNav">Next</a></div></div>');

            //Hide Direction nav
            if(settings.directionNavHide){
                $('#sliderNav', slider).hide();
                slider.hover(function(){
                    $('#sliderNav').show();
                }, function(){
                    $('#sliderNav').hide();
                });
            }

            $('a.nivo-prevNav').live('click', function(){
                if(vars.running) return false;
                clearInterval(timer);
                timer = '';
                vars.currentSlide-=2;
                nivoRun(slider, kids, settings, 'prev');
								$('#slide-caption .nivo-caption').slideUp(settings.animSpeed);
            });

            $('a.nivo-nextNav').live('click', function(){
                if(vars.running) return false;
                clearInterval(timer);
                timer = '';
                nivoRun(slider, kids, settings, 'next');
								$('#slide-caption .nivo-caption').slideUp(settings.animSpeed);
            });

            $('a.nivo-print').live('click', function(){
							if(vars.running) return false;
							clearInterval(timer);
							timer = '';
							var printW = window.open('','PrintWindow','width=940,height=700,scrollbars=1,resizable=1');
							var myTitle = $('title').html() + ' - ' + $(vars.currentImage).attr('label');
							var html = '<html><head><title>' + $('<title />').append(myTitle).html()
								+ '</title><link type="text/css" href="skin/print_popup.css" rel="stylesheet" media="all"></head>'
								+ '<body onload="window.print()"><div id="page-wrapper">'
								+ '<div id="header"><div style="float:right;">'
									+ '<div id="contact-info">'
									+ '<p>The Studio District<br/>'
									+ '349 Carlaw Avenue<br/>'
									+ 'Suite 302<br/>'
									+ 'Toronto, Ontario<br/>'
									+ 'Canada<br/>'
									+ 'M4M 2T1<br/><br/>'
									+ '<span class="bigger">416.406.3474</span><br/>'
									+ 'fishoutofwaterdesign.com</p>'
									+ '</div>'
								+ '</div><div style="float:left;"><img src="pub/images/fish_out_of_water_logo-default.png"></div></div>'
								+ '<div id="image-wrapper">' + $('<div />').append($(vars.currentImage).clone().css({'display':'block','margin':'10px auto'})).html() + '</div>'
								+ '<div><p>'+slideshowCaption+'</p></div>'
								+ '</div></body></html>';
							printW.document.open();
							printW.document.write(html);
							printW.document.close();
							return false;
            });

			/* Caption Controls */
			if (settings.hideCaptions == false){

				$('a.caption-control').live('click', function(){
					if(vars.running) return false;
					//check if there is caption content in the current slide
					if ($('#slide-caption .nivo-caption').text().length > 0){

					//if ($('#slide-caption .nivo-caption').text().)
						if ($('#slide-caption .nivo-caption').is(':hidden')){
							$('#slide-caption .nivo-caption').slideDown(settings.animSpeed);
							//$( "#slider-holder" ).animate({
							//	marginLeft: 240
							//}, 1000 );
							$( "#slide-caption #slide-caption" ).animate({
								backgroundColor: "#aa0000",
								color: "#fff",
								opacity: 1
							}, 1000 );
						} else {
							$('#slide-caption .nivo-caption').slideUp(settings.animSpeed);
							//$( "#slider-holder" ).animate({
							//	marginLeft: 150
							//}, 1000 );
							$( "#slide-caption #slide-caption" ).animate({
								backgroundColor: "#aa0000",
								color: "#fff",
								opacity: 0
							}, 1000 );
						}
					}
				});

				$('a.close-caption').live('click', function(){
					if(vars.running) return false;
					$('#slide-caption .nivo-caption').slideUp(settings.animSpeed);
					//$( "#slider-holder" ).animate({
					//	marginLeft: 150
					//}, 1000 );
					$( "#slide-caption #slide-caption" ).animate({
						backgroundColor: "#aa0000",
						color: "#fff",
						opacity: 1
					}, 1000 );
        });

			}
   	}

	  //Add print
		$('#slider-controls').append('<div class="nivo-print-container"><a class="nivo-print">print</a></div>');

		//add captions
		if (settings.hideCaptions == false){
			$('#slider-controls').append('<div class="nivo-caption-container"><a class="caption-control">caption</a></div>');
			$('#slider-wrapper').addClass('caption');
			}

		//add left and right controls
		$('#slider-controls').append('<div class="nivo-directionNav nivo-vcrControls"><a class="nivo-prevNav">Prev</a><a class="nivo-nextNav">Next</a></div>');

		//Initially, deactivate left cursor
		$('.nivo-prevNav').css({opacity:'.8',cursor:'default'});
		$('.nivo-prevNav').addClass('wasnivo-prevNav').removeClass('nivo-prevNav');
			//Add Control nav
			if(settings.controlNav){
					var nivoControl = $('<div class="nivo-controlNav"></div>');
					$('#slider-controls #nivo-controlNavWrapper').append(nivoControl);
					for(var i = 0; i < kids.length; i++){
							if(settings.controlNavThumbs){
									var child = kids.eq(i);
									if(!child.is('img')){
											child = child.find('img:first');
									}
									if (settings.controlNavThumbsFromRel) {
											nivoControl.append('<a class="nivo-control" rel="'+ i +'"><img src="'+ child.attr('rel') + '" alt="" /></a>');
									} else {
											nivoControl.append('<a class="nivo-control" rel="'+ i +'"><img src="'+ child.attr('src').replace(settings.controlNavThumbsSearch, settings.controlNavThumbsReplace) +'" alt="" /></a>');
									}
							} else {

								var slash = "";
								if (i < kids.length - 1){
									slash = "&nbsp;  / &nbsp;";
								}
								var thumb_label = kids[i].getAttribute("label");
								if (thumb_label.length > 0){
									nivoControl.append('<div style="display:inline-block;height:20px;"><a class="nivo-control" rel="'+ i +'">'+ thumb_label +  '</a>' + slash + '&nbsp;</div>');
									}
								else {
									nivoControl.append('<a class="nivo-control" rel="'+ i +'"> - </a>');
									}
								}

						}
						//Set initial active link
						$('.nivo-controlNav a:eq('+ vars.currentSlide +')').addClass('active');

						$('.nivo-controlNav a').live('click', function(){
								if(vars.running) return false;
								if($(this).hasClass('active')) return false;
								clearInterval(timer);
								timer = '';
								slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
								vars.currentSlide = $(this).attr('rel') - 1;
								nivoRun(slider, kids, settings, 'control');
								$('#slide-caption .nivo-caption').slideUp(settings.animSpeed);
						});

					}


        //Keyboard Navigation
        if(settings.keyboardNav){
            $(window).keypress(function(event){
                //Left
                if(event.keyCode == '37'){
                    if(vars.running) return false;
                    clearInterval(timer);
                    timer = '';
                    vars.currentSlide-=2;
                    nivoRun(slider, kids, settings, 'prev');
                }
                //Right
                if(event.keyCode == '39'){
                    if(vars.running) return false;
                    clearInterval(timer);
                    timer = '';
                    nivoRun(slider, kids, settings, 'next');
                }
            });
        }

        //For pauseOnHover setting
        if(settings.pauseOnHover){
            slider.hover(function(){
                vars.paused = true;
                clearInterval(timer);
                timer = '';
            }, function(){
                vars.paused = false;
                //Restart the timer
                if(timer == '' && !settings.manualAdvance){
                    timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
                }
            });
        }

        //Event when Animation finishes
        slider.bind('nivo:animFinished', function(){
            vars.running = false;
            //Hide child links
            $(kids).each(function(){
                if($(this).is('a')){
                    $(this).css('display','none');
                }
            });
            //Show current link
            if($(kids[vars.currentSlide]).is('a')){
                $(kids[vars.currentSlide]).css('display','block');
            }
            //Restart the timer
            if(timer == '' && !vars.paused && !settings.manualAdvance){
                timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
            }

			//Set link to the image
			if(vars.currentImage.attr('name') != "") {
				jQuery("a.link_wrapper").attr('href',vars.currentImage.attr('name'));
				jQuery("a.link_wrapper").prettyPhoto();
			}else {
				jQuery("a.link_wrapper").attr('href','#').unbind('click');
			}

            //Trigger the afterChange callback
            settings.afterChange.call(this);
        });

        // Reset slice width before animations run
        var resetSliceWidth = function(slider, settings){
            var slices = $('.nivo-slice', slider);
            var i = 0;
            slices.each(function(){
                var slice = $(this);
                var sliceWidth = Math.round(slider.width()/settings.slices);
                if(i == settings.slices-1){
                    slice.css('width', (slider.width()-(sliceWidth*i)) + 'px');
                } else {
                    slice.css('width', sliceWidth + 'px');
                }
                i++;
            });
        }

        // Private run method
		var nivoRun = function(slider, kids, settings, nudge){


				//Get our vars
				var vars = slider.data('nivo:vars');

				//Trigger the lastSlide callback
				if(vars && (vars.currentSlide == vars.totalSlides - 1)){
					//return false;
					settings.lastSlide.call(this);
				}

				// Stop
				if((!vars || vars.stop) && !nudge) return false;

				//Trigger the beforeChange callback
				settings.beforeChange.call(this);

				//Set current background before change
				if(!nudge){
					slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
				} else {
					if(nudge == 'prev'){
						slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
					}
					if(nudge == 'next'){
						slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
					}
				}
				vars.currentSlide++;
				//Trigger the slideshowEnd callback
				if(vars.currentSlide == vars.totalSlides){
					vars.currentSlide = 0;
					settings.slideshowEnd.call(this);
				}
				if(vars.currentSlide < 0) vars.currentSlide = (vars.totalSlides - 1);
				//Set vars.currentImage
				if($(kids[vars.currentSlide]).is('img')){
					vars.currentImage = $(kids[vars.currentSlide]);
				} else {
					vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
				}

				//Set active links
				if(settings.controlNav){
					$('.nivo-controlNav a').removeClass('active');
					$('.nivo-controlNav a:eq('+ vars.currentSlide +')').addClass('active');
					//vars.running = true;
					var activeslideLeft = $('.nivo-controlNav a.active').parent('div:eq(0)').position()["left"];
					var controlNavWrapperWidth = $('#nivo-controlNavWrapper').width();
					//animate inner labels when their offset is greater than half the width of their container

						if (activeslideLeft >= (controlNavWrapperWidth * .75)){
							$('.nivo-controlNav').animate({ left: '-'+(activeslideLeft - (controlNavWrapperWidth * .6))+'px' }, (settings.animSpeed*2));
						} else if (activeslideLeft >= controlNavWrapperWidth){
							$('.nivo-controlNav').animate({ left: '-'+(activeslideLeft - (controlNavWrapperWidth/2))+'px' }, (settings.animSpeed*2));
						} else {
							$('.nivo-controlNav').animate({ left: '0px' }, (settings.animSpeed*2));
						}
					//vars.running = false;

				}

				//check if current active slide is the first slide
				if ($('.nivo-controlNav div:first-child a').hasClass('active')){
						$('.nivo-prevNav').css({opacity:'.4',cursor:'default'});
						$('.nivo-prevNav').addClass('wasnivo-prevNav').removeClass('nivo-prevNav');
				} else {
						$('.wasnivo-prevNav').addClass('nivo-prevNav').removeClass('wasnivo-prevNav');
						$('.nivo-prevNav').removeAttr("style");
				}

				//check if current active slide is the last slide
				if ($('.nivo-controlNav div:last-child a').hasClass('active')){
						$('.nivo-nextNav').css({opacity:'.4',cursor:'default'});
						$('.nivo-nextNav').addClass('wasnivo-nextNav').removeClass('nivo-nextNav');
				} else {
						$('.wasnivo-nextNav').addClass('nivo-nextNav').removeClass('wasnivo-nextNav');
						$('.nivo-nextNav').removeAttr("style");
				}

				//Process Slideshow Caption
				if (settings.hideCaptions == false && settings.slideshowCaptionOverride == true && slideshowCaption.length > 1){
					var test = null;
				} else {
					//Process slidecaption
					if(vars.currentImage.attr('title') != '' && settings.hideCaptions == false){
						$('.nivo-caption-container a').removeClass('inactive');
						var title = vars.currentImage.attr('title');
						if(title.substr(0,1) == '#') title = $(title).html();

						if($('#slide-caption .nivo-caption').css('display') == 'block'){
							$('#slide-caption .nivo-caption').slideUp(settings.animSpeed, function(){
								//alert(this);
								title = "<div class='close-container'><a class='close-caption'>close</a></div>" + title;
								$(this).children('p').html(title);
								$(this).slideDown(settings.animSpeed);
							});
						} else {
							//alert('2');
							title = "<div class='close-container'><a class='close-caption'>close</a></div>" + title;
							$('#slide-caption .nivo-caption p').html(title);

						}
							//alert('3');
						$('#slide-caption .nivo-caption').delay(settings.fadeUpDelay).slideDown(settings.animSpeed);
						//$( "#slider-holder" ).animate({
						//	marginLeft: 240
						//}, 1000 );
						$( "#slide-caption #slide-caption" ).animate({
							backgroundColor: "#aa0000",
							color: "#fff",
							opacity: 1
						}, 1000 );
					} else {
						//Set quote to inactive
						$('.nivo-caption-container a').addClass('inactive');
						$('#slide-caption .nivo-caption').slideUp(settings.animSpeed, function(){
							$(this).children('p').html('');
						});

						//$( "#slider-holder" ).animate({
						//	marginLeft: 150
						//}, 1000 );
							$( "#slide-caption #slide-caption" ).animate({
								backgroundColor: "#aa0000",
								color: "#fff",
								opacity: 1
							}, 1000 );
						}
					}


				//Change Slide Direction if left arrow (or cursor key) is pressed
				if (nudge == "prev"){
					settings.effect = 'slideInLeft';
				} else {
					settings.effect = 'slideInRight';
				}


				//Set new slice backgrounds
				var  i = 0;
				$('.nivo-slice', slider).each(function(){
					var sliceWidth = Math.round(slider.width()/settings.slices);
					$(this).css({ height:'0px', opacity:'0',
						background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px 0%' });
					i++;
				});


				if(settings.effect == 'random'){
					var anims = new Array('sliceDownRight','sliceDownLeft','sliceUpRight','sliceUpLeft','sliceUpDown','sliceUpDownLeft','fold','fade','slideInRight','slideInLeft');
					vars.randAnim = anims[Math.floor(Math.random()*(anims.length + 1))];
					if(vars.randAnim == undefined) vars.randAnim = 'fade';
				}

				//Run random effect from specified set (eg: effect:'fold,fade')
				if(settings.effect.indexOf(',') != -1){
					var anims = settings.effect.split(',');
					vars.randAnim = anims[Math.floor(Math.random()*(anims.length))];
					if(vars.randAnim == undefined) vars.randAnim = 'fade';
				}

				//Run effects
				vars.running = true;
				if(settings.effect == 'sliceDown' || settings.effect == 'sliceDownRight' || vars.randAnim == 'sliceDownRight' || settings.effect == 'sliceDownLeft' || vars.randAnim == 'sliceDownLeft'){
					var timeBuff = 0;
					var i = 0;
					resetSliceWidth(slider, settings);
					var slices = $('.nivo-slice', slider);
					if(settings.effect == 'sliceDownLeft' || vars.randAnim == 'sliceDownLeft') slices = $('.nivo-slice', slider)._reverse();
					slices.each(function(){
						var slice = $(this);
						slice.css({ 'top': '0px' });
						if(i == settings.slices-1){
							setTimeout(function(){
								slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
							}, (100 + timeBuff));
						} else {
							setTimeout(function(){
								slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
							}, (100 + timeBuff));
						}
						timeBuff += 50;
						i++;
					});
				}
				else if(settings.effect == 'sliceUp' || settings.effect == 'sliceUpRight' || vars.randAnim == 'sliceUpRight' || settings.effect == 'sliceUpLeft' || vars.randAnim == 'sliceUpLeft'){
					var timeBuff = 0;
					var i = 0;
					resetSliceWidth(slider, settings);
					var slices = $('.nivo-slice', slider);
					if(settings.effect == 'sliceUpLeft' || vars.randAnim == 'sliceUpLeft') slices = $('.nivo-slice', slider)._reverse();
					slices.each(function(){
						var slice = $(this);
						slice.css({ 'bottom': '0px' });
						if(i == settings.slices-1){
							setTimeout(function(){
								slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
							}, (100 + timeBuff));
						} else {
							setTimeout(function(){
								slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
							}, (100 + timeBuff));
						}
						timeBuff += 50;
						i++;
					});
				}
				else if(settings.effect == 'sliceUpDown' || settings.effect == 'sliceUpDownRight' || vars.randAnim == 'sliceUpDown' || settings.effect == 'sliceUpDownLeft' || vars.randAnim == 'sliceUpDownLeft'){
					var timeBuff = 0;
					var i = 0;
					var v = 0;
					resetSliceWidth(slider, settings);
					var slices = $('.nivo-slice', slider);
					if(settings.effect == 'sliceUpDownLeft' || vars.randAnim == 'sliceUpDownLeft') slices = $('.nivo-slice', slider)._reverse();
					slices.each(function(){
						var slice = $(this);
						if(i == 0){
							slice.css('top','0px');
							i++;
						} else {
							slice.css('bottom','0px');
							i = 0;
						}

						if(v == settings.slices-1){
							setTimeout(function(){
								slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
							}, (100 + timeBuff));
						} else {
							setTimeout(function(){
								slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
							}, (100 + timeBuff));
						}
						timeBuff += 50;
						v++;
					});
				}
				else if(settings.effect == 'fold' || vars.randAnim == 'fold'){
					var timeBuff = 0;
					var i = 0;
					resetSliceWidth(slider, settings);
					$('.nivo-slice', slider).each(function(){
						var slice = $(this);
						var origWidth = slice.width();
						slice.css({ top:'0px', height:'100%', width:'0px' });
						if(i == settings.slices-1){
							setTimeout(function(){
								slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
							}, (100 + timeBuff));
						} else {
							setTimeout(function(){
								slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed);
							}, (100 + timeBuff));
						}
						timeBuff += 50;
						i++;
					});
				}
				else if(settings.effect == 'fade' || vars.randAnim == 'fade'){
					var firstSlice = $('.nivo-slice:first', slider);
					firstSlice.css({
						'height': '100%',
						'width': slider.width() + 'px'
					});

					firstSlice.animate({ opacity:'1.0' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); });
				}
				else if(settings.effect == 'slideInRight' || vars.randAnim == 'slideInRight'){
					var firstSlice = $('.nivo-slice:first', slider);
					firstSlice.css({
					   'height': '100%',
					   'width': '860px',
					   'opacity': '1',
					   'left':'860px'
					});

					firstSlice.animate({
							left: '0px'
						},
						{
							duration: 1200, //was 1500  - angus
							complete: function(){slider.trigger('nivo:animFinished');},
							step: function(now) {
								$("#slider").css({backgroundPosition: ('-' + (860 - now) + 'px 0px')});
								//javascript:opera.postError(now);
							}
						}
					);

				}
				else if(settings.effect == 'slideInLeft' || vars.randAnim == 'slideInLeft'){
					var firstSlice = $('.nivo-slice:first', slider);
					firstSlice.css({
					   'height': '100%',
					   'width': '860px',
					   'opacity': '1',
					   'left':'-860px'
					});

					firstSlice.animate({
							left: "0px"
						},
						{
						duration: 1500,
						complete: function(){slider.trigger('nivo:animFinished');},
						step: function(now) {
							var absnow = 860 - parseInt(now) * -1;
							$("#slider").css({backgroundPosition: ('' + absnow + 'px 0px')});
							//javascript:opera.postError(absnow);

							}
						}
					);
				}
		}

        // For debugging
        var trace = function(msg){
            if (this.console && typeof console.log != "undefined")
                console.log(msg);
        }

        // Start / Stop
        this.stop = function(){
            if(!$(element).data('nivo:vars').stop){
                $(element).data('nivo:vars').stop = true;
                trace('Stop Slider');
            }
        }

        this.start = function(){
            if($(element).data('nivo:vars').stop){
                $(element).data('nivo:vars').stop = false;
                trace('Start Slider');
            }
        }

        //Trigger the afterLoad callback
        settings.afterLoad.call(this);
    };

    $.fn.nivoSlider = function(options) {

        return this.each(function(){
            var element = $(this);
            // Return early if this element already has a plugin instance
            if (element.data('nivoslider')) return;
            // Pass options to plugin constructor
            var nivoslider = new NivoSlider(this, options);
            // Store plugin object in this element's data
            element.data('nivoslider', nivoslider);
        });

	};

	//Default settings
	$.fn.nivoSlider.defaults = {
		effect: 'fade',
		slices: 1,
		fadeUpDelay: 2500,
		animSpeed: 400,
		startSlide: 0,
		directionNav: true,
		directionNavHide: true,
		controlNav: true,
		controlNavThumbs: false,
    controlNavThumbsFromRel: false,
		controlNavThumbsSearch: '.jpg',
		controlNavThumbsReplace: '_thumb.jpg',
		keyboardNav: false,
		pauseOnHover: true,
		manualAdvance: true,
		hideCaptions: true,
		loopOnEnd: false,
		captionOpacity: 0.80,
		slideshowCaptionOverride: false,
		beforeChange: function(){},
		afterChange: function(){},
		slideshowEnd: function(){},
		lastSlide: function(){},
		afterLoad: function(){}
	};

	$.fn._reverse = [].reverse;

})(jQuery);

