window.ajaxBusy = false;

function request_address() {
  if (window.ajaxBusy) {
    return false;
  } else {
    window.ajaxBusy = true;

    var postcode = $('postcode').value;

    if (postcode == '') {
      window.ajaxBusy = false;

      return false;
    }

    $('line1').disabled = true;
    $('line2').disabled = true;
    $('town').disabled = true;
    $('county').disabled = true;
    $('postcode').disabled = true;

    $('line1').value = '';
    $('line2').value = '';
    $('town').value = '';
    $('county').value = '';
    // $('postcode').value = '';

    new Ajax('/getAddress.php?postcode=' + escape(postcode) + '&json=1', {
      method: 'get',

      onRequest: function() {
      },

      onComplete: function() {
        // responseText contains 'var data = {...};'
        eval(this.transport.responseText);

        $('line1').disabled = false;
        $('line2').disabled = false;
        $('town').disabled = false;
        $('county').disabled = false;
        $('postcode').disabled = false;

        // check for an error
        if (data.errorNo) {
          alert('Please enter a valid postcode.');
          $('postcode').focus();

        } else {
          if (data.line1) {
            $('line1').value = data.line1;
          }

          if (data.line2) {
            $('line2').value = data.line2;
          }

          if (data.town) {
            $('town').value = data.town;
          }

          if (data.county) {
            $('county').value = data.county;
          }

          if (data.postcode) {
            $('postcode').value = data.postcode;
          }
          
          $('building').focus();
        }

        window.ajaxBusy = false;
      },

      onSuccess: function() {
      },

      onFailure: function() {
      }
    }).request();
  }
}