$.fn.animateHover = function(settings) {
  settings = jQuery.extend({
    bgcolor: '#000000',
    fonthovercolor: '#ffffff',
    spanclass: 'hover',
    ignoreHeight: false,
    ignoreClass: null,
    preFn: null,
    hoverFn: null,
    duration: 500
  }, settings);
  return this.each(function(e, object) {
  $(this).css('position', 'relative');
  var original = $(this).css('background-color');
  var btnText = $(this).html();
  var width = $(this).css('width');
  var height = $(this).css('height');
  var paddingTop = $(this).css('padding-top');
  var paddingRight = $(this).css('padding-right');
  var paddingBottom = $(this).css('padding-bottom');
  var paddingLeft = $(this).css('padding-left');
    
  var styleStr = "display: none; padding-top: "+paddingTop+"; padding-right: "+paddingRight+"; padding-bottom: "+paddingBottom+"; padding-left: "+paddingLeft+";width: "+width+"; color: "+settings.fonthovercolor+"; position: absolute; top: 0px; left: 0px; background-color: "+settings.bgcolor+";";
  if(settings.ignoreHeight != true) {
    styleStr += "height: "+height+"";
  }
  $(this).append("<div class='"+settings.spanclass+"' style='"+styleStr+"'>"+btnText+"</div>");
  if(settings.preFn != null) {
    settings.preFn(e, this);
  }  
  $(this).hover(function(e) {
    if(settings.hoverFn != null) {
      settings.hoverFn(e, this);
    }    
    if(settings.ignoreClass != null && $(this).hasClass(settings.ignoreClass)) {
      return false;
    }
    $(this).children('.'+settings.spanclass).stop(true, true).fadeIn(settings.duration);
        }, function() {
          $(this).children('.'+settings.spanclass).stop(true, true).fadeOut(settings.duration);
    });
  });
};

$.fn.slider1903 = function(settings) {
  settings = jQuery.extend({
    toggleEvery: 4,
    toggleSeperator: '...',
    maxTogglers: 6,
    currentToggleClass: 'current',
    toggleNavClass: 'ulSvn',
    preFn: null,
    postFn: null,
    speed: 1500,
    ease: 'easeOutQuint',
    type: 'slide',
    auto: false,
    autoSpeed: 5000
  }, settings);
    

  //count and do math
  var $this = $(this),
      total = $(this).children().length,
    baseWidth = $(this).width(),
    singleWidth = baseWidth / total,
    baseMovement = singleWidth * settings.toggleEvery,
    totalPages = baseWidth / baseMovement,
    roundedPages = Math.floor(totalPages),
    hasOrphans,
    orphans,
    current = 1;
  
  if(totalPages == roundedPages) {
    hasOrphans = false;
  } else {
    hasOrphans = true;
    substrt = totalPages.toString().lastIndexOf(".")
    orph = totalPages.toString().substring(substrt);
    orphans = orph * settings.toggleEvery;
  }
  
  if(settings.type == 'fade') {
    $this.find('li:not(:first)').hide();
    $this.find('li').each(function(index) {
      $(this).addClass("el-"+(index+1));
    });
  }
    //add navigation elements
  var i = 1;
  if(totalPages > 1) {
    var str = '<div class="pagination"><ul class="'+settings.toggleNavClass+'">';
    for (i;i<=roundedPages;i++)
    {
      if(i == current) {
        str += '<li class="'+(i)+'"><a data-val="'+(i)+'" class="'+settings.currentToggleClass+'">'+(i)+'</a></li>';
      } else {
        str += '<li class="'+(i)+'"><a data-val="'+(i)+'">'+(i)+'</a></li>';
      }
    }
    if(hasOrphans) {
      str += '<li><a data-id="orphan" data-count="'+orphans+'" data-val="'+(i)+'">'+(i)+'</a></li>';
    }
    str += '</ul></div>';
    $(this).after(str);
  }
  
  if(settings.auto == true) {
    //ROTATE WORK SECTION
    var rotatoInt = setInterval(rotato, settings.autoSpeed);
    //END ROTATE WORK SECTION  
  }  
    //control click functions
    
    $('.'+settings.toggleNavClass+' li a').click(function(e, kill) {
      if(settings.auto && kill != false) {
        clearInterval(rotatoInt);
      }
      $('.'+settings.toggleNavClass+' li a').each(function(){$(this).removeClass(settings.currentToggleClass)});
      $clicked = $(this).attr('data-val');
      //$(this).addClass(settings.currentToggleClass);
      if(settings.type == 'slide') {
        if($clicked > current) {
          //if $clicked is not the last or the orphaned
          if($clicked < totalPages && current < roundedPages || !hasOrphans && $clicked != i)  {
            move = baseMovement * ($clicked - 1);
            $this.stop(true, true).animate({left : -move+'px'}, settings.speed, settings.ease)
          }
          
          //if $clicked is an orpan page
          if(hasOrphans && $clicked == i) {
            $this.stop(true, true).animate({left : -((roundedPages-1) * baseMovement)-(orphans * singleWidth)+'px'}, settings.speed, settings.ease)
          }
        } else if($clicked == 1) {
          //if root
          $this.stop(true, true).animate({left : 0+'px'}, settings.speed, settings.ease)
        }
      } else {
        $this.find('li').each(function(e) {
          if($(this).css('display') == 'block' || $(this).css('display') == 'list-item') {
            $(this).fadeOut(settings.speed, function() {
              $("li.el-"+$clicked).fadeIn(settings.speed);
            });
          }
        });      
      }
      $("video").each(function() {$(this)[0].player.pause()});
      
      $(this).addClass(settings.currentToggleClass);
    });
  
};
var globalI = 0;
function rotato() {
      var totalLen = $('.ulFtrPos li').length-1;
      var alive = true;
      if(globalI < totalLen) {
        globalI++;
        $('.ulFtrPos li:eq('+globalI+')').children().trigger('click', false);
      } else {
        $('.ulFtrPos li:eq(0)').children().trigger('click', false);
        globalI = 0;
      }
    };

$.fn.randomize = function(childElem) {
  return this.each(function() {
      var $this = $(this);
      var elems = $this.children(childElem);

      elems.sort(function() { return (Math.round(Math.random())-0.5); });  

      $this.remove(childElem);  

      for(var i=0; i < elems.length; i++)
        $this.append(elems[i]);      
  });    
}
  
jQuery.fn.idle = function(time)
{
    var o = $(this);
    o.queue(function()
    {
       setTimeout(function()
       {
          o.dequeue();
       }, time);
    });
};

