var fields = {
    firstName        : { expr : /.+/, message : '' },
    lastName         : { expr : /.+/, message : '' },
    zipCode          : { expr : /\d{5}/, message : '' },
    primaryVehicle   : { expr : /.+/, message : '' },
    phone1           : { expr : /.+/, message : '', call: function(){ return $('email').value.length == 0; } },
    email            : { expr : /.+/, message : '', call: function(){ return $('phone1').value.length == 0; } },
    comments         : { expr : /.+/, message : '' }
};

var checkForm = function()
{
    var valid = true;

    for ( var fieldID in fields )
    {
        var field = $( fieldID );
        var label = $$( 'label[for=' + fieldID + ']' );

        if ( ( fields[ fieldID ].call && fields[ fieldID ].call.call( field ) === true ) || !fields[ fieldID ].call )
        {
            if ( !field.value.test( fields[ fieldID ].expr ) ) {
                label.addClass( 'error' );
					valid = false;
            }
            else
                label.removeClass( 'error' );
        }
        else
            label.removeClass( 'error' );
    }

	if ( valid == false ) {
		errorEvent(); //trigger Omniture error function					
		return false
	} else {
		var zipcodeResponse = queryWebService().response.text;
		
		if (!isValid(zipcodeResponse)) {
			alert('Please provide a valid Zip Code')
			return false;
		}else{
			return true;
		}
	}
}

window.addEvent('domready', function()
{
    $('submit-request').addEvent('click', function( event )
    {
        if ( checkForm() )
            $( 'contactDealerForm' ).submit();

        new Event( event ).stop();
    });
});

function queryWebService() {

	var zip = $('zipCode');

	var req = new Request({
             method: 'get',
             url: '../testzipcode.asp',
             data: { 'zipcode' : zip.value },
			 async: false,
             onComplete: function(response) { return response; }
         }).send();

		return req;
}


function isValid(zipcodeResponse) {	
	var regCheck = new RegExp('<error>');

	return !regCheck.exec(zipcodeResponse);
}