function showWaiting() {
	arrOffsets = document.viewport.getScrollOffsets();
	$('waitingDiv').setStyle({display: 'block', top: (arrOffsets['top']+60).toString()+'px'});
}

function removeWaiting() {
	$('waitingDiv').setStyle({display: 'none'});
}

// ###############################################################################

function reportError(transport) {
	alert("An error occurred");
}

function showResponse(transport) {
	if (transport.responseText != "") alert(transport.responseText);
}

// ###############################################################################

function jumpTo(page) {
	pageTracker._trackEvent('jumpTo', page); 
	updateContent(page);
}

function updateContent(page) {
	var target = 'content';
	var url = page+'_include.php';
	new Ajax.Request(url, {
		parameters: { page: page, ajaxJump: '1' }, 
		method: 'get', 
		onCreate: function(transport) {
			showWaiting();
		},
		onSuccess: function(transport) {
			$(target).innerHTML = transport.responseText;
			removeWaiting();
			myLytebox.updateLyteboxItems();
		}
	});
}

// ###############################################################################

function manageCart(task, item, amount, reloadpage) {
	var url = 'shop_manageCart.php';
	new Ajax.Request(url, {
		parameters: { task: task, item: item, amount: amount }, 
		method: 'post', 
		onCreate: function(transport) {
			showWaiting();
		},
		onSuccess: function(transport) {
			removeWaiting();
			if (reloadpage) {
				updateContent(reloadpage);
			}
			new Ajax.Updater("warenkorb", "includes/inc.warenkorb.php");
			showResponse(transport);
		}
	});
}

/**
* Handles the Bestellung per AJAX
*/
function sendBestellung() {
	var target = 'targetDiv';
	var url = 'shop_abschicken.php';
	new Ajax.Request(url, {
		method: 'get', 
		onCreate: function(transport) {
			showWaiting();
		},
		onSuccess: function(transport) {
			var json = transport.responseText.evalJSON();
			$(target).innerHTML = json.text;
			new Ajax.Updater("warenkorb", "includes/inc.warenkorb.php");
		},
		onFailure: function(transport) {
			var json = transport.responseText.evalJSON();
			$(target).innerHTML = json.text;
		},
		onComplete: function(transport) {
			removeWaiting();
		}
	});
}

// ###############################################################################

/**
* Handles the Post-Form per AJAX
* @param myform id of the form
* @param target div to display the output
* @param url script to post the form-data
* @param errorClass CSS-class to mark the errors
*/
function sendForm(myform, target, url, errorClass, reloadpage) {
	new Ajax.Request(url, {
		parameters : Form.serialize(myform),
		onCreate: function(transport) {
			showWaiting();
			$(myform).style.display = 'none';
		},
		onException: function(transport, ex) {
			$(target).innerHTML = "Keine AJAX-Anfrage an " + transport.url + " moeglich: " + ex;
		},
		onSuccess: function(transport) {
			if (reloadpage != "") {
				updateContent(reloadpage);
			} else {
				var json = transport.responseText.evalJSON();
				$(target).innerHTML = json.text;
			}
		},
		onFailure: function(transport) {
			var firstElement = null;
			var json = transport.responseText.evalJSON();
			$(target).innerHTML = json.text;
			$(myform).style.display = 'block';
			
			$(myform).getElements().each(function(item) {
				$(item).removeClassName(errorClass);	// entferne die errorClass fuer alle Form-Elemente
			});
			
			json.fields.each(function(item) {	// wandere durch alle fehlerhaften Fields
				if (firstElement == null) firstElement = item;	// bestimme erstes Field
				if (!$(item).hasClassName(errorClass)) $(item).toggleClassName(errorClass);	// gebe dem item die errorClass, falls noch nicht passiert
			});
			$(firstElement).activate();	// setze den Fokus
		},
		onComplete: function(transport) {
			removeWaiting();
		}
	});
}

// ###############################################################################

function displayFlash(page) {
	// Check to see if the version meets the requirements for playback
	if (DetectFlashVer(9, 0, 0)) {
		AC_FL_RunContent(
			'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0',
			'width', '996',
			'height', '355',
			'src', './swf/master',
			'base', './swf',
			'flashvars', 'page=' + page,
			'quality', 'high',
			'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			'align', 'middle',
			'play', 'true',
			'loop', 'true',
			'scale', 'showall',
			'wmode', 'window',
			'devicefont', 'false',
			'id', 'master',
			'bgcolor', '#ffffff',
			'name', 'master',
			'menu', 'false',
			'allowFullScreen', 'false',
			'allowScriptAccess','sameDomain',
			'movie', './swf/master',
			'swLiveConnect', 'true', 
			'salign', ''
			); //end AC code
	} else {
		top.document.location.href="noflash.php";
		/*
		var alternateContent = '<h2>An old version of the Flash plugin was detected. <strong><a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&promoid=BIOW">Please upgrade your Flash plugin.</a></strong></h2>';
		document.write(alternateContent);  // insert non-flash content
		document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="996" height="355" id="master" align="middle">');
		document.write('<param name="allowScriptAccess" value="sameDomain" />');
		document.write('<param name="allowFullScreen" value="false" />');
		document.write('<param name="flashvars" value="page='+page+'" />');
		document.write('<param name="movie" value="swf/master.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />	<embed src="swf/master.swf" quality="high" bgcolor="#ffffff" width="996" height="355" name="streifen" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" flashvars="page='+page+'" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
		document.write('</object>');
		*/
	}
}

function thisMovie(movieName) {
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName]
	}
	else {
		return document[movieName]
	}
}

function golabel(movieName, myLevel, myLabel) {
	thisMovie(movieName).TGotoLabel(myLevel, myLabel);
}


