// form; check for mandatory fields
function checkMandatories(formName,alertText)
    {
    var theForm=document[formName];
    var m=theForm.mgnlMandatory;
    var i=0;
    var ok=true;
    if (m)
        {
        if (!m[0])
            {
            var tmp=m;
            m=new Object();
            m[0]=tmp;
            }
        while (m[i])
            {
            var name=m[i].value;
            var type;
            var mgnlField;
            if(document.all) mgnlField=theForm(name);
            else mgnlField=theForm[name];

            if (mgnlField.type) type=mgnlField.type;
            else if (mgnlField[0] && mgnlField[0].type) type=mgnlField[0].type

            switch (type)
                {
                case "select-one":
                    if (mgnlField.selectedIndex==0) ok=false;
                    break;
                case "checkbox":
                case "radio":
                    var obj=new Object();
                    if (!mgnlField[0]) obj[0]=mgnlField;
                    else obj=mgnlField;
                    var okSmall=false;
                    var ii=0;
                    while (obj[ii])
                        {
                        if (obj[ii].checked)
                            {
                            okSmall=true;
                            break;
                            }
                        ii++;
                        }
                    if (!okSmall) ok=false;
                    break;
                default:
                    if (!mgnlField.value) ok=false;
                }
            if (!ok)
                {
                alert(alertText);
                if (!mgnlField[0]) mgnlField.focus();
                return false;
                }
            i++;
            }
        }
    if (ok) return true;
    else return false;
    }
	
	var FIELD_TYPE_INTEGER 	= 1;
	var FIELD_TYPE_EMIL		= 2;
	
	// text resources
	var OBJ_NOT_FOUND 	= new Array(101, "Das Bild ist nicht zu finden, wenden Sie sich zum Administrator.");
	
	var FLDREQ			= new Array(201, "Das ist ein obligatorische Feld.");
	var FLDSHORT		= new Array(202, "Bitte mehr Zeichen eintippen!");
	var FLDLONG			= new Array(203, "Das Feld wurde uberfullt!");
	var BADCHAR			= new Array(204, "Falsche Zeichen! Erlaubter Character:");
	var FLDMUSTBEEMPTY	= new Array(205, "Das Feld muss leer gelassen werden!");
	//var BADEMAILADDRESS	= new Array(206, "Die Email Adresse ist ungultig!");
	var BADEMAILADDRESS	= new Array(206, "E-mail adresa nije korektna!");
	
	// patterns
	var intPattern		= "^[-]?[0-9]+$";
	var emailPattern 	= "[0-9a-zA-Z-_.]+@[0-9a-zA-Z-_.]+[.][0-9a-zA-Z-_.]+";
	
	function checkValidities(formName) {
	    var theForm = document[formName];
	    var m = theForm.mgnlValidity;
	    var i = 0;
	    var ok = true;
	    if (m) {
	        if (!m[0]) {
	            var tmp = m;
	            m = new Object();
	            m[0] = tmp;
			}
	        while (m[i]) {
	            var data = (m[i].value).split("|");
	            var mgnlField;
				
				var name 		= data[0];
				var type 		= data[1];
				var minLength 	= data[2];
				var maxLength 	= data[3];

	            if(document.all) 
					mgnlField=theForm(name);
	            else 
					mgnlField=theForm[name];
				
				if (!checkField(mgnlField, mgnlField.name, parseInt(type), minLength, maxLength)) {
					if (!mgnlField[0]) 
						mgnlField.focus();
					return false;
                }
				
				i++;
			}
		}
		return ok;
	}
	
	// check for valid field content
	function checkField (obj, fieldName, type, lengthMin, lengthMax) {
		var ok = false;
		if (obj == null) {
			alert(OBJ_NOT_FOUND[1]);
			return;
		}
		
		if (!checkLength(obj, lengthMin, lengthMax)) {
			return false;
		}
		
		switch (type) {
			case FIELD_TYPE_INTEGER :
				ok = checkInt(obj);
				break;
			case FIELD_TYPE_EMIL :
				ok = isValidEmailAddr(obj);
				break;
			default:
				ok = true;
				break;
		}
		
		return ok;
	}

	function checkLength(obj, min, max)
	{
		var v = getValue(obj);
		var l = v.length;
		var lenS = (max > 0) ? "(" + min + "-" + max + ")" : "(" + min + "- )";
		
		if (l < min) {
			if (l == 0) {
				if (!obj.disabled) {
					obj.focus();
				}
				alert(FLDREQ);
			}
			else {
				if (!obj.disabled) {
					obj.focus();
				}
				alert(FLDSHORT[1] + " " + lenS);
			}
			return false;
		}	
		if (max > 0 && l > max) {
			if (!obj.disabled) {
				obj.focus();
			}
			alert(FLDLONG[1] + " " + lenS);
			return false;
		}
		if (max == 0 && min == 0 && l > 0) {
			if (!obj.disabled) {
				obj.focus();
			}
			alert(FLDMUSTBEEMPTY[1]); 
			return false;
		}
		return true;
	}
	
	//--------------- int -----------------
	function isInt(obj)
	{
		if (isEmpty(obj)) {
			return true;
		}
		return isByRegexp(obj, intPattern);
	}

	function checkInt(obj)
	{
		if (isEmpty(obj)) {
			return true;
		}
		
		return checkByRegexp(obj, intPattern, "- 0-9");
	}

	function isByRegexp(obj, pattern)
	{
		if (isEmpty(obj)) {
			return true;
		}
		var val = getValue(obj);
		if (val.match(pattern) == null) {
			
			return false;
		}
		return true;
	}

	function checkByRegexp(obj, pattern, charsToMsg)
	{
		if (isEmpty(obj)) {
			return true;
		}
		if (!isByRegexp(obj, pattern)) {
			if (!obj.disabled) {
				obj.focus();
			}
			alert(BADCHAR[1] + " " + charsToMsg);
			return false;
		}
		return true;
	}

	function isValidEmailAddr(obj)
	{
		if (isEmpty(obj)) {
			return true;
		}
		
		if (isByRegexp(obj, emailPattern)) {
			return true;
		}
		else {
			alert(BADEMAILADDRESS[1]);
			return false;
		}
	}
	
	function getValue(o)
	{
		return trim(o.value);
	}

	function trim(str)
	{
	   return str.replace(/^\s*|\s*$/g, "");
	}

	function isEmptyStr(s)
	{
		if(s == null) {
			return true;
		}
		if (s.length == 0) {
			return true;
		}
		return false;
	} 

	function isEmpty(o)
	{
		return isEmptyStr(getValue(o));	
	} 