var HomeRotator = new Class({
	totalimages: null,
	currentimage: null,
	images: null,
	
	initialize: function(path) {
		this.images = $$(path);
		
		this.totalimages = this.images.length;
		this.currentimage = 0;

		//	Set initial state
		if ( this.totalimages >= 1) {
			this.images.each(function(image, index) {
				if (index == this.currentimage) {
					image.setStyle('opacity', '1');
				} else {
					image.setStyle('opacity', '0');
				}
			}.bind(this));
	
			setInterval(this.rotateImage.bind(this), 5000);
		}
	},
	
	rotateImage: function () {
		nextimage = this.currentimage + 1;

		if (nextimage == this.totalimages) {
			nextimage = 0;
		}

		var myElementsEffects = new Fx.Elements([this.images[this.currentimage],this.images[nextimage]], {duration:1500});
		myElementsEffects.start({
		    '0': { 'opacity': [1, 0]},
		    '1': { 'opacity': [0, 1]}
		});

		this.currentimage = this.currentimage + 1;
		
		if (this.currentimage == this.totalimages) {
			this.currentimage = 0;
		}
	}
});

//	Made the menu a bit more userfriendly: on leave the menu stays selected for a few extra seconds
window.addEvent('domready', function() {
	if ($('nav')) {
		var timeoutID;
	
		$('nav').addEvent('mouseover', function(event) {
			$clear(timeoutID);
		
			parentMenuItem = $(event.target).getParent('li.level0');

			if (!parentMenuItem) {
				return;
			}

			$$('#nav li.over').each(function(item) {
				if (item != parentMenuItem) {
					item.removeClass('over');

					// 	IE6
					if (Browser.Engine.trident && Browser.Engine.version < 5) {
						var uL = item.getChildren('ul')[0];
						uL.removeClass('shown-sub');
					}
				}
			});
			parentMenuItem.addClass('over');

			// 	IE6
			if (Browser.Engine.trident && Browser.Engine.version < 5) {
				var uLs = parentMenuItem.getChildren('ul');
				uLs.each(function(uL) {
					uL.addClass('shown-sub');
				});
			}
		});
		$('nav').addEvent('mouseleave', function(event) {
			timeoutID = unselectMenu.delay(5000);
		});
	}
});

unselectMenu = function() {
	$$('#nav li.over').each(function(item) {
		item.removeClass('over');
		
		if (Browser.Engine.trident && Browser.Engine.version < 5) {
			var uLs = item.getChildren('ul');
			uLs.each(function(uL) {
				uL.removeClass('shown-sub');
			});
		}		
	});
};

makeScrollbar = function(content,scrollbar,handle,horizontal,ignoreMouse){
	var steps = (horizontal?(content.getScrollSize().x - content.getSize().x):(content.getScrollSize().y - content.getSize().y));
	var slider = new Slider(scrollbar, handle, {	
		steps: steps,
		mode: (horizontal?'horizontal':'vertical'),
		onChange: function(step){
			// Scrolls the content element in x or y direction.
			var x = (horizontal?step:0);
			var y = (horizontal?0:step);
			content.scrollTo(x,y);
		}
	}).set(0);
	if( !(ignoreMouse) ){
		// Scroll the content element when the mousewheel is used within the 
		// content or the scrollbar element.
		$$(content, scrollbar).addEvent('mousewheel', function(e){	
			e = new Event(e).stop();
			var step = slider.step - e.wheel * 30;	
			slider.set(step);					
		});
	}
	// Stops the handle dragging process when the mouse leaves the document body.
	$(document.body).addEvent('mouseleave',function(){slider.drag.stop();});
};

setLocation = function(url) {
	window.location.href = url;
};

updateCustomerData = function(responseTree, responseElements, responseHTML, responseJavaScript) {
	if (responseHTML) {
		// Fix Javascript
		//responseHTML = responseHTML.replace("Element.addClassName(this,'over')", "$(this).addClass('over')");
		//responseHTML = responseHTML.replace("Element.removeClassName(this,'over')", "$(this).removeClass('over')");
	
		var dummy = new Element('div');
		dummy.set('html', responseHTML);
		
		var divs = dummy.getChildren();

		if (divs.length == 2) {
			if($('customer_data_placeholder')){
				divs[0].replaces($('customer_data_placeholder'));
				divs[1].inject($('wishlist'), 'after');
			}
		} else if (divs.length == 3) {
			if($('customer_data_placeholder')){
				divs[0].replaces($('customer_data_placeholder'));
				divs[1].inject($('wishlist'), 'after');
				
				//	Welcome message
				var metanav = $$('.metanav')[0];
				divs[2].inject(metanav, 'bottom');
				//divs[2].inject($('pocket'), 'after');
			}
		}
		
		/**
		 * Event handling for pocket
		 */
		$('pocket').addEvent('mouseenter', pocketOpen);
		$('pocket').addEvent('mouseleave', pocketClose);
		
		//	Check if pocket is open too long
		//	TODO Check mouse position
		pocketCheckId = pocketCheck.periodical(5000, window);
	}	
};
//	TODO Move to class, rewrite for Prototype for Magento part of the site
//	Should we use periodical? We only check once
var pocketOpen = false;
var pocketCheckId = null;
var pocketCheck = function() {
	if (pocketOpen) {
		pocketClose();
	}
};
var pocketClose = function() {
	$('pocket').removeClass('over');
	pocketOpen = false;
	if (pocketCheckId) {
		pocketCheckId = $clear(pocketCheckId);
	}
};
var pocketOpen = function() {
	$('pocket').addClass('over');
	pocketOpen = true;
	pocketCheckId = pocketCheck.periodical(5000, window);
};

