/* OPEN WIN
------------------------------------------------------------------------------*/

function openWin(o) {
	if (typeof(o) == 'object') var url = o.href;
	else var url = o;
	var nw = window.open(url, '', 'directories=yes,location=yes,resizable=yes,menubar=yes,toolbar=yes,scrollbars=yes,status=yes');
	nw.focus();
	return false;
}

/* LANGUAGE CHOOSER
------------------------------------------------------------------------------*/

function fadeLang(){
	if($('langs').style.display == 'none'){
		Effect.Fade('langs',{duration:0.1, from:0.0, to:1.0})
		$('langchooser').style.backgroundImage = "url('/assets/templates/zott/images/layout/langchooser_on.gif')";
		$('langs').style.display = 'block';
	}else{
		Effect.Fade('langs',{duration:0.1, from:1.0, to:0.0})
		$('langchooser').style.backgroundImage = "url('/assets/templates/zott/images/layout/langchooser.gif')";
		$('langs').style.display = 'none';
	}
}

/* TRACKER
------------------------------------------------------------------------------*/

function track(n) {
	if (typeof(pageTracker) != 'undefined') pageTracker._trackPageview(window.location.pathname + '/' + n);
	if (typeof(piwik_log) != 'undefined') piwik_log(actionTag, 5, 'http://tracking.webguerillas.de/piwik.php');
}

function inspTracker(n) {
	track(n);
}

/* IMAGE SLIDER (Herstellung)
------------------------------------------------------------------------------*/

function changeSlideImage(id){
	$('#imageholder, #textholder').hide().fadeIn(600);
	$('#image').attr('src', '/assets/images/herstellung/bild' + id + '.jpg');

	$('#text1').hide();
	$('#text2').hide();
	$('#text3').hide();
	$('#text4').hide();
	$('#text'+id).show();

	$('#link1').css('color', '#fff');
	$('#link2').css('color', '#fff');
	$('#link3').css('color', '#fff');
	$('#link4').css('color', '#fff');
	$('#link'+id).css('color', '#476a8d');
}


/* MENU
------------------------------------------------------------------------------*/

var activeMenu = null;
var menuList = new Array();

function menuDisplay(n) {
	for (var i=0; i<menuList.length; i++) {
		$('#subm' + menuList[i]).hide();
	}
	$('#subm' + n).show();
}

function registerMenu(n, classes) {
	var regex = /active/;
	if (regex.test(classes)) activeMenu = n;
	menuList[menuList.length] = n;
}

function displayActiveMenu() {
	if (activeMenu) menuDisplay(activeMenu);
}


/* RASTER
------------------------------------------------------------------------------*/

function toggleRaster() {
	var e = $('#raster');
	//if (!e) return;
	if (e.css('display') == 'block') e.css('display', 'none');
	else e.css('display', 'block');
	//e.style.display = 'block';
	//else e.style.display = 'none';
}


/* RADIOBUTTONS
------------------------------------------------------------------------------*/

//var radioButtons = new Hash(); ??????????????????????????????????????????????????????????????????????????????????

function writeRadiobutton(name, status, value, content) {
	if (!content) var content = '';
	if (!radioButtons.get(name)) {
		radioButtons.set(name, new Array());
		document.write('<input type="hidden" name="' + name + '" id="' + name + '" value="' + ((status == 1) ? value : '') + '"/>');
	}
	var arr = radioButtons.get(name);
	arr.push(value);
	radioButtons.set(name, arr);

	document.write('<div id="radiobutton_' + name + value + '" class="checkbox-' + ((status == 1) ? 'on' : 'off') + '" onclick="setRadiobutton(\'' + name + '\', \'' + value + '\');">' + content + '</div>');
}

function setRadiobutton(name, value) {
	$(name).value = value;
	var arr = radioButtons.get(name);
	arr.each(function(s) {
		var checkbox = $('radiobutton_' + name + s);
		if (!checkbox) alert('radiobutton not found');
		if (s == value) checkbox.className = 'checkbox-on';
		else checkbox.className = 'checkbox-off';
	});
}


/* CHECKBOXEN
------------------------------------------------------------------------------*/

function writeCheckbox(name, status) {
	document.write('<div id="checkbox_' + name + '" class="checkbox-' + ((status == 1) ? 'on' : 'off') + '" onclick="toggleCheckbox(\'' + name + '\');"></div>');
	document.write('<input type="hidden" name="' + name + '" id="' + name + '" value="' + status + '"/>');
}

function toggleCheckbox(name) {
	var hidden = $(name);
	var checkbox = $('checkbox_' + name);
	if (!hidden || !checkbox) {
		alert('Keine Checkbox ' + name);
		return;
	}
	if (hidden.value == '0') {
		hidden.value = '1';
		checkbox.className = 'checkbox-on';
	} else {
		hidden.value = '0';
		checkbox.className = 'checkbox-off';
	}
}

