// Predefined regular expressions
var emailRegex =  "([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})";
var yearRegex = '[0-9]{4}';

// formControl object
function formControl  (elementid, required, minlength, regex, message) 
{
     this.elementid = elementid;
     this.required = required;
     this.minlength = minlength;
     this.regex = regex;
     this.message = message;
}

function ValidateForm(controls)
{
    valid = true;
	
	var message = "Warning:\n\n";
	
	for(var i = 0;i < controls.length;i++)
	{
	    var control = controls[i]; // FormControl object
	    var element = document.getElementById(control.elementid); // Actual form element

	     // Required field test
                    if ((control.required == 1) && (TrimString(element.value) == "")) {
    		valid = false;
    		message += element.name + " is required.\n";
                	}
        	
                    // Minimum length test
            	if ((control.minlength != -1) && (control.minlength > element.length)) {
                    	    valid = false;
                    	    message += element.name + " is to short.\n";
            	}
		
                    // Regular Expression test
                    if ((control.regex != '') && (element.value.match(control.regex) == null)) {
		        valid = false;
		         if (control.message == '') {
		             message += element.name + " is invalid.\n";
		         }
		         else {
		             message += control.message + '\n';
		         }
		    }		
	}

    if (valid == false) {
    	alert (message);
    }
    
    return valid;
}

function TrimString(str) {
    return str.replace(/^\s+|\s+$/g, '') ;
}