var $j = jQuery.noConflict();

var $mode;				// Formularmodus: "book", "interest"
var $userid;			// Trainis UserID
var $state;				// aktueller Status des Formulars
var $payment;			// Zahlungsart: "private", "company" 
var $longtime;			// Langläufer?
var $installmentid;		// gewähltes Zahlungsmodell (bei Privatahler-Langläufer)
var $newuser;			// neuer Benutzer?
var $recid;				// ID Buchungssatz (RPSTempUser)

var $btnid;	// Hilfsvariable für Ajax-Events, Button ID des zu (de-)aktivierenden Buttons
//***********************************************************************************************************************
//*** allgemeine Funktionen
//***********************************************************************************************************************
/*
 * prüfen, ob Variable einen Wert hat 
 * MA 12.08.2010
 */
function IsEmpty(val) 
{
	if (typeof(val) == "undefined") return true;
	if ((val==null) || (val==0) || (val.length==0)) return true;
	return false;
}

/*
 * prüfen, ob Variable ein Integer-Wert ist 
 * MA 10.08.2010
 */
function IsInt(n) {	return (!isNaN(n)) && (Math.floor(n)==n); }

/*
 * prüfen, ob Variable ein Array ist
 * MA 12.008.2010
 */
function is_array(input){ return typeof(input)=='object' && (input instanceof Array); }

/*
 * Alle Fehler-Anzeigen löschen
 */
function ClearErrors()
{
	//console.log($j("#prvtrainis div.error"));
	$j("#prvtrainis div.error").hide();
	//$j("div.error").hide();
	$j("#prvtrainis input").each( function(index) { $j(this).removeClass("error"); } );
	$j("#prvtrainis select").each( function(index) { $j(this).removeClass("error"); } );
}

/*
 * MA 12.08.2010
 */
function ShowError (msg, ctrl)
{
	var e = $j("#prvtrainis div.error");
	e.text(msg);
	e.show();
	
	//if (typeof(ctrl) !== 'undefined' && ctrl.length>0)
	if (!IsEmpty(ctrl))
	{
		if (is_array(ctrl))
		{
			// TODO ctrl.each()
		}
		else
			ctrl.addClass("error");
	}
}

/*
 * E-Mail-Adresse auf Gültigkeit prüfen
 * MA 02.07.2010
 */
function CheckEMail(email)
{
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   return reg.test(email);
}

//***********************************************************************************************************************
//*** Ajax-Funktionen
//***********************************************************************************************************************
function InitAjax()
{
	$j.ajaxSetup({
		async: false,
		type: "post",
		beforeSend: ajaxBeforeSend,
		complete: ajaxComplete, 		
		error: ajaxError
	}); //close $.ajaxSetup(
}

/*
* Lade-Hinweis anzeigen, ggf. Button deaktivieren
* MA 12.08.2010
*/
function ajaxBeforeSend(request, obj)
{
	$j("#loading").show(); 
	if (!IsEmpty(obj.btnid))
	{
		$btnid = obj.btnid;
		$j("#"+obj.btnid).attr('disabled','disabled');
	}
}

/*
* Lade-Hinweis ausblenden, ggf. Button wieder aktivieren
* MA 12.08.2010
*/
function ajaxComplete(XMLHttpRequest, ajaxOptions)
{
	//console.log(XMLHttpRequest, ajaxOptions,a);
	$j("#loading").hide(); 
	if (!IsEmpty($btnid)) $j("#"+$btnid).removeAttr('disabled'); 	
}

/*
* Allgemeiner Fehler-Handler
* MA 12.08.2010 TODO ?
*/
function ajaxError(XMLHttpRequest, textStatus, errorThrown) 
{
	//console.log("error",XMLHttpRequest, textStatus, errorThrown);
	ShowError(XMLHttpRequest.responseText);
}

//***********************************************************************************************************************
//*** Formular-Funktionen
//***********************************************************************************************************************

//***********************************************************************************************************************
//*** Seminarkatalog - Tab Navigation
//***********************************************************************************************************************
/**
 * Tabs für Seminarunterkataloge initialisieren
 * MA 29.04.2011
 */
function InitTabsCatalog(id, showid)
{
		// Tabs erstellen
	$j( "#"+id ).tabs();
		// gewählten Tab aktivieren
	$j( "#"+id ).tabs('select','cat'+showid);
}

/**
 * Tabs und Accordion für Gesamtkatalogbaum initialisieren
 * MA 29.04.2011
 */