function setCheckbox(name, value) {
	var hidden = $(name);
	var checkbox = $('checkbox_' + name);
	if (!hidden || !checkbox) {
		alert('Keine Checkbox ' + name);
		return;
	}
	if (value == true) {
		hidden.value = '1';
		checkbox.className = 'checkbox-on';
	} else {
		hidden.value = '0';
		checkbox.className = 'checkbox-off';
	}
}

function getElementsByClassName(oElm, strTagName, strClassName) {
	var arrElements = (strTagName == '*' && document.all) ? document.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp('(^|\\s)' + strClassName + '(\\s|$)');
	var oElement;
	for (var i=0; i<arrElements.length; i++) {
		oElement = arrElements[i];
		if (oRegExp.test(oElement.className)) arrReturnElements.push(oElement);
	}
	return arrReturnElements;
}


/* GEWINNSPIEL
------------------------------------------------------------------------------*/

function submitGewinnspiel(name) {
	var arrElements = getElementsByClassName($(name), 'div', 'formerror');
	for (var i=0; i<arrElements.length; i++) arrElements[i].style.display = 'none';
	var pars = Form.serialize(name);
	var a = new Ajax.Request('/ajax/gewinnspiel/', {
		method: 'post',
		parameters: pars,
		onSuccess: function(transport) {
			if (transport.responseText == '0') {
				openOverlay('overlay_submitted');
			} else if (transport.responseText == '1') {
				alert('Error');
			} else {
				var err = transport.responseText.split('|');
				for (var i=0; i<err.length; i++) {
					var id = 'err_' + err[i];
					if ($(id)) {
						$(id).style.display = 'block';
						new Effect.Shake($(id), { duration:0.4, distance:10 });
					}
				}
			}
		},
		onFailure: function() { alert('Error'); }
	});
	return false;
}


/* KONTAKTFORMULAR
------------------------------------------------------------------------------*/

/**
 * Kontaktformular, umgeschrieben für jQuery
 */
function submitKontaktForm(name) {
	$('#' + name + ' .formerror').hide();
	$.post('/ajax/kontakt/', $('#' + name).serialize(), function(data, status) {
		if (status == 'success') {
			if (data == '0') {
				openOverlay('overlay_submitted');
			} else if (data == '1') {
				alert('Error');
			} else {
				var err = data.split('|');
				for (var i=0; i<err.length; i++) {
					$('#err_' + err[i]).show('pulsate', { times:1 }, 500);
				}
			}
		}
	}, 'text');
	return false;
}



/* OVERLAYS
------------------------------------------------------------------------------*/

function openOverlay(name, width, url) {
	//log('openOverlay: ' + name);
	var element = $('#' + name);
	if (!width) width = 0;
	if (!url) url = '';

	if (isIE6) resizeOverlayBg();
	window.onresize = function() {
		centerOverlay(name);
		if (isIE6) resizeOverlayBg();
	};
	if (isIE6) {
		window.onscroll = function() { centerOverlay(name); };
		// Hide selectbox (reciept category chooser)
		if($('#search_combo')) $('#search_combo').hide();
	}

	$('#overlay').css('display', 'block').css('opacity', '0');
	if (width > 0) element.css('width', width + 'px');
	if (url) {
		$('#overlayflex_content').load(url, {}, function() {
			centerOverlay(name);
			element.css('display', 'block').css('opacity', '0');
			$('#overlay').fadeTo(400, 0.75);
			element.fadeTo(600, 1);
		});
		track(url);
	} else {
		centerOverlay(name);
		element.css('display', 'block');
		$('#overlay').fadeTo(400, 0.75);
		element.fadeTo(600, 1);
		track(name);
	}

	return false;
}


function closeOverlay(name) {
	var element = $('#' + name);
	element.fadeOut(400);
	$('#overlay').fadeOut(600);

	window.onresize = function() {};

	if (isIE6){
		window.onscroll = function() {};
		//show selectbox (reciept category chooser)
		//if ($('search_combo')) $('search_combo').style.display = "block"; // ??
	}
	return false;
}

function resizeOverlayBg() {
	var height = $('#body').height();
	$('#overlay').css('height', height + 'px');
}

function centerOverlay(name) {
	element = $('#' + name);
	var viewportWidth = window.innerWidth ? window.innerWidth : $(window).width();
	var viewportHeight = window.innerHeight ? window.innerHeight : $(window).height();
	var x = (viewportWidth / 2) - (element.width() / 2);
	var y = (viewportHeight / 3) - (element.height() / 2);
	if (isIE6) {
		var scrollX = document.documentElement.scrollLeft;
		var scrollY = document.documentElement.scrollTop;
		x += scrollX;
		y += scrollY;
		if (y < scrollY) y = scrollY;
	}
	if (x < 0) x = 0;
	if (y < 0) y = 0;
	element.css('left', x + 'px').css('top', y + 'px');
}


/* FLASH
------------------------------------------------------------------------------*/

