var requiredField = '* Required'; 

function validateRegistration( obj ) {
    var isValid = true; 
    var validEmail = /^[a-z](?:\.[a-z0-9]|-+[a-z0-9]|[a-z0-9_])*@[a-z0-9](?:[a-z0-9\-]+[a-z0-9]|[a-z0-9]+)*(\.[a-z]{2,9}){1,3}$/i;


    document.getElementById('shippingAddress').innerHTML = ''; 
    document.getElementById('emailAddress').innerHTML = ''; 
    document.getElementById('userPassword').innerHTML = ''; 
    document.getElementById('companyName').innerHTML = ''; 
    document.getElementById('phoneNumber').innerHTML = ''; 
    document.getElementById('faxNumber').innerHTML = ''; 
    document.getElementById('yourName').innerHTML = '';
    document.getElementById('shippingCity').innerHTML = '';
    document.getElementById('shippingProv').innerHTML = '';
    document.getElementById('shippingCountry').innerHTML = '';
    document.getElementById('shippingPostal').innerHTML = '';
    document.getElementById('utAcctManager').innerHTML = '';

    if ( obj.companyName.value == '' ) {
        isValid = false; 
        document.getElementById('companyName').innerHTML = requiredField; 
    }
    
    if ( obj.yourName.value == '' ) {
        isValid = false; 
        document.getElementById('yourName').innerHTML = requiredField; 
    }
    
    if ( obj.shippingAddress.value == '' ) {
        isValid = false; 
        document.getElementById('shippingAddress').innerHTML = requiredField; 
    }

    if ( obj.shippingCity.value == '' ) {
        isValid = false; 
        document.getElementById('shippingCity').innerHTML = requiredField; 
    }

    if ( obj.shippingProv.value == '' ) {
        isValid = false; 
        document.getElementById('shippingProv').innerHTML = requiredField; 
    }

    if ( obj.shippingCountry.value == '' ) {
        isValid = false; 
        document.getElementById('shippingCountry').innerHTML = requiredField; 
    }

    if ( obj.shippingPostal.value == '' ) {
        isValid = false; 
        document.getElementById('shippingPostal').innerHTML = requiredField; 
    }
    
    if ( obj.emailAddress.value == '' ) {
        isValid = false; 
        document.getElementById('emailAddress').innerHTML = requiredField; 
    } else {
        obj.emailAddress.value = stripWhiteSpace(obj.emailAddress.value); 
        if ( !validEmail.test(obj.emailAddress.value) ) {
            isValid = false; 
            document.getElementById('emailAddress').innerHTML = '* The email does not appear to be valid'; 
        }
    }
    
    if ( obj.userPassword.value == '' || obj.verifyPassword.value.length < 6 ) {
        isValid = false; 
        document.getElementById('userPassword').innerHTML = '* must be 6 or more characters'; 
    } else if ( obj.verifyPassword.value != obj.userPassword.value ) {
        isValid = false; 
        document.getElementById('userPassword').innerHTML = '* passwords you entered do not match'; 
    }
    
    if ( obj.phoneNumber.value == '' ) {
        isValid = false; 
        document.getElementById('phoneNumber').innerHTML = requiredField; 
    } else {
        obj.phoneNumber.value = stripNonDigits(obj.phoneNumber.value); 
        if ( obj.phoneNumber.value.length != 10 ) {
            document.getElementById('phoneNumber').innerHTML = '* Phone number must contain 10 digits'; 
            isValid = false; 
        } else {
            obj.phoneNumber.value = formatTelephoneNumber(obj.phoneNumber.value); 
        }
    }
    
    if ( obj.faxNumber.value != '' ) {
        obj.faxNumber.value = stripNonDigits(obj.faxNumber.value); 
        if ( obj.faxNumber.value.length != 10 ) {
            document.getElementById('faxNumber').innerHTML = '* Fax number must contain 10 digits'; 
            isValid = false; 
        } else {
            obj.faxNumber.value = formatTelephoneNumber(obj.faxNumber.value); 
        }
    }
    
    if ( obj.utAcctManager.value == '' ) {
        document.getElementById('utAcctManager').innerHTML = '* required';
        isValid = false;
    }
    
    return isValid; 
}


function stripWhiteSpace( str ) {
    return str.replace(/\s/g,""); 
}


function stripNonDigits( str ) {
    return str.replace(/[^0-9]/g,""); 
}


function formatTelephoneNumber( str ) {
    return str.substring(0,3) + '-' + str.substring(3,6) + '-' + str.substring(6,10); 
}