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 browseBasketAgain(){
	location.href = "/selection.html";
}


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' );
	}
}



var flashMovie = "";
if( typeof jQuery != "undefined" ){
	$(function(){
		if( flashMovie != "" && typeof swfobject != "undefined" ){ swfobject.registerObject( flashMovie ); }
	});
}

if( typeof jQuery != "undefined" ){
/********* START OF JQUERY EXISTS *********/

var errmsg_archive_name_empty = '';
var errmsg_archive_name_does_not_exist = '';

$(function(){
	$( "#load_archive_name" ).keypress(function(e){ if( Acu.detectEnterKeyPressed(e) ){ loadSelection( null ); return false; } });
	$( "#save_archive_name" ).keypress(function(e){ if( Acu.detectEnterKeyPressed(e) ){ saveSelection( null ); return false; } });
	$( "#search" ).keypress(function(e){ if( Acu.detectEnterKeyPressed(e) && this.value != "" ){ searchSite( this.value ); } });
	$( "input,textarea,select" ).focus( function(e){ $( this ).removeClass( "input_error" ); } );
});

function searchSite( term ){
	var o = document.getElementById( 'sid' );
	if( !o ){ throw "session id not found"; }
	$.ajax({
		type: "POST",
		url: "/ctrl.php",
		dataType: "json",
		data: { c : 'search', s : o.value, search_term : term },
		async: true,
		error: function( request ){
			//alert( request.responseText );
			throw 'error sending search request to server';
		},
		success: function( reply ){
			if( !reply ){ throw "error sending search request to server: reply is empty"; }
			if( reply.error ){
				throw reply.errmsg;
			}else{
				location.href = reply.redirectURL;
			}
		}
	});
}


function mailSelection( btn ){
	if( btn && btn.clicked ){ return; }
	btn.clicked = true;
	btn.style.display = "none";
	var data = { c : 'mail_selection' };
	var f = $( "#mail_form" );
	$( "input,textarea,select", f ).removeClass( "input_error" ).each( function(){ data[this.name] = $( this ).val(); });

	$.ajax({
		type: "POST",
		url: "/ctrl.php",
		dataType: "json",
		data: data,
		async: true,
		error: function( request ){
			btn.clicked = false;
			btn.style.display = "inline";
			//alert( request.responseText );
			throw 'error sending mail selection request to server';
		},
		success: function( reply, xy, request ){
			btn.clicked = false;
			btn.style.display = "inline";
			if( !reply ){ throw "error sending mail selection request to server: reply is empty"; }
			if( reply.error ){
				if( reply.errFields.length > 0 ){
					for( var i=0; i<reply.errFields.length; i++ ){ $( "#" + reply.errFields[i] ).addClass( "input_error" ); }
				}
				alert( reply.errmsg );
			}else{
				location.href = reply.redirectURL;
			}
		}
	});
}

function subscribeToEventWideNewsletter( btn ){
	if( btn && btn.clicked ){ return; }
	btn.clicked = true;
	//btn.style.display = "none";
	var data = { c : 'subscribe' };
	var f = $( "#subscription_form" );
	$( "input,textarea,select", f ).removeClass( "input_error" ).each( function(){
		if( this.type == "checkbox" ){
			if( this.checked ){ data[this.name] = "on";  }
		}else{
			data[this.name] = $( this ).val();
		}
	});

	$.ajax({
		type: "POST",
		url: "/ctrl.php",
		dataType: "json",
		data: data,
		async: true,
		error: function( request ){
			btn.clicked = false;
alert( request.responseText );
			throw 'error sending newsletter subscription request to server';
		},
		success: function( reply, xy, request ){
			btn.clicked = false;
			btn.style.display = "inline";
			if( !reply ){ throw "error sending newsletter subscription request to server: reply is empty"; }
			if( reply.error ){
				if( reply.errFields.length > 0 ){
					for( var i=0; i<reply.errFields.length; i++ ){ $( "#" + reply.errFields[i] ).addClass( "input_error" ); }
				}
				alert( reply.errmsg );
			}else{
				location.href = reply.redirectURL;
			}
		}
	});
}


function saveSelection( btn ){
	var field = document.getElementById( 'save_archive_name' );
	var archive_name = field.value;
	if( archive_name == "" ){ return; }

	var o = document.getElementById( 'sid' );
	if( !o ){ throw "session id not found"; }
	$.ajax({
		type: "POST",
		url: "/ctrl.php",
		dataType: "json",
		data: { c : 'save_selection', a : archive_name },
		async: true,
		error: function( request ){
			//alert( request.responseText );
			throw 'error sending save selection request to server';
		},
		success: function( reply, xy, request ){
			if( reply.error ){
				alert( reply.errmsg );
			}else{
				location.href = reply.redirectURL;
			}
		}
	});
}

function loadSelection( btn ){
	var field = document.getElementById( 'load_archive_name' );
	var archive_name = field.value;
	if( archive_name == "" ){ return; }

	var o = document.getElementById( 'sid' );
	if( !o ){ throw "session id not found"; }
	$.ajax({
		type: "POST",
		url: "/ctrl.php",
		dataType: "json",
		data: { c : 'load_selection', a : archive_name },
		async: true,
		error: function( request ){
			//alert( request.responseText );
			throw 'error sending save selection request to server';
		},
		success: function( reply, xy, request ){
			if( reply.error ){
				alert( reply.errmsg );
			}else{
				location.href = reply.redirectURL;
			}
		}
	});
}


/********* END OF JQUERY EXISTS *********/
}