function loadProducts() {
	if ($('#productsflash')) {
		var so = new SWFObject('/assets/flash/product/Zottarella3DMain.swf', 'productsflash', '950', '416', '8', '#e5f2fa');
		so.addParam('scale', 'noscale');
		so.addParam('quality', 'high');
		so.addParam('menu', 'false');
		so.addVariable('xmlPath', '/ajax/products_de.xml');
		so.write('productsflash');
	}
}

function loadInspirator() {
	if ($('#inspiratorflash').length) {
		var so = new SWFObject('/assets/rezept/inspirator/swf/rezeptinspirator.swf', 'rezeptinspirator', '1000', '318', '9.0.16.0', '#e5f2fa');
		so.addParam('scale', 'noscale');
		so.addParam('quality', 'high');
		so.addParam('wmode', 'transparent');
		so.addParam('allowScriptAccess', 'sameDomain');
		so.write('inspiratorflash');
	}
}

/*
alert('JS: type of $: ' + typeof($));
alert('JS: type of jQuery: ' + typeof(jQuery));
if (jQuery) alert('jQ loaded');
else alert('jQ not loaded');
*/
if (typeof(jQuery) != 'undefined') $(document).ready(function() {
	if ($('#inspiratorflash').length) loadInspirator();
});


/* USER REGISTRATION
------------------------------------------------------------------------------*/

function submitRegistration(name, ajax) {
	if (!ajax) ajax = '/ajax/register';
	var arrElements = getElementsByClassName($(name), 'div', 'formerror');
	for (var i=0; i<arrElements.length; i++) arrElements[i].style.display = 'none';
	var pars = Form.serialize(name);
	var a = new Ajax.Request(ajax, {
		method: 'post',
		parameters: pars,
		onSuccess: function(transport) {
			var err = new Array();
			if (transport.responseText == '0') {
				// Successful registration
				window.location.replace('registrierung/gespeichert.html');
			} else if (transport.responseText == 'u') {
				// Profile updated successfully
				window.location.replace('profil/gespeichert.html');
			} else if (transport.responseText == '1') {
				// Username already in use
				err = new Array('username');
			} else if (transport.responseText == '2') {
				// Username already in use
				err = new Array('email');
			} else if (transport.responseText == '3') {
				// Mobile already in use
				err = new Array('mobil');
			} else if (transport.responseText == 'e') {
				// Unexpected error
				alert('Error');
			} else {
				err = transport.responseText.split('|');
			}

			if (err.length > 0) {
				for (var i=0; i<err.length; i++) {
					var id = 'err_' + err[i];
					if ($(id)) {
						$(id).style.display = 'block';
						new Effect.Shake($(id), { duration:0.4, distance:10 });
					}
				}
			}
		},
		onFailure: function() { alert('Error'); }
	});
	return false;
}


/* USER PROFILE UPDATE
------------------------------------------------------------------------------*/

function submitProfileUpdate(name, ajax) {
	return submitRegistration(name, '/ajax/profileupdate');
}



/* USER LOGIN
------------------------------------------------------------------------------*/

function openOverlayLogin() {
	return openOverlay('overlayflex', 300, '/ajax/login-html');
}

function submitLogin(name, divclass) {
	if (!divclass) var divclass = 'formerror';
	var errmsgid = 'err_msg';
	var errmsg = '';
	if ($(errmsgid)) $(errmsgid).style.display = 'none';
	var arrElements = getElementsByClassName($(name), 'div', divclass);
	for (var i=0; i<arrElements.length; i++) arrElements[i].style.display = 'none';
	var pars = Form.serialize(name);
	var a = new Ajax.Request('/ajax/login', {
		method: 'post',
		parameters: pars,
		onSuccess: function(transport) {
			var err = new Array();
			if (transport.responseText == '0') {
				if ($('rezeptinspirator') && typeof($('rezeptinspirator').setLoggedIn) == 'function') {
					$('rezeptinspirator').setLoggedIn();
					var arrMetaLogin = document.getElementsByClassName('btn_login');
					var arrMetaChilds = arrMetaLogin[0].childElements();
					var loginSpan = document.createElement('span');
					loginSpan.appendChild(document.createTextNode('Eingeloggt als ' + $('f_username').value));
					arrMetaLogin[0].insertBefore(loginSpan, arrMetaChilds[0]);
					// Login --> Profil
					arrMetaChilds[0].firstChild.data = 'Profil';
					arrMetaChilds[0].writeAttribute('href', '/de/community/profil.html');
					arrMetaChilds[0].writeAttribute('onclick', '');
					// Reg. --> Logout
					arrMetaChilds[1].firstChild.data = 'Logout';
					arrMetaChilds[1].writeAttribute('href', '/de/community/logout.html');					
					closeOverlay('overlayflex');
					
					return false;
				}
				//$('rezeptinspirator').setLoggedIn();
				if (checkSMSIntention()) return;
				else {
					if (window.location.href.match(/\?[a-z]+/)) window.location.href = 'index.html';
					else window.location.reload(true);
				}
			} else if (transport.responseText == '1') {
				// Not confirmed
				errmsg = 'Die Registrierung wurde noch nicht bestätigt.';
			} else if (transport.responseText == 'e') {
				// Unexpected error
				alert('Error');
			} else {
				err = transport.responseText.split('|');
			}

			if (err.length > 0) {
				for (var i=0; i<err.length; i++) {
					var id = 'err_' + err[i];
					if ($(id)) {
						$(id).style.display = 'block';
						new Effect.Shake($(id), { duration:0.4, distance:10 });
					}
				}
			}
			if (errmsg && $(errmsgid)) {
				$(errmsgid).innerHTML = errmsg;
				$(errmsgid).style.display = 'block';
				new Effect.Shake($(errmsgid), { duration:0.4, distance:10 });
			}
		},
		onFailure: function() { alert('Error'); }
	});
	return false;
}


