/**
 * Benchmark Dislays
 * 
 * This file was coded and is using the PrototypeJS library. It was coded to adhere to Magento's other Javascript files and their coding standards.
 *
 * @category    Benchmark Displays
 * @package     js
 * @author      Graphtek Interactive
 */

var rotatorSlideshow = function() {

	var rotator = {
		obj_rotator : $(arguments[0]) || $("rotator"),
		
		settings :  {
			delay            :   5000,
			current_slide    :   0,
			end_slide        :   0,
			slides           :   [],
			navigator_slides :   [],
			timer            :   true
		},
		
		init :  function() {
			rotator.settings.slides = rotator.obj_rotator.select('ul.slide-images li');
			for (i=0;i<rotator.settings.slides.length;i++) {
				if (i != 0) {
					rotator.settings.slides[i].style.display = 'none';
				}
			}
			rotator.settings.end_slide = rotator.settings.slides.length - 1;
			if (rotator.obj_rotator.select('ul.slide-navigation').length > 0) {
				rotator.settings.navigator_slides = rotator.obj_rotator.select('ul.slide-navigation')[0];
				rotator.build_navigator();
			}
			rotator.start_slideshow();
		},
		
		change_slide : function(slide, clicked) {
			if (clicked == true) {
				clearInterval(rotator.settings.timer);
			}
			Effect.Fade(rotator.settings.slides[rotator.settings.current_slide], {
				duration: 1.5,
				afterFinish: function() {
					if (rotator.obj_rotator.select('ul.slide-navigation').length > 0) {
						rotator.settings.navigator_slides[rotator.settings.current_slide].removeClassName('slide-active');
					}
					rotator.settings.current_slide = slide;
					Effect.Appear(rotator.settings.slides[slide], {
						duration: 1.5,
						afterSetup: function() {
							if (rotator.obj_rotator.select('ul.slide-navigation').length > 0) {
								rotator.settings.navigator_slides[rotator.settings.current_slide].addClassName('slide-active');
							}
						}
					});
				}
			});
		},
		
		rotate_slide : function(slide) {
			if (slide === undefined) {
				slide = rotator.settings.current_slide + 1;
			} else {
				slide++;
			}
			if (slide > rotator.settings.end_slide) {
				slide = 0;
			}
			rotator.change_slide(slide);
		},
		
		build_navigator : function() {
			for (i=0;i<rotator.settings.slides.length;i++) {
				var li = new Element('li', {index:i});
				rotator.settings.navigator_slides.insert(li);
				li.onclick = function(e) {
					var target = (e.currentTarget) ? e.currentTarget : e.srcElement;
					rotator.change_slide(target.readAttribute('index'), true);
				}
			}
			rotator.settings.navigator_slides = rotator.obj_rotator.select('ul.slide-navigation li');
			rotator.settings.navigator_slides[rotator.settings.current_slide].addClassName('slide-active');
		},
		
		start_slideshow : function() {
			rotator.settings.timer = setInterval(function() {
				rotator.rotate_slide();
			}, rotator.settings.delay);
		}
	};
    if (arguments[1]) {
    	rotator.settings = Object.extend(rotator.settings, arguments[1]);
    }
    if (rotator.obj_rotator) {
    	rotator.init(rotator.obj_rotator, false);
    }
}

document.observe("dom:loaded", function() {
	rotatorSlideshow("rotator", {"delay":5000,"current_slide":0});
});
