/** 
 *
 *  Dojo JavaScript Registration Functions
 * 
 */

/**
 * 
 * Binds the registration form with the dojo FormBind
 *
 */
function bindRegistrationForm() {
    
  // Overide the FormBind submission to call the validateForm function
  dojo.lang.extend(dojo.io.FormBind, {
      onSubmit: function( /* DOMNode */ form) {
        return validateForm(form);
  }});

	
  var x = new dojo.io.FormBind( {

    formNode: document.getElementById('requestTestDriveForm'),

    load: function(load, data, event) {
      // We do nothing with the data here, for debugging it is
      // useful to output this as an alert();
      dojo.byId('requestFormTable').style.display = 'none';
      dojo.byId('requestSuccessTable').style.display = 'block';
    }
  }); 
}

/**
 * 
 * Validate the registration form
 *
 * Title, First Name, Last Name, Email, Phone Number 
 *
 */
function validateForm(form) {

  var isValidData = true;
  var errorMessage = '';
    
  // Validate Title
  
  if (form['title'].value == '') {
    errorMessage += 'Title is a required field<br/>';
    isValidData = false;
  }
  
  // Validate First Name
  
  if (form['firstName'].value == '') {
    errorMessage += 'First name is a required field<br/>';
    isValidData = false;
  }
  
  // Validate Last Name
  
  if (form['lastName'].value == '') {
    errorMessage += 'Last name is a required field<br/>';
    isValidData = false;
  }
  
  // Validate Address
  
  if (form['address'].value == '') {
  	errorMessage += 'Address is a required field<br/>';
  	isValidData = false;
  }
  
  // Validate Suburb 
  
  if (form['suburb'].value == '') {
  	errorMessage += 'Suburb is a required field<br/>';
  	isValidData = false;
  }
  
  // Validate City/Town
  
  if (form['city'].value == '') {
  	errorMessage += 'City/Town is a required field<br/>';
  	isValidData = false;
  }
  
  
  // Validate Email Address
  
  if (form['emailAddress'].value == '') {
    errorMessage += 'Email address is a required field<br/>';
    isValidData = false;
  } else if (form['emailAddress'].value != '') {
    var valid_email = /^[\w-]+(\.{1}[\w-]+)*@[a-z0-9-]+(\.{1}[a-z0-9-]+)+$/i;
    if (form['emailAddress'].value.search(valid_email) < 0) {
      errorMessage += 'Please enter a valid email address<br/>';
      isValidData = false;
    }
  }  
  
 // Validate Phone Number 
  
  if (form['phoneNumber'].value == '') {
  	errorMessage += 'Phone number is a required field<br/>';
  	isValidData = false;
  }

 // Validate Dealer
  
  if (form['dealerID'].value == 0) {
    errorMessage += 'Please select a dealer<br/>';
    isValidData = false;
  }
  
  // Set Error Message for Dialog
  dojo.byId('errorDialogMessage').innerHTML = errorMessage;
  
  // Display Dialog
  if (!isValidData) {
    var errorDialog = dojo.widget.byId('errorDialog');
    errorDialog.show();
    errorDialog.setCloseControl('errorDialogCloseControl');
  }
  
  return isValidData;
}

/**
 * 
 * Closes the error dialog
 *
 */
function closeErrorDialog() {
    dojo.widget.byId('errorDialog').hide();
}

/**
 * 
 * Handler for the getRegionDealers RPC.
 *
 * Updates the region dealers to contain dealers based on
 * the region selected.
 *
 */
function updateRegionDealers(type, data, event) {
  dojo.byId('regionDealers').innerHTML = data;
}

/**
 * 
 * Gets the region delears when selecting a region from
 * the dropdown selector.
 *
 */
function getRegionDealers(region) {
  request = {regionID: region.value};
  dojo.io.bind({
    url: '/ratd/RequestController.php',
    load: updateRegionDealers,
    mimetype: 'text/plain',
    content: request
  });
}