/* smsIntention
* return true: function did something
* return false: nothing to do
------------------------------------------------------------------------------*/

var smsIntention = '';
function checkSMSIntention() {
	var regexRecipe = /r[0-9]{1,4}/;
	if (smsIntention == 'i') {
		sendInspiratorSMS();
		return true;
	} else if (regexRecipe.test(smsIntention)) {
		// Rezept senden
		sendRecipeSMS(smsIntention.substr(1));
		return true;
	}
	return false;
}


/* SEND RECIPE SMS
------------------------------------------------------------------------------*/

function sendRecipeSMS(id) {
	smsIntention = 'r' + id;
	var a = new Ajax.Request('/ajax/sendsms', {
		method: 'post',
		parameters: 'recipe=' + id,
		onSuccess: function(transport) {
			if (transport.responseText == '0') {
				// SMS has been sent
				smsIntention = '';
				openOverlay('overlayflex', 300, '/ajax/confsmsrecipe');
			} else if (transport.responseText == '1') {
				// Not logged in
				openOverlay('overlayflex', 300, '/ajax/login-html');
			} else if (transport.responseText == '2') {
				// No mobile phone number
				openOverlay('overlayflex', 300, '/ajax/formmobilnr');
			} else if (transport.responseText == '3') {
				// Mobile phone number not validated
				openOverlay('overlayflex', 300, '/ajax/mobilvalid');
			} else if (transport.responseText == 'e') {
				// Unexpected error
				alert('Error');
			} else {
				// Print error message
				alert(transport.responseText);
			}
		},
		onFailure: function() { alert('Error'); }
	});
	return false;
}


/* SEND MOBILE INSPIRATOR SMS
------------------------------------------------------------------------------*/

function openOverlayInspiratorSMS() {
	return openOverlay('overlayflex', 300, '/ajax/inspiratorinfo');
}

function sendInspiratorSMS() {
	smsIntention = 'i';

	$.get('/ajax/inspiratorpush', {}, function(data, status) {

		if (data == '0') {
			// SMS has been sent
			smsIntention = '';
			openOverlay('overlayflex', 300, '/ajax/confsmsinspirator');
		} else if (data == '1') {
			// Not logged in
			openOverlay('overlayflex', 300, '/ajax/login-html');
		} else if (data == '2') {
			// No mobile phone number
			openOverlay('overlayflex', 300, '/ajax/formmobilnr');
		} else if (data == '3') {
			// Mobile phone number not validated
			openOverlay('overlayflex', 300, '/ajax/mobilvalid');
		} else if (data == 'e') {
			// Unexpected error
			alert('Error');
		} else {
			// Print error message
			alert(transport.responseText);
		}

	}, 'text');


	/*
	var a = new Ajax.Request('/ajax/inspiratorpush', {
		method: 'get',
		onSuccess: function(transport) {
			//alert(transport.responseText);
			if (transport.responseText == '0') {
				// SMS has been sent
				smsIntention = '';
				openOverlay('overlayflex', 300, '/ajax/confsmsinspirator');
			} else if (transport.responseText == '1') {
				// Not logged in
				openOverlay('overlayflex', 300, '/ajax/login-html');
			} else if (transport.responseText == '2') {
				// No mobile phone number
				openOverlay('overlayflex', 300, '/ajax/formmobilnr');
			} else if (transport.responseText == '3') {
				// Mobile phone number not validated
				openOverlay('overlayflex', 300, '/ajax/mobilvalid');
			} else if (transport.responseText == 'e') {
				// Unexpected error
				alert('Error');
			} else {
				// Print error message
				alert(transport.responseText);
			}
		},
		onFailure: function() { alert('Error'); }
	});
	*/
	return false;
}


/* SUBMIT MOBILE PHONE NUMBER
------------------------------------------------------------------------------*/

