/*
Usage Note:
Items in the slider must have their final width BEFORE images are loaded.  If you are using an image
to set the width of the item container, the <img> tag must have a set width.

The variables below are settings.
*/
var slyderDisplayPadding = 2; //How many items in advance to load image for.  If you find images are showing before they have downloaded, increase this number.
var slyderAnimationLength = 2.5; //How long in for one item to move over smaller values are faster
var slyderMode = 'hover' //Options are 'click' and 'hover'
var slyderAnimationType = 'linear' //Options are 'linear' and 'swing'.  Additional animation types can be used with the appropriate jquery plug-in.
var slyderLeftIndent = 8 //The number of pixels to indent the slider contents from the left.  Adjust this to line up item positioning.


//Do not modify
var scrollSlyders = '';
jQuery(document).ready(function(){
	


	var dataHolder = document.createElement('div');
	jQuery(dataHolder).css('display', 'none');
	dataHolder.id = 'DataHolder';
	
	jQuery('body').append(dataHolder);
		

	jQuery('.scrollSlyder .item .thumbnail .hidden').remove().appendTo(dataHolder);
	jQuery('.lightbox').remove().appendTo(dataHolder);



    scrollSlyders = jQuery('.scrollSlyder');
    jQuery('.scrollSlyder .slyder').children().css('display', 'none');
    
    scrollSlyders = scrollSlyders.filter(function (index) {
        var items = jQuery('.slyder', scrollSlyders[index]).children();
        var widthCount = 0;
        for (var i = 0; i<items.length; i++)
        {
            widthCount += jQuery(items[i]).width();
        }
        if (widthCount>jQuery(scrollSlyders[index]).width())
        {
            return true;
        }
        else
        {
            for (var i = 0; i<items.length; i++)
            {
                jQuery(items[i]).css('display', 'block');
            }
            return false;
        }
    });
    for(var i = 0; i<scrollSlyders.length; i++)
    {
        jQuery('.leftArrow', scrollSlyders[i]).css('display', 'block');
        jQuery('.rightArrow', scrollSlyders[i]).css('display', 'block');
        if (jQuery('.leftArrow', scrollSlyders[i]).css('visibility')=='hidden')
        {
            jQuery('.leftArrow', scrollSlyders[i]).css('visibility', 'visible')
            jQuery('.leftArrow').fadeTo(1, 0.01);
        }
        if (jQuery('.rightArrow', scrollSlyders[i]).css('visibility')=='hidden')
        {
            jQuery('.rightArrow', scrollSlyders[i]).css('visibility', 'visible')
            jQuery('.rightArrow').fadeTo(1, 0.01);
        }
        jQuery('.slyder', scrollSlyders[i]).css('left', slyderLeftIndent + 'px');
        jQuery(scrollSlyders[i]).attr('slyderActiveL', false);
        jQuery(scrollSlyders[i]).attr('slyderActiveR', false);
    }
    for(var i = 0; i<scrollSlyders.length; i++)
    {
        jQuery(scrollSlyders[i]).attr('slyderWidth', 0);
        var slyderItems = jQuery('.slyder', scrollSlyders[i]).children();
        for (var j = 0; j<slyderItems.length; j++)
        {
            var left = 0;
            for (var k = j-1; k>=0; k--)
            {
                left += jQuery(slyderItems[k]).width();
            }
            jQuery(scrollSlyders[i]).attr('slyderWidth', jQuery(scrollSlyders[i]).attr('slyderWidth')-0+jQuery(slyderItems[j]).width());
            jQuery(slyderItems[j]).css('width', jQuery(slyderItems[j]).width() + 'px');
            jQuery(slyderItems[j]).css('position', 'absolute');
            jQuery(slyderItems[j]).css('left', left + 'px');
        }
        var slyder = jQuery('.slyder', scrollSlyders[i]);
        for (var j = slyderItems.length-1; j>=0; j--)
        {
            slyder.prepend(jQuery(slyderItems[j]).clone(true).css('left', jQuery(slyderItems[j]).css('left').replace('px', '') - jQuery(scrollSlyders[i]).attr('slyderWidth')));
        }
    }
    UnhideSlyderItems();
    if(slyderMode == 'click')
    { 
        for(var i = 0; i<scrollSlyders.length; i++)
        {
            jQuery('.leftArrow', scrollSlyders[i]).click(function(){SlyderMove($(this).parent(), 'left')})
            jQuery('.rightArrow', scrollSlyders[i]).click(function(){SlyderMove($(this).parent(), 'right')})
        }
    }
    else if(slyderMode == 'hover')
    {
        for(var i = 0; i<scrollSlyders.length; i++)
        {
            jQuery('.leftArrow', scrollSlyders[i]).bind('mouseenter', function(){
                jQuery(this).parent().attr('slyderActiveL', 'true');
                SlyderMove(jQuery(this).parent(), 'left');
            });
            jQuery('.leftArrow', scrollSlyders[i]).bind('mouseleave', function(){
                jQuery(this).parent().attr('slyderActiveL', 'false');
            });
            
            jQuery('.rightArrow', scrollSlyders[i]).bind('mouseenter', function(){
                jQuery(this).parent().attr('slyderActiveR', 'true');
                SlyderMove(jQuery(this).parent(), 'right');
            });
            jQuery('.rightArrow', scrollSlyders[i]).bind('mouseleave', function(){
                jQuery(this).parent().attr('slyderActiveR', 'false');
            });
        }
    }
});