function InitTabsCatalogmenu(expall)
{
	$j("ul.prv-accordion").accordion();

		// Tabs erstellen
	$j( "#catalogmenu" ).tabs();
		// auf Wunsch Unterpunkte ausklappen
	if (expall) 
		$j("ul.prv-accordion ul").show();
	else
		$j("ul.prv-accordion ul").hide();

	$j("ul.prv-accordion li a").click(function() {
			// Switches visibility of the list
		$j(this).next("ul").toggle("blind");

			// Sets the background of links if you are in the very last list
		if($j(this).next("ul").length > 0) {
			$j("ul.prv-accordion li a").css("background","#FFF");
			$j(this).css("background","#f3f7fb");
		}

		if($j(this).attr("href") == "#") {
			return false;
		}
	});

		// Remove border of last li element
	$j("ul.prv-accordion li ul").each(function() {
		$j(this).find("li:last a").css("border","0 none");
	});
}

//***********************************************************************************************************************
//*** Seminardetails 
//***********************************************************************************************************************
function HideInfos() { $j("div.laiinfo").hide(); $j("label[for^=LAI]").removeClass('selected'); }

function ShowInfo(id, unselect) 
{ 
	//console.log(unselect);
	unselect = unselect || false;
	//console.log(unselect);
	HideInfos(); 
	$j("#info"+id).show();
	$j("#laiid").val(id);
	// Datum für Titelanzeige bei Buchung
	var sdate = $j("#startdate_"+id).val();
	var edate = $j("#enddate_"+id).val();
	if (!IsEmpty(sdate)) date = ' ('+sdate;
	if (!IsEmpty(edate) && !IsEmpty(date)) date += '-'+edate;
	if (!IsEmpty(date)) date += ')';
	$j("#titledate").html(date);
	// MA 05.11.2010 für Nachhaltigkeit 
	if (unselect)
	{
		// Markierung des Radiobuttons entfernen, Veranstaltungsid löschen
		$j("#LAI_"+id).attr("checked","");
		$j("#laiid").val(-1);
	}
	else
	{
		// Label hervorheben
		$j("label[for=LAI_"+id+"]").addClass('selected');
	}
}

//***********************************************************************************************************************
//*** Login-Seite
//***********************************************************************************************************************
/*
 * Seminardetails ausblenden (linke Spalte)
 */
function HideDetails() 
{
	// Eingabeelemente rechts deaktivieren
	$j("form.fbooking input").attr('disabled','disabled');
	$j("#bBooking").attr('disabled','disabled');
	// Details ausblenden
	$j("#prvtrainis_details").hide();
}

/*
 * MA 05.11.2010 prüfen, ob mindestens ein Seminar(termin) oder ein Zusatzmodul gewählt wurde
 */
function CheckBookingSelection()
{
	//console.log($j('input[name="rlaiid"]'));
	//console.log($j('input[name="rlaiid"]:checked'));
	//console.log($j('input[name="rlaiid"]:checked').length);
	//console.log($j('input[name="rlaiid"]:checked').count);
	//console.log($j('input[name^="chksus"]:checked'));
	// Anzahl gewählter Veranstaltungstermine (0 oder 1)
	var instanceCount = $j('input[name="rlaiid"]:checked').length;
	// Anzahl gewählter Zusatzmodule (0-x)
	var optionsCount = $j('input[name^="chksus"]:checked').length;
	//return false;
	return (instanceCount + optionsCount) > 0;
}
/*
 * Login für Seminarbuchung anzeigen
 */
function ShowLoginBooking() 
{
	ClearErrors();
	if (!CheckBookingSelection()) {
		ShowError ('Sie müssen mindestens eine Veranstaltung oder ein Zusatzmodul auswählen!');
		return false;
	}
	HideDetails();
	$j("#hbooking").show();
	$j("#hinterest").hide();
	$j("#flogin").show();
	$mode = "book";
}

/*
 * Login für Seminar-Interesse (Kontaktformular) anzeigen
 */
function ShowLoginInterest() 
{
	HideDetails();
	$j("#hbooking").hide();
	$j("#hinterest").show();
	$j("#flogin").show();
	$mode = "interest";
}

/*
 * Checkbox "vorhandener Benutzer" anwählen
 */
function SetExistingCustomer() { $j("#cust_exist").attr('checked', 'true'); }

/*
 * Ajax-Request, Logindaten prüfen
 * MA 09.08.2010
 */
