function CheckDone(oCtl, strError, res) {
    if (res) {
	oCtl.style.border = "1px inset";
    } else {
	alert(strError);
	oCtl.focus();
	oCtl.style.border = "1px solid red";
    }
    return res;
}

function CheckField() {
    switch (arguments[0]) {
	
    case 1 : // check for zero length
	return CheckNotEmpty(arguments[1], arguments[2]); break;
	
    case 2 : // check for valid email
	return CheckEmail(arguments[1], arguments[2]); break;
	
    case 3 : // check for integer value
	return CheckInt(arguments[1], arguments[2]); break;
	
    case 4 : // check for radio button selected
	return CheckRadio(arguments[1], arguments[2]); break;
	
    case 5 : // check for select option selected
	arguments[3] = !arguments[3] ? '' : arguments[3];
	return CheckSelect(arguments[1], arguments[2], arguments[3]); break;
	
    case 6 : // check for zero length text in Active-X instance
	return CheckActiveX(arguments[1], arguments[2]); break;
	
    case 7 : // check for equality
	return CheckEquality(arguments[1], arguments[2], arguments[3]); break;
	
    case 8 : // check for specified length
	return CheckSetLength(arguments[1], arguments[2], arguments[3], arguments[4]); break;
	
    case 9 : // check for alpha-numeric chars only
	return CheckAlphaNumeric(arguments[1], arguments[2]); break;
	
    case 10 : // check for checkbox selected
	return CheckCheckBox(arguments[1], arguments[2]); break;
	
    case 11 : // check select has options
	return CheckOptions(arguments[1], arguments[2], arguments[3], arguments[4]); break;
	
    case 12 : // check password
	return CheckPass(arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7]); break;
	
    case 13 : // check file extenstion
	return CheckFile(arguments[1], arguments[2], arguments[3]); break;
	
    default :
	return false;
	
    }
}

function CheckNotEmpty(oCtl, strError) {
    if (oCtl.value.length == 0) {
	return CheckDone(oCtl, strError, false);
    } else {
	return CheckDone(oCtl, strError, true);
    }
}

function CheckEmail(oCtl, strError) {
    if (!oCtl.value.match(new RegExp("^[^@\ ]+@[0-9A-Za-z\-\_]+([\.]([0-9A-Za-z\-\_]{1,}))+$"))) {
	return CheckDone(oCtl, strError, false);
    } else {
	return CheckDone(oCtl, strError, true);
    }
}

function CheckInt(oCtl, strError) {
    if (isNaN(oCtl.value)) {
	return CheckDone(oCtl, strError, false);
    } else {
	return CheckDone(oCtl, strError, true);
    }
}

function CheckSelect(oCtl, strError, intMin) {
    
    var intSel = 0;
    intMin = (intMin == 0 || isNaN(intMin)) ? 1 : intMin;

    for (var i = 0; i < oCtl.options.length; i++) {
	if (oCtl.options[i].selected) intSel++;
    }
    
    if ((oCtl.selectedIndex == 0 && oCtl.type == 'select-one') || ((oCtl.selectedIndex == -1 || (intMin.toString().length > 0 && intMin > 1 && intSel < intMin)) && oCtl.type == 'select-multiple')) {
	alert (strError);
	oCtl.focus();
	return false;
    } else {
	return true;
    }
    
}

function CheckRadio (oCtl, strError) {
    return CheckCheckBox(oCtl, strError);
}

function CheckActiveX(intEditLiveInstance, strError) {
    if (eval('editLive' + intEditLiveInstance + '.getText().length == 0')) {
	alert(strError);
	return false;
    } else {
	return true;
    }
}

function CheckEquality(oCtl1, oCtl2, strError) {
    if (oCtl1.value != oCtl2.value) {
	return CheckDone(oCtl1, strError, false);
    } else {
	return CheckDone(oCtl1, strError, true);
    }
}

function CheckSetLength(oCtl, iMin, iMax, strError) {
    if ((oCtl.value.length < iMin && iMin > 0) || (oCtl.value.length > iMax && iMax > 0)) {
	return CheckDone(oCtl1, strError, false);
    } else {
	return CheckDone(oCtl1, strError, true);
    }
}

function CheckAlphaNumeric(oCtl, strError) {
    if (!oCtl.value.match(new RegExp('/([a-z][A-Z][0-9])+/'))) {
	alert('Please ensure ' + strError + ' contains letters and numbers only');
	oCtl.focus();
	return false;
    } else {
	return true;
    }
}

function CheckCheckBox(oCtl, strError) {
    if (oCtl.length) {
	var blnChecked = false;
	for (var i = 0; i < oCtl.length; i++) {
	    blnChecked = (oCtl[i].checked || blnChecked);
	}
	if (!blnChecked) {
	    alert(strError);
	    oCtl[0].focus();
	    return false;
	} else {
	    return true;
	}
    } else {
	if (!oCtl.checked) {
	    alert(strError);
	    oCtl.focus();
	    return false;
	} else {
	    return true;
	}
    }
}

function CheckPass(oCtl, iMin, iMax, strError, arrFieldCtl, arrFieldName, strFieldError) {
    var blnError = false;

    if (!(oCtl.value.match(new RegExp('[a-z]')) && oCtl.value.match(new RegExp('[A-Z]')) && oCtl.value.match(new RegExp('[0-9]')))) {

	alert(strError);
	oCtl.focus();
	return false;

    } else {

	if (arrFieldCtl && arrFieldCtl.length && typeof(arrFieldCtl) == 'object' && arrFieldName && arrFieldName.length && typeof(arrFieldName) == 'object' && arrFieldCtl.length == arrFieldName.length) {
	    for (var i = 0; i < arrFieldCtl.length; i++) {
		if (oCtl.value == arrFieldCtl[i].value && !blnError) {
		    blnError = true;
		    alert(strFieldError + ' ' + arrFieldName[i]);
		    oCtl.focus();
		}
	    }
	}
	
	if (!blnError) {
	    return CheckSetLength(oCtl, iMin, iMax, strError);
	} else {
	    return false;
	}

    }
}
