function formCheck(formobj, fieldsNames, fieldsDescriptions, fieldsPantternsIDs, RequiredTitle, notInPatternTitle) {
/***********************************************
* Required field(s) validation v1.10- By NavSurf
* Visit Nav Surf at http://navsurf.com
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

	// dialog message
    var requiredText = "";
    var notInPatternText = "";

    for (var i = 0; i < fieldsNames.length; i++) {
        var obj = formobj.elements[fieldsNames[i]];
		if (obj){
			switch(obj.type){
			case "select-one":
				if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
				    requiredText += " - " + fieldsDescriptions[i] + "\n";
				}
				break;
			case "select-multiple":
				if (obj.selectedIndex == -1){
				    requiredText += " - " + fieldsDescriptions[i] + "\n";
				}
				break;
			case "text":
			case "textarea":
			    if (fieldsPantternsIDs[i] % 2 == 0 && (obj.value == "" || obj.value == null)) { //%2 == 0 means it is requeierd (can't be null);
			        requiredText += " - " + fieldsDescriptions[i] + "\n";
			    }
			    if (fieldsPantternsIDs[i] % 2 == 0) fieldsPantternsIDs[i] /= 2;
			    if (!validateRegex(obj, fieldsPantternsIDs[i])) {
			        notInPatternText += " - " + fieldsDescriptions[i] + " " + notInPatternTitle + "\n";
			    }
			    break;
			default:
			}
			if (obj.type == undefined){
				var blnchecked = false;
				for (var j = 0; j < obj.length; j++){
					if (obj[j].checked){
						blnchecked = true;
					}
				}
				if (!blnchecked){
				    requiredText += " - " + fieldsDescriptions[i] + "\n";
				}
			}
		}
    }
    if (requiredText != "") requiredText = RequiredTitle + "\n" + requiredText + "\n";

    var finalText = requiredText + notInPatternText;

	if (finalText == "") {
		return true;
	}else{
	    alert(finalText);
		return false;
	}
}

function validateRegex(obj, patternId)
{
    var val = obj.value;
    var pattern = getPattern(patternId);

    if (val == null || val.length == 0 || pattern.test(val) == true) {
        return true;
    }
    else {
        return false;
    }
}

function getPattern(patternId)
{
    switch (patternId) {
        case 1:
            return /./;
            break;
        case 3: //Email
            return /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
            break;
        case 5: //Israeli CellPhone
            return /^05[0247]{1}(\-)?[^0\D]{1}\d{6}$/;
            break;
    }

}
