(function($) {
   function InitProductSlider() {
      //class name of div around slider
      var oProductSlider = $('.ProductSlider');

      if( oProductSlider.length > 0 ) {
         oProductSlider.disableTextSelect();

         var oProductSliderUL = $('ul', oProductSlider);
         oProductSliderUL.width( $('li', oProductSlider).length * (150 + 20) + 10 );

         var iItemsWidth = oProductSliderUL.innerWidth() - oProductSlider.outerWidth();
         var oSliderBar = $('.slider', oProductSlider);
         var aProductLabels = $('span', oSliderBar);
         var oHandle = $('.handle', oSliderBar);

         var iOneSectorInPixels = 826 / $('li', oProductSlider).length;
         var iAlreadyShift = 30;

         aProductLabels.each( function( i, v ) {
            var iTempCenter = (iOneSectorInPixels * $('li.slider-bl' + i, oProductSlider).length) / 2;

            $( this ).css("left", (iAlreadyShift + iTempCenter - ($( this ).outerWidth() / 2) ) + "px")
               iAlreadyShift += (iTempCenter * 2);

            $( this ).bind("click", function() {
               shiftSliderToMainLabel( oSliderBar, oHandle, this, iItemsWidth );
               return false;
            });
         });

         oSliderBar.slider( {
            min: 0,
            max: iItemsWidth,
            easing: 'easeOutExpo',
            handle: '.handle',
            start: function(ev, ui) {
               $( window ).bind("selectstart", function() {
                  return false;
               });
               this.iTempValue = ui.value;
            },
            change: function (ev, ui) {
               oProductSliderUL.css('left', Math.round(ui.value) * -1);
               $( window ).unbind("selectstart", function() {
                  return false;
               });
            },
            slide: function (ev, ui) {
               oProductSliderUL.css('left', Math.round(ui.value) * -1);
               aProductLabels.each( function(i, v) {});
            }
         });

         if( $('li.Parent', oProductSlider).length > 0 ) {
            var oSelectedLI = $('li.Parent', oProductSlider)
            var iSelectedIndex = $('li', oProductSlider).index( oSelectedLI );

            shiftSliderToLabel( oSliderBar, ( (150 + 20) * (iSelectedIndex - 3)  + 85));
         }
      };
   }

   function shiftSliderToLabel( oSliderBar, iValue ) {
      $( oSliderBar ).slider("moveTo", iValue, 0);
   }

   function shiftSliderToMainLabel( oSliderBar, oHandle, sMainLabel, iItemsWidth ) {
      var iValue = iItemsWidth / 696 * (($( sMainLabel ).position().left + $( sMainLabel ).outerWidth() / 2) - (oHandle.width() / 2));
      $( oSliderBar ).slider("moveTo", iValue , 0);
   }

   $( document ).bind("ready", function() {
      InitProductSlider();
   });
})(jQuery);
