var focusField;
var errorMsg;
function checkForm(formObj)
{
	focusField = "";
	errorMsg = "";
	emptyFields =   (typeof(reqFields) != 'undefined')   ? checkEmptyFields(formObj)  : false;
	noMatch =       (typeof(matchFields) != 'undefined') ? checkMatchFields(formObj)  : false;
	maxExceeded =   (typeof(taMaxLength) != 'undefined') ? checkMaxExceeded(formObj)  : false;
    optsExceeded =  (typeof(selMaxOpts) != 'undefined')  ? checkOptsExceeded(formObj) : false;
	
	if(emptyFields || noMatch || maxExceeded || optsExceeded)
	{
		document.getElementById("errorMsg").innerHTML = errorMsg + "<br />";
		formObj.elements[focusField].focus();
		return false;
	}
	return true;
}

function checkEmptyFields(formObj)
{
	hasError = false;
	for(i=0; i<reqFields.length; i++)
	{
		var isEmpty = false;
		var fieldType = formObj.elements[reqFields[i]].type;
		var fieldObj = formObj.elements[reqFields[i]];
		if(fieldType =="text" || fieldType == "password" || fieldType == "textarea")
		{
			if(emptyField(fieldObj))
			{
				isEmpty = true;
			}
		}
		else if(fieldType == "select-one" || fieldType == "select-multiple")
		{
			if(fieldObj.value=="")
			{
				isEmpty = true;
			}
		}
		else
		{
			getRadioValue(fieldObj);
			if(value=="")
			{
				isEmpty = true;
			}
		}
		if(isEmpty)
		{
			hasError = true;
			if(focusField == "")
				focusField = reqFields[i];
			document.getElementById(reqFields[i] + "Txt").style.color = "#900";
		}
		else
			document.getElementById(reqFields[i] + "Txt").style.color = "#000";
	}
	if(hasError)
	{
		errorMsg += "Please enter all required fields.<br />";
	}
		
	return hasError;
}

function checkMatchFields(formObj)
{
	hasError = false;
	for(i=0; i<matchFields.length; i++)
	{
		var fieldObj = formObj.elements[matchFields[i][0]];
		var matchFieldObj = formObj.elements[matchFields[i][1]];
		if(fieldObj.value != matchFieldObj.value)
		{
			hasError = true;
			errorMsg += matchFields[i][2] + " fields do not match.<br />";
			if(focusField == "")
				focusField = matchFields[i][0];
		}
	}
	return hasError;
}

function checkMaxExceeded(formObj)
{
	hasError = false;
	for(i=0; i<taMaxLength.length; i++)
	{
		var fieldObj = formObj.elements[taMaxLength[i][0]];
		if(fieldObj.value.length > taMaxLength[i][2])
		{
			hasError = true;
			errorMsg += taMaxLength[i][1] + " field can not contain more than " + taMaxLength[i][2] + " characters.<br />";
			if(focusField == "")
				focusField = taMaxLength[i][0];
		}
	}
	return hasError;
}

function checkOptsExceeded(formObj)
{
    hasError = false;
    for(i=0; i<selMaxOpts.length; i++)
    {
        var selNum = 0;
        var selObj = formObj.elements[selMaxOpts[i][0]];
        for(j=0; j<selObj.length; j++)
        {
            if(selObj.options[j].selected)
                selNum++;
            if(selNum > selMaxOpts[i][2])
            {
                hasError = true;
                errorMsg += selMaxOpts[i][1] + " field can not have more than " + selMaxOpts[i][2] + " items selected.<br />";
                if(focusField == "")
                    focusField = selMaxOpts[i][0];
                break;
            }
        }
    }
    return hasError;
}

function emptyField(textObj)
{
	if (textObj.value.length ==0)
	{
		return true;
	}
	for (var i=0; i<textObj.value.length; ++i)
	{
		var ch = textObj.value.charAt(i);
		if (ch != ' ' && ch != '\t')
		{
			return false;
		} 
	}
	return true;
}

function getRadioValue(radioObj)
{
	value="";
	for(var i=0; i<radioObj.length; i++)
	{
		if(radioObj[i].checked)
		{
			value=radioObj[i].value;
			break;
		}
	}
	return value;
}