/* 
 * scrollband - jQuery Plugin
 * Authors Sven Finke, Lars D. Poppke - m2 media
 * Copyright (c) 2011 etrada GmbH (http://www.etrada.de))
 * Licensed exclusive for customers of etrada eCommerce Software
 * Version 0.6
 */
(function( $ ){
    /* Optionen Array definieren */
    $.scrollbandOptions=[];
	
    /* UploadForm Plugin initialisieren */
    $.fn.scrollband = function(options) {
        // Variablen definieren
        var x=0;
        var timer = null;
        var stepsize = 0;
        var visibleItems = 5;
        var showButtons = false;
        var autoScale = true;
        var elementWidth = 0;
        var vSpacing = 20;
        var direction = "ltr";
        var refreshTimer = 20;
		
        // Optionen abfragen
        $.each(options, function(key, value){
            try{
                if(typeof(value)=='string' && isNaN(value)){
                    eval(key+" = '"+value+"'");
                } else {
                    eval(key+" = "+value);
                }
            } catch (err){}
        });

        // Berechnungen durchfÃ¼hren
        if(!stepsize>0) stepsize = 1;
		
        // ElementgrÃ¶ÃŸe berechnen
        if(autoScale){
            elementWidth = (this.width()/ visibleItems) - vSpacing;
        } else if(elementWidth == "auto"){
            elementWidth = this.children(".item:first").width();
            visibleItems = this.width() / (elementWidth+vSpacing);
        }

        // Globale Einstellungen definieren
        $.scrollbandOptions["width"] = this.width();
        $.scrollbandOptions["visibleItems"] = visibleItems;
        $.scrollbandOptions["elementWidth"] = elementWidth;
        $.scrollbandOptions["vSpacing"] = vSpacing;
		
        // Neue Elemente erzeugen
        this.children(".item").each(function(){
            $(this).wrap("<div class='item_wrap' id='item_"+x+"'>");
            $(this).width(elementWidth);
            $(this).parent().css("left",((elementWidth+vSpacing)*x)+"px");
            x++;
        });
		
        while(x<visibleItems+1){
            var clone = this.children(".item_wrap").clone().appendTo(this);
            x=0;
            this.children(".item_wrap").each(function(){
                $(this).width(elementWidth).css("left",((elementWidth+vSpacing)*x)+"px").attr("id","item_"+x);
                x++;
            });
        }
		
        this.addClass("slide");
		
        $.scrollbandOptions["countItems"] = x;
		
        // Events anhÃ¤ngen
        this.hover(
            //Mouseover
            function(){
                $(this).removeClass("slide");
            },
            //Mouseout
            function(){
                $(this).addClass("slide");
            }
            );
		
        // Timer starten
        timer = setInterval(function(){
            $.scrollband_move(stepsize, direction);
        },refreshTimer);
		
        return this; //Enable Chaining
    };
	
    $.scrollband_move = function(stepsize, direction){
        $(".slide").each(function(){
            $(this).children("").each(function(){
                $(this).css("left",function(index,value){
                    // Erster aufruf und Left noch auf "auto"?
                    if(value=="auto"){
                        value="0";
                    } else { // "px" ersetzen
                        value = value.replace(/px/);
                    }
                    if(direction == "ltr"){
                        // Element ausserhalb des Sichtbereichs?
                        if(parseInt(value) > $.scrollbandOptions["width"] + (($.scrollbandOptions["vSpacing"] + $.scrollbandOptions["elementWidth"]) * ($.scrollbandOptions["countItems"] - $.scrollbandOptions["visibleItems"] - 1) )){
                            value=0-$(this).width()-$.scrollbandOptions["vSpacing"];
                        }
                        return (parseInt(value)+stepsize);
                    } else if (direction == "rtl"){
                        // Element ausserhalb des Sichtbereichs?
                        if(parseInt(value) < 0 - (($.scrollbandOptions["vSpacing"] + $.scrollbandOptions["elementWidth"]) * ($.scrollbandOptions["countItems"] - $.scrollbandOptions["visibleItems"]) )){
                            value= $.scrollbandOptions["width"];
                        }
                        return (parseInt(value)-stepsize);
                    }
                });
            });
        });
		
        return this; //Enable Chaining
    }
})( jQuery );