function UnhideSlyderItems(){
    for(var l = 0; l<scrollSlyders.length; l++)
    {
        var slyderItems = jQuery('.slyder', scrollSlyders[l]).children();
        var slyderWidth = jQuery(scrollSlyders[l]).width();
        var i = slyderItems.length/2;
        for(var widthCount = 0; widthCount<slyderWidth; widthCount += jQuery(slyderItems[i]).width())
        {
            if(slyderItems[i] != null)
                jQuery(slyderItems[i]).css('display', 'block');
            else
                break;
            i++;
        }
        for(j=0; j<slyderDisplayPadding; j++)
        {
            if(slyderItems[i] != null)
                jQuery(slyderItems[i]).css('display', 'block');
            else
                break;
            i++
        }
        for(var i=slyderItems.length/2 - 1; (i>(slyderItems.length/2 - slyderDisplayPadding - 1)) && (i>=0); i--)
        {
            if(slyderItems[i] != null)
                jQuery(slyderItems[i]).css('display', 'block');
        } 
    }
};

function SlyderMove(scrollSlyder, direction){
    if(direction == 'left')
    {
        var items = jQuery('.slyder', scrollSlyder).children();
        var firstItemLeft = items.css('left');
        var slyder = jQuery('.slyder', scrollSlyder);
        slyder.prepend(jQuery(items[items.length-1]).remove());
        items = jQuery('.slyder', scrollSlyder).children();
        left = firstItemLeft.replace('px', '')-jQuery(items[0]).width();
        jQuery(items[0]).css('left', left + 'px');
        UnhideSlyderItems();
        slyder.animate({'left': (slyderLeftIndent - left - (scrollSlyder.attr('slyderWidth').replace('px', '')-0)) + 'px' }, slyderAnimationLength * items.width(), slyderAnimationType, function(){
            if(jQuery(scrollSlyder).attr('slyderActiveL') == 'true')
            {
                SlyderMove(scrollSlyder, direction);
            }
        });
    }
    if(direction == 'right')
    {
        var items = jQuery('.slyder', scrollSlyder).children();
        var left = jQuery(items[1]).css('left').replace('px', '') - 0;
        jQuery('.slyder', scrollSlyder).animate({'left': (slyderLeftIndent - left - (scrollSlyder.attr('slyderWidth').replace('px', '')-0)) + 'px'}, slyderAnimationLength * items.width(), slyderAnimationType, function(){
            var items = jQuery('.slyder', scrollSlyder).children();
            var slyder = jQuery('.slyder', scrollSlyder);
            slyder.append(jQuery(items[0]).remove());
            var items = jQuery('.slyder', scrollSlyder).children();
            jQuery(items[items.length-1]).css('left', jQuery(items[items.length-2]).css('left').replace('px', '')- 0 + jQuery(items[items.length-2]).width() + 'px');
            UnhideSlyderItems();
            if(jQuery(scrollSlyder).attr('slyderActiveR') == 'true')
            {
                SlyderMove(scrollSlyder, direction);
            }
        });
    }
};