 /**
 *
 *	HELPER
 *
 **/
 
function check(caller) {
	if( $(caller.id+'_val').value !="1") {
		$(caller.id+'_val').value = "1";
		$(caller.id).addClassName('active');
	} else {
		$(caller.id+'_val').value = "0";
		$(caller.id).removeClassName('active');
	}
}

 // http://www.evocomp.de/beispiele/javascript/trim.html 
String.prototype.ltrim = function (clist) {
  // Wurde eine Zeichenkette mit den zu entfernenden
  // Zeichen übergeben?
  if (clist)
    // In diesem Fall sollen nicht Whitespaces, sondern
    // alle Zeichen aus dieser Liste gelöscht werden,
    // die am Anfang des Strings stehen.
    return this.replace (new RegExp ('^[' + clist + ']+'), '');
  // Führende Whitespaces aus dem String entfernen
  // und das resultierende String zurückgeben.
  return this.replace (/^\s+/, '');
}
String.prototype.rtrim = function (clist) {
  // Zeichenkette mit den zu entfernenden Zeichen angegeben?
  if (clist)
    // Zeichen aus der Liste, die am Ende des String stehen
    // löschen.
    return this.replace (new RegExp ('[' + clist + ']+$'), '');
  // Whitespaces am Ende des Strings ertfernen und dann das Ergebnis
  // dieser Operation zurückgeben.
  return this.replace (/\s+$/, '');
}
String.prototype.trim = function (clist) {
  // Wird der Parameter clist angegeben, so werden statt der Whitespaces
  // die in dieser Variablen angegebenen Zeichen "getrimmt".
  if (clist)
    // Führende und abschließende Zeichen aus der Liste entfernen.
    return this.ltrim (clist).rtrim (clist);
  // Whitespaces vom Anfang und am Ende entfernen
  return this.ltrim ().rtrim ();
};

 /**
 *
 *	ANFRAGEFORM GENERELL
 *
 **/
 
var loadingTimers = new Object();
var boxStates = new Object();

boxStates.userPanel = 1;
boxStates.basketPanel = 1;
boxStates.contactPanel = 1;

var effectRunning = false;

function boxMaximize(panel) {
	if(effectRunning) return false;
	boxStates[panel] = 1;

	$(panel+"Maximize").style.display="none";
	$(panel+"Minimize").style.display="block";

	var effectFinishMessage = function() {
		$(panel+"MessageMaximize").style.display="block";
		$(panel+"MessageMinimize").style.display="none";
		
		effectFinish();
	}
	
	effectRunning = true;
	new Effect.BlindDown(panel+"Body", {afterFinish: effectFinishMessage});
}

function boxMinimize(panel) {
	if(effectRunning) return false;

	boxStates[panel] = 0;

	$(panel+"Maximize").style.display="block";
	$(panel+"Minimize").style.display="none";

	$(panel+"MessageMaximize").style.display="none";
	$(panel+"MessageMinimize").style.display="block";

	effectRunning = true;
	new Effect.BlindUp(panel+"Body", {afterFinish: effectFinish});
}

function boxToggle(panel) {
	if(effectRunning) return false;

	if(boxStates[panel] == 1)
		boxMinimize(panel);
	else
		boxMaximize(panel);
}

function effectFinish(o) {
	effectRunning = false;
}

function showLoading(panel) {
	if(!$(panel+"Loading")) return;
	
	loadingTimers[panel] = window.setTimeout("reallyShowLoading('"+panel+"')",200);
}

function reallyShowLoading(panel) {
	$(panel+"Maximize").style.display="none";
	$(panel+"Minimize").style.display="none";

	$(panel+"Loading").style.display="block";
}

function hideLoading(panel) {
	window.clearTimeout(loadingTimers[panel]);

	$(panel+"Loading").style.display="none";

	if(boxStates[panel] == 0)
		boxMaximize(panel);

	$(panel+"Maximize").style.display="none";
	$(panel+"Minimize").style.display="block";
}

function showMessage(panel, msgkey, success) {
	$(panel+"MessageMaximize").removeClassName("success");
	$(panel+"MessageMinimize").removeClassName("success");

	$(panel+"MessageMaximize").removeClassName("failure");
	$(panel+"MessageMinimize").removeClassName("failure");
	
	//var class = success ? "success" : "failure";
	
	
	
	
	
	
	if(success)
		var cls = "success";
	else 
		var cls = "failure";
	
	
	
	if(strings[msgkey])
		var message = strings[msgkey];
	else
		var message = msgkey;
	
	$(panel+"MessageMaximize").addClassName(cls); 
	$(panel+"MessageMinimize").addClassName(cls);
	
	$(panel+"MessageMinimize").setAttribute("title",message);
	$(panel+"MessageMaximize").setAttribute("title",message);
	 	
	$(panel+"MessageMaximize").innerHTML = message; 	
}

