(function($) {

jQuery.fn.getMargin = function() {

var marginTop    =  parseInt(this.css('margin-top').replace('px',''));

var marginLeft   =  parseInt(this.css('margin-left').replace('px',''));

var marginRight  =  parseInt(this.css('margin-right').replace('px',''));

var marginBottom =  parseInt(this.css('margin-bottom').replace('px','')) ;

var xmargin = parseInt(marginLeft + marginRight) ;

var ymargin = parseInt(marginTop  + marginBottom) ;

 

return {

    top: marginTop,

    left: marginLeft,

    right:marginRight,

    bottom:marginBottom,

    xMargin :xmargin,

    yMargin :ymargin 

}};



})(jQuery);





(function($) {



   $.fn.VGallery = function(options) {

  

    // build main options before element iteration

    var opts = $.extend({}, $.fn.VGallery.defaults, options);

    

    // iterate and reformat each matched element

    return this.each(function() {

    

     var $this = $(this);

  

      // build element specific options

      var o = $.meta ? $.extend({}, opts, $this.data()) : opts;

 

      var $container   =$this.children('.vgallery-data-container');

      var $ul = $container.children('.vgallery-data');

      var $objects = $ul.children('li'); 

      var $objectCount = $objects.length;

      var $directionX = (o.position=='x')?true:false;

      var $nextButton = o.next;

      var $prevButton = o.prev;

      var $speed      = o.speed; 

      var $smallButtonsContainer =   $this.children('.vgallery-small-buttons');

      var $smallButtonsUl =$smallButtonsContainer.children('.vgallery-small-buttons-ul'); 

      

      /*options*/

      var $objectFloat                  = ($directionX)?'left':'none';

      var $objectMargin                 = o.margin;

      

       $objects.css({

        'float':$objectFloat,

        'list-style':'none',

        'margin': $objectMargin

        //'margin-left':'20px'

        });

      var $bigImageContainer            = o.imageContainer;

      var $bigImageFade                 = o.bigImageFade;

      var $bigImageFadeSpeed            = o.bigImageFadeSpeed;

      var $anchor                       = o.anchor;

      var $smallButtonClass             = o.smallButtonClass; 

      var $smallButtonSelectedClass     = o.smallButtonSelectedClass;

      var $fade                         = o.fade;

      var $titleTag                     = o.title;

      var $descriptionTag               = o.description

      $objects.fadeTo(10,$fade);     

      var $objectWidth                  = parseInt(o.width);

      var $objectHeight                 = parseInt(o.height);

      var $numberOnOne                  = o.objectsNumber;

      var $margins                      = $objects.getMargin();

      var $objectMargins                = ($directionX)?$margins.xMargin:$margins.yMargin; 

      var $xMargin                      = $objects.getMargin().xMargin;

      var $yMargin                      = $objects.getMargin().yMargin;

      var $containerWidthX              = ($objectWidth+$objectMargins)*$numberOnOne ; // if postion x 

      var $containerWidthY              = $objectWidth+$xMargin;           // if position y  

      var $containerHeightX             = $objectHeight+$yMargin;

      var $containerHeightY             = ($objectHeight+$objectMargins)*$numberOnOne ;

      var $ContainerWidthTypeVal        = ($directionX)?$containerWidthX:$containerWidthY ;   

      var $ContainerHeightTypeVal       = ($directionX)?$containerHeightX:$containerHeightY ; 

      var $containerWidth               = $ContainerWidthTypeVal ;

      var $containerHeight              = $ContainerHeightTypeVal ;

      var $ulWidthX                     = ($objectWidth+$objectMargins)*$objectCount;

      var $ulWidthY                     = $objectWidth+$xMargin;

      var $ulHeightX                    = $objectHeight+$objectMargins;

      var $ulHeightY                    = ($objectHeight+$objectMargins)*$objectCount ;

      var $ulWidth                      = ($directionX)?$ulWidthX:$ulWidthY ;

      var $ulHeight                     = ($directionX)?$ulHeightX:$ulHeightY ;

      var $slideByOne                   = ($directionX)?$containerWidthX:$containerHeightY; 

   

      /*options*/

     // alert($containerWidthX );

      /*css*/

     

        

        $ul.css({

            'width':$ulWidth,

            'height':$ulHeight,

            'position':'relative' 

        });

        

        $container.css({

           'width':$containerWidth,

           'overflow':'hidden',

           'height'  : $containerHeight,

           'position':'relative' 

        });

      /*css*/

     $left=0;

     $top=0;

     $busy =  false;

      if(($objectCount%$numberOnOne)==0)

      {

        $goCount  = Math.round($objectCount/$numberOnOne);

        $smallButtonsCount = Math.round($objectCount/$numberOnOne)-1;

      }

      else 

      {

        var x = Math.floor($objectCount/$numberOnOne - 1);

        var y = (($objectCount%$numberOnOne)>1)?1:0;

        var z =  x+y;   

        $goCount = z;

        $smallButtonsCount  = z;

        

      } 



  

      /* START events*/

      

     for($i=0;$i<$smallButtonsCount+1;$i++)

     {

           var $li = $('<li/>');

           var $a  = $('<a/>');  

           $a.html('&nbsp;');

           $a.addClass($smallButtonClass);     

           if($i==0) {$a.addClass($smallButtonSelectedClass); }

           $a.attr({'href':'#'});

           $li.html($a);

           $smallButtonsUl.append($li);

     }

     

     

      // slideXByNumber(-1,4);

      

       

      function slideXByNumber ($lambda,$number)

      {

         $busy = true;

         $to   = $slideByOne*$number*$lambda;

         $left = $to;

         $ul.animate({'left' :$to+'px'},$speed,function(){$busy = false;});

        

      }

      

      function slideYByNumber ($lambda,$number)

      { 

          $busy = true;

          $to = $slideByOne*$number*$lambda;

          $top = $to;

          $ul.animate({'top' :$to+'px'},$speed,function(){$busy = false;});

      }

 

 

      function slideX($lambda)

      { 

        $busy = true;

        $to = $slideByOne*$lambda+$left; 

        $left = $to;

        $ul.animate({'left' :$to+'px'},$speed,function(){$busy = false;});

      

      }

      function slideY($lambda)

      {  

          $busy = true;

          $to = $slideByOne*$lambda+$top;

          $top = $to;

          $ul.animate({'top' :$to+'px'},$speed,function(){$busy = false;});

      }

        $($nextButton).bind('click',function(){

            if($busy){return false;}

            if($goCount==0) {return false;}  

            if($directionX){ slideX(-1);}else{slideY(-1);}

         

            $goCount--; 

            var $x =  Math.round($objectCount/$numberOnOne) - $goCount;            

            $('.'+$smallButtonClass).removeClass($smallButtonSelectedClass);

            $('.'+$smallButtonClass+':eq('+($x)+')').addClass($smallButtonSelectedClass);             

            return false; 

        });

        

        $($prevButton).bind('click',function(){

           if($busy){return false;}

           if($directionX && $left==0)  {   return false;} 

           if(!$directionX && $top==0){   return false;}

           if($directionX){ slideX(1);}else{slideY(1);}

            $goCount++;

            var $x =  Math.round($objectCount/$numberOnOne) - $goCount;            

            $('.'+$smallButtonClass).removeClass($smallButtonSelectedClass);

            $('.'+$smallButtonClass+':eq('+($goCount+1)+')').addClass($smallButtonSelectedClass); 

           return false;

        });

        

        

          

        $('.'+$smallButtonClass).bind('click',function(){

           if($busy){   return false;}

           var $smallBtn = $(this);

           var $index = $smallBtn.parent().index();

           $('.'+$smallButtonClass).removeClass($smallButtonSelectedClass);

           $smallBtn.addClass($smallButtonSelectedClass); 

           var $selectedIndex = $('.'+$smallButtonSelectedClass).parent().index();

           if($directionX){slideXByNumber(-1,$selectedIndex);}else{slideYByNumber(-1,$selectedIndex);}

           $goCount =  $smallButtonsCount -  $selectedIndex;

           return false;

        });

   

       $('a.vgallery-anchor').bind('click',function(){
      
        if($busy) {return false;}
       
             $busy = true;
       
            $anchorB = $(this);

            

            $title = $(this).attr('title');
      
        
           
      
            $('.face_desc h2').html($title);
      
         
             $desc = $(this).attr('name'); 

             $('.vgallery-description').html($desc);
 
            var $href  = $anchorB.attr('href');
   

            var $bigImage = $($bigImageContainer);
   

            $bigImage.fadeTo($bigImageFadeSpeed,$bigImageFade,function(){
 
            var img = $("<img />").attr('src',$href);
 
            $bigImage.html(img);

            $anchorB.parent().fadeTo(1,1);

            $objects.not($anchorB.parent()).fadeTo($bigImageFadeSpeed,$fade);
            
 

            $bigImage.fadeTo($bigImageFadeSpeed,1);

            $busy = false;                    

            });
 

            

            return false;

     });

   

      /*END events*/

   

    });

  };



    

 

  //

  // plugin defaults

  //

  $.fn.VGallery.defaults = {

    position:'x',

    width:'80',

    height:'80',

    smallButtonClass:'vgallery-small-buttons',

    smallButtonSelectedClass:'vgallery-small-buttons-selected',

    objectsNumber:5,

    margin  : '0px 10px',

    fade    :   0.4,

    prev    :'.prev',

    next    :'.next',

    speed   :1000,

    imageContainer    : ".big_image",

    bigImageFade      :  0.6,

    bigImageFadeSpeed : 200,

    anchor            :  '.vgallery-anchor',

    title             :  'vgallery-title',

    description       :  'vgallery-description'      

    

  };

//

// end of vgallery

//

})(jQuery);