function CheckLoginDB(email, password, domain, type) {

	var data = {
			type: type,
			domain: domain,
			email: email,
			password: password
	};
	
	InitAjax();	
	$j.ajax({
		url: "typo3conf/ext/prvtrainis2/res/php/checklogin.php",
		data: data,
		btnid : "button",
		error: function(XMLHttpRequest, textStatus, errorThrown) 
		{
			msg = XMLHttpRequest.responseText;
			//msg = "Fehler bei der Benutzerdatenprüfung!";
		},
		success: function(data, textStatus, XMLHttpRequest)
		{
			msg = data;
		}
	}); //close $.ajax(
	
	return msg;
}

/*
 * Ajax-Request, Logindaten prüfen
 * MA 06.12.2010
 */
function CheckPassDB(userid, password) {

	var data = { userid: userid, password: password	};
	
	InitAjax();	
	$j.ajax({
		url: "typo3conf/ext/prvtrainis2/res/php/checkpass.php",
		data: data,
		async: false,
		// btnid : "button",
		error: function(XMLHttpRequest, textStatus, errorThrown) 
		{
			msg = XMLHttpRequest.responseText;
			//msg = "Fehler bei der Benutzerdatenprüfung!";
		},
		success: function(data, textStatus, XMLHttpRequest)
		{
			msg = data;
		}
	}); //close $.ajax(
	
	return (msg == "OK");
	//console.log("M2"+msg);
	
	//return msg;
}

/*
 * Login-Daten prüfen
 * MA 09.08.2010
 */
function CheckLogin() {
	ClearErrors();
	var error = false;
	var msg = "";
	
	var email = $j("#prvtrainis #loginemail");
	var password = $j("#prvtrainis #loginpassword");
	var domain = $j("#prvtrainis #domid");
	
	// E-Mail prüfen
	if (!CheckEMail(email.val()))
	{ 
		ShowError("Die E-Mail-Adresse ist nicht gültig!", email);
		error = true;
	}
	
	if (!error)
	{
		// bereits Kunde?
		if ($j("#cust_exist").attr('checked'))
		{
			$newuser = false;
			if (IsEmpty(password.val())) 
			{ 
				ShowError("Bitte geben Sie Ihr Kennwort ein!", password);
				error = true; 
			}
			else
			{
				// Login prüfen
				msg = CheckLoginDB(email.val(), password.val(), domain.val(), 'existing');
				if (!IsEmpty(msg) && !IsInt(msg))
				{	
					ShowError(msg, password);
					error = true; 
				}
				else
					$userid = msg;
			}
		}
		else
		{
			// neuer Kunde
			$newuser = true;
			msg = CheckLoginDB(email.val(), '', domain.val(), 'new');
			if (!IsEmpty(msg) && !IsInt(msg))
			{	
				ShowError(msg, email);
				error = true; 
			}
			else
				$userid = -1;		
		}
	}

	if (!error)
	{
		// alles OK, weiter
		switch ($mode)
		{
			case "book":
				ShowBooking($userid);
				break;
			case "interest":
				ShowInterest($userid);
				break;
		}
	}

	return !error;
}

/*
 * Login für internen Bereich prüfen
 * MA 24.08.2010
 */
function CheckLoginInt() {
	ClearErrors();
	var error = false;
	var msg = "";
	
	var email = $j("#flogin #loginemail");
	var password = $j("#flogin #loginpassword");
	var domain = $j("#flogin #domid"); 
	
	//console.log(email,password,domain);
	// E-Mail prüfen
	if (!CheckEMail(email.val()))
	{ 
		ShowError("Die E-Mail-Adresse ist nicht gültig!", email);
		error = true;
	}
	
	if (!error)
	{
		if (IsEmpty(password.val())) 
		{ 
			ShowError("Bitte geben Sie Ihr Kennwort ein!", password);
			error = true; 
		}
		else
		{
			// Login prüfen
			msg = CheckLoginDB(email.val(), password.val(), domain.val(), 'existing');
			if (!IsEmpty(msg) && !IsInt(msg))
			{	
				ShowError(msg, password);
				error = true; 
			}
			else
				$userid = msg;
		}
	}

	if (!error)
	{
		// alles OK, weiter
		// TODO
		$j('#floginint').submit();
	}

	return !error;
}

//***********************************************************************************************************************
//*** Password Recovery
//***********************************************************************************************************************
/*
 * MA 12.08.2010 
 */
function RecoverPassword()
{
	$j("#flogin").hide(); 
	$j("#frecover").show(); 
}

/*
 * MA 12.08.2010 
 */
