$.fn.xGallery = function( params ){
  var params = $.extend({ 
    version: 1, 
    boxPager: 'pager-xgallery', 
    imgArrCache: new Array() 
  }, params);
  
  //Ф-ция создает и добавляет пейджер картинок 
  var pager = function( galEl ){
    var classActiveEl = '';
    var contentPager = '';
    
    for ( var i = 1; i <= galEl.size(); i++ ) {
      classActiveEl = ''; 
      if ( i == 1 ) { classActiveEl = ' class="active"'; } 
      contentPager += '<a href="#"' + classActiveEl + '>' + i + '</a>'; 
    }
    
    $('.x-box-footer .launch-this-project').before('<div class="pager-xgallery">' + contentPager + '</div>'); 
  }
  
  // Ф-ция активирует элемент пейджера
  var activationElPager = function(id){
    var i = 1;
    id = parseInt(id);
    
    $(".pager-xgallery a").each(function(){
      if ( id == i ) { 
        $(this).addClass("active"); 
      } else { 
        $(this).removeClass("active"); 
      }
      
      i++;
    });
  }
  
  // Ф-ция смены активного изображения
  var slider = function(gal, el, type){
    if ( type == 'pager' ) {
      var elPager = parseInt( el.text() );
    } else if ( type == 'gal' ) {
      var elPager = parseInt( el.attr('class') ) + 1;
      if ( elPager > gal.size() ) { elPager = 1; }
    }
    gal.each(function(){ if ( parseInt($(this).attr('class')) != elPager ) { $(this).fadeOut(); } else { cacheImage($('img',this).attr('src')); $(this).fadeIn(); } });
    activationElPager(elPager);
    return false;
  }
  
  var cacheImage = function (imgSrc){
    var statusCacheImage = 0;
    
    if ( params.imgArrCache.length != 0 ){
      for ( var i = 0; i < params.imgArrCache.length; i++ ) {
        if ( params.imgArrCache[i].src == imgSrc ) {
          statusCacheImage = 1;
        }
      }
    }
    
    if ( statusCacheImage == 0 ) {
      var img = new Image();
      img.src = imgSrc;
      params.imgArrCache.push(img);
    }
  }
  
	return this.each(function(){
	  if ( $(this).size() > 0 ) {
      var i = 1;
      var elsGal = $('li', this);
      
      elsGal.each(function(){
        $(this).attr('class', i);
        if (i != 1){ $(this).hide(); } else { cacheImage( $('img',this).attr('src') ); $(this).show(); }
        i++;
      });
      
      if ( $('.pager-xgallery').size() == 0 ) { pager(elsGal); }
      
      elsGal.click(function(){ slider( elsGal, $(this), 'gal' ); });
      $('.pager-xgallery a').click(function(){ slider( elsGal, $(this), 'pager' ); });
	  }
	});
};