function submitForm() {
	if(!userIdentified) {
		$("commonError").style.visibility = "visible";
		$("commonError").innerHTML = strings.form_common_error_kontakt;
		
		return;
	}

	if(!basketAllQuantified && basketMode == 2) {
		$("commonError").style.visibility = "visible";
		$("commonError").innerHTML = strings.form_common_error_amount;
		
		return;
	}
	
	
	$("angaben").submit();	
}

/**
 *
 *	AJAX UPDATERS
 *
 **/
function updateBasketPanel(pparams, callback) {
	ajaxUpdate("basketPanel","/ajax/anfrageform/basketpanel.php", pparams, callback);
}

function updateUserPanel(params, callback) {
	ajaxUpdate("userPanel","/ajax/anfrageform/userpanel.php", "tab="+userPanelTab+"&"+params, function(req) {
		if(inpFocus) $(inpFocus).focus();
		
		if(callback) callback(req);
	});
}

function updateContactPanel(params, callback) {
	ajaxUpdate("contactPanel","/ajax/anfrageform/contactpanel.php", params, callback);
}

function ajaxUpdate(panel, url, pparams, callback) {
	$("commonError").style.visibility = "hidden";

	showLoading(panel);
	
	new Ajax.Updater(panel,url,{parameters: "lang="+lang+"&"+pparams, asynchronous: true, evalScripts: true, onSuccess: function(req) {
		hideLoading(panel);
		
		if(callback) callback(req);
	}});
}
/**
 *
 *	USERPANEL ACTIONS
 *
 **/
 
var userPanelTab = 0;
var inpFocus = false;

var userIdentified = false;
 
 function userChangeTab(tab) {
 	userPanelTab = tab;
 	updateUserPanel();
 }
 
 function userMypLogin() {
 	var user = $("mypUser").value;
 	var pass = $("mypPass").value;
 	
 	updateUserPanel("action=login&user="+user+"&pass="+pass);
 }
 
  function userMypLogout() {
  	updateUserPanel("action=logout");
 }

 function userKdNr() {
 	var kdNr = $("kundeKundenNr").value;
 	
 	if(kdNr >= 10000 && kdNr < 99999) {
 		var kdTel = $("kundeRueckruf").value;
 		
 		if(kdTel && kdTel.length > 0) {
 			updateUserPanel("action=idKdnr&kdnr="+kdNr+"&kdtel="+kdTel); 		
 		} else {
 			showMessage("userPanel","form_kontaktinfo_kdnr_failure2",false);
 		}
 	} else {
 		showMessage("userPanel","form_kontaktinfo_kdnr_failure1",false); 
 	}
 }


 function userFull() {
	var fields = new Array("upfirma","upvorname","upnachname","upabteilung","upfax","uptel","upstrasse","upplz","uport","upland","upemail");
			
	var fieldsRequired = new Array("upvorname","upnachname","upnachname","upplz","uport","upemail");
	
	var allpresent = true;
	for(var i = 0; i < fieldsRequired.length; i++) {
		allpresent = allpresent && $(fieldsRequired[i]).value.trim().length > 0;
	}
	
	if(allpresent) {
			var data = new Array();
			
			for(var i = 0; i < fields.length; i++) data.push(fields[i]+"="+$(fields[i]).value.trim());
			
			data = data.join("&");
	
 			updateUserPanel("action=idFull&"+data); 			
	} else {
		showMessage("userPanel","form_kontaktinfo_keinkunde_failure");
	}
 }
/**
 *
 *	BASKETPANEL ACTIONS
 *
 **/
 var basketMode = 1;
 var basketAllQuantified = false;
 
 function basketRemove(index) {
 	updateBasketPanel("action=remove&index="+index,null);
 }
 
 function changeItemData(index) {
 	var params = "action=setItemData&index="+index+"&qty="+$("qty"+index).value;
 	
 	if($("altqty"+index)) {
 		params += "&optqty="+$("altqty"+index).value;
 	}
 	
 	if($("shipping"+index)) {
 		params += "&shipping="+$("shipping"+index).value;
 	}
 	
 	updateBasketPanel(params,null); 
 }
 
 function basketSetMode(mode) {
 	updateBasketPanel("action=basketSetMode&mode="+mode,null); 
 }
 
 function basketModeChanged(mode) {
 	basketMode = mode;
 }
 
 function basketSetOrderNumber() {
 	var nr = $("orderNumber").value;
 	updateBasketPanel("action=basketSetInternalOrderNumber&orderNumber="+nr,null); 
 
 }
 
 