function SubmitRecover()
{
	ClearErrors();
	
	// Formulardaten einlesen
	var data = { action: "sendmail" };
	data['email'] = $j("#emailrec").val();
	data['subject'] = $j("#rec_mail_subject").val();
	data['link'] = $j("#rec_link").val();
	data['domain'] = $j("#prvtrainis #domid").val();
	
	// E-Mail prüfen
	if (!CheckEMail(data['email']))
	{ 
		ShowError("Die E-Mail-Adresse ist nicht gültig!", $j("#emailrec"));
	}
	else
	{
		InitAjax();
		$j.ajax({
			url: "typo3conf/ext/prvtrainis2/res/php/recoverpassword.php",
			data: data,
			btnid: "button",
			success: function(data, textStatus, XMLHttpRequest)
			{
				$j("#frecover").hide();
				$j("#frecoverconfirm").show();
				// TODO? Buchen-Schalter aktivieren				
			}
		}); //close $.ajax(
	}
}

/*
 * MA 12.08.2010
 */
function ChangePassword ()
{
	ClearErrors();

	// Passwort prüfen
	var p1 = $j("#new_pw");
	var p2 = $j("#new_pw_confirm");

	if (p1.length>0 && p2.length>0)
	{
		if (IsEmpty(p1.val()) || IsEmpty(p2.val()))
		{
			// TODO ?ShowError("Bitte füllen Sie beide Felder aus.", { 1:p1,2:p2} );
			ShowError("Bitte füllen Sie beide Felder aus.");
		}
		else if (p1.val() != p2.val())
		{
			ShowError("Die Passwörter stimmen nicht überein.");
		}
		else if (p1.val().length < 6)
		{
			ShowError("Das Passwort muss mindestens sechsstellig sein.");
		}
		else
		{
			// alles OK
			var data = { action: "changepw", password: p1.val(), token: $j("#token").val() };
			InitAjax();
			$j.ajax({
				url: "typo3conf/ext/prvtrainis2/res/php/recoverpassword.php",
				data: data,
				btnid: "bsubmitpw",
				success: function(data, textStatus, XMLHttpRequest)
				{
					$j("#fchangepw").hide();
					$j("#fconfirmpw").show();
				}
			}); //close $.ajax(	
		}
	}
	
}

//***********************************************************************************************************************
//*** Buchung / Interesse
//***********************************************************************************************************************
/*
 * Auswahl Zahlungsart
 */
function SetPayment(val)
{
	ClearErrors();
	$payment = val;
	switch(val)
	{
		case"private":
			$j("#fapproval").hide();
			$j("#fuser").show();
			$j("#fusercompany").hide();
			$j("#fuserprivate").show();
			$j("#fsubmit").hide();
			$j("#fnext").show();		
		break;
		case"company":
			// MA 20.06.2011 $j("#fapproval").show();
			$j("#fapproval").hide();
			$j("#fuser").show();
			$j("#fusercompany").show();
			$j("#fuserprivate").hide();
			$j("#fsubmit").hide();
			$j("#fnext").show();
		break;
	}
	$state = "fuser";
}

/*
 * Buchungsformular anzeigen
 */
function ShowBooking(userid)
{
	$longtime = $j("#lt").val() == 'Y';
	if (userid > 0)
	{
		// Formular füllen
		FillFormValues(userid);
		// Loginform ausblenden
		$j("#flogin").hide();
		// Buchungsformular anzeigen
		$j("div #fbooking").show();
		// MA 28.04.2011 Name und Vorname vor Änderung schützen...
		var fname = $j('input[name="firstname"]');
		var lname = $j('input[name="lastname"]');
		var msg = "Hinweis|Ihr Name wurde zu Ihrer persönlichen Identifikation gespeichert und kann an dieser Stelle nicht geändert werden.|Falls Sie eine Korrektur wünschen, wenden Sie sich bitte an unsere Seminarorganisation,|Tel.: +49 (69) 305-81824";
		DisableField(fname, msg);
		DisableField(lname, msg);
	}
	else
	{
		// neuer Benutzer, Standardformular		
		// Loginform ausblenden
		$j("#flogin").hide();
		// Buchungsformular anzeigen
		$j("div #fbooking").show();
		
	}
}

/*
 * Interesse-Formular anzeigen
 * MA 11.08.2010
 */
function ShowInterest(userid)
{
	// vorhandener Benutzer?
	if (userid > 0)
	{
		$j("#fnewuser").hide();	
		FillFormValues(userid);
		// Loginform ausblenden
		$j("#flogin").hide();
		// Buchungsformular anzeigen
		$j("div #fcontact").show();
	}
	else
	{
		// neuer Benutzer, komplettes Formular		
		$j("#fnewuser").show();		
		// Loginform ausblenden
		$j("#flogin").hide();
		// Buchungsformular anzeigen
		$j("div #fcontact").show();
	}
}

