
// $Id: kontakt.js,v 1.7 2006-08-08 14:52:28 pheckel Exp $
Event.observe(window, 'load', initKontakt, false);

var felder = {
	vorname: {standard: 'Vorname eingeben', regex: /^.{3,50}$/},
	nachname: {standard: 'Nachname eingeben', regex: /^.{3,50}$/},
	telefon: {standard: 'Telefonnummer eingeben', regex: /^[0\+][-\/\d\s]{3,}$/},
	email: {standard: 'eMail-Adresse eingeben', regex: /^([-_\.\w]+@[-_\.\w]+\.\w{2,10})$/},
	anfrage: {standard: 'Ihr Anliegen ...', regex: /^.{5,}$/m}
};
		
function initKontakt(){
	$('info').style.opacity = '.80';
	$('info').style.filter = "alpha(opacity:80)";	
	
	$$('.kontakt form')[0].onsubmit = function() { return false };
	
	$H(felder).each( function(feld) {
		var feldObj = $(feld[0]);
		
		feldObj.extra = feld[1];
		feldObj.extra.oStandard = feldObj.extra.standard + ' (optional)';

		feldObj.needed = 1;
		feldObj.edited = 0;
		
		feldObj.onfocus = function() {
			Element.addClassName(this,'focus'); /* IE */
			Element.addClassName(this,'bearbeiten');
			
			if (this.needed && this.value != this.extra.standard) return;
			else if (!this.needed && this.value != this.extra.oStandard) return;
				
			this.value = '';
		};
		
		feldObj.onblur = function() {			
			Element.removeClassName(this,'focus'); /* IE */
			Element.removeClassName(this,'bearbeiten');

			this.edited = true;	
			this.update();

			if (this.value != '') return;

			this.value = (this.needed) ? this.extra.standard : this.extra.oStandard;
			this.update();
		};
		
		feldObj.update = function() {
			if (/*!this.edited ||*/ (!this.needed && this.value == this.extra.oStandard) ) {
				Element.removeClassName(this,'fehler');			
				return;
			}
			
			if (!this.isOk()) Element.addClassName(this,'fehler');
			else Element.removeClassName(this,'fehler');		
		};
		
		feldObj.isOk = function() {
			return ( !this.needed && this.isDef() )
				|| ( !this.isDef() && this.value.match(this.extra.regex) );
		};
		
		feldObj.isDef = function() {
			return (this.needed && this.value == this.extra.standard) 
				|| (!this.needed && this.value == this.extra.oStandard);
		};			
		
 		feldObj.setNeeded = function(enable) {
 			if (this.needed == enable) return;
 			
			if (this.needed && this.value == this.extra.standard) this.value = this.extra.oStandard;
			else if (!this.needed && this.value == this.extra.oStandard) this.value = this.extra.standard;;

 			this.needed = enable; 			
 			this.update();
 		};
	});
	
	$('aemail').onclick = $('atelefon').onclick = function() {
		var p = $('telefon'), e = $('email');

		p.setNeeded(this.id == 'atelefon');
		e.setNeeded(this.id == 'aemail');
	};
	
	$('aemail').onclick();
	$('submit').onclick = senden;
}

function versandt(request) {
	$('info').style.display = 'none';
	$('inhalt').innerHTML = request.responseText;
}

function fehler(zeigen) {
	$H(felder).keys().each( function(feld) { $(feld).disabled = zeigen } );

	$('aemail').disabled = zeigen;
	$('atelefon').disabled = zeigen;
	$('submit').disabled = zeigen;	

	if (zeigen) {
		$('info').innerHTML = 'Bitte f&uuml;llen Sie alle markierten Felder aus und versuchen Sie '
		                    + 'es anschlie&szlig;end erneut. Vielen Dank.<br />'
		                    + '<input id="schliessen" type="button" value=" Okay " onclick="fehler(false)" />';
		
		$('info').style.display = 'block';		
	}
	else {		
		$('info').style.display = 'none';		
	}
}

function senden(){
	var error = new Array();

	$H(felder).keys().each( function(feld) {
		var feldObj = $(feld);
		
		if (!feldObj.isOk())
			error.push(feld.id);
		
		feldObj.edited = true;
		feldObj.update();
		
		feldObj.disabled = true;
	});

	if (error.length > 0) {
		fehler(true);
		return;
	}

	$H(felder).keys().each( function(feld) { $(feld).disabled = zeigen } );
	
	$('info').innerHTML = '<img src="media/kontakt.warten.gif" alt="" /><br />Bitte warten Sie ...';
	$('info').style.display = 'block';
	
	setTimeout("abgehts()",500);
}

function abgehts() {
	var daten =  'ajax=1'
						+ '&person%5Banrede%5D='+(($('herr').checked)?"Herr":"Frau")
						+ '&person%5Bvorname%5D='+escape($('vorname').value)
						+ '&person%5Bnachname%5D='+escape($('nachname').value)
						+ '&person%5Btelefon%5D='+escape($('telefon').value)
						+ '&person%5Bemail%5D='+escape($('email').value)
						+ '&person%5Banfrage%5D='+escape($('anfrage').value)
						+ '&person%5Bantwort%5D='+(($('aemail').checked)?"eMail":"Telefon");
						
	var kontakt = new Ajax.Request(
			'kontakt.php',{
			parameters: daten,
			onComplete: versandt
		}
	);
}		

