var sp = {}

sp.cntct =
{
    errMsgs:
    {
        common:
        {
            prefix: 'Das Formular enthält folgende Fehler:',
            suffix: 'Bitte korrigieren Sie Ihre Eingaben und senden Sie das Formular erneut ab.'
        },
        sex:
        {
            notSelected: 'Bitte wählen Sie eine Anrede'
        },
        firstName:
        {
            empty: 'Bitte geben Sie Ihren Vornamen ein.',
            tooLong: 'Vorname zu lang, max. Länge 255 Zeichen.'
        },
        lastName:
        {
            empty: 'Bitte geben Sie Ihren Nachnamen ein.',
            tooLong: 'Nachname zu lang, max. Länge 255 Zeichen.'
        },
        street:
        {
            empty: 'Bitte geben Sie Ihre Straße ein.',
            tooLong: 'Straße zu lang, max. Länge 255 Zeichen.'
        },
        zip:
        {
            empty: 'Bitte geben Sie Ihre PLZ ein.',
            tooLong: 'PLZ zu lang, max. Länge 10 Zeichen.'
        },
        city:
        {
            empty: 'Bitte geben Sie Ihre Stadt ein.',
            tooLong: 'Stadt zu lang, max. Länge 255 Zeichen.'
        },
        email:
        {
            empty: 'Bitte geben Sie Ihre E-Mail ein.',
            tooLong: 'E-Mail zu lang, max. Länge 255 Zeichen.',
            invalid: 'Ungültige E-Mail-Adresse, bitte überprüfen Sie Ihre Eingabe.'
        },
        subject:
        {
            empty: 'Bitte geben Sie einen Betreff ein.',
            tooLong: 'Betreff zu lang, max. Länge 255 Zeichen.'
        },
        message:
        {
            empty: 'Bitte geben Sie eine Nachricht ein.',
            tooLong: 'Nachricht zu lang, max. Länge 2048 Zeichen.'
        }
    },
	init: function()
	{
		var d = document;
		var frm = d.getElementById('frm-cntct');
		frm.onsubmit = function() { return sp.cntct.validate(this); }
	},
	trim: function(str)
	{
		str = str.replace(/^\s+/);
		str = str.replace(/\s+$/);
		return str;
	},
	validate: function()
	{
		var d = document;
		var errorsCount = 0;
		var errorMessage = [];
		var sexFemale = d.getElementById('frm-cntct-sex-female').checked;
		var sexMale = d.getElementById('frm-cntct-sex-male').checked;
		var firstName = sp.cntct.trim(d.getElementById('frm-cntct-firstname').value);
		var lastName = sp.cntct.trim(d.getElementById('frm-cntct-lastname').value);
		var street = sp.cntct.trim(d.getElementById('frm-cntct-street').value);
		var zip = sp.cntct.trim(d.getElementById('frm-cntct-zip').value);
		var city = sp.cntct.trim(d.getElementById('frm-cntct-city').value);
		var email = sp.cntct.trim(d.getElementById('frm-cntct-email').value);
		var subject = sp.cntct.trim(d.getElementById('frm-cntct-subject').value);
		var message = sp.cntct.trim(d.getElementById('frm-cntct-message').value);		
		if(!sexFemale && !sexMale)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.sex.notSelected);
		}
		if(firstName.length == 0)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.firstName.empty);
		}
		else if(firstName.length > 255)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.firstName.tooLong);
		}
		if(lastName.length == 0)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.lastName.empty);
		}
		else if(lastName.length > 255)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.lastName.tooLong);
		}
		if(street.length == 0)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.street.empty);
		}
		else if(street.length > 255)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.street.tooLong);
		}
		if(zip.length == 0)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.zip.empty);
		}
		else if(zip.length > 10)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.zip.tooLong);
		}
		if(city.length == 0)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.city.empty);
		}
		else if(city.length > 255)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.city.tooLong);
		}
		if(email.length == 0)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.email.empty);
		}
		else if(email.length > 255)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.email.tooLong);
		}
		else if(email.search(/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$/) == -1)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.email.invalid);
		}
		if(subject.length == 0)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.subject.empty);
		}
		else if(subject.length > 255)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.subject.tooLong);
		}
		if(message.length == 0)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.message.empty);
		}
		else if(message.length > 2048)
		{
			errorsCount++;
			errorMessage.push(sp.cntct.errMsgs.message.tooLong);
		}
		if(errorsCount > 0)
		{
			var errMsg = sp.cntct.errMsgs.common.prefix + '\n\n';
			for(i = 0; i < errorMessage.length; i++)
			{
				errMsg += '   - ' + errorMessage[i] + '\n';
			}
			errMsg += '\n' + sp.cntct.errMsgs.common.suffix;
			alert(errMsg);
			return false;
		}
		return true;
	}
}

window.onload = function() { sp.cntct.init(); }
