(function($) {
  $.fn.ContentSlider = function(options)
  {
    var defaults = {
      leftBtn : 'content_slider_files/cs_leftImg.png',
      rightBtn : 'content_slider_files/cs_rightImg.png',
      width : '894px', /* CHANGE: pledwell */
      height : '400px',
      speed : 400,
      easing : 'easeOutQuad',
      textResize : false,
      IE_h2 : '26px',
      IE_p : '11px'
    }
    var defaultWidth = defaults.width;
    var o = $.extend(defaults, options);
    var w = parseInt(o.width);
    var n = this.children('.cs_wrapper').children('.cs_slider').children('.cs_article').length;
    var x = -1*w*n+w; // Minimum left value
    var p = parseInt(o.width)/parseInt(defaultWidth);
    var thisInstance = this.attr('id');
    var inuse = false; // Prevents colliding animations
	
	var t; // AutoAdvance Timer

    function moveSlider(d, b)
    {
      var l = parseInt(b.siblings('.cs_wrapper').children('.cs_slider').css('left'));
      if(isNaN(l)) {
        var l = 0;
      }
      var m = (d=='left') ? l-w : l+w;
      if(m<=0&&m>=x) {
        b
          .siblings('.cs_wrapper')
            .children('.cs_slider')
              .animate({ 'left':m+'px' }, o.speed, o.easing, function() {
                inuse=false;
              });

        if(b.attr('class')=='cs_leftBtn') {
          var thisBtn = $('#'+thisInstance+' .cs_leftBtn');
          var otherBtn = $('#'+thisInstance+' .cs_rightBtn');
        } else {
          var thisBtn = $('#'+thisInstance+' .cs_rightBtn');
          var otherBtn = $('#'+thisInstance+' .cs_leftBtn');
        }
        if(m==0||m==x) {
          thisBtn.animate({ 'opacity':'0' }, o.speed, o.easing, function() { thisBtn.hide(); });
        }
        if(otherBtn.css('opacity')=='0') {
          otherBtn.show().animate({ 'opacity':'1' }, { duration:o.speed, easing:o.easing });
        }
      }
    }
	
    function vCenterBtns(b)
    {
      // Safari and IE don't seem to like the CSS used to vertically center
      // the buttons, so we'll force it with this function
      var mid = parseInt(o.height)/2;
      b
        .find('.cs_leftBtn img').css({ 'top':mid+'px', 'padding':0 }).end()
        .find('.cs_rightBtn img').css({ 'top':mid+'px', 'padding':0 });
    }
	  
    return this.each(function() {
      $(this)
        // Set the width and height of the div to the defined size
        .css({
          width:o.width,
          height:o.height
        })
        // Add the buttons to move left and right
        .prepend('<a href="#" class="cs_leftBtn"><img src="'+o.leftBtn+'" /></a>')
        .append('<a href="#" class="cs_rightBtn"><img src="'+o.rightBtn+'" /></a>')
        // Dig down to the article div elements
        .find('.cs_article')
          // Set the width and height of the div to the defined size
          .css({
            width:o.width,
            height:o.height
          })
          .end()
        // Animate the entrance of the buttons
        .find('.cs_leftBtn')
          .css("opacity",0)
          .hide()
          .end()
        .find('.cs_rightBtn')
          .hide()
          .animate({ 'width':'show' });

      // Resize the font to match the bounding box
      if(o.textResize===true) {
        var h2FontSize = $(this).find('h2').css('font-size');
        var pFontSize = $(this).find('p').css('font-size');
        $.each(jQuery.browser, function(i) {
          if($.browser.msie) {
             h2FontSize = o.IE_h2;
             pFontSize = o.IE_p;
          }
        });
        $(this).find('h2').css({ 'font-size' : parseFloat(h2FontSize)*p+'px', 'margin-left' : '66%' });
        $(this).find('p').css({ 'font-size' : parseFloat(pFontSize)*p+'px', 'margin-left' : '66%' });
        $(this).find('.readmore').css({ 'font-size' : parseFloat(pFontSize)*p+'px', 'margin-left' : '66%' });
      }

      // Store a copy of the button in a variable to pass to moveSlider()
      var leftBtn = $(this).children('.cs_leftBtn');
      leftBtn.bind('click', function() {
        if(inuse===false) {
          inuse = true;
		  
		  // Restart timer on arrow click
		  clearTimeout(t);
		  t = setTimeout(autoSlider, 5000);
		  
          moveSlider('right', leftBtn);
        }
        return false; // Keep the link from firing
      });

      // Store a copy of the button in a variable to pass to moveSlider()
      var rightBtn = $(this).children('.cs_rightBtn');
      rightBtn.bind('click', function() {
        if(inuse===false) {
          inuse=true;
		  
		  // Restart timer on arrow click
		  clearTimeout(t);
		  t = setTimeout(autoSlider, 5000);
		  
          moveSlider('left', rightBtn);
        }
        return false; // Keep the link from firing
      });
      
      vCenterBtns($(this)); // This is a CSS fix function.
	   
	  // works
	  // moveSlider('left', rightBtn);
	  
	  // works
	  // setInterval("alert('hi');", 500);
	  
	  // works
	  t = setTimeout(autoSlider, 5000);
	  
	  // doesn't work
	  // setInterval("autoSlider()", 500);
	  
	  function autoSlider()
	  {
		
		// alert('hi');
		l = parseInt(rightBtn.siblings('.cs_wrapper').children('.cs_slider').css('left'));
		
		// works
		if(l == x)
		{
			//alert("restart");
			ReStart();
		}
		else
		{
			moveSlider('left', rightBtn);
		}
		t = setTimeout(autoSlider, 5000);
		
		// works
		// setInterval("alert('hi');", 500);
		
	  }
	  
	  function ReStart()
	  {
		  rightBtn
          .siblings('.cs_wrapper')
            .children('.cs_slider')
              .animate({ 'left':'0px' }, o.speed, o.easing, function() {
                inuse=false;
              });
			$('#'+thisInstance+' .cs_leftBtn').animate({ 'opacity':'0' }, o.speed, o.easing, function() { $('#'+thisInstance+' .cs_leftBtn').hide(); });
			$('#'+thisInstance+' .cs_rightBtn').show().animate({ 'opacity':'1' }, { duration:o.speed, easing:o.easing });
			  
	  }
	  
	  
	});	
	
  }
 
       
})(jQuery)
