$(document).ready(function(){
   
    $("#search-form div").load("/projectx/form.html", null, function() {
		$("#firstName").focus(function (){
  			if ($(this).val() == 'This is a required field.') {
  				$(this).val('').removeClass('error-handling-text');
  			}
  		});
  
  		$("#lastName").focus(function (){
  			if ($(this).val() == 'This is a required field.') {
  				$(this).val('').removeClass('error-handling-text');
  			}
  		});
  
  		$("#email").focus(function (){
  			if ($(this).val() == 'This is a required field.') {
  				$(this).val('').removeClass('error-handling-text');
  			}
  		});
  
  		$("#phone").focus(function (){
  			if ($(this).val() == 'This is a required field.') {
  				$(this).val('').removeClass('error-handling-text');
  			}
  		});
  
  		$("#timeToCall").focus(function (){
  			if ($(this).val() == 'This is a required field.') {
  				$(this).val('').removeClass('error-handling-text');
  			}
  		});
  	});
  
  var options = {
    target: '#search-form',
    beforeSubmit:  processRequest,
    success: processResponse,
    beforeSubmit: validateRequest,
    url: '/projectx/form.html',
    clearForm:	false,
    resetForm: false,
    type: 'post'
  };
  
  $("#search-form").ajaxForm(options); 
  
});

function processResponse(responseText, statusText)  { 
 	window.location = "/confirm.html";
}

function processRequest(formData, jqForm, options) { 
    var queryString = $.param(formData); 
    return true; 
} 

function checkEmail(val) {
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(val)){
		return (true)
	}
	return (false)
}

var phoneError = "";

function checkPhone(val) {
    var stripped = val.replace(/[\(\)\.\-\ \e\x\t]/gi, '');  
    stripped = stripped.replace(/[e]/gi, ''); 
    stripped = stripped.replace(/[x]/gi, ''); 
    stripped = stripped.replace(/[t]/gi, ''); 
    
	if (isNaN(stripped)) {
        phoneError = "The phone number contains illegal characters.";
        return false;
    } else if (stripped.length < 10) {
        phoneError = "The phone number is the wrong length. Make sure you include an area code.";
        return false;
    }
    
    return true;
}

function formatText(tmp) {
    var l = tmp;
    return l.substr(2,tmp.length-1); 
}

function validateRequest(formData, jqForm, options) { 
    var errorFound = true;
    var badEmail = false;
    var emailAddress = '';
    var badPhone = false;
    var phone = '';
    
    // addClass : removeClass

    for (var i=0; i < formData.length; i++) { 
        if ((!formData[i].value && (formData[i].name != 'comments')) || (formData[i].value == 'This is a required field.')) { 
        	$("#"+formData[i].name).val('This is a required field.');
        	$("#"+formData[i].name).addClass('error-handling-text');
            errorFound = false;
        } else {
        	$("#"+formData[i].name).removeClass('error-handling-text');
        }
        
        if (formData[i].name == 'email') {
        	emailAddress = formData[i].value;
        }
        
        if (formData[i].name == 'phone') {
        	phone = formData[i].value;
        }
    } 
    
    var errorMessage = "";
    
    if (errorFound) {
    	if (!checkEmail(emailAddress)) {
    		badEmail = true;
    		errorMessage = errorMessage + "   * Invalid Email Address\n";
    	}
    	
    	if (!checkPhone(phone)) {
    		badPhone = true;
    		errorMessage = errorMessage + "   * "+ phoneError +"\n";
    	}
    }
    
    if (badEmail || badPhone) {
    	alert("The following errors have occurred:\n\n" + errorMessage);
        errorFound = false;
    } 
    
    return errorFound;
}