var selectableTypes = [ 'l', 'a', 'cp', 'e'];	// Location, Article, Custom Product, Ensemble. Bei Artikeln ist es die af_id!
function selectArticle( id, type, checkbox ){
	// Im Kontext immer auch den FP mitspeichern, sowie die Kategorie (Locations) bzw. Subkategorie (alle anderen).
	var script = 'select.php';

	var s = document.getElementById( 'sid' ).value;
	var params = "s=" + s;
	params += "&i=" + id;
	params += "&k=" + type;
	params += "&c=" + location.search;
	var cmd = checkbox.checked ? 'select' : 'deselect';
	params += "&cmd=" + cmd;

	var request = Acu.getHttpRequest();
	request.open( "POST", script, false );
	request.setRequestHeader( "Content-type","application/x-www-form-urlencoded" );
	request.setRequestHeader( "Connection","close" );
	//request.overrideMimeType('text/html;charset=iso-8859-1')
    request.send( params );

    request.onreadystatechange = function() {
		if( request.readyState == 4 ){
			var xmlDoc = request.responseXML;

			if( !xmlDoc ){
				//alert( request.responseText );
				return;
			}
			var status = xmlDoc.getElementsByTagName('status')[0].firstChild.nodeValue;
			if( !status ){
				//throw "[APEServerEngine] Cannot update item data: no status defined in server response.\n";
				return;
			}

			if( status != 'ok' ){
				// Ja manchmal passt's nicht, was der Benutzer so eingibt.
				var errmsg = xmlDoc.getElementsByTagName('errmsg')[0].firstChild.nodeValue;
				alert( errmsg );
			}
		}
	}
}

function clearSearch( obj, defaultValue ){
	if( obj.value == defaultValue ){
		obj.value = '';
	}
}

function subscribeToEventWideNewsletter(){
	document.getElementById( 'aktion' ).value = 'subscribe';
	document.form.submit();
}

function browseBasketAgain( fp, sid ){
	location.href = 'browse.php?' + sid + 's=basket&fp=' + fp;
}


var minEditIntervalMs = 1000;	// Mindestens eine Sekunde bis zum re-edit.
var penaltyMs = 10000;	// Wie viele Millisekunden muss nach zu raschem Edit gewartet werden?
function editQuantity( field ){
	Acu.removeCssClass( field, 'stkz' );
	Acu.addCssClass( field, 'stkz_edit' );
	var now = Date.UTC();

	if( now < field.freezeUntil ){
		return;
	}

	if( field.lastEdit && (now-field.lastEdit) < minEditIntervalMs ){
		field.lastEdit = now;
		field.freezeUntil = now + penaltyMs;
	}else{
		field.lastEdit = now;
		field.saved = false;
		field.freezeUntil = 0;
	}
}

var quantityEditBackgroundColor = '#fff';
function saveQuantity( id, field ){
	// Wir haben's hier mit der eindeutigen ID der Auswahl zu tun,
	// unabhängig davon, ob sich's um einen Artikel, ein Ensemble usw. handelt.
	var quantity = field.value;
	Acu.removeCssClass( field, 'stkz_edit' );
	Acu.addCssClass( field, 'stkz' );

	if( field.saved ) return;
	if( quantity.match(/^[0-9]*$/) ){
		Acu.removeCssClass( field, 'stkz_error' );
		var script = 'quantity.php';
		var sid = document.getElementById( 'sid' ).value;
		var params = "s=" + sid;
		params += "&i=" + id;
		params += "&q=" + quantity;

		var request = Acu.getHttpRequest();
		request.open( "POST", script, false );
		request.setRequestHeader( "Content-type","application/x-www-form-urlencoded" );
		request.setRequestHeader( "Connection","close" );
		//request.overrideMimeType('text/html;charset=iso-8859-1')
	    request.send( params );
	    field.saved = true;

	    request.onreadystatechange = function() {
			if( request.readyState == 4 ){
				var xmlDoc = request.responseXML;

				if( !xmlDoc ){
					//alert( request.responseText );
					return;
				}
				var status = xmlDoc.getElementsByTagName('status')[0].firstChild.nodeValue;
				if( !status ){
					//throw "[APEServerEngine] Cannot update item data: no status defined in server response.\n";
					return;
				}

				if( status != 'ok' ){
					// Ja manchmal passt's nicht, was der Benutzer so eingibt.
					var errmsg = xmlDoc.getElementsByTagName('errmsg')[0].firstChild.nodeValue;
					alert( errmsg );
				}
			}
		}
	}else{
		Acu.addCssClass( field, 'stkz_error' );
	}
}

