;(function($) {
    jQuery.fn.contentSliderH = function(arg, callback) {
        $.fn.contentSliderH.defaults = {
            currentPosition: 0,
            elementsVisible: 3,
            elementWidth: 0,
            sliderWidth: 0,
            slideBy: 1,
            scrollWidth: 0,
            containerWidth: 0
        };
        var elementCount = $(this).size();

        var options = $.extend({},
            $.fn.contentSliderH.defaults,
            arg,
            {callback:callback});

        var objOpts = new Array();

        return this.each(function() {
            buildSlider(options, $(this));
        });

        function manageControls(sliderId) {
            if (objOpts[sliderId].currentPosition <= 0) {
                $('#' + sliderId + 'LeftControl').addClass('leftControlInactive');
            } else {
                $('#' + sliderId + 'LeftControl').removeClass('leftControlInactive');
            }
            if (objOpts[sliderId].currentPosition >= ($('.' + sliderId).length - (objOpts[sliderId].slideBy * objOpts[sliderId].elementsVisible))) {
                $('#' + sliderId + 'RightControl').addClass('rightControlInactive');
            } else {
                $('#' + sliderId + 'RightControl').removeClass('rightControlInactive');
            }
            if (objOpts[sliderId].elementCount <= objOpts[sliderId].elementsVisible) {
                $('#' + sliderId + 'RightControl').addClass('hidden');
                $('#' + sliderId + 'LeftControl').addClass('hidden');
            }
        }

        function buildSlider(opts, obj) {
            var sliderId = obj.attr('id');
            var containerId = sliderId + 'Container';
            var innerId = sliderId + 'Inner';
            $('.' + sliderId).addClass('slideElement');
            if (opts.elementWidth == 0) {
                opts.elementWidth = $('.' + sliderId).outerWidth();
                opts.sliderWidth = opts.elementWidth * opts.elementsVisible;
            }
            if (opts.scrollWidth == 0) {
                opts.scrollWidth = opts.elementWidth;
            }
            opts.elementCount = $('.' + sliderId).length;
            objOpts[sliderId] = $.extend({}, opts);
            if (opts.containerWidth == 0) {
            	opts.containerWidth = objOpts[sliderId].scrollWidth * objOpts[sliderId].elementsVisible + 1;
            }
            obj.wrapInner('<div id="' + containerId + '"/>');
            $('#' + containerId).wrapInner($('.' + sliderId));
            $('#' + containerId).css({
                'overflow': 'hidden',
                'float': 'left'
            });
            $('.' + sliderId).wrapAll('<div id="' + innerId + '"></div>').css({
                'float': 'left',
                'width': objOpts[sliderId].elementWidth
            });
            $('#' + innerId).css('width', $('.' + sliderId).length * objOpts[sliderId].scrollWidth);
//            $('#' + containerId).width(objOpts[sliderId].containerWidth);
            obj
                .prepend('<div class="leftControl control ' + sliderId + 'Control" id="' + sliderId + 'LeftControl">Move left</div>')
                .append('<div class="rightControl control ' + sliderId + 'Control" id="' + sliderId + 'RightControl">Move right</div>');
            manageControls(sliderId);
            $('.' + sliderId + 'Control').bind('click', function() {
                var curSliderId = $(this).parent().attr('id');
                if (($(this).attr('id') == curSliderId + 'RightControl') && (objOpts[curSliderId].currentPosition >= ($('.' + curSliderId).length - (objOpts[curSliderId].slideBy * objOpts[curSliderId].elementsVisible)))) {
                    return;
                }
                if (($(this).attr('id') == curSliderId + 'LeftControl') && (objOpts[curSliderId].currentPosition <= 0)) {
                    return;
                }
                objOpts[curSliderId].currentPosition = ($(this).attr('id') == curSliderId + 'RightControl') ? objOpts[curSliderId].currentPosition + objOpts[curSliderId].slideBy : objOpts[curSliderId].currentPosition - objOpts[curSliderId].slideBy;
                manageControls(curSliderId);
                $('#' + curSliderId + 'Inner').animate({
                    'marginLeft': objOpts[curSliderId].scrollWidth *(-objOpts[curSliderId].currentPosition)
                });
            });
            $(obj).show().css('visibility', 'visible');
        }
    }
})(jQuery);
/*
function Slider(slideId, params) {
    if (params.curPosition) {
        this.curPosition = params.curPosition;
    }
    if (!params.slideClass) {
        params.slideClass = 'slide';
    }
    this.slides = $('.' + params.slideClass);
    this.slideBy = params.slideBy;
    this.width = params.width;
    this.slideCount = this.slides.length;
    this.slideId = slideId;

    this.containerId = params.slideClass + 'Container';
    $('#' + this.slideId).wrapInner('<div id="' + this.containerId + " />');
    $('#' + this.containerId).wrapInner(this.slides);
}
*/

