/***

	(C)opyright spirito GmbH, Germany, 2006
	All rights reserved
	
	http://www.spirito.de
	This is part of the DADO Application Server Software
	
	$Revision: 1.4 $
	$Author: holtwick $
	$Date: 2006/11/23 15:48:50 $


	Skript zum Prüfen, ob alle Pflichtfelder ausgefüllt sind
	========================================================
	
	Dazu einfach dieses Skript laden, es bindet sich automatisch
	bei onload in aller Formulare ein. 
	
	Bei onsubmit werden die Felder mit dem Attribut "mandatory" oder
	dem einem CSS Stil mit dem Namen "required" darauf gebrüft,
	ob sie nicht leer sind. Wenn doch, dann werden den Feldern die Klassen
	"spirito-mandatory" und " validation-failed" hinzugefügt und es wird ein Alert 
	ausgegeben. Das senden der Daten wird abgebrochen.
	
***/

var msg_required = "Bitte füllen Sie alle Pflichtfelder aus!"

function _dadoValidateFields(inp) {
	var failed = 0
	for(var i=0; i<inp.length; i++) {
		var e = inp[i]
		if(/\ required\ /.test(" " + e.className + " ") || e.getAttribute('mandatory')) {
			if(!e.value) {
				failed = failed + 1
				e.className = e.className + " spirito-mandatory validation-failed failed"
			} else {
				e.className = e.className.replace(/ spirito-mandatory validation-failed failed/, '')
			}
		}
	}	
	return failed
}

function _dadoValidateForm(form) {
	var failed = 0
	failed += _dadoValidateFields(form.getElementsByTagName("input"));
	failed += _dadoValidateFields(form.getElementsByTagName("textarea"));
	if(failed > 0) {
		alert(msg_required)
		return false
	}
	return true
}

function dadoMandatory() {
	try {
		if(_dadoFormsInitDone) return false
		alert(1)
	} catch(e) {
		_dadoFormsInitDone = true		
	}
	
	var elm = document.getElementsByTagName("form")
	for(var i=0; i<elm.length; i++)
	{		
		try {
			
			var el = elm[i]
			
			el.oldsubmit = el.onsubmit
			el.onsubmit = function(event)
			{
				// IE doesn't hand over event
				if (!event)
		    		event = window.event;
					
				// Test!
				if(_dadoValidateForm(this))
				{
					// Test rest!
					if(el.oldsubmit && !el.oldsubmit())
						return false
					
				} else {
					
					// Stop propagation!
					if (event.preventDefault) {
					  event.preventDefault();
					  event.stopPropagation();
					} else {
					  event.returnValue = false;
					  event.cancelBubble = true;
					}
					
					return false
				}
										
				return true
			}
	
		} catch(e) {;}
	}	
}

// add init to onload
if(window.attachEvent) {
	window.attachEvent("onload", dadoMandatory);
} else {
	window.addEventListener("load", dadoMandatory, true);
}
