/*
 * 	Easy Slider - jQuery plugin
 *	written by Alen Grakalic	
 *	http://cssglobe.com/post/3783/jquery-plugin-easy-image-or-content-slider
 *
 *	Copyright (c) 2009 Alen Grakalic (http://cssglobe.com)
 *	Dual licensed under the MIT (MIT-LICENSE.txt)
 *	and GPL (GPL-LICENSE.txt) licenses.
 *
 *	Built for jQuery library
 *	http://jquery.com
 *
 */
 
/*
 *	markup example for $("#images").easySlider();
 *	
 * 	<div id="images">
 *		<ul>
 *			<li><img src="images/01.jpg" alt="" /></li>
 *			<li><img src="images/02.jpg" alt="" /></li>
 *			<li><img src="images/03.jpg" alt="" /></li>
 *			<li><img src="images/04.jpg" alt="" /></li>
 *			<li><img src="images/05.jpg" alt="" /></li>
 *		</ul>
 *	</div>
 *
 */
var index = 1;
var timerID3 = null;
var autoSlideStopped = false;
var Animateobj;
//alert("just defined object");
(function($) {

  $.fn.easySlider = function(options) {

    // default configuration properties
    var defaults = {
      //prevId: 'prevBtn',
      //prevText: 'Previous',
      //nextId: 'nextBtn',
      // nextText: 'Next',
      orientation: '', //  'vertical' is optional;
      speed: 800
    };

    var options = $.extend(defaults, options);

    return this.each(function() {
      var obj = $(this);
      var s = $("li", obj).length;
      var w = obj.width();
      var h = obj.height();
      var ts = s - 1;
      var t = 0;
      //var currntIndex = 1;
      // var index = 0;
      var vertical = (options.orientation == 'vertical');
      $("ul", obj).css('width', s * w);
      if (!vertical) $("li", obj).css('float', 'left');

      if (options.prevText != '' && options.nextText != '') {
        options.prevId = 'PrevbtnId';
        options.nextId = 'NextbtnId';

        $(obj).after('<span id="' + options.prevId + '"><a href=\"javascript:void(0);\">' + options.prevText + '</a></span> <span id="' + options.nextId + '"><a href=\"javascript:void(0);\">' + options.nextText + '</a></span>');
      }
      $("a", "#" + options.prevId).hide();
      //$("a", "#" + options.nextId).hide();
      $("a", "#" + options.nextId).click(function() {
        // if slide1 div validates
        if (MM_validateTextFields2("slide1")) {
          animate("next");
          if (t >= ts) $(this).fadeOut();
          $("a", "#" + options.prevId).fadeIn();
        }
      });

      $("a", "#" + options.prevId).click(function() {
        animate("prev");
        if (t <= 0) $(this).fadeOut();
        $("a", "#" + options.nextId).fadeIn();
      });

      //Call AutoAnimate
      Animateobj = new autoAnimate();
      Animateobj.setSpeed(7000);
      Animateobj.Start();

      if (options.prevText == '' && options.nextText == '') {
        $("#ulTopNav").find("a").each(function(i) {
          var currntIndex = i + 1;
          var diff = 0;
            $(this).click(function() {

              //reset and start AutoAnimate timer if it should be running still
              if (!autoSlideStopped) {

                Animateobj.Stop();
                Animateobj.Start();
              }

              if (currntIndex > index) {
                diff = currntIndex - index;
                if (diff > 1) {
                  options.speed = 90;
                  for (i = 0; i < diff; i++) {
                    animate("next");
                  }
                }
                else {
                  options.speed = 600;
                  animate("next");
                }
                //if (t >= ts) $(this).fadeOut();

                //$("a", "#" + options.prevId).fadeIn();
                // }
              }
              else if (currntIndex < index) {
                diff = index - currntIndex;
                if (diff > 1) {
                  options.speed = 90;
                  for (i = 0; i < diff; i++) {
                    animate("prev");
                    //alert(" sliding " + i);
                  }
                  //if (t <= 0) $(this).fadeOut();
                }
                else {
                  options.speed = 600;
                  animate("prev");
                }
              }
              index = currntIndex;
              //alert("index = " + index);

            });

        });
      }

      /* define Auto animate object with default speed of 5 seconds. 
      This speed can be changed when object is defined.
      Example
      var Animateobj = new autoAnimate();
      Animateobj.Start();
      Animateobj.setSpeed(7000);*/

      function autoAnimate() {
        var Autospeed = 5000;

        function init() {
          if (document.getElementById("btnStartTimer")) {
            document.getElementById("btnStartTimer").onclick = function() {
              Animateobj.Start();
              autoSlideStopped = false;
              document.getElementById("btnStopTimer").className = '';
              document.getElementById("btnStartTimer").className = 'hidden';
            }
          }
          if (document.getElementById("btnStopTimer")) {
           document.getElementById("btnStopTimer").onclick = function() {
              Animateobj.Stop();
              autoSlideStopped = true;
              document.getElementById("btnStartTimer").className = '';
              document.getElementById("btnStopTimer").className = 'hidden';
            }
         }
        }

        function doAnimate() {
          options.speed = 600;
          animate("next");
          if (index + 1 > 9) {
            index = 1;
            gotoFirstSlide();
          }
          else {
            index = index + 1;
          }
        }

        function gotoFirstSlide() {
          options.speed = 90;
          for (i = 0; i < 9; i++) {
            animate("prev");
          }
          options.speed = 600;
        }

        //change speed
        this.setSpeed = function(val) {
          Autospeed = val;
        }

        this.Start = function() {
          init();
          timerID3 = setInterval(doAnimate, Autospeed);
        }

        this.Stop = function() {
          clearTimeout(timerID3);
        }


      }

      function animate(dir) {
        //alert("calling animate");
        if (dir == "next") {
          //alert("t =" + t + " ,ts = " + ts);
          t = (t >= ts) ? ts : t + 1;
        } else {
          t = (t <= 0) ? 0 : t - 1;
        };
        if (!vertical) {
          p = (t * w * -1);
          $("ul", obj).animate(
	    { marginLeft: p },
	    options.speed
	 );
        } else {
          p = (t * h * -1);
          $("ul", obj).animate(
	    { marginTop: p },
	    options.speed
          );
        }
      };
      if (s > 1) $("a", "#" + options.nextId).fadeIn();
    });

  };



})(jQuery);
