/**
 * Dynamicdrive.de - Formchecker
 * 
 * Andreas Weigel (weigel@dynamicdrive.de)
 * 
 * 23.07.2010
 */
// <![CDATA[
var Error = new Array();
Error['name'] = 'Name';
Error['email'] = 'E-Mail';
Error['comment'] = 'Kommentar';
Error['settingsChanged'] = 'Fehler!\n';

var Message = new Array();
Message['settingsChanged'] = 'Artikel wurde gespeichert.';

var checkFields = new Array();
checkFields[0] = {
	name : 'name'
};

checkFields[1] = {
	name : 'email',
	type : 'EMAIL_CHECK'
};
checkFields[2] = {
	name : 'comment'
};
/*
 * checkFields[7] = { name:'adm_email', //Stimmen Passwörter überein type:
 * 'EMAIL_CHECK', second: 'adm_password2'}; //Feld für 2. Eingabe
 */

// ]]>

function checkForm() {

	isError = false;
	errorMessageStandard = ' <b>!</b>';
	// errorMessage = '';
	for (var i = 0; i < checkFields.length; i++) {

		isFieldError = false;
		name = checkFields[i].name;
		type = checkFields[i].type;
		secondField = checkFields[i].second;
		justError = checkFields[i].justError; 
		_tinymce = checkFields[i].tinymce;
		
		// lösche Fehler und entferne roten Hintergrundfarbe
		if ($('error' + name)) {
			$('error' + name).remove();
			// $(name).style.backgroundColor = '#ffffff';
			$('label' + name).show();

			// if($(secondField))
			// $(secondField).style.backgroundColor = '#ffffff';
		}

		// Auf Fehler prüfeun
		switch (type) {

			// zweifache Eingabe z. B. bei Passwörtern stimmt nicht überein
			case 'DOUBLE_CHECK' :
				// secondField = checkFields[i].second;
				if (!$F(name).trim().empty()
						&& $F(name).trim() != $F(secondField).trim()) {
					errorMessage = Error[name];
					isFieldError = true;

					// auch anderes Feld rot hinterlegen
					$(secondField).style.backgroundColor = '#FFB3B3';
				}
				break;

			// E-Mail prüfen auf Richtigkeit
			case 'EMAIL_CHECK' :
				if (!checkEmail($F(name))) {
					errorMessage = Error[name] + ' ungültig';
					isFieldError = true;
				}
				break;

			// Prüft ob alle Pflichtfelder ausgefüllt sind
			default :

				//TinyMCE oder normales Input-Feld?
				value = _tinymce==true ? tinyMCE.get(name).getContent() : $F(name);
		
				if (value=='') {
					if (!$('error' + name)) {
						errorMessage = errorMessageStandard;
						isFieldError = true;
					}
				}
		}

		// Aktuelles Formularfeld enthält einen Fehler
		if (isFieldError) {

			errorMsg = justError ? Error[name] : (type=='EMAIL_CHECK'?'Bitte korrekte <b>E-Mail-Adresse</b> angeben. ':'Bitte das Feld <b>'  + Error[name] + '</b> ausf&uuml;llen.');
			// Fehler einfügen hinter betreffendes Formularfeld
			Element.insert($('label' + name), {
				'after' : new Element('label', {
					'id' : 'error' + name,
					'class' : 'error'
						// }).update(' '+errorMessage)
					}).update(errorMsg )
					// }).update(' '+Error[name])
				});
			// $(name).style.backgroundColor = '#FFB3B3';
			// $('label'+name).style.fontWeight = 'bold';
			// $('label'+name).style.color = '#cc0000';
			$('label' + name).hide(); // update($('label'+name).innerHTML+'!');
			isError = true;
		}

		//
	}

	// Formular absenden per Ajax
	if (!isError) {
		
		//prüfen ob richtig gerechnet wurde
		new Ajax.Request(
			'http://www.kerner.de/comment.php?action=captcha&sicherheitscode='+$F('sicherheitscode'), { 
			method:'post',
			postBody : $('form').serialize(),
 			/*requestHeaders: {Accept: 'application/json'},*/
  			onSuccess: function(transport){
				json = transport.responseText.evalJSON(true);
			
				//Formular zurücksetzen
				if(!json.error) {
					$('form').reset();
				}
				alert(json.message);					
  			}
		});
		return false;
		
		//document.form.submit();



	} 
	
	return false;
}

/**
 * Prüft ob E-Mail valide ist
 * 
 * @param {}
 *            s E-Mail
 * @return {} boolean
 */
function checkEmail(s) {
	var a = false;
	var res = false;
	if (typeof(RegExp) == 'function') {
		var b = new RegExp('abc');
		if (b.test('abc') == true) {
			a = true;
		}
	}

	if (a == true) {
		reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'
				+ '(\\@)([a-zA-Z0-9\\-\\.]+)' + '(\\.)([a-zA-Z]{2,4})$');
		res = (reg.test(s));
	} else {
		res = (s.search('@') >= 1 && s.lastIndexOf('.') > s.search('@') && s
				.lastIndexOf('.') >= s.length - 5)
	}
	return (res);
}