if (!$chk(storecode)) {
	var storecode = 'default';
}
window.addEvent('domready', function(storecode) {
	//	Will only work if both the shop and EOS site are on the same domain
	if ($('customer_data_placeholder')) {
		var request = new Request.HTML({
			method: 'get',
			url: '/shop/' + storecode + '/custom/customer/',
			onSuccess:	updateCustomerData,
			onFailure:	updateCustomerData
		}).send();
	
		/*var postObject = JSON.encode({
			action:	'EosSimpleParserWrapper',
			templatePath:	'includes/shop/customer_data.tpl'});
	
		var request = new Request.JSON({
			url:	'/sbeos/ajax/JsonCall.php',
			data:	{json: postObject},
			onComplete:	updateCustomerData
		}).send();*/
	}
}.pass([storecode]));

window.addEvent('load', function(){
	var searchInput = $('search');

	$$('#search_mini_form .form-button').each(function(item) {
		item.addEvent('click', function() {
			if(searchInput.get('value') != searchInput.defaultValue) {
				$('search_mini_form').submit();
			}
			return false;
		});
	});
	
	if ($chk(searchInput)) {
		searchInput.addEvent('focus', function() {
			if(searchInput.get('value') == searchInput.defaultValue) {
				searchInput.set('value', '');
			}
		});
		searchInput.addEvent('blur', function() {
			if(searchInput.get('value') == '') {
				searchInput.set('value', searchInput.defaultValue);
			}
		});
	}
	
	var formMessage = $('confirmation_text');
	if ($chk(formMessage)) {
		$('block_content').setStyle('display', 'none');
	
		var messageText = formMessage.innerHTML;
		
		var newMessageUL = new Element('ul', {'class': 'messages'});
		newMessageUL.set('html', '<li class="success-msg"><ul><li>' + messageText + '</li></ul></li>');
		
		var container = $$('.middle-container');
		container = container[0];
		newMessageUL.inject($(container), 'top');
	}
});

window.addEvent('domready', function() {
	// var mySlide<sbeos:print value="${content:id}"/> = new Fx.Slide('div<sbeos:print value="${content:id}"/>').hide();
	$$('.faqItem').each(function(elem) {
		var parent = elem;
		var ans = elem.getElements('.answer').pop();
		var question = elem.getElements('.question').pop();
		var mySlide = new Fx.Slide(ans).hide();
		
		question.addEvent('click', function() {
			parent.toggleClass('questionOpen');
			mySlide.toggle();
		});
	});
	
	// Hide empty elements on content pages
	if ($('block_intro')) {
		innerHtml = $('block_intro').get('html').trim();
		if (innerHtml == '' || innerHtml == '<br>') {
			$('block_intro').setStyle('display', 'none');
		}
	}

	if ($('block_title')) {
		innerHtml = $('block_title').get('html').trim();
		if (innerHtml == '' || innerHtml == '<br>') {
			$('block_title').setStyle('display', 'none');
		}
	}

	//	Custom ESAM image editing events
	if ($('background_image')) {
		$('background_image').addEvent('complete', function() {
			//	Strip resize info
			var imgSrc = 'url(' + $('background_image').getProperty('src') + ')';
			imgSrc = imgSrc.substring(0, imgSrc.indexOf('&actions'));
			$('background_image_container').setStyle('background-image', imgSrc);	
		});
	}
	if ($('bg_right_image')) {
		$('bg_right_image').addEvent('complete', function() {
			//	Strip resize info
			var imgSrc = 'url(' + $('bg_right_image').getProperty('src') + ')';
			imgSrc = imgSrc.substring(0, imgSrc.indexOf('&actions'));
			$('bg_right_image_container').setStyle('background-image', imgSrc);	
		});
	}
	if ($('bg_left_image')) {
		$('bg_left_image').addEvent('complete', function() {
			//	Strip resize info
			var imgSrc = 'url(' + $('bg_left_image').getProperty('src') + ')';
			imgSrc = imgSrc.substring(0, imgSrc.indexOf('&actions'));
			$('bg_left_image_container').setStyle('background-image', imgSrc);	
		});
	}	
});