/*
 * Formularfelder mit Werten aus der Datenbank füllen
 */
function FillFormValues(userid)
{
	var data = { userid: userid };

	switch ($mode)
	{
		case "book":
			InitAjax();
			$j.ajax({
				url: "typo3conf/ext/prvtrainis2/res/php/getuserdata.php",
				data: data,
				dataType: "json",
				btnid: "button",
				/*error: function(XMLHttpRequest, textStatus, errorThrown) 
				{
					// TODO ?
				},*/
				success: function(data, textStatus, XMLHttpRequest)
				{
					for (var idx in data) 
					{
						var tb = $j("#"+idx);
						if (tb.length>0) tb.val(data[idx]);
					}
					// Zahlungsart
					if (data['privateflag'] == 1)
					{
						$j("#private").attr('checked','checked');
						SetPayment('private');
					}
					else
					{
						$j("#company").attr('checked','checked');
						SetPayment('company');
					}
				}
			}); //close $.ajax(
			break;
		case "interest":
			InitAjax();
			$j.ajax({
				url: "typo3conf/ext/prvtrainis2/res/php/getuserdata.php",
				data: data,
				dataType: "json",
				btnid: "button",
				error: function(XMLHttpRequest, textStatus, errorThrown) 
				{
					// Daten konnten nicht geladen werden, Eingabefelder einblenden
					$j("#fnewuser").show();
				},
				success: function(data, textStatus, XMLHttpRequest)
				{
					for (var idx in data) 
					{
						var tb = $j("#c_"+idx);
						if (tb.length>0) tb.val(data[idx]);
					}
				}
			}); //close $.ajax(
			break;
		case "profile":
			// MA 03.12.2010
			//alert(userid);
			InitAjax();
			$j.ajax({
				url: "typo3conf/ext/prvtrainis2/res/php/getuserdata.php",
				data: data,
				dataType: "json",
				//btnid: "button",
				error: function(XMLHttpRequest, textStatus, errorThrown) 
				{
					// Daten konnten nicht geladen werden TODO
					//$j("#fnewuser").show();
				},
				success: function(data, textStatus, XMLHttpRequest)
				{
					//console.log(data);
					for (var idx in data) 
					{
						var tb = $j("#"+idx+":input");
						if (tb.length>0) tb.val(data[idx]);
					}
					// Zahlungsart
					if (data['privateflag'] == 1)
						$j("#pprivate").attr('checked','checked');
					else
						$j("#pcompany").attr('checked','checked');
					// Anrede
					if (data['salutation'] == 'Herr')
						$j("#smale").attr('checked','checked');
					else
						$j("#sfemale").attr('checked','checked');
					// Titel
					var tb = $j("#ptitle");
					if (tb.length>0) tb.val(data['title']);

				}
			}); //close $.ajax(
			break;
	}
}

/*
 * nächste Formularseite anzeigen
 */
function ShowNext()
{
	// Formularfelder prüfen
	if (CheckInput())
	{
		switch ($payment)
		{
			case"private":
				switch($state)
				{
					case "fuser": 
						$j("#fpayment").hide();
						$j("#fuser").hide();
						if ($longtime)
						{
							$state = "finstallment";
							$j("#finstallment").show();
							$j("#finstallmentlink").show();
						}
						else
						{
							$state = "foverview"; 
							ShowOverview();					
						}
					break;
					case "fuseredit": 
						$j("#fuser").hide();
						$state = "foverview"; 
						ShowOverview();					
					break;
					case "finstallment": 
						$j("#finstallment").hide();
						$state = "foverview";
						ShowOverview();
					break;
					case "fconfirmation":
						UpdateAccount();
					break;				
				}
			break;
			case"company":
				switch($state)
				{
					case "fuser": 
						$j("#fpayment").hide();
						$j("#fuser").hide();
						$state = "faccount"; 
						$j("#faccount").show();
					break;
					case "fuseredit": 
						$j("#fuser").hide();
						$state = "foverview"; 
						ShowOverview();
					break;
					case "faccount": 
						$j("#faccount").hide();
						$state = "foverview";
						ShowOverview();
					break;
					case "fconfirmation":
						UpdateAccount();
					break;
				}
			break;
		}
	}
}

/*
 * Buchungs-Formular absenden
 */
