// Diese Datei beinhaltet sämtliche Funktionen zur Validierung einer Eingabe

function Validation(elementid,outputid,msg)
{
	this.elementid = elementid; //ID des Elements dessen Inhaltslänge gezählt wird
	this.element = document.getElementById(this.elementid);
	this.outputid = outputid;
	this.outputElement = document.getElementById(this.outputid);
	this.outputMessage = msg;
	this.type = 'input';
	this.value = '';
	this.isValid = false;
	
	this.element.onblur = function()
	{
		val = new Validation(elementid,outputid,msg);
		val.validate();
	}
	

	this.validate = function()
	{
			if(this.element) //Wenn es das zu validierende Element gibt
			{
				this.type = this.element.nodeName.toLowerCase(); //Von welchem Typ ist das Element?
				
				this.value = this.element.value; //Inhalt des Elements laden
				
				if(this.value.length<=0) //Wenn kein Text drinnen steht
				{
					if(this.outputElement)//Wenn ein Element existiert in dem die Message ausgegeben werden kann
					{
						if(this.outputMessage.length <= 0)
						{
							this.outputElement.style.visibility = 'visible';
							if(this.outputElement.style.display == 'none')
								this.outputElement.style.display == 'block';
						}
						else
						{
							if(this.outputElement.innerHTML.length<=0)//Wenn noch nichts drinnen steht
								this.outputElement.innerHTML = "*";
							else //Wenn schon etwas drinnen steht
							{
									this.outputElement.innerHTML += ' ';
							}
							//Nur wenn diese Message noch nicht drinnen steht
							if(!(this.outputElement.innerHTML.indexOf(this.outputMessage)>0))
								this.outputElement.innerHTML += this.outputMessage; //Message in das Element schreiben
						}
						this.outputElement.style.color = 'red'; //Und rot einfärben!
						this.element.focus();
					}
					else //Wenn es das Element nicht gibt dann ein alert ausgeben
					{
						alert(this.outputMessage);	
					}
					this.isValid = false; //Klarerweise Invalid
				}
				else
				{
					if(this.outputElement)
					{
						if(this.outputMessage.length > 0)
						{
							this.outputElement.innerHTML = this.outputElement.innerHTML.replace(this.outputMessage,'');
							this.outputElement.innerHTML = '';
						}
						else
						{
							this.outputElement.style.visibility = 'hidden';	
						}
					}
					this.isValid = true;
				}
				return this.isValid;
			}
			else //Zu validierendes Element nicht gefunden
			{
				alert("Element mit der ID " + this.elementid + " nicht gefunden!");	
			}
	}
}

function ValidationElements()
{
	this.elementList = new Array();
	this.isValid = true;
	
	this.addElement = function(valObject)
	{
		this.elementList.push(valObject);	
	}
	
	this.validate = function()
	{
		for(i=0;i<this.elementList.length;i++)
		{
			var valElement = this.elementList[i];
			if(!valElement.validate())	
				this.isValid = false;
		}
		
		return this.isValid;
	}
}

