$.fn.slideNews = function (options) {
    var settings = $.extend(
        {
            slidesVisible: 2,
            slideSpeed: 300,
            slidesPerMove: 1,
            easing: null,
            url: null,
            slideWidth: null,
            totalSlides: null
        },
        options
    );
    return this.each(function (i) {
        if (!options.slideWidth) {
            settings.slideWidth = parseInt($("li.slide:first", this).width());
        } else {
            settings.slideWidth = options.slideWidth;
        }

        if (options.totalSlides == null) {
            var itemLength = $("li.slide", this).length;
        } else {
            var itemLength = options.totalSlides;
        }

        //alert(settings.slideWidth+' '+itemLength);

        var animateSize = settings.slideWidth;
        var slideContainerWidth = itemLength * settings.slideWidth;
        if (settings.slidesVisible < itemLength) {
            $(".next", this).addClass("next_on");
        }
        $(".navigation ul li a", this).click(function () {
            moveTo($(this).text());
            return false;
        });
        var animating = false;
        var slideIndex = settings.slidesVisible;
        var slider =  $(this);
        $(".navigation ul li.element_" + slideIndex, slider).addClass("on");
        /*turn off FF highlighting*/
        $(".navigation p", this).focus(function () {
            this.blur()
        });
        $(".navigation ul li a", this).focus(function () {
            this.blur()
        });

        function moveTo(slideNum) {
            if (animating == true) {
                return false;
            }
            if (slideNum == slideIndex) {
                return false;
            }
            animating = true;
            if (slideNum > itemLength) {
                slideNum = itemLength;
            }
            if (slideNum < settings.slidesVisible) {
                slideNum = settings.slidesVisible;
            }
            var slideOffset = slideIndex - slideNum;

            // load empty slides
            if (
                    options.url
                    && slideOffset < 0
                    && slideIndex <= (
                            (options.totalSlides / options.slidesVisible) + 1
                        )
                    ) {
                ajaxLoad(slideIndex, options.slidesVisible, options.url);
            }

            $(".slides .element_" + slideNum + " .empty", slider).loadSlide();
            first = (slideNum - options.slidesVisible) + 1;
            $(".slides .element_" + first + " ", slider).addClass("first");
            var animateLeft = (slideIndex - slideNum) * settings.slideWidth;
//          animateLeft = (animateLeft>0 ) ? "+="+animateLeft : "-="+(animateLeft*-1);
            animateLeft = parseInt($(".slides", slider).css("left")) + animateLeft;
            /*move*/
            $(".slides", slider).animate({left: animateLeft}, settings.slideSpeed, function () {
                var offset = parseInt(animateLeft / animateSize);
                $(".previous", slider).addClass("previous_on");
                $(".next", slider).addClass("next_on");
                if (slideNum - settings.slidesVisible  <= 0) {
                    $(".previous", slider).removeClass("previous_on");
                } else if (slideNum >= itemLength) {
                    $(".next", slider).removeClass("next_on");
                }
                for(var i=0; i < settings.slidesPerMove; i++) {
                    if ((slideIndex + i + 1) > itemLength) {
                        break;
                    }
                    $(".slides .element_" + (slideIndex + i + 1) + " .empty",
                        slider
                    ).loadSlide();
                }


                $(".slides .element_" + (slideNum - 1) + " .empty", slider).loadSlide();
                $(".navigation ul li", slider).removeClass("on");
                $(".navigation ul li.element_" + slideIndex, slider).addClass("on");
                animating = false;
                slideIndex = slideNum;
                //settings.slidesVisible-offset;
            });
        }
        $(".next", this).mousedown(function (event) {
            if (slideIndex < itemLength) {
                moveTo(slideIndex + settings.slidesPerMove);
            }
            return false;
        });
        $(".previous", this).mousedown(function (event) {
            if (slideIndex > settings.slidesVisible){
                moveTo(slideIndex - settings.slidesPerMove);
            }
            return false;
        });
        $(".previous, .next", this).click(function (event) {
            return false;
        });
        $.fn.loadSlide = function () {
            if (this.html() == null) {
                return;
            }
            this.attr("src", function () { return this.title; }).removeClass("empty");
            return false;
        }
    });
};

function Slideable(wrapperId, options) {
    loadedurls = new Array(); //get a ajax req for an url once only
    if (options.url) {
        ajaxLoad = function (offset, show, url) {
            var urlexists = 0;
            var seekurl = url + '?offset=' + offset + '&show=' + show + '&nid=' + options.nid;
            for(var i=0; i<loadedurls.length; i++) {
                if (loadedurls[i] == seekurl) {
                    urlexists = 1;
                }
            }
            if (urlexists < 1) {
                loadedurls.push(seekurl);
                $.get(url, {offset: offset, show: show, nid: options.nid}, function (data){
                    $("#"+wrapperId+" .slides").append(data);
                });
            }
        }
        if (options.url) {
            ajaxLoad(0, options.slidesVisible, options.url);
        }
    }
    $('#' + wrapperId).slideNews(options);
}