function SubmitForm()
{
	ClearErrors();
	
	if (!$j("#agb").attr('checked'))
	{
		ShowError("Bitte lesen und bestätigen Sie die AGB.", $j("label[for=agb]"));
		return false;
	}

	// Formulardaten einlesen
	var data = {};
	$j("#prvtrainis input").each(function(index) { data[$j(this).attr('name')] = $j(this).val(); });
	$j("#prvtrainis select").each(function(index) { data[$j(this).attr('name')] = $j(this).val(); });
	// MA 05.11.2010
	data['sus']='';
	$j('input[name^="chksus"]:checked').each(function() {
		//console.log($j(this).attr('name'));
		//console.log($j(this).val());
		data['sus'] = data['sus'] + $j(this).val() + ',';
		});
	
	data['userid'] = $userid;
	data['payment'] = $payment;
	data['installmentid'] = $installmentid;	
	if ($j("#whitelist").attr('checked'))
		data['whitelist'] = '1';
	else
		data['whitelist'] = '0';
	
	InitAjax();
	$j.ajax({
		url: "typo3conf/ext/prvtrainis2/res/php/submit.php",
		data: data,
		btnid: "bsubmit",
		error: function(XMLHttpRequest, textStatus, errorThrown) 
		{
			ShowError("Fehler beim Versenden der Daten. Bitte versuchen Sie es später noch einmal.");
		},
		success: function(data, textStatus, XMLHttpRequest)
		{
			if (!IsEmpty(data) && IsInt(data)) $recid = data;		
			ShowConfirmation();
			// MA 23.08.2010
			GoogleAd();
		}
	}); //close $.ajax(
}

/*
 * Interesse-Formular absenden
 * MA 11.08.2010
 */
function SubmitContact()
{
	if (CheckInputContact())
	{
		// Formulardaten einlesen
		var data = {};
		$j("#prvtrainis input").each(function(index) { data[$j(this).attr('name')] = $j(this).val(); });
		$j("#prvtrainis textarea").each(function(index) { data[$j(this).attr('name')] = $j(this).val(); });
		// MA 08.11.2010
		data['sus']='';
		$j('input[name^="chksus"]:checked').each(function() { data['sus'] = data['sus'] + $j(this).val() + ',';	});

		data['userid'] = $userid;
		data['c_coursetitle'] = $j("h2.seminartitle").html();
	
		InitAjax();
		$j.ajax({
			url: "typo3conf/ext/prvtrainis2/res/php/submitcontact.php",
			data: data,
			btnid: "bsubmit",
			success: function(data, textStatus, XMLHttpRequest)
			{
				$j("#fcontact").hide();
				$j("#fcontactconfirm").show();
				
				// MA 23.08.2010
				GoogleAd();
			}
		}); //close $.ajax(
	}
}

//***********************************************************************************************************************
//*** Benutzerprofil
//***********************************************************************************************************************
/* 
 * MA 03.12.2010
 */
function ShowProfile(userid)
{
	if (userid > 0)
	{
		$mode = "profile";
		$userid = userid;
		//  Formular füllen
		FillFormValues(userid);
	}
}

/*
 * Benutzerprofil
 * MA 03.12.2010
 */
function SubmitProfile()
{
	if (CheckInputProfile())
	{
		
		// Formulardaten einlesen
		var data = {};
		$j("#prvtrainis input").each(function(index) { data[$j(this).attr('name')] = $j(this).val(); });
		$j("#prvtrainis select").each(function(index) { data[$j(this).attr('name')] = $j(this).val(); });
		data['userid'] = $userid;
		data['salutation'] = $j('input[name="salutation"]:checked').val();
		data['payment'] = $j('input[name="payment"]:checked').val();
		
		InitAjax();
		$j.ajax({
			url: "typo3conf/ext/prvtrainis2/res/php/submitprofile.php", // TODO
			data: data,
			btnid: "bsubmit",
			error: function(XMLHttpRequest, textStatus, errorThrown) 
			{
				ShowError("Fehler beim Versenden der Daten. Bitte versuchen Sie es später noch einmal.");
			},
			success: function(data, textStatus, XMLHttpRequest)
			{
				// TODO if (!IsEmpty(data) && IsInt(data)) $recid = data;		
				// TODO ShowConfirmation();
				ShowError("Die Änderungen wurden gespeichert!");
			}
		}); //close $.ajax(
	}
}

/*
 * MA 03.12.2010 Pflichtfeldprüfung Profil
 */
