/************************
Name: Form checker
Date: 2004/01/11
Modification: 
	- 2005/03/26 Compare Object function
Purpose: Validate form element

Written by: Peter Dikhazi

************************/
function fnFormValidate(divElem) {
    //collect all information

    var oColl;
    var d;
    if (divElem == null) {
        d = document;
        oColl = document.getElementsByTagName('SPAN');
    } else {
        d = document.getElementById(divElem);
        if (d == null) return;
        else {
            
            oColl = d.getElementsByTagName('SPAN');
        }
    }
    var error = '';

    try {
        for (var i = 0; i < oColl.length; i++) {
            if (oColl[i].getAttribute('soda_error') == '1') {
                var vType = oColl[i].getAttribute('soda_validation_type');
                var validateObjectName = oColl[i].getAttribute('soda_validate_object');
                var validateObjects = document.getElementsByName(validateObjectName);
                var validateObject = null;
                if (validateObjects.length > 0) {

                    if (validateObjects[0].tagName == 'SELECT') {
                        validateObject = validateObjects[0].options[validateObjects[0].selectedIndex];
                    } else {
                        validateObject = validateObjects[0];
                    }

                    var compareValue = oColl[i].getAttribute('soda_compare_value');
                    var errorMessage = oColl[i].getAttribute('soda_errormessage');
                    var compareObject = null;
                    if (oColl[i].getAttribute('soda_compare_object') != '') {
                        compareObject = document.getElementById(oColl[i].getAttribute('soda_compare_object'));
                    }
                    var regExp;
                    if ((vType != null) && (validateObject != null)) {
                        switch (vType.toUpperCase()) {
                            //Required fields 
                            case 'REQUIRED':
                                if (validateObject.value != null) {
                                    if (validateObject.value.replace(/(^\s*)|(\s*$)/g, "") == '') {
                                        error += errorMessage + '\n';
                                    }
                                }

                                break;
                            //EQUAL 
                            case 'EQUAL':
                                if (validateObject.value != null) {

                                    if ((compareValue == "") && (compareObject != null)) {
                                        if (validateObject.value.replace(/(^\s*)|(\s*$)/g, "") == compareObject.value.replace(/(^\s*)|(\s*$)/g, "")) {
                                            error += errorMessage + 's\n';
                                        }
                                    } else {
                                        if (validateObject.value.replace(/(^\s*)|(\s*$)/g, "") == compareValue) {
                                            error += errorMessage + '\n';
                                        }
                                    }
                                }
                                break;
                            //NOTEQUAL 
                            case 'NOTEQUAL':
                                if (validateObject.value != null) {

                                    if ((compareValue == "") && (compareObject != null)) {
                                        if (validateObject.value.replace(/(^\s*)|(\s*$)/g, "") != compareObject.value.replace(/(^\s*)|(\s*$)/g, "")) {
                                            error += errorMessage + '\n';
                                        }
                                    } else {
                                        if (validateObject.value.replace(/(^\s*)|(\s*$)/g, "") != compareValue) {
                                            error += errorMessage + '\n';
                                        }
                                    }
                                }
                                break;
                            case 'EMAIL':
                                //
                                var regularExpress = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
                                regExp = new RegExp(regularExpress);
                                var ma = regExp.exec(validateObject.value);
                                if (ma == null) {
                                    error += errorMessage + '\n';
                                }
                                break;
                            case 'URL':
                                var regularExpress = /^(?:(?:ftp|https?):\/\/)?(?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)+(?:com|edu|biz|org|gov|int|info|mil|net|name|museum|coop|aero|[a-z][a-z])\b(?:\d+)?(?:\/[^;"'&lt;&gt;()\[\]{}\s\x7f-\xff]*(?:[.,?]+[^;"'&lt;&gt;()\[\]{}\s\x7f-\xff]+)*)?/;
                                regExp = new RegExp(regularExpress);

                                var ma = regExp.exec(validateObject.value);
                                if (ma == null) {
                                    error += errorMessage + '\n';
                                }
                                break;
                            case 'ISDATE':
                                //var regularExpress =  /(([1-9]|[1-2][0-9]|3[0-1]|0[1-9])[/ /.]([1-9]|1[0-2]|0[1-9])[/ /.]([1-9][0-9])\d\d)|(([1-9]|[1-2][0-9]|3[0-1]|0[1-9])[- /.](0[1-9]|1[0-2]|[1-9])[- /.]([1-9][0-9])\d\d)/;						
                                //regExp = new RegExp(regularExpress);						
                                //var ma = regExp.exec(validateObject.value);	
                                //if (ma == null){
                                //	error += errorMessage + '\n';
                                //}	
                                break;
                        } //switch
                    } //if
                } //if
            } //if
        } //for
    } catch (e) {
        alert(e.message);
        return false;
    }
    if (error.length != 0) {
        var messageHeader = 'Fields with an * are required.\nThe following required fields are missing:\n';
        var messageFooter = '\nPlease fill out all required fields and resubmit the form.';
        var header = document.getElementById('sys_message_header');
        var footer = document.getElementById('sys_message_footer');
        if (header != null) messageHeader = header.value;
        if (footer != null) messageFooter = footer.value;
        alert(messageHeader + '\n\n' + error + '\n' + messageFooter);
        return false;
    } else {
        return true;
    }
}
function IsInteger(control) {
    // parse the input as an integer
    var intValue = parseInt(control.value, 10);

    // if this is not an integer
    if (isNaN(intValue)) {

        // clear text box
        control.value = '';

    }
    // if this is an integer
    else {

        switch (true) {
            case (intValue == 0):
                // clear text box
                control.value = '';
                break;
            case (intValue > 0):
                // put the parsed integer value in the text box
                if (intValue > 2000) {
                    control.value = '2000';
                } else {
                    control.value = intValue.toString();
                }
                break;
            case (intValue < 0):
                // put the positive parsed integer value in the text box
                control.value = (-1 * intValue).toString();
                break;
        }
    }
}
