function startSlide(params){
    var autoSlide      = params[0].toInt();
    var transitionType = params[1];
    var transitionTime = parseInt(params[2]);
    /* ----------Config Vars----------- */
   // var transitionTime = 1250; //transition time (1 second = 1000)
    var items = $$('.slide');  //Get array of elements for sliding
    var larg = items[0].offsetWidth+5;
    var prevBtn = $('prevBtn');
    var nextBtn = $('nextBtn');
    var itemNum = 0;  //initialize a variable to hold the current slide index
    var lastTime = 0; 
    var blockMe = false;
    
    

    
    /* --------end config vars-------- */
    
    /*
    //Setup positions
    items.each(function(element, index) {
        
        //since the viewer obviously has javascript on, we can remove the 'first_item' class
        if(index == 0){
            element.removeClass('first_item');
            element.setStyle('left', "0");
        }
        else{
            element.setStyle('left', larg+"px");
        }
    
    });
    */
    
    var numItems = items.length;  //get number of slider items
    var block = false;
    
    //end setup
    
    function getTime(){
        var date = new Date();
        
        return date.getTime();
    }
    
    //Slider Stuff
    
    var slideForward = function(){ 

        if(blockMe) {
            blockMe = false;
            return;
        }
        
           
        //if(getTime()>(lastTime+transitionTime)){ 
            lastTime = getTime();
            
            //get item to slide out
            var curItem = items[itemNum];  
            var curItemPointer = $('goto_item_' + itemNum);
            
              
            //change index
            if(itemNum < (numItems - 1)){
                itemNum++; 
            }
            else{
                itemNum = 0;
            }
            
            //now get item to slide in using new index
            var newItem = items[itemNum];
            var newItemPointer = $('goto_item_' + itemNum);
            
            //set up our animation stylings for out and in motions (note:  Fx.Styles does NOT exist in moo 1.2, so we must use Fx.Morph or Fx.Tween)
            
            if(curItemPointer != null) {
				curItemPointer.removeClass('active');
            }
            if(newItemPointer != null) {
				newItemPointer.addClass('active');
            }
            if(transitionType == "Fade") {
            	curItem.setStyle('opacity', 1);
				curItem.fade('out');
            	curItem.setStyle('left', -larg + "px");
            	
            	newItem.setStyle('left', "0px");     
            	newItem.setStyle('opacity', 0); 
				newItem.fade('in'); 
			}
			else {
		
	            var item_in = new Fx.Morph(newItem, {
	                     duration: transitionTime,  
	                     transition: Fx.Transitions[transitionType].easeInOut, 
	                     wait:false
	            });
	            
	            var item_out = new Fx.Morph(curItem, {
	                     duration: transitionTime,  
	                     transition: Fx.Transitions[transitionType].easeInOut, 
	                     wait:false
	            });
	            
	            //we will set a beginning value here
	            //this is so that it gives the illusion of continuous motion from one direction, even after the first cycle of items
	            item_in.start({
	            'left': [larg, 0]
	            });
	            
	            //no beginning values needed, since we always want to push the old item out to the left
	            item_out.start({
	            'left': '-'+larg
	            });  
            }
       // }        
    };
    
    
    var gotoSlide = function(index) {
		if(blockMe) {
            blockMe = false;
            return;
        }
        if(index == itemNum) {
			return;
        }
        
           
        lastTime = getTime();
        var curItem = items[itemNum];  
        var curItemPointer = $('goto_item_' + itemNum);
            

        itemNum = index;
        var newItem = items[itemNum];
        var newItemPointer = $('goto_item_' + itemNum);
            

       if(curItemPointer != null) {
	   	curItemPointer.removeClass('active');
       }
       if(newItemPointer != null) {
		newItemPointer.addClass('active');
       }
       
       
            if(transitionType == "Fade") {
            	curItem.setStyle('opacity', 1);
				curItem.fade('out');
            	curItem.setStyle('left', -larg + "px");
            	
            	newItem.setStyle('left', "0px");     
            	newItem.setStyle('opacity', 0); 
				newItem.fade('in');  
			}
			else {
		
	            var item_in = new Fx.Morph(newItem, {
	                     duration: transitionTime,  
	                     transition: Fx.Transitions[transitionType].easeInOut, 
	                     wait:false
	            });
	            
	            var item_out = new Fx.Morph(curItem, {
	                     duration: transitionTime,  
	                     transition: Fx.Transitions[transitionType].easeInOut, 
	                     wait:false
	            });
	            
	            //we will set a beginning value here
	            //this is so that it gives the illusion of continuous motion from one direction, even after the first cycle of items
	            item_in.start({
	            'left': [larg, 0]
	            });
	            
	            //no beginning values needed, since we always want to push the old item out to the left
	            item_out.start({
	            'left': '-'+larg
	            });  
            }	
    };
        
        
    var slideBackward = function(){ 
        //if(getTime()>(lastTime+transitionTime)){
            lastTime = getTime(); 
            
            //get item to slide out
            var curItem = items[itemNum];  
            
            //change index for reverse movement
            if(itemNum > 0){
                itemNum--; 
            }
            else{
                itemNum = (numItems - 1);
            }
            
            //now get item to slide in using new index
            var newItem = items[itemNum];
            
            
            if(transitionType == "Fade") {
            	curItem.setStyle('opacity', 1);
				curItem.fade('out');
            	curItem.setStyle('left', -larg + "px");
            	
            	newItem.setStyle('left', "0px");   
            	newItem.setStyle('opacity', 0); 
				newItem.fade('in');
			}
			else {
	            var item_in = new Fx.Morph(newItem, {
	                     duration: transitionTime,
	                     transition: Fx.Transitions[transitionType].easeInOut,
	                     wait:false
	            });
	            
	            var item_out = new Fx.Morph(curItem, {
	                     duration: transitionTime,
	                     transition: Fx.Transitions[transitionType].easeInOut,  
	                     wait:false
	            });
	            
	            
	            //we will set a beginning value here too, but this time to make it come from left to right
	            item_in.start({
	            'left': [-larg, 0]
	            });
	            
	            //no beginning values needed
	            item_out.start({
	            'left': larg
	            });
			}    
        //}        
    };
    
    
    window.addEvent('load', function(){

		
        if(autoSlide > 0){
            slideForward.periodical(autoSlide);
        }
        
        
        elem = $('left_arrow');
        if(elem != null) {
	        elem.addEvent('click', function(){
	            blockMe = false;   
	            slideForward(); 
	            blockMe = true;
	        });
        }
        
        
        elem = $('right_arrow');
        if(elem != null) {
	        elem.addEvent('click', function(){
	            blockMe = false;
	            slideBackward();
	            blockMe = true;
	        });
        }
        
        
        
        for(var i = 0; i < 20; i++) {
			 elem = $('goto_item_' + i);  
			 if(elem != null) {
			 	elem.store('index', i);
			 	elem.addEvent('click', function(){
			 		index = this.retrieve('index');
			 		
		            blockMe = false;
		            gotoSlide(index);
		            blockMe = true;
	        	});
			 }
        }
    });
    
}