function CheckInputProfile()
{	
	ClearErrors();
	var error = false;
	var msg = "";
	
	// Pflichtfelder prüfen
	$j("#fperson label.oblig:visible").each(
			function(index) {
				var el = $j(this).attr("for");
				if (el.length > 0)
				{
					var tb = $j("#"+el);
					if (IsEmpty(tb.val())) { tb.addClass("error"); error = true; }
				}
			  }
			);
	if (error) msg = "Bitte alle Pflichtfelder ausfüllen!"; 
	
	// Kennworteingabe prüfen
	if (!error)
	{
		var p1 = $j("#new_password_1:visible");
		var p2 = $j("#new_password_2:visible");
		var p3 = $j("#current_password:visible");
		if (p1.length>0 && p2.length>0)
		{
			if (p1.val() != p2.val())
			{
				error = true;
				p1.addClass("error");
				p2.addClass("error");
				msg = "Die Kennwörter stimmen nicht überein!";
			}
			else if (p1.val().length > 0)
				{
					// Kennwort prüfen...
					if (!CheckPassDB($userid, p3.val()))
						{
							error = true;
							p3.addClass("error");
							msg = "Das Kennwort ist falsch!";						
						}
				}
		}
	}
	
	// Fehler anzeigen
	if (error) ShowError(msg);
	
	return !error;

	
}
/*
 * Buchungsdetail-Übersicht ausblenden
 */
function HideOverview()
{
	$j("#fnext").show();		
	$j("#fsubmit").hide();
	$j("#fconfirml").hide(); 
	$j("#fconfirmr").hide(); 	
}

/*
 * Buchungsdetail-Übersicht anzeigen
 */
function ShowOverview()
{
	$j("#fnext").hide();		
	$j("#fsubmit").show();

	// User-Info
	var userinfo = $j("#salutation").val()+' '+$j("#title").val()+' '+$j("#firstname").val()+' '+$j("#lastname").val()+'<br/>';

	switch ($payment)
	{
		case"private":
			$j("#fpaymentinfocompany").hide();
			$j("#fpaymentinfoprivate").show();
			$j("#finstallmentinfo").show();				
			$j("#faccountinfo").hide();
			// Zahlungsmodell
			if ($longtime)
			{
				$installmentid = $j("input[name=installmentid]:checked").val();
				$j("#finstallmentinfotext").html($j("#linst"+$installmentid).html());				
			}
			// Userinfo
			userinfo += $j("#homeaddress1").val()+'<br/>';
			userinfo += $j("#homepostalcode").val()+' '+ $j("#homecity").val()+'<br/><br/><br/>';	
			userinfo += $j("#homephone").val()+'<br/>';
		break;
		case"company":
			$j("#fpaymentinfocompany").show();
			$j("#fpaymentinfoprivate").hide();
			$j("#finstallmentinfo").hide();			
			$j("#faccountinfo").show();
			// Accountinfo
			var text = $j("#accountname").val()+'<br/>';
			text += $j("#accountdepartment").val()+'<br/>';
			text += 'Gebäude ' + $j("#accountbuilding").val()+'<br/>';
			text += 'Kostenstelle ' + $j("#costcode").val()+'<br/>';
			text += $j("#accountaddress1").val()+'<br/>';
			text += $j("#accountpostalcode").val()+' '+ $j("#accountcity").val();		
			$j("#faccountinfotext").html(text);
			// Userinfo
			userinfo += $j("#companyname").val()+'<br/>';
			userinfo += $j("#department").val()+'<br/>';
			userinfo += $j("#jobcategory").val()+'<br/>';
			userinfo += 'Gebäude ' + $j("#building").val()+'<br/>';
			userinfo += $j("#companyaddress1").val()+'<br/>';
			userinfo += $j("#companypostalcode").val()+' '+ $j("#companycity").val()+'<br/><br/>';	
			userinfo += $j("#companyphone").val()+'<br/>';
		break;		
	}

	$j("#fuserinfotext").html(userinfo);
	
	$j("#fconfirml").show(); 
	$j("#fconfirmr").show(); 	
}

/*
 * Buchungsbestätigung anzeigen
 */
function ShowConfirmation()
{
	ClearErrors();
	HideOverview();
	$j("#fbookingconfirm").show();	
	$state = "fconfirmation";
	// Neuer Benutzer? - Kennwort vergeben
	if ($newuser)
		$j("#fpassword").show();
	else
		$j("#fpassword").hide();
	$j("#fattentiveto").show();	
}

/*
 * Buchungsdatensatz aktualisieren
 */
function UpdateAccount()
{
	data = { recid: $recid };
	var p1 = $j("#password1:visible");
	if (p1.length>0) data['password'] = p1.val();
	data['attentiveto'] = $j("#attentiveto").val();

	InitAjax(); // MA 28.09.2010
	$j.ajax({
		url: "typo3conf/ext/prvtrainis2/res/php/updatedata.php",
		data: data,
		btnid: "bsubmit",
		error: function(XMLHttpRequest, textStatus, errorThrown) 
		{
			// TODO?
		},
		success: function(data, textStatus, XMLHttpRequest)
		{
			$j("#fnext").hide();
			$j("#fpassword").hide();
			$j("#fattentiveto").hide();
		}
	}); //close $.ajax(
}

