/**
* checkInput()
* Falls nicht alle Pflichtfelder ausgefühlt werden 
* wird ein bestimmter button disabled. Folgende Feldertypen können
* gecheckt werden: text, select, radio, checkbox, password, textarea, hidden.
*
* EXAMPLE
* var args = new Array('select', 'usergroup_id', 'text', 'username');
* window.setInterval("check('New', 'input', args)", 100);
*
* Bei den textfeldern (text, textarea, password, hidden) kann man die Eingabe 
* auch auf eine Mindestlänge (z.B. bei Passwort-Feldern) oder ob das eine gültige Email-Adresse ist
* überprüfen lassen. Dafür muß man dem Feldnamen 
* getrennt dur einen Doppelpunkt die Mindestlänge als Zahl anhängen bzw. 
* email als wort ('text', 'user_email:email')
*
* EXAMPLE
* var args = new Array('text', 'username', 'text', 'password:8');
* window.setInterval("check('Edit', 'update', args)", 100);
*
* @param string formName Der Name des Form
* @param string buttonName Der Name des Buttons [:Mindestlänge der Eingabe] OR [:email]
* @param array args Pflichtfelder (typ und name)
*/
function checkInput(formName, buttonName, args) 
{
	if (document.forms[formName].elements[buttonName]) {
	
		var merker = new Array();
		var btnDisabled = true;
	
		for (var i = 0; i < args.length; i = i+2) {
	
			var index = i + 1;
			
			// select fields
			if (args[i] == 'select' && document.forms[formName].elements[args[index]]) {
				for (var j=0; j<document.forms[formName].elements[args[index]].length; j++) {
					if (document.forms[formName].elements[args[index]].options[j].selected == true 
						&& document.forms[formName].elements[args[index]].options[j].value != '') {
						merker[i] = 1;
						break;
					} else {
						merker[i] = 0;
					}
				}
			} 
	
			// text, textarea, password, hidden fields
			if (args[i] == 'text' || args[i] == 'pasword' || args[i] == 'textarea' || args[i] == 'hidden') {
				var tmp = args[index].split(":");
				if (document.forms[formName].elements[tmp[0]]) {
					newValue = trimString(document.forms[formName].elements[tmp[0]].value);
					if (typeof tmp[1] == "string" && tmp[1] == "email") {
						res = checkEmail(newValue);
						if (res == true) {
							merker[i] = 1;
						} else {
							merker[i] = 0;
						}
					} else if (typeof tmp[1] == "undefined" && newValue != '') {
						merker[i] = 1;
					} else if (newValue.length >= tmp[1]) {
						merker[i] = 1;
					} else {
						merker[i] = 0;
					}
				}
			}
	
			// checkboxes, radiobuttons
			if ((args[i] == 'checkbox' || args[i] == 'radio') && document.forms[formName].elements[args[index]]) {
				if (document.forms[formName].elements[args[index]].length) {
					for (var j=0; j<document.forms[formName].elements[args[index]].length; j++) {
						if (document.forms[formName].elements[args[index]][j].checked == true) {
							merker[i] = 1;
							break;
						} else {
							merker[i] = 0;
						}
					}
				} else {
					if (document.forms[formName].elements[args[index]].checked == true) {
						merker[i] = 1;
						break;
					} else {
						merker[i] = 0;
					}			
				}
			}
		
		}
		
		// check summary
		for (var x = 0; x < merker.length; x++) {
			if (merker[x] == 0) {
				btnDisabled = true;
				break;
			} else {
				btnDisabled = false;
			}
		}
			
		document.forms[formName].elements[buttonName].disabled = btnDisabled;

	}
}


/**
* trimString()
* Leerzeichen aus einem String entfernen
*
* @param string str Zeichenkette
* @return string str Zeichenkette ohne Leerzeichen
*/
function trimString (str) {
  str = this != window ? this : str;
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}


function checkEmail(str) 
{
  	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(str));
    } else {
    	res = (str.search('@') >= 1 &&
           str.lastIndexOf('.') > str.search('@') &&
           str.lastIndexOf('.') >= str.length-5)
    }
  	return res;
}
