/**
 * so far, this handles text inputs, radio buttons/checkboxes, and textareas
 * it is nice that this doesn't require a JS library (like Prototype or jQuery) to work
 * the error strings might have to be customized
 * use this ---> <form ... onsubmit="return checkRequired(this);">
 */

function checkRequired(form) {
    var inputEle    = form.getElementsByTagName('input');
    var textareaEle = form.getElementsByTagName('textarea');
    var requiredEle = new Array();
    var errors = new Array();

    for(i = 0; i < inputEle.length; i++) {
        if(inputEle[i].getAttribute("name") == 'required') {
            requiredEle[inputEle[i].value] = 1;
        }
    }

    var error_strings = {
        firstname   : 'Please enter your first name.',
        lastname    : 'Please enter your last name.',
        email       : 'Please enter your email address.',
    };

    var requiredRadioEle     = new Array();
    var requiredRadioEleHash = new Array();

    for(i = 0; i < inputEle.length; i++)
    {
        if(requiredEle[inputEle[i].name])
        {
            if(inputEle[i].type == "radio")
            {
                if( ! requiredRadioEleHash[inputEle[i].name] )
                {
                    requiredRadioEle.push(inputEle[i]);

                    requiredRadioEleHash[inputEle[i].name] = 1;
                }

                if(inputEle[i].checked)
                {
                    requiredRadioEleHash[inputEle[i].name] = 2;
                }
            }
            else
            {
                if(inputEle[i].value.length < 1) {
                    //errors.push('The Field ' + inputEle[i].getAttribute("name") + ' is required.');
                    errors.push(error_strings[inputEle[i].getAttribute("name")]);
                }
            }
        }
    }

    for(i = 0; i < requiredRadioEle.length; i++)
    {
        if( requiredRadioEleHash[requiredRadioEle[i].name] == 1 )
        {
            errors.push(error_strings[requiredRadioEle[i].name]);
        }
    }

    for(i = 0; i < textareaEle.length; i++) {
        if(requiredEle[textareaEle[i].getAttribute("name")]) {
            if(textareaEle[i].value.length < 1) {
                //errors.push('The Field ' + textareaEle[i].getAttribute("name") + ' is required.');
                errors.push(error_strings[textareaEle[i].getAttribute("name")]);
            }
        }
    }

    if(errors.length > 0) {
        alert("Please fix the following errors:\n\n" + errors.join("\n"));
        return false;
    }

    return true;
}