function submitMobileNum(name) {
	var pars = Form.serialize(name);
	var errmsg = '';
	var errmsgid = 'err_msg';
	if ($(errmsgid)) $(errmsgid).style.display = 'none';
	var a = new Ajax.Request('/ajax/savemobile', {
		method: 'post',
		parameters: pars,
		onSuccess: function(transport) {
			if (transport.responseText == '0') {
				openOverlay('overlayflex', 300, '/ajax/mobilvalid');
			} else if (transport.responseText == '1') {
				// Not logged in
				openOverlay('overlayflex', 300, '/ajax/login-html');
			} else if (transport.responseText == '2') {
				// No mobile phone number
				var id = 'err_mobile_v';
				if ($(id)) {
					$(id).style.display = 'block';
					new Effect.Shake($(id), { duration:0.4, distance:10 });
				}
			} else if (transport.responseText == '3') {
				// Number already validated
				var errmsg = 'Mobilnummer ist bereits validiert.';
			} else if (transport.responseText == '4') {
				// No mobile phone number
				var errmsg = 'Mobilnummer ist bereits von einem anderen Benutzer registriert.';
			} else if (transport.responseText == 'e') {
				// Unexpected error
				alert('Error');
			} else {
				// Print error message
				alert(transport.responseText);
			}
			
			if (errmsg && $(errmsgid)) {
				$(errmsgid).innerHTML = errmsg;
				$(errmsgid).style.display = 'block';
				new Effect.Shake($(errmsgid), { duration:0.4, distance:10 });
			}
		},
		onFailure: function() { alert('Error'); }
	});

	return false;

}


/* SUBMIT MOBILE VALIDATION
------------------------------------------------------------------------------*/

function submitMobileVal(name) {
	var pars = Form.serialize(name);
	var a = new Ajax.Request('/ajax/validatemobile', {
		method: 'post',
		parameters: pars,
		onSuccess: function(transport) {
			if (transport.responseText == '0') {
				// Mobil number validated
				if (checkSMSIntention()) return;
				else window.location.reload(true);
			} else if (transport.responseText == '1') {
				// Not logged in
				openOverlay('overlayflex', 300, '/ajax/login-html');
			} else if (transport.responseText == '2') {
				// No mobile phone number in profile
				openOverlay('overlayflex', 300, '/ajax/formmobilnr');
			} else if (transport.responseText == '3') {
				// Bad validation code entered
				var id = 'err_code_v';
				if ($(id)) {
					$(id).style.display = 'block';
					new Effect.Shake($(id), { duration:0.4, distance:10 });
				}
			} else if (transport.responseText == 'e') {
				// Unexpected error
				alert('Error');
			} else {
				// Print error message
				alert(transport.responseText);
			}
		},
		onFailure: function() { alert('Error'); }
	});
}


/* RESEND MOBILE VALIDATION
------------------------------------------------------------------------------*/

function resendMobileVal() {
	var a = new Ajax.Request('/ajax/resendmobileval', {
		onSuccess: function(transport) {
			//alert(transport.responseText);
			if (transport.responseText == '0') {
				// SMS has been sent
				$('btn_sendvalid').hide();
				$('msgok').style.display = 'block';
			} else if (transport.responseText == '1') {
				// Not logged in
				//alert('Nicht eingeloggt');
				openOverlay('overlayflex', 300, '/ajax/login-html');
			} else if (transport.responseText == '2') {
				// No mobile phone number
				//alert('Keine Nummer im Profil gespeichert');
				openOverlay('overlayflex', 300, '/ajax/formmobilnr');
			} else if (transport.responseText == '3') {
				// Already validated
				alert('Ihre Nummer ist bereits validiert.'); // !!!!!!!!!!!!!!!!!!!!!!!!!
			} else if (transport.responseText == 'e') {
				// Unexpected error
				alert('Error');
			} else {
				// Print error message
				alert(transport.responseText);
			}
		},
		onFailure: function() { alert('Error'); }
	});
	return false;
}



/* PASSWORD SEND
------------------------------------------------------------------------------*/

function sendPassword(name) {
	var arrElements = getElementsByClassName($(name), 'div', 'formerror_layer');
	for (var i=0; i<arrElements.length; i++) arrElements[i].style.display = 'none';
	var pars = Form.serialize(name);
	var a = new Ajax.Request('/ajax/sendpass', {
		method: 'post',
		parameters: pars,
		onSuccess: function(transport) {
			//alert(transport.responseText);
			var err = new Array();
			if (transport.responseText == '0') {
				//window.location.reload(true);
				$('msgok').style.display = 'block';
				$('btn_sendpass').hide();
			} else if (transport.responseText == 'e') {
				// Unexpected error
				//alert('Error');
			} else {
				err = transport.responseText.split('|');
			}

			if (err.length > 0) {
				for (var i=0; i<err.length; i++) {
					var id = 'err_' + err[i];
					if ($(id)) {
						$(id).style.display = 'block';
						new Effect.Shake($(id), { duration:0.4, distance:10 });
					}
				}
			}
		},
		onFailure: function() { alert('Error'); }
	});
	return false;
}


/* DELETE PROFILE
------------------------------------------------------------------------------*/

