var lastRan = -1;

/**
 * Since carousel.addItem uses an HTML string to create the interface
 * for each carousel item, this method formats the HTML for an LI.
 **/

var fmtItem = function(imgUrl, id, link, name, specialPrice, price) {
	if(specialPrice==price) {
		var innerHTML = '<div class="offerThumb showPreview" id="showPreviewS'+id+'"><div class="articlePreview" id="articlePreviewS'+id+'"><a href="'+link+'">Vorschau</a></div><div class="offerImg"><a href="'+link+'" title="'+name+'"><img src="'+imgUrl+'" width="80" height="80" border="0" alt="" /></a></div>';
        innerHTML += '<div class="offerThumbPrise"><span class="normalPreis">&euro; '+specialPrice+',-</span></div></div>';
	}
	
	else {
		var innerHTML = '<div class="offerThumb showPreview" id="showPreviewS'+id+'"><div class="articlePreview" id="articlePreviewS'+id+'"><a href="'+link+'">Vorschau</a></div><div class="offerImg"><a href="'+link+'" title="'+name+'"><img src="'+imgUrl+'" width="80" height="80" border="0" alt="" /></a></div>';
	        innerHTML += '<div class="offerThumbPrise"><span class="strichPreis">&euro; '+price+',-</span><br /><span class="redPreis">&euro; '+specialPrice+',-</span></div></div>';
	}
	
    return innerHTML;
};

/**
 * Custom inital load handler. Called when the carousel loads the initial
 * set of data items. Specified to the carousel as the configuration
 * parameter: loadInitHandler
 **/
var loadInitialItems1 = function(type, args) {
    var start = args[0];
    var last = args[1]; 
    load1(this, start, last);    
};

var loadInitialItems2 = function(type, args) {
    var start = args[0];
    var last = args[1]; 
    load2(this, start, last);    
};

var loadInitialItems3 = function(type, args) {
    var start = args[0];
    var last = args[1]; 
    load3(this, start, last);    
};

/**
 * Custom load next handler. Called when the carousel loads the next
 * set of data items. Specified to the carousel as the configuration
 * parameter: loadNextHandler
 **/
var loadNextItems1 = function(type, args) {    

    var start = args[0];
    var last = args[1]; 
    var alreadyCached = args[2];
    
    if(!alreadyCached) {
        load1(this, start, last);
    }
};

var loadNextItems2 = function(type, args) {    

    var start = args[0];
    var last = args[1]; 
    var alreadyCached = args[2];
    
    if(!alreadyCached) {
        load2(this, start, last);
    }
};

var loadNextItems3 = function(type, args) {    

    var start = args[0];
    var last = args[1]; 
    var alreadyCached = args[2];
    
    if(!alreadyCached) {
        load3(this, start, last);
    }
};

/**
 * Custom load previous handler. Called when the carousel loads the previous
 * set of data items. Specified to the carousel as the configuration
 * parameter: loadPrevHandler
 **/
var loadPrevItems1 = function(type, args) {
    var start = args[0];
    var last = args[1]; 
    var alreadyCached = args[2];
    
    if(!alreadyCached) {
        load1(this, start, last);
    }
};

var loadPrevItems2 = function(type, args) {
    var start = args[0];
    var last = args[1]; 
    var alreadyCached = args[2];
    
    if(!alreadyCached) {
        load2(this, start, last);
    }
};

var loadPrevItems3 = function(type, args) {
    var start = args[0];
    var last = args[1]; 
    var alreadyCached = args[2];
    
    if(!alreadyCached) {
        load3(this, start, last);
    }
};

var load1 = function(carousel, start, last,number) {
    for(var i=start;i<=last;i++) {
        //var randomIndex = getRandom(18, lastRan);
        //lastRan = randomIndex;
    	carousel.addItem(i, fmtItem(imageList1[i], id1[i], link1[i], name1[i], specialPrice1[i], price1[i]));
/*
        // Example of an alternate way to add an item (passing an element instead of html string)
        var p = document.createElement("P");
        var t = document.createTextNode("Item"+i);
        p.appendChild(t);
        carousel.addItem(i, p );
*/
    }
};

