
(function ($)
{
  $.fn.imageSlideshow = function ()
  {
    return $(this).each(function ()
    {
      $('div.Figure', $(this)).each(function ()
      {
        var fElem = document.createElement('figure');
        $(fElem).html($(this).html());
	    var redirectionUrlValue = $(fElem).find('#redirectionUrl1').val();
	    if(redirectionUrlValue!="")
	    {
		    $(fElem).click(function(){ window.location = redirectionUrlValue; });
	    }
        $(this).replaceWith($(fElem));


      });

      var currentImage = 0;

      var slideshow = $(this);
      var sliderType = $(this).find('.sliderType').text();
      
      var sliderWidth;
      var indexers;      
      var imageSlider;     
      var imageCaption;
      var wrapperHeight;
      
      var indexerClick;
       
       switch(sliderType)
       {
        case "1":
        {
            sliderWidth  = 565;
            indexers = slideshow.parent().find('.IndexersDirectSlider');
            imageSlider = slideshow.parent().find('.ImageDirectSlider img');
            textURL = slideshow.parent().find('.URLDirectSlider');
            imageCaption = slideshow.parent().find('.CaptionDirectSlider');          
            wrapperHeight = imageSlider.height();
            indexers.css("margin-top",wrapperHeight - 19);  
            break;
        }
        case "2":
        {
        	sliderWidth = 370;
	        indexers = slideshow.parent().find('.IndexersReverseSlider');
	        imageSlider = slideshow.parent().find('.ImageReverseSlider img');
	        textURL = slideshow.parent().find('.URLReverseSlider'); 
            imageCaption = slideshow.parent().find('.CaptionReverseSlider');
            wrapperHeight = imageSlider.height();
            if(jQuery.browser.safari || jQuery.browser.mozilla)
            {
            indexers.css("margin-top",wrapperHeight + 5);
            }
            else
            {
            indexers.css("margin-top",wrapperHeight);
            }
            break;
        }
        case "3":
        {
            sliderWidth  = 955;
            indexers = slideshow.parent().find('.IndexersDirectWideSlider');
            imageSlider = slideshow.parent().find('.ImageDirectWideSlider img');
            textURL = slideshow.parent().find('.URLDirectWideSlider');
            imageCaption = slideshow.parent().find('.CaptionDirectWideSlider');
            wrapperHeight = imageSlider.height();
            indexers.css("margin-top",wrapperHeight - 19);
            break;
        }
       }
       
       for(var index=0; index<textURL.length;index++)
       {
            if($(textURL[index]).html() != "")
            {
                $(textURL[index]).css("top",wrapperHeight - 24);
                $(textURL[index]).show();                    
            }
       }

       if(jQuery.browser.safari || jQuery.browser.mozilla)
       {
            indexers.css("position", "relative");
       }

       var indexerSet = indexers.find('.Indexer img');
       for(var index = 0; index < indexerSet.length; index++)
       {
            $(indexerSet[index]).attr("indexerUniqueID", index);
       }

      
      var timerValue = slideshow.find('#sliderTimerValue1').val();
      var figures = slideshow.find('figure');

      if(figures.length == 0)
      {
       return;
      }

      if(slideshow.parent().width() > sliderWidth)
      {
        slideshow.parent().width(sliderWidth);
      }

      slideshow.parent().find('.SliderTitle').show();

      var isSingle = figures.length == 1;
      
      imageCaption.height(wrapperHeight);
      
      var pageMode = $(document).find("#MSOLayout_InDesignMode").val();
      
      if(sliderType == "3" && pageMode == "1")
      {
      //Edit mode for 5-column slider (to avoid overlay on system menu)
        $(this).css("width","555px");
        var wrapper = $('<div class="wrapper" style="' + 'height:' + wrapperHeight + 'px;width:555px;"></div>');     
      }
      else
      {
        var wrapper = $('<div class="wrapper" style="' + 'height:' + wrapperHeight + 'px"></div>');
      }
      
      var firstImage = figures.eq(0).find('img');
      
      slideshow.append(wrapper);

      if (isSingle)
      {
        if(jQuery.browser.safari || jQuery.browser.mozilla)
        {
            var positioner = $('<div class="positioner"></div>');
            wrapper.append(positioner);
            positioner.append(figures);
        }
        else
        {
            wrapper.append(figures);
        }
      }
      else
      {

        var positioner = $('<div class="positioner"></div>');

        wrapper.append(positioner);
        positioner.append(figures);

        var justifyToFirstImage = function ()
        {
          positioner.width(figures.length * sliderWidth);
        }

        if (firstImage.height() > 0)
        {
          justifyToFirstImage();
          indexers.find('.Indexer').show();  
          slideshow.show();
        } else
        {
          firstImage.load(function ()
          {
            justifyToFirstImage();
            indexers.find('.Indexer').show();            
            slideshow.show();
          });
        }
        var change = function (i)
        {
          currentImage = i;
          var figure = figures.eq(currentImage);

	  //fix for the glitch with one unit less positioner width
	  var currentPosition = figure.position().left;
	  var modulo = currentPosition%sliderWidth;
      if(modulo>0)
      {
        currentPosition++;
      }
        var fadeOut = { opacity: 0}  
	    var newCSS = { left: (-1)*currentPosition, opacity: 0 } 
	    var newCSSSafari = { left: (-1)*currentPosition }     
        var fadeIn = { opacity: 1} 

        indexerSet.unbind('click');
        if(jQuery.browser.safari || jQuery.browser.mozilla)
        {
          positioner.fadeOut(900, function (){positioner.css(newCSSSafari); positioner.fadeIn(900, function(){indexerSet.bind('click', indexerClick);});});
        }
        else
        {
          positioner.stop().animate(fadeOut, 900).animate(newCSS, 0).animate(fadeIn, 900, function(){ indexerSet.bind('click', indexerClick);});
        }

        indexers.find('.Indexer').show();
        changeIndexer(i);
        }

        var changeIndexer = function (i)
        {
          indexerSet.attr("src","/_layouts/images/KONE.com/sliderInactiveSquare.jpg"); 
          $(indexerSet[i]).attr("src","/_layouts/images/KONE.com/sliderActiveSquare.jpg");
        };
          indexerSet.attr("src","/_layouts/images/KONE.com/sliderInactiveSquare.jpg"); 
          $(indexerSet[currentImage]).attr("src","/_layouts/images/KONE.com/sliderActiveSquare.jpg");

        var interval = setInterval(function ()
        {
          change(currentImage + 1 > figures.length - 1 ? 0 : currentImage + 1);
        }, timerValue*1000);
        
        slideshow.mouseover(function (){clearInterval(interval);});
        
        slideshow.mouseout(function (){interval = setInterval(function (){change(currentImage + 1 > figures.length - 1 ? 0 : currentImage + 1);}, timerValue*1000);});
        
        indexerClick = function()
        {
            clearInterval(interval);
            var currentImageObj = $(this);
            var indexNumb = 0;
  
            indexerSet.attr("src","/_layouts/images/KONE.com/sliderInactiveSquare.jpg");
            currentImageObj.attr("src","/_layouts/images/KONE.com/sliderActiveSquare.jpg");
  
            for(var i=0;i<indexerSet.length;i++)
            {
                var image = indexerSet[i];
                if($(image).attr("indexerUniqueID") == $(currentImageObj[0]).attr("indexerUniqueID"))
                {
                    indexNumb = i;
                    break;
                }
            }
            change(indexNumb);
            interval = setInterval(function (){change(currentImage + 1 > figures.length - 1 ? 0 : currentImage + 1);}, timerValue*1000);
         };
        indexerSet.click(indexerClick);
    }
    });
  }

  $(function ()
  {
  // Init image slidehsows
  if(jQuery.browser.safari || jQuery.browser.mozilla)
  {
    $(window).load(function (){ $('.images').imageSlideshow();});  
  }
  else
  {
    $('.images').imageSlideshow();
  }
  });  
})(jQuery);

function ChangeSettingControlVisibility(controlRow, dotRow)
{
    var selectorValue = $('.sliderTypeSelector').val();
    var controlRowCtrl = $('.' + controlRow);
    var dotRowCtrl = $('.' + dotRow);

    if(controlRowCtrl.length > 0 && dotRowCtrl.length > 0 && selectorValue == "1")
    {
        controlRowCtrl.show();
        dotRowCtrl.show();
    }
    else
    {
        controlRowCtrl.hide();
        dotRowCtrl.hide();
    }
}