/*
 * Einzelne Daten bearbeiten (von Buchungsdetailübersichtsseite aus)
 */
function EditData(cat)
{
	HideOverview();
	switch(cat)
	{
		case "payment":
			$j("#fpayment").show();
			SetPayment($payment);
			break;
		case "installment":
			$state = "finstallment";
			$j("#finstallment").show();
			break;
		case "account":
			$state = "faccount"; 
			$j("#faccount").show();
			break;
		case "user":
			$j("#fuser").show();
			$state = "fuseredit";
			break;
	}
}

/*
 * Alle sichtbaren Formularfelder prüfen (Buchungsformular)
 */
function CheckInput()
{
	ClearErrors();
	var error = false;
	var msg = "";

	// Pflichtfelder prüfen
	$j("#fbooking label.oblig:visible").each(
			function(index) {
				var el = $j(this).attr("for");
				if (el.length > 0)
				{
					var tb = $j("#"+el);
					if (IsEmpty(tb.val())) { tb.addClass("error"); error = true; }
				}
			  }
			);
	// zusätzliche Prüfungen
	// Ort
	var tb = $j("#fbooking input.Ort:visible");
	tb.each(
			function() { 
				if (IsEmpty($j(this).val())) { $j(this).addClass("error"); error = true; }				
			}
	);
	if (error) msg = "Bitte alle Pflichtfelder ausfüllen!"; 
	
	// Passwort prüfen
	var p1 = $j("#password1:visible");
	var p2 = $j("#password2:visible");
	if (p1.length>0 && p2.length>0)
	{
		if (p1.val() != p2.val())
		{
			error = true;
			p1.addClass("error");
			p2.addClass("error");
			msg = "Die Kennwörter stimmen nicht überein!";
		}
	}

	// Fehler anzeigen
	if (error) ShowError(msg);
	
	return !error;
}

/*
 * MA 20.08.2010 Pflichtfeldprüfung Kontaktformular
 */
function CheckInputContact()
{
	ClearErrors();
	var error = false;
	var msg = "";

	// Pflichtfelder prüfen
	$j("#fcontact label.oblig:visible").each(
			function(index) {
				var el = $j(this).attr("for");
				if (el.length > 0)
				{
					var tb = $j("#"+el);
					if (IsEmpty(tb.val())) { tb.addClass("error"); error = true; }
				}
			  }
			);
	if (error) msg = "Bitte alle Pflichtfelder ausfüllen!"; 

	// Fehler anzeigen
	if (error) ShowError(msg);
	
	return !error;
}

/*
 * MA 23.08.2010 externes JS ausführen
 */
/*
function ExecScript(file)
{
	var NewScript=document.createElement('script');
	NewScript.src="typo3conf/ext/prvtrainis2/res/" + file;
	document.body.appendChild(NewScript);
}*/

/*
 * MA 23.08.2010
 */
function GoogleAd()
{
	$j.ajaxSetup({
		async: false,
		type: "get",
		url: "typo3conf/ext/prvtrainis2/res/php/submitcontact.php",
		error: function() {}
	}); //close $.ajaxSetup(

	var data = {
			guid: "ON",
			script: 0
	};
	
	switch($mode)
	{
		case "interest":
			data['label'] = "EDgYCP74hwEQzMDt_gM";
			$j.ajax({
				url: "https://www.googleadservices.com/pagead/conversion/1071341644/",
				data: data
			}); //close $.ajax(
			break;
		case "book":
			// Provadis
			data['label'] = "UbsJCKT4hwEQzMDt_gM";
			$j.ajax({
				url: "https://www.googleadservices.com/pagead/conversion/1071341644/",
				data: data
			}); //close $.ajax(

			//AuA
			data['label'] = "UbsJCKT4hwEQzMDt_gM";
			data['value'] = "250.0";
			$j.ajax({
				url: "https://www.googleadservices.com/pagead/conversion/1071444209/",
				data: data
			}); //close $.ajax(
			break;	
	}
}

/*
 * MA 28.04.2011
 */
function DisableField(ctrl, msg)
{
	ctrl.attr('readonly','readonly');	
	
	if (!IsEmpty(msg))
	{
		ctrl.attr('title',msg);
		ctrl.cluetip({
			splitTitle: '|', 
			showTitle: false, 
			clickThrough: true
			//,sticky: true
		});
	}
}
