(function($) {
	$.slider = function(el,options) {
		var base = this;
		base.timer = null;
		base.init = function(){
			base.options = $.extend({},$.slider.defaults, options);
			
			var $itemClone = $(el).find('li').filter(':first').clone().addClass('cloned');
			var $imgarray = new(Array);
	    $(el).find('li').filter(':last').after( $itemClone.attr('id', function(i,id){ return (id==='') ? '' : id + "-cloned"; }) );
	    
	    var $itemClone2 = options.featureText.find('li').filter(':first').clone().addClass('cloned');
			var $imgarray2 = new(Array);
	    options.featureText.find('li').filter(':last').after( $itemClone2.attr('id', function(i,id){ return (id==='') ? '' : id + "-cloned"; }) );

			if ($.browser.msie && jQuery.browser.version >= 8) {
				base.slel = $(el).wrap('<div class="sliderwindow" style="height: 250px"/>');
				// overides stylesheet for IE8 which seems to add an extra pixel
      } else {
      	base.slel = $(el).wrap('<div class="sliderwindow"/>');
      }
      base.slel2 = options.featureText.wrap('<div class="sliderwindow2" style="height: 80px"/>');
			base.$items = base.slel.find('> li');
			base.p = base.options.startPage;
			if (!$.isFunction($.easing[base.options.easing])) { base.options.easing = "swing"; }
			base.w = 0;
			base.ic = 0;
			base.w2 = 0;
			base.$items.each(function(i,el){
				$(this).css({float: "left"});
				base.w += base.options.width;
				base.w2 += base.options.featureWidth;
				base.ic++;
			});
			stposi = base.options.startPage - 1;
			stpos = stposi * base.options.width * -1;
			$(el).css({width: base.w, position: "absolute", left: stpos});
			stpos = stposi * base.options.featureWidth * -1;
			options.featureText.css({width: base.w2, position: "absolute", left: stpos});
			$("ul#navboxes li").each(function(i){
				$(this).click(function(){
					$(this).find('a').blur();
					base.slideTo(i);
					return false;
				});
			});
			base.setCurrent();
			base.startAutoPlay();
			$(el).mouseenter(function(){
				if (base.timer) { window.clearInterval(base.timer); }
			});
			$(el).mouseleave(function(){
				base.startAutoPlay();
			});
			options.featureText.mouseenter(function(){
				if (base.timer) { window.clearInterval(base.timer); }
			});
			options.featureText.mouseleave(function(){
				base.startAutoPlay();
			});
	  }
	  base.setCurrent = function() {
	  	curli = $('#navboxes').find('.curr');
			curli.removeClass('curr');
			curli = $('#navboxes').find('li').eq(base.p - 1);
			$(curli).find('a').addClass('curr');
		}
		base.startAutoPlay = function() {
			if (base.timer) { window.clearInterval(base.timer); }
			base.timer = window.setInterval(function() {
				base.goNext();
			}, base.options.delay);
		}
		base.goNext = function() {
			if (base.p != 1) {
			  base.p++;
			  base.p = (base.p == base.ic) ? 1 : base.p;
			} else {
				base.p++;
				$(el).css({left: 0});
				options.featureText.css({left: 0});
			}
			$(el).animate(
			  { left: '-=' + base.options.width },
			  { easing: base.options.easing, duration: base.options.animationTime, complete: function() { base.setCurrent(); } }
			);
			options.featureText.animate(
			  { left: '-=' + base.options.featureWidth },
			  { easing: base.options.easing, duration: base.options.animationTime }
			);
		}
		base.slideTo = function(myp) {
			if (base.p == 1) { 
				$(el).css({left: 0});
				options.featureText.css({left: 0});
			}
			l = myp * base.options.width * -1;
			$("#slider1").animate(
			  { left: l },
			  { easing: base.options.easing, duration: base.options.animationTime, complete: function() { base.setCurrent(); } }
			);
			l = myp * base.options.featureWidth * -1;
			$("#slider2").animate(
			  { left: l },
			  { easing: base.options.easing, duration: base.options.animationTime }
			);
			base.p = myp + 1;
			base.startAutoPlay();
		}
	  
	  base.init();
	}
	
	$.slider.defaults = {
		easing                : "swing",
		width                 : 950,
		height                : 321,
		delay                 : 6000,
		startPage             : 1,
		animationTime         : 2000,
		calloutAnimationTime  : 600,
		pageItems             : $("li.slide"),
		featureText           : $("#slider2"),
		featureWidth          : 582
	};
	
	$.fn.slider = function(options) {
		// initialize the slider
		if ((typeof(options)).match('object|undefined')) {
			return this.each(function(i){
				(new $.slider(this, options));
			});
		}
	};
})(jQuery);