function deleteProfile(){
	var a = new Ajax.Request('/ajax/ajaxdeleteprofile', {
		onSuccess: function(transport) {
			//alert(transport.responseText);
			if (transport.responseText == '0') {
				window.location.href = '/de/community/profilgeloescht.html';
			} else if (transport.responseText == '1') {
				// Not logged in
				openOverlay('overlayflex', 300, '/ajax/login-html');
			} else if (transport.responseText == 'e') {
				// Unexpected error
				alert('Error');
			} else {
				// Print error message
				alert(transport.responseText);
			}
		},
		onFailure: function() { alert('Error'); }
	});
	return false;

}


/* ACCORDEON USERLOGIN LAYER
------------------------------------------------------------------------------*/

function accord(id){
	if (id == 'reg') {
		//Effect.Appear('reg', { duration: 0.3 });
		$('#reg').fadeIn(300);
		$('#log').hide();
		$('#pass').hide();
		$('#link_reg').removeClass('toggle').addClass('toggle_act');
		$('#link_log').removeClass('toggle_act').addClass('toggle');
		$('#link_pass').removeClass('toggle_act').addClass('toggle');
	} else if (id == 'pass') {
		$('#reg').hide();
		$('#log').hide();
		$('#pass').fadeIn(300);
		$('#link_reg').removeClass('toggle_act').addClass('toggle');
		$('#link_log').removeClass('toggle_act').addClass('toggle');
		$('#link_pass').removeClass('toggle').addClass('toggle_act');
	}else{
		$('reg').hide();
		$('#log').fadeIn(300);
		$('#pass').hide();
		$('#link_reg').removeClass('toggle_act').addClass('toggle');
		$('#link_log').removeClass('toggle').addClass('toggle_act');
		$('#link_pass').removeClass('toggle_act').addClass('toggle');
	}
}


/* jQuery ScrollTo extension
------------------------------------------------------------------------------*/
jQuery.fn.extend({
	scrollTo : function(speed, easing) {
		return this.each(function() {
		var targetOffset = $(this).offset().top;
		$('html,body').animate({scrollTop: targetOffset}, speed, easing);});
	}
});



/* REZEPTSUCHE
------------------------------------------------------------------------------*/

