/*!
 * althra JavaScript Library v1.0
 * http://www.althra.de/
 *
 * Copyright 2010, Christian Grohl
 *
 * Date: 08.03.2010
 */

var althra = new function ()
{
	/*
		Properties
	*/
	this.correct = true;
	this.errorMessage = "";

	/*
		Methods
	*/
	this.startup = function()
	{
		var page = $.query.get('page');
		
		if(page)
			$('#page').load('html/' + page + '.html');
		else
			$('#page').load('html/home.html');
	};

	this.version = function()
	{
		return "1.0";
	};
	
	this.loadPage = function(page)
	{
		window.location.search = $.query.set('page', page).toString();
	};
	
	//form check
	this.checkForm = function()
	{
		this.correct = true;	
		this.errorMessage = "";
	
		//checkFields
		this.validContactType();
		this.validTitle();
		this.validFirstname();
		this.validSurname();	
	
		if(document.getElementById('contacttype').value == "Hersteller")
		{
			this.validCompany();
			this.validPosition();
		}
	
		this.validStreet();
		this.validStreetNumber();
		this.validZIP();
		this.validCity();
		
		this.validPhone();
		this.validEmail();	
		this.validFax();
	
		this.validMessage();
	
		//Fehleranzeige
		if(this.correct == false)
		{		
			$("#errorField").html(this.errorMessage);
		}
		
		return this.correct;
	};

	//Überprüfungsfunktionen
	this.validContactType = function()
	{
		if(document.getElementById('contacttype').value == "")
		{
			this.errorMessage = this.errorMessage + "Bitte Kontakttype ausw&auml;hlen!<br />";
			this.correct = false;
		}
	};
	this.validTitle = function()
	{
		if((document.getElementById('female').checked == false) && (document.getElementById('male').checked == false))
		{
			this.errorMessage = this.errorMessage + "Bitte Anrede ausw&auml;hlen!<br />";
			this.correct = false;
		}
	};
	this.validEmail = function() 
	{
		var regex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

		if(regex.test(document.getElementById('email').value) == false)
		{
			this.errorMessage = this.errorMessage + "Bitte &uuml;berpr&uuml;fen Sie ihre E-Mail-Adresse!<br />";
			this.correct = false;
		}
	};
	this.validSurname = function() 
	{
		if(document.getElementById('surname').value.length == 0)
		{
			this.errorMessage = this.errorMessage + "Bitte geben Sie ihren Namen an!<br />";
			this.correct = false;
		}
		else if(this.validName(document.getElementById('surname').value) == false)
		{
			this.errorMessage = this.errorMessage + "Ihr Name enth&auml;lt ung&uuml;ltige Zeichen!<br />";
			this.correct = false;
		}
	};
	this.validFirstname = function() 
	{
		if(this.validName(document.getElementById('firstname').value) == false)
		{
			this.errorMessage = this.errorMessage + "Ihr Vorname enth&auml;lt ung&uuml;ltige Zeichen!<br />";
			this.correct = false;
		}
	};
	this.validCompany = function() 
	{
		if(document.getElementById('company').value.length == 0)
		{
			this.errorMessage = this.errorMessage + "Da Sie T&uuml;renhersteller sind ist es notwendig, dass Sie ihre Firma angeben!<br />";
			this.correct = false;
		}
		else if(this.validName(document.getElementById('company').value) == false)
		{
			this.errorMessage = this.errorMessage + "Ihr Firmenname enth&auml;lt ung&uuml;ltige Zeichen!<br />";
			this.correct = false;
		}
	};
	this.validPosition = function() 
	{
		if(this.validName(document.getElementById('position').value) == false)
		{
			this.errorMessage = this.errorMessage + "Ihre Positionsbezeichnung enth&auml;lt ung&uuml;ltige Zeichen!<br />";
			this.correct = false;
		}
	};
	this.validPhone = function() 
	{
		if((document.getElementById('phone').value.length > 0) && (this.validPhoneNumber(document.getElementById('phone').value) == false))
		{
			this.errorMessage = this.errorMessage + "Ihre Telefonnummer ist ung&uuml;ltig!<br />";
			this.correct = false;
		}
	};
	this.validFax = function() 
	{
		if((document.getElementById('fax').value.length > 0) && (this.validPhoneNumber(document.getElementById('fax').value) == false))
		{
			this.errorMessage = this.errorMessage + "Ihre Faxnummer ist ung&uuml;ltig!<br />";
			this.correct = false;
		}
	};
	this.validMessage = function() 
	{
		if(document.getElementById('message').value.length == 0)
		{
			this.errorMessage = this.errorMessage + "Bitte geben Sie ihre Anfrage in das Feld Nachricht ein!<br />";
			this.correct = false;
		}
	};
	this.validStreet = function() 
	{
		if(this.validStreetname(document.getElementById('street').value) == false)
		{
			this.errorMessage = this.errorMessage + "&Uuml;berpr&uuml;fen Sie den Strassennamen!<br />";
			this.correct = false;
		}
	};
	this.validStreetNumber = function() 
	{
		if(this.validNumber(document.getElementById('number').value) == false)
		{
			this.errorMessage = this.errorMessage + "Keine g&uuml;ltige Hausnummer!<br />";
			this.correct = false;
		}
	};
	this.validCity = function() 
	{
		if(this.validCityname(document.getElementById('city').value) == false)
		{
			this.errorMessage = this.errorMessage + "&Uuml;berpr&uuml;fen Sie den Stadtnamen!<br />";
			this.correct = false;
		}
	};
	this.validZIP = function() 
	{
		if((document.getElementById('zip').value.length > 0))
		{
			if(document.getElementById('country').value == "Deutschland")
			{
				if(this.validGERPLZ(document.getElementById('zip').value) == false)
				{
					this.errorMessage = this.errorMessage + "Keine g&uuml;ltige deutsche Postleitzahl!<br />";
					this.correct = false;
				}
			}
			else if(document.getElementById('country').value == "Austria")
			{
				if(this.validAUSPLZ(document.getElementById('zip').value) == false)
				{
					this.errorMessage = this.errorMessage + "Keine g&uuml;ltige &ouml;sterreichische Postleitzahl!<br />";
					this.correct = false;
				}
			}
			else
			{
				this.errorMessage = this.errorMessage + "Bitte w&auml;hlen Sie noch ein Land aus!<br />";
				this.correct = false;
			}		
		}
	};

	//Hilfsfunktion
	this.validName = function(value) 
	{
		var regex = /^[a-zA-ZäöüÄÖÜß&-\.\s]*$/;
		return regex.test(value);
	};
	this.validNumber = function(value) 
	{
		var regex = /^(\d{1,}[a-z]{0,1}|\d*)?$/;
		return regex.test(value);
	};
	this.validStreetname = function(value) 
	{
		var regex = /^[a-zA-ZäöüÄÖÜß\.\s-]*$/;
		return regex.test(value);
	};
	this.validCityname = function(value)
	{
		var regex = /^([a-zA-ZäöüÄÖÜß]*|[a-zA-ZäöüÄÖÜß]+\.\s[a-zA-ZäöüÄÖÜß]+|[a-zA-ZäöüÄÖÜß]+\s[a-zA-ZäöüÄÖÜß]+)?$/;
		return regex.test(value);
	};
	this.validPhoneNumber = function(value) 
	{
		var regex = /^([0-9\s\(\)\+\-\/]{9,30})*$/;
		return regex.test(value);
	};
	this.validGERPLZ = function(value) 
	{
		var regex = /^(D-)?\d{5}$/i;
		return regex.test(value);
	};
	this.validAUSPLZ = function(value) 
	{
		var regex = /^(A-)?\d{4}$/i;
		return regex.test(value);
	};

	//Private Or Händler
	this.changeContactType = function()
	{
		if($('#contacttype').val() == "Hersteller")
		{
			$('#companyPanel').fadeIn(500);
			$('#positionPanel').fadeIn(500);
		}
		else
		{
			$('#companyPanel').fadeOut(500);
			$('#company').val("");
			$('#positionPanel').fadeOut(500);
			$('#position').val("");
		}
	};
};
