isDOM = document.getElementById ? 1:0;

// Validator function for RADIO and CHECKBOX elements
function chkForChecked (f,fld,msg) {
    var frm = f;
    var e;
    var j = 0;

    if(isDOM) {
        e = document.getElementsByTagName('INPUT'); // returns a Node List
        for (var i=0; i<=e.length-1; ++i){
            if(e[i].name == fld) {
                if(j==0)j=i;
                if ( e[i].checked ) return true;  // one is checked after all!
            }
        }
    }else{
        e = f.elements[fld] ; // returns an array of elements
        for( var i=0; i < e.length; ++i ) {
            if ( e[i].checked ) {
                return true;  // one is checked after all!
                break;
            }
        }
    }

//    alert( msg );
//    e[j].focus() ;
    return false;
}

// Validator function for TEXT and TEXTAREA elements
function chkForNonblank (f,fld,msg) {
    var frm = f ;
    var e = f.elements[fld]

    if ( ! empty(trim(e.value))  ) return true;
    //e.focus() ;
    return false;
}

// Validator function for SELECT elements
function chkForIsSelected (f,fld,msg) {
    var frm = f ;
    var e = f.elements[fld]

    if ( ! e.selectedIndex == 0 ) return true;
    //alert( msg );
    //e.focus() ;
    return false;
}


// Validator function to check for numeric values.
function chkNumeric (f,fld,msg) {
    var frm = f ;
    var e = f.elements[fld]

	var x = new String (e.value);
	x = remove_formatting ( x );
//	e.value = x;

    if ( is_numeric(x) ) return true;
    return false;
}

// Validator function to check for numeric values.
function chkGTZ (f,fld,msg) {
    var frm = f ;
    var e = f.elements[fld]

	var x = new String (e.value);
	x = x.replace(/,/g,"");
	x = remove_formatting ( x );
   	if (x > 0) return true;
    return false;
}

// Validator function to check for valid email address.
function chkForValidEmail (f,fld,msg) {
    var frm = f ;
    var e = f.elements[fld]

    if ( isValidEmail(trim(e.value))  ) return true;
//    e.focus() ;
    return false;
}

// Validator function to check for valid ID Number.
function chkForValidIDNumber (f,fld,msg) {
    var frm = f ;
    var e = f.elements[fld]

    if ( isValidIDNumber(trim(e.value))  ) return true;
//    e.focus() ;
    return false;
}

// Validator function to check for valid date.
function chkForValidDate (f,fld,msg) {
    var frm = f ;
    var e = f.elements[fld]

    if ( validateDate(trim(e.value))  ) return true;
//    alert( msg );
//    e.focus() ;
    return false;
}

// Validator function to check for confirmed values.
function chkForTheSame (f,fld,msg) {
    var frm = f ;
    var e1 = f.elements[fld[0]];
    var e2 = f.elements[fld[1]];

    if ( e1.value == e2.value)  return true;
//    alert( msg );
//    e2.focus() ;
    return false;
}

function validateForm(f, fields) {
	var b_errors = false;
	var c_errors = "";
	if (fields instanceof Array) {
		fieldsToCheck = fields;
	}
	for( var i=0; i < fieldsToCheck.length; ++i ) {
		if (! fieldsToCheck[i][1] (f,fieldsToCheck[i][0],fieldsToCheck[i][2]) ) {
			b_errors = true;
			if (fieldsToCheck[i][0] instanceof Array) {
				c_errors += "&nbsp;&bull;&nbsp;" + fieldsToCheck[i][2] + "&nbsp;<br />";
			} else {
				c_errors += "&nbsp;&bull;&nbsp;" + fieldsToCheck[i][2] + "&nbsp;<br />";
			}
		}
	}

	if (b_errors) {
		document.getElementById("err_table").style.display = "block";
		document.getElementById("err_table_text").innerHTML = c_errors + "Please correct these issues and try again.";
		//initPage();
		return false;
	}
	document.getElementById("err_table").style.display = "none";
	document.getElementById("err_table_text").innerHTML = "";
	return true ;
}