var rezepte = {

	setTime: function(min) {
		//log('setTime to ' + min);
		if (rezepte.checkTime(min) == false) return false;
		else {
			AZCookies.cookie('rezept_time', min);
			$('#rezeptselector .timebuttons').css('background-image', 'url("/assets/templates/zott/images/rezept/btn_time_off.png")');
			$('#rezeptselector #btntime' + min).css('background-image', 'url("/assets/templates/zott/images/rezept/btn_time_on.png")');

			rezepte.repaintOddEven();
			rezepte.setIngredients(rezepte.getIngredients(), true);
			rezepte.reorderPages();
			return true;
		}
	},

	stateOddEven: true,

	resetOddEven: function() {
		rezepte.stateOddEven = true;
	},

	getOddEven: function() {
		var classname;
		if (rezepte.stateOddEven) classname = 'odd';
		else classname = 'even';
		rezepte.stateOddEven = !rezepte.stateOddEven;
		//log('Setze classname ' + classname);
		return classname;
	},

	repaintOddEven: function() {
		rezepte.resetOddEven();
		$('#rezeptliste tbody tr').each(function() {
			var $row = $(this);
			//log('element style $ display=' + $row.css('display') + ' AND visibility=' + $row.css('visibility'));
			if ($row.css('display') != 'none') {
				$row.removeClass('odd even').addClass(rezepte.getOddEven());
			}
		});
	},

	pages: 1,
	itemsPerPage: 20,
	currentPage: 1,
	reorderPages: function() {
		// Reset
		$('.recipepagination ol').empty();
		var count = this.itemsPerPage;
		var total = 0;
		this.pages = 0;

		// Get current user settings
		var timeSetting = this.getTime();

		// Reorder
		$('#rezeptliste tbody tr').each(function() {
			var thisTime;
			if ($(this).hasClass('time15')) thisTime = 15;
			else if ($(this).hasClass('time30')) thisTime = 30;
			else if ($(this).hasClass('time0')) thisTime = 0;

			//log('this row has time: ' + thisTime);

			var useRecipe = false;
			if (timeSetting == 0) useRecipe = true;
			else if (timeSetting == 30 && (thisTime == 30 || thisTime == 15)) useRecipe = true;
			else if (timeSetting == 15 && thisTime == 15) useRecipe = true;

			if (useRecipe) {
				//log('we use this recipe - ' + timeSetting);
				total++;
				count++;
				if (count > rezepte.itemsPerPage) {
					count = 1;
					rezepte.pages++;
					$('.recipepagination ol').append('<li onclick="rezepte.goToPage(this);" page="' + rezepte.pages + '">' + rezepte.pages + '</li> ');
				}

				var classname = 'page' + rezepte.pages;
				$(this).removeClass('page').addClass(classname);
			}
		});

		this.goToPage($('.recipepagination ol li:first'));
		if (this.pages < 2) $('.recipepagination ol').hide();
		else $('.recipepagination ol').show();
		$('.recipecounter').text(total);
		// Add scrollTo event to bottom pagination
		$('#rezeptpagination2 li').bind('click', function() {
			$('#body').scrollTo(1000, 'easeOutExpo');
		});
	},

	paginationSetFirstLast: function() {
		var $first = $('#rezeptpagination1 li:first, #rezeptpagination2 li:first');
		var $last = $('#rezeptpagination1 li:last, #rezeptpagination2 li:last');

		// First
		$first.css('width', '21px').css('height', '21px').css('padding', '1px 0 0 1px').css('border', 'none');
		if ($first.hasClass('active')) $first.css('background', '#f3f7fa url(/assets/templates/zott/images/rezept/selector/pagination_left_on.png) no-repeat top left');
		else $first.css('background', '#f3f7fa url(/assets/templates/zott/images/rezept/selector/pagination_left_off.png) no-repeat top left');

		// Last
		$last.css('width', '21px').css('height', '21px').css('padding', '1px 0 0 0').css('border', 'none');
		if ($last.hasClass('active')) $last.css('background', '#f3f7fa url(/assets/templates/zott/images/rezept/selector/pagination_right_on.png) no-repeat top right');
		else $last.css('background', '#f3f7fa url(/assets/templates/zott/images/rezept/selector/pagination_right_off.png) no-repeat top right');
	},

	goToPage: function(e) {
		var page = jQuery.trim($(e).text());
		//log('Gehe auf Seite ' + page + ' von ' + this.pages);
		$('.recipepagination ol li').removeClass('active');
		$('.recipepagination ol li[page="' + page + '"]').addClass('active');
		$('#rezeptliste tbody tr').hide();
		$('#rezeptliste tbody tr.page' + page).show();
		this.repaintIngedients();

		// Remove rest of recipes on last page
		if (page == this.pages) {
			//log('Wir sind auf der letzten Seite!');

			// Get current user settings
			var timeSetting = this.getTime();

			// Hide unwanted recipes on last page
			$('#rezeptliste tbody tr.page' + page).each(function() {
				if ($(this).hasClass('time15')) thisTime = 15;
				else if ($(this).hasClass('time30')) thisTime = 30;
				else if ($(this).hasClass('time0')) thisTime = 0;

				if (timeSetting == 30 && thisTime == 0) $(this).hide();
				else if (timeSetting == 15 && thisTime != 15) $(this).hide();
			});
		}

		// Set CSS for first and last pagination item
		this.paginationSetFirstLast();

		// Jump to the top
		
	},

	getTime: function() {
		var min = AZCookies.cookie('rezept_time');
		if (rezepte.checkTime(min)) return min;
		else return '0';
	},

	checkTime: function(min) {
		if (typeof(min) == 'undefined') return false;
		if (String(min).match(/^(0|15|30)$/)) return true;
		else return false;
	},

	setIngredients: function(val, suddenly) {
		if (typeof(suddenly) == 'undefined') suddenly = false;
		//log('setIngredients to ' + val);
		if (val == '1' || val == '0') AZCookies.cookie('rezept_ingr', val);
		$('#rezeptselector .ingrbuttons').css('background-image', 'url("/assets/templates/zott/images/rezept/btn_ingr_off.png")');
		$('#rezeptselector #btningr' + val).css('background-image', 'url("/assets/templates/zott/images/rezept/btn_ingr_on.png")');
		if (val == '0') {
			if (suddenly) {
				$('#rezeptliste .ingredients').hide();
				$('#rezeptliste .image img').hide();
			} else {
				$('#rezeptliste .ingredients').slideUp();
				$('#rezeptliste .image img').slideUp();
			}
		} else {
			if (suddenly) {
				$('#rezeptliste .ingredients').show();
				$('#rezeptliste .image img').show();
			} else {
				$('#rezeptliste .ingredients').slideDown();
				$('#rezeptliste .image img').slideDown();
			}
		}
	},

	repaintIngedients: function() {
		this.setIngredients(this.getIngredients(), true);
	},

	repaintTime: function() {
		this.setTime(this.getTime());
	},

	getIngredients: function() {
		var ingr = AZCookies.cookie('rezept_ingr');
		if (ingr == '0') return '0';
		else return '1';
	},

	initSelector: function() {
		this.setTime(this.getTime());
		this.setIngredients(this.getIngredients());
		$('#btntime0').click(function() { rezepte.setTime('0'); });
		$('#btntime15').click(function() { rezepte.setTime('15'); });
		$('#btntime30').click(function() { rezepte.setTime('30'); });
		$('#btningr0').click(function() { rezepte.setIngredients('0'); });
		$('#btningr1').click(function() { rezepte.setIngredients('1'); });
		//rezepte.reorderPages();
	}

};