var load2 = function(carousel, start, last,number) {
    for(var i=start;i<=last;i++) {
        //var randomIndex = getRandom(18, lastRan);
        //lastRan = randomIndex;
    	carousel.addItem(i, fmtItem(imageList2[i], id2[i], link2[i], name2[i], specialPrice2[i], price2[i]));
    }
};

var load3 = function(carousel, start, last,number) {
    for(var i=start;i<=last;i++) {
        //var randomIndex = getRandom(18, lastRan);
        //lastRan = randomIndex;
        carousel.addItem(i, fmtItem(imageList3[i], id3[i], link3[i], name3[i], specialPrice3[i], price3[i]));
    }
};

var getRandom = function(max, last) {
    var randomIndex;
    do {
        randomIndex = Math.floor(Math.random()*max);
    } while(randomIndex == last);
    
    return randomIndex;
};

/**
 * Custom button state handler for enabling/disabling button state. 
 * Called when the carousel has determined that the previous button
 * state should be changed.
 * Specified to the carousel as the configuration
 * parameter: prevButtonStateHandler
 **/
var handlePrevButtonState = function(type, args) {

    var enabling = args[0];
    var leftImage = args[1];
    if(enabling) {
        leftImage.src = "images/spacer.gif";    
    } else {
        leftImage.src = "images/spacer.gif";
    }
    
};

/**
 * Custom button state handler for enabling/disabling button state. 
 * Called when the carousel has determined that the next button
 * state should be changed.
 * Specified to the carousel as the configuration
 * parameter: nextButtonStateHandler
 **/
var handleNextButtonState = function(type, args) {

    var enabling = args[0];
    var rightImage = args[1];
    if(enabling) {
        rightImage.src = "images/spacer.gif";    
    } else {
        rightImage.src = "images/spacer.gif";
    }
    
};

/**
 * You must create the carousel after the page is loaded since it is
 * dependent on an HTML element (in this case 'dhtml-carousel'.) See the
 * HTML code below.
 **/

var carousel; // for ease of debugging; globals generally not a good idea
var pageLoad = function() 
{
    carousel = new YAHOO.extension.Carousel("dhtml-carousel1", 
        {
	    	numVisible:        7,
			size:			   numVisible1,
            animationSpeed:    0.25,
            scrollInc:         7,
            navMargin:         40,
            prevElement:       "prev-arrow1",
            nextElement:       "next-arrow1",
            loadInitHandler:   loadInitialItems1,
            loadNextHandler:   loadNextItems1,
            loadPrevHandler:   loadPrevItems1,
            prevButtonStateHandler:   handlePrevButtonState,
            nextButtonStateHandler:   handleNextButtonState
        }
    );
    
    carousel = new YAHOO.extension.Carousel("dhtml-carousel2", 
        {
    		numVisible:        7,
    		size:			   numVisible2,
            animationSpeed:    0.25,
            scrollInc:         7,
            navMargin:         40,
            prevElement:       "prev-arrow2",
            nextElement:       "next-arrow2",
            loadInitHandler:   loadInitialItems2,
            loadNextHandler:   loadNextItems2,
            loadPrevHandler:   loadPrevItems2,
            prevButtonStateHandler:   handlePrevButtonState,
            nextButtonStateHandler:   handleNextButtonState
        }
    );
    
    carousel = new YAHOO.extension.Carousel("dhtml-carousel3", 
        {
	    	numVisible:        7,
			size:			   numVisible3,
            animationSpeed:    0.25,
            scrollInc:         7,
            navMargin:         40,
            prevElement:       "prev-arrow3",
            nextElement:       "next-arrow3",
            loadInitHandler:   loadInitialItems3,
            loadNextHandler:   loadNextItems3,
            loadPrevHandler:   loadPrevItems3,
            prevButtonStateHandler:   handlePrevButtonState,
            nextButtonStateHandler:   handleNextButtonState
        }
    );
};

YAHOO.util.Event.addListener(window, 'load', pageLoad);