function saveSelection( sid_start, msg_archive_name_empty, msg_archive_name_exists ){
	var field = document.getElementById( 'archive_name' );
	var archive_name = field.value;
	if( archive_name == "" ){
		Acu.addCssClass( field, 'input_error' );
		alert( msg_archive_name_empty );
		return;
	}

	var sid = document.getElementById( 'sid' ).value;

	var script = 'save_archive.php';
	var sid = document.getElementById( 'sid' ).value;
	var params = "s=" + sid;
	params += "&a=" + archive_name;

	var request = Acu.getHttpRequest();
	request.open( "POST", script, true );
	request.setRequestHeader( "Content-type","application/x-www-form-urlencoded" );
	request.setRequestHeader( "Connection","close" );
	//request.overrideMimeType('text/html;charset=iso-8859-1')
    request.send( params );
    field.saved = true;

    request.onreadystatechange = function() {
		if( request.readyState == 4 ){
			var xmlDoc = request.responseXML;

			if( !xmlDoc ){
				//alert( request.responseText );
				return;
			}
			var status = xmlDoc.getElementsByTagName('status')[0].firstChild.nodeValue;
			if( !status ){
				//throw "[APEServerEngine] Cannot update item data: no status defined in server response.\n";
				return;
			}

			if( status == 'ok' ){
				location.href = 'browse.php?' + sid_start + 'a=' + archive_name + '&s=save_basket_success';
			}else{
				Acu.addCssClass( field, 'input_error' );
				// Ja manchmal passt's nicht, was der Benutzer so eingibt.
				var errmsg = xmlDoc.getElementsByTagName('errmsg')[0].firstChild.nodeValue;
				if( errmsg == 'empty' ){
					alert( msg_archive_name_empty );
				}else if( errmsg == 'exists' ){
					alert( msg_archive_name_exists );
				}else{
					alert( errmsg );
				}
			}
		}
	}
}



function loadArchive( sid_start, msg_archive_name_empty, msg_archive_name_does_not_exist ){
	var field = document.getElementById( 'archive_name' );
	var archive_name = field.value;
	if( archive_name == "" ){
		Acu.addCssClass( field, 'input_error' );
		alert( msg_archive_name_empty );
		return;
	}

	var sid = document.getElementById( 'sid' ).value;

	var script = 'load_archive.php';
	var sid = document.getElementById( 'sid' ).value;
	var params = "s=" + sid;
	params += "&a=" + archive_name;

	var request = Acu.getHttpRequest();
	request.open( "POST", script, true );
	request.setRequestHeader( "Content-type","application/x-www-form-urlencoded" );
	request.setRequestHeader( "Connection","close" );
	//request.overrideMimeType('text/html;charset=iso-8859-1')
    request.send( params );
    field.saved = true;

    request.onreadystatechange = function() {
		if( request.readyState == 4 ){
			var xmlDoc = request.responseXML;

			if( !xmlDoc ){
				//alert( request.responseText );
				return;
			}
			var status = xmlDoc.getElementsByTagName('status')[0].firstChild.nodeValue;
			if( !status ){
				//throw "[APEServerEngine] Cannot update item data: no status defined in server response.\n";
				return;
			}

			if( status == 'ok' ){
				//location.href = 'browse.php?' + sid_start + 'a=' + archive_name + '&s=archive_load_success';
				location.href = 'browse.php?' + sid_start + '&s=basket';
			}else{
				Acu.addCssClass( field, 'input_error' );
				// Ja manchmal passt's nicht, was der Benutzer so eingibt.
				var errmsg = xmlDoc.getElementsByTagName('errmsg')[0].firstChild.nodeValue;
				if( errmsg == 'empty' ){
					alert( msg_archive_name_empty );
				}else if( errmsg == 'does_not_exist' ){
					alert( msg_archive_name_does_not_exist );
				}else{
					alert( errmsg );
				}
			}
		}
	}
}