var AZCookies = {
	cookiesAvailable: null,

	cookieList: new Array(),

	testCookies: function() {
		if (this.cookiesAvailable == null) {
			//log('noch nicht');
			$.cookie('testcookie', 'test');
			if ($.cookie('testcookie') == 'test') this.cookiesAvailable = true;
			else this.cookiesAvailable = false;
			$.cookie('testcookie', null);
		}

		return this.cookiesAvailable;
	},

	setCookie: function(key, value) {
		if (this.testCookies()) {
			//log('setze cookie ' + key + '=' + value);
			$.cookie(key, value);
		} else {
			//log('setze pseudo-cookie ' + key + '=' + value);
			this.cookieList[key] = value;
		}
		return true;
	},

	getCookie: function(key) {
		if (this.testCookies()) {
			//log('lese cookie ' + key + '=' + $.cookie(key));
			return $.cookie(key);
		} else {
			//log('lese pseudo-cookie ' + key + '=' + this.cookieList[key]);
			return this.cookieList[key];
		}
	},

	cookie: function(key, value) {
		if (typeof(value) == 'undefined') return this.getCookie(key);
		else return this.setCookie(key, value);
	}
};

if (typeof($) != 'undefined') $(document).ready(function () {
	if ($('#rezeptselector').length) rezepte.initSelector();

	// initialize flash teaser for "Sammelaktion"
	var s1 = new SWFObject('/assets/flash/home/de/sammelaktion_teaser.swf','sammelaktion','550','198','9');
	s1.addParam('allowfullscreen','false');
	s1.addParam('allowscriptaccess','always');
	s1.addParam('flashvars','');
	//s1.write('sammelaktion_teaser');

});


/* REZEPTKATEGORIEN
------------------------------------------------------------------------------*/

var rezeptcategories = {
	init: function() {
		$('#rezeptcategories').bind('mouseout', function() { rezeptcategories.setTitle(0); });
		$('#rezeptcategories a.cat01').bind('mouseover', function() { rezeptcategories.setTitle(1); });
		$('#rezeptcategories a.cat02').bind('mouseover', function() { rezeptcategories.setTitle(2); });
		$('#rezeptcategories a.cat03').bind('mouseover', function() { rezeptcategories.setTitle(3); });
		$('#rezeptcategories a.cat04').bind('mouseover', function() { rezeptcategories.setTitle(4); });
		$('#rezeptcategories a.cat05').bind('mouseover', function() { rezeptcategories.setTitle(5); });
		$('#rezeptcategories a.cat06').bind('mouseover', function() { rezeptcategories.setTitle(6); });
		$('#rezeptcategories a.cat07').bind('mouseover', function() { rezeptcategories.setTitle(7); });
		$('#rezeptcategories a.cat08').bind('mouseover', function() { rezeptcategories.setTitle(8); });
		$('#rezeptcategories a.cat09').bind('mouseover', function() { rezeptcategories.setTitle(9); });
		$('#rezeptcategories a.cat10').bind('mouseover', function() { rezeptcategories.setTitle(10); });
		$('#rezeptcategories a.cat11').bind('mouseover', function() { rezeptcategories.setTitle(11); });
		$('#rezeptcategories a.cat12').bind('mouseover', function() { rezeptcategories.setTitle(12); });
	},

	setTitle: function(number) {
		$('#rezeptcategories div.description').css('background-position', '0 -' + (20 * number) + 'px');
	}
}

if (typeof($) != 'undefined') $(document).ready(function () {
	if ($('#rezeptcategories').length) rezeptcategories.init();
});


function log(msg) {
	/*
	if (isIE) {} //alert(msg);
	else if (window.console) window.console.log(msg);
	else if (console) console.debug(msg);
	else alert(msg);
	*/
}

/* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
 * Uses the built in easing capabilities added In jQuery 1.1
 * to offer multiple easing options
 * TERMS OF USE - jQuery Easing
 * Open source under the BSD License.
 * Copyright © 2008 George McGinley Smith
 * All rights reserved.
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 * Redistributions of source code must retain the above copyright notice, this list of
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list
 * of conditions and the following disclaimer in the documentation and/or other materials
 * provided with the distribution.
 * Neither the name of the author nor the names of contributors may be used to endorse
 * or promote products derived from this software without specific prior written permission.
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * TERMS OF USE - EASING EQUATIONS
 * Open source under the BSD License.
 * Copyright © 2001 Robert Penner
 * All rights reserved.
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 * Redistributions of source code must retain the above copyright notice, this list of
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list
 * of conditions and the following disclaimer in the documentation and/or other materials
 * provided with the distribution.
 * Neither the name of the author nor the names of contributors may be used to endorse
 * or promote products derived from this software without specific prior written permission.
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
*/
jQuery.easing['jswing'] = jQuery.easing['swing'];
jQuery.extend(jQuery.easing, {
	def: 'easeOutExpo',
	swing: function (x, t, b, c, d) {
		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
	},
	easeOutExpo: function (x, t, b, c, d) {
		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
	}
});