/******************* class for uhu_productview ****/
/*************Copyright 2009 Netzbewegung GmbH ****/
/**************************************************/
/********************* s.kenk@netzbewegung.com ****/ 
/****************** last update on 14 Aug 2009 ****/
var step = 0;

var uhu_productview = {
	
	setStep : function() {
		if (location.href.indexOf('&step=')!=-1) {
			step = location.href.substr(location.href.indexOf('&step=')+6);
		}
	},
		
	// Initialize function for the product slider (adds the scrollbar to the dom)
	initproductSlider : function() {
		
		uhu_productview.addPseudoLinks();
		
		if ($$('div.product-slider>table').length > 0) {
			$$('div.product-slider>table').each(function(el) {

				el.getParent().setStyle('overflow','hidden');
				
				// overflowing width (minus content width) (plus table's margin)
				var toScroll = (el.getScrollSize().x - 630);
				
				if (toScroll > 0) {
					// Instantiate scrollbar elements
					var objScrollbar = new Element('div', {
						'class' : 'scrollbar'
					});
					var objHandle = new Element('div', {
						'class' : 'handle'
					});
					var objLeft = new Element('div', {
						'class' : 'scroll-left'
					});
					var objRight = new Element('div', {
						'class' : 'scroll-right'
					});
					objScrollbar.adopt(objLeft,objHandle,objRight);
					
					// Insert scrollbar after table
					objLeft.inject(el, 'after');
					objScrollbar.inject(objLeft, 'after');
					objRight.inject(objScrollbar, 'after');
					
					uhu_productview.setStep();
					
					var slider = new Slider(objScrollbar, objHandle, {
						steps: toScroll,
						wheel: true,
						onChange: function() {
							el.setStyle('left', 0-this.step);
						},
						onComplete : function() {
							step = this.step;
						}
					}).set(step);
					
					var scroll;
					objLeft.addEvent('mousedown', function() {
						scroll = (function() { 
							slider.set(this.step = this.step-3);
						}).periodical(1);
					});
					
					objRight.addEvent('mousedown', function() {
						scroll = (function() { 
							slider.set(this.step = this.step+3);
						}).periodical(1);
					});
					
					document.addEvent('mouseup', function() {
						$clear(scroll);
					});
				}
			});
		}
	},
	
	addPseudoLinks : function() {
		
		if ($$('div.product-slider')) {
			
			$$('div.product-slider').each(function(slider) {
			
				if (slider.getElements('td').length > 0) {
					var products = slider.getElements('td');
		
					products.each(function(el) {

						// Add Events to the td tag with the nested product images
						el.addEvent('click', function(e) {
							e.stop();
							location.href = "/"+el.getElements('a').get('href')+'&step='+step;
						});
						
						if (Browser.Engine.trident4) {
							el.addEvent('mouseover', function() {
								el.addClass('hover');
							});
							
							el.addEvent('mouseout', function() {
								el.removeClass('hover');
							});
						}
					});
				}
			});
		}
	}
};

window.addEvent('domready', function() {
	
	uhu_productview.initproductSlider();
});
