function XBrowserAddHandler(target, eventName, handlerName) {
    if (target.addEventListener)
        target.addEventListener(eventName, handlerName, false);
    else if (target.attachEvent)
        target.attachEvent("on" + eventName, handlerName);
    else
        target["on" + eventName] = handlerName;
}

XBrowserAddHandler(window, "load", function() {
    //Wire up nested form to main form
    if (document.getElementById('nestedForm')) {
        var nestedForm = document.getElementById('nestedForm');
        if (nestedForm) {
            if (nestedForm.getAttribute('name'))
            { document.forms[0].name = nestedForm.getAttribute('name'); }
            if (nestedForm.getAttribute('action'))
            { document.forms[0].action = nestedForm.getAttribute('action'); }
            if (nestedForm.getAttribute('target'))
            { document.forms[0].target = nestedForm.getAttribute('target'); }
            if (nestedForm.getAttribute('method'))
            { document.forms[0].method = nestedForm.getAttribute('method'); }
            if (nestedForm.getAttribute('onsubmit'))
            { document.forms[0].onsubmit = nestedForm.getAttribute('onsubmit'); }

            if (nestedForm.getAttribute('action').indexOf("reportwindow.aspx") == -1) {
                var frmname = document.createElement("input");
                frmname.name = "frmname";
                frmname.value = nestedForm.getAttribute('name');
                frmname.type = "hidden";
                var thankyoupage = document.createElement("input");
                thankyoupage.name = "thankyoupage";
                thankyoupage.value = nestedForm.getAttribute('vlink');
                thankyoupage.type = "hidden";
                var email = document.createElement("input");
                email.name = "frmemail";
                email.value = nestedForm.getAttribute('defer');
                email.type = "hidden";
                var emailSubject = document.createElement("input");
                emailSubject.name = "frmemailsubject";
                emailSubject.value = nestedForm.getAttribute('alt');
                emailSubject.type = "hidden";
                nestedForm.appendChild(frmname);
                nestedForm.appendChild(thankyoupage);
                nestedForm.appendChild(email);
                nestedForm.appendChild(emailSubject);
            }
            else {
                var reporturl = document.createElement("input");
                reporturl.name = "reportURL";
                reporturl.value = nestedForm.getAttribute('vlink');
                reporturl.type = "hidden";
                nestedForm.appendChild(reporturl);
            }
            //Hidden fields aren't retaining thier names in TinyMCE using IE7, this is a hack to make sure they have names
            //            for (var i = 0; i < nestedForm.childNodes.length; i++) {
            //                if (nestedForm.childNodes[i].type == "hidden" && nestedForm.childNodes[i].name == "" && nestedForm.childNodes[i].id != undefined)
            //                { nestedForm.childNodes[i].name = nestedForm.childNodes[i].id; }
            //            }
        }
    }
});
    //does the actual checking
function CheckForm(theform) {
    var prevElementName = '';
    var isChecked = false;
    var verifyRadioCheckBox = false;
    var form_err = '';
    for (var i = 0; i < theform.elements.length; i++) {
        if (verifyRadioCheckBox && prevElementName != theform.elements[i].name) {
            if (!isChecked)
                form_err = form_err + '\n  -- ' + prevElementName;
            else
                isChecked = false;
            verifyRadioCheckBox = false;     
        }
        theform.elements[i].disabled = 'true';
        if (theform.elements[i].getAttribute('required') != undefined && theform.elements[i].getAttribute('required') == 'true') {
            var theType = theform.elements[i].getAttribute('type');
            if (theType == undefined || ((theType != 'radio') && (theType != 'checkbox'))) {
                if (theform.elements[i].value == undefined || theform.elements[i].value == '') {
                    //for "select" type elements
                    if (theform.elements[i].length != undefined) {
                        if (theform.elements[i].selectedIndex > 0) {
                            if (theform.elements[i].selectedIndex == undefined || theform.elements[i].options[theform.elements[i].selectedIndex] == undefined || theform.elements[i].options[theform.elements[i].selectedIndex].value == '') {
                                form_err = form_err + '\n  -- ' + theform.elements[i].name;
                            }
                        }
                        else
                        { form_err = form_err + '\n  -- ' + theform.elements[i].name; }
                    }
                    else form_err = form_err + '\n  -- ' + theform.elements[i].name;
                }
            }
            else {
                // for "radio" and "checkbox" to see if at least one has been 'checked'
                verifyRadioCheckBox = true;
                if (theform.elements[i].checked)
                    isChecked = true;
            }   
        }
        prevElementName = theform.elements[i].name;
    }
    if (verifyRadioCheckBox && !isChecked) {
            form_err = form_err + '\n  -- ' + prevElementName;
    }
    for (var i = 0; i < theform.elements.length; i++) theform.elements[i].disabled = '';

    if (form_err != '') {
        form_err = "The following fields are required:" + form_err;
        alert(form_err);
        return false;
    } else return true;
}

    
    
    //for full browser compatibility, instead of javascript: void or similar
    function doNothing() { }
    
    //holds the form action attribute
    var actTemp = '';
    
    //called onsubmit
    function SendRequest(theform, ajax) {
        var the_err = '';
        if (theform.action != 'javascript: doNothing();' && theform.action != '') actTemp = theform.action;
        theform.action = 'javascript: doNothing();';
        var formConf = CheckForm(theform);
        if (formConf) {
            if (ajax) {
                // coming soon...
            }
            else {
                theform.action = actTemp;
                theform.onsubmit = '';
                theform.submit();
            }
        }
    }