function validateMail(value)
{
	reg = new RegExp('^[a-zA-Z0-9\-\.\_]+'+
                   '\@{1}[a-zA-Z0-9\-\.]+'+
                   '[\.]{1}[a-z]{2,4}$');
	
	return reg.test(value);
}

 /*---------------------|
 |						|					
 |		NEWSLETTER		|
 |						|
 |----------------------|
 */
 
 function validateNewsletter()
 {
	var bRes = new Boolean(true);
	valEl = new ValidationElements();
	valEl.addElement(new Validation('txtVorname','msgVorname',''));
	valEl.addElement(new Validation('txtNachname','msgNachname',''));
	valEl.addElement(new Validation('txtEmail','msgEmail',''));
	valEl.addElement(new Validation('txtEmailCopy','msgEmailCopy',''));
	
	
	//Mindestens ein Textfeld ist nicht aufgefüllt
	if(!valEl.validate())
		bRes = false;
	
	var mail = $('#txtEmail').val();
	var mailCopy = $('#txtEmailCopy').val();
	
	if(!validateMail(mail))
	{
		$('#msgEmail').css('visibility','visible');
		bRes = false;
	}
	else
	{
		$('#msgEmail').css('visibility','hidden');
	}
	
	if(!validateMail(mailCopy))
	{
		$('#msgEmailCopy').css('visibility','visible');
		bRes = false;
	}
	else
	{
		$('#msgEmailCopy').css('visibility','hidden');
	}
	
	if(mail != mailCopy)
	{
		$('#msgEmailNotEqual').css('visibility','visible');
		bRes = false;
	}
	else
	{
		$('#msgEmailNotEqual').css('visibility','hidden');
	}
	
	
	return bRes;
 }
 

 /*---------------------|
 |						|					
 |		GUESTBOOK		|
 |						|
 |----------------------|
 */
 
 function validateGuestbook()
 {
	var bRes = new Boolean(true);
	valEl = new ValidationElements();
	valEl.addElement(new Validation('txtName','msgName',''));
	valEl.addElement(new Validation('txtText','msgText',''));
		
	//Mindestens ein Textfeld ist nicht aufgefüllt
	if(!valEl.validate())
		bRes = false;
	
	var mail = $('#txtMail').val();
	
	if(mail.length>0)
	{
		if(!validateMail(mail))
		{
			$('#msgEmail').css('visibility', 'visible');
			$('#msgEmail').css('color','red');
			$('#txtMail').focus();
			bRes = false;
		}
	}
	
	return bRes; 
 }
 
 function validateForum()
 {
	var bRes = new Boolean(true);
	valEl = new ValidationElements();
	valEl.addElement(new Validation('txtFounder','msgFounder',''));
	valEl.addElement(new Validation('txtThema','msgThema',''));
	valEl.addElement(new Validation('txtText','msgText',''));
	//Mindestens ein Textfeld ist nicht aufgefüllt
	if(!valEl.validate())
		bRes = false;
	
	
	var mail = $('#txtMail').val();
	
	if(mail.length>0)
	{
		if(!validateMail(mail))
		{
			$('#msgEmail').css('visibility','visible');
			$('#msgEmail').css('color','red');
			$('#txtMail').focus();
			bRes = false;
		}
	}
	
	return bRes; 
 }
 
 function validateForumEntry()
 {
	var bRes = new Boolean(true);
	valEl = new ValidationElements();
	valEl.addElement(new Validation('txtWriter','msgWriter',''));
	valEl.addElement(new Validation('txtText','msgText',''));
	//Mindestens ein Textfeld ist nicht aufgefüllt
	if(!valEl.validate())
		bRes = false;
	
	
	var mail = $('#txtMail').val();
	
	if(mail.length>0)
	{
		if(!validateMail(mail))
		{
			$('#msgEmail').css('visibility','visible');
			$('#msgEmail').css('color','red');
			$('#txtMail').focus();
			bRes = false;
		}
	}
	
	return bRes; 
 }
 
 
 

 /*---------------------|
 |						|					
 |		TERMINE			|
 |						|
 |----------------------|
 */
function validateTermin()
{
	var s = document.getElement$('#txtStartDate').value;
	var e = document.getElement$('#txtEndDate').value;
	var dStart = createDateObject(s);
	var dEnd = createDateObject(e);
	var diff = dEnd.getTime()-dStart.getTime();
	if(diff<0)
	{
		alert("Enddatum kann nicht vor dem Startdatum sein!");
		return false;
	}
	valEl = new ValidationElements();
	valEl.addElement(new Validation('txtHeader','msgHeader','Überschrift muss gesetzt sein!'));
	//valEl.addElement(new Validation('txtText','msgText','Bitte geben Sie einen Text ein!'));
	valEl.addElement(new Validation('txtStartDate','msgStartDate','Beginn-Datum muss gesetzt sein!'));
	valEl.addElement(new Validation('txtStartTime','msgStartDate','Beginn-Zeit muss gesetzt sein!'));
	valEl.addElement(new Validation('txtEndDate','msgEndDate','End-Datum muss gesetzt sein!'));
	valEl.addElement(new Validation('txtEndTime','msgEndDate','End-Zeit muss gesetzt sein!'));
	
									
	return valEl.validate();
}

function createDateObject(sDate)
{
	var arDates = sDate.split('.');
	var d = arDates[0];
	var m = arDates[1];
	var y = arDates[2];
	
	var date = new Date(y,m,d,0,0,0,0);
	
	return date;
}

/*----------------------|
 |						|					
 |		NEWS			|
 |						|
 |----------------------|
 */

function validateNews()
{
	valEl = new ValidationElements();
	valEl.addElement(new Validation('txtHeader','msgHeader','Überschrift muss gesetzt sein!'));
	//valEl.addElement(new Validation('txtText','msgText','Bitte geben Sie einen Text ein!'));
	valEl.addElement(new Validation('txtShorttext','msgShorttext','Kurzfassung muss gesetzt sein!'));
									
	return valEl.validate();
}

/*

	TEAM

*/

function validateTeam()
{
	valEl = new ValidationElements();
	valEl.addElement(new Validation('txtVorname','msgVorname','Vorname muss gesetzt sein!'));
	valEl.addElement(new Validation('txtNachname','msgNachname','Nachname muss gesetzt sein!'));
	valEl.addElement(new Validation('txtKurzbeschreibung','msgKurzbeschreibung','Kurzbeschreibung eingeben!'));
	//valEl.addElement(new Validation('txtBeschreibung','msgBeschreibung','Beschreibung eingeben!'));
	
	return valEl.validate();
}

/*

	BALL-RESERVIERUNG

*/
function validateReservation()
{
	valEl = new ValidationElements();
	valEl.addElement(new Validation('txtVorname','msgVorname',''));
	valEl.addElement(new Validation('txtNachname','msgNachname',''));
	valEl.addElement(new Validation('txtMail','msgMail',''));
	valEl.addElement(new Validation('txtTelefon','msgTelefon',''));
	
	return valEl.validate();
}