// ***************************************************
// * checkform.js                                    *
// * automatically check form data (part of aixlibs) *
// *-------------------------------------------------*
// * author: Markus Grohs, aixTeMa GmbH, Aachen      *
// * copyright: 2001, aixTeMa GmbH, Aachen           *
// *-------------------------------------------------*
// * comments: script must be included manually      *
// ***************************************************

// check all elements including appropriate function call in onfocus handler

function checkform (form) {

    for (var i=0; i < form.elements.length; i++) {
	
        var mask = /required\s*\(\s*['"](.*)['"]\s*,\s*(.*)\s*\)/;

	mask.exec ('required (\"\", 0)');	// initialize RegExp.$n values
        mask.exec (form.elements[i].onfocus);
	// check if required is called
	
        if (RegExp.$2 > 0) {
	
    	    var type = form.elements[i].type;
	    
    	    if (type == 'checkbox' || type == 'radio') {
		
		var name = form.elements[i].name; var checked = 0;

		while (i < form.elements.length && form.elements[i].name == name) {
		    
		    if (form.elements[i].checked) checked++;
		    i++;
		}
		
		--i;	// go back to last element of the checkbox or radio field
		    
		if (checked < RegExp.$2) {
		
		    alert ('Sie müssen mindestens '+RegExp.$2+' '+(RegExp.$2==1?'Eintrag':'Einträge')+ ' im Feld \"'+RegExp.$1+'\" auswählen.');
		    return false;
		}
	    }
		
	    else if (type == 'select-multiple') {
		
		var length = form.elements[i].options.length; var selected = 0;
		    
		for (var j=0; j<length; j++) {
		    
		    if (form.elements[i].options[j].selected) selected++;
		}
		    
		if (selected < RegExp.$2) {
		
		    form.elements[i].focus();
		    
		    alert ('Sie müssen mindestens '+RegExp.$2+' '+(RegExp.$2==1?'Eintrag':'Einträge')+ ' im Feld '+RegExp.$1+' auswählen.');
		    return false;
		}
	    }

	    else if (type == 'select-one') {
		
		var selected = form.elements[i].selectedIndex;
		
		if (form.elements[i].options[selected].value == 0) {

		    form.elements[i].focus();

		    alert ('Sie müssen einen gültigen Eintrag im Feld \"'+RegExp.$1+ '\" auswählen.');
		    return false;
		}
	    }

	    else {
		
		if (form.elements[i].value == '') {
		    
		    form.elements[i].focus();

		    alert ('Bitte füllen Sie das Feld \"'+RegExp.$1+ '\" aus.');
		    return false;
		}
	    }
	}
    }
    
    return true;
}

// dummy function to be called by onfocus handler

function required (label, number) {
    void (0);
}

