$.extend($.blockUI.defaults.overlayCSS, { backgroundColor: '#000' });
$.extend($.blockUI.defaults.pageMessageCSS, { width: 'auto', margin: '0', visibility: 'hidden' });

$(function() {
  $("#find_address").bind("click", findAddress);
  $("#manual_address").bind("click", manualAddress);
});

function findAddress() {
  var form = $("#ce_info_form")[0];
  
  if ($("#postcode").val() != "") {
    $.post(form.action, $(form).formSerialize() + "&find_address=true&ajax=true", displayAddresses);
  } else {
    alert("You need to enter at least a postcode before searching for your address");
  };
  
  return false;
};

function manualAddress() {
  var form = $("#ce_info_form")[0];
  $.post(form.action, $(form).formSerialize() + "&manual_address=true&ajax=true", expandAddress);
  return false;
};

function displayAddresses(response) {
  var modal = $("<form></form>").append(response);
  var submit = $("#select_address", modal);
  
  if (submit.length != 0) {
    // Success
    modal.bind("submit", addressSelected);
    submit.remove();
    $("select", modal).bind("click", function() {
      $(this).unbind();
      modal.submit();
    });
  } else {
    // Error
    $("input", modal).bind("click", manualAddress);
  };
  
  $.blockUI(modal);
  $('.blockMsg').css({
    "margin-left": -$('.blockMsg')[0].clientWidth/2,
    "margin-top": -$('.blockMsg')[0].clientHeight/2,
    visibility: 'visible'
  });
};

function addressSelected() {
  var selectedId = $("select", this)[0].value;
  var form = $("#ce_info_form")[0];
  $.post(form.action, $(form).formSerialize() + "&address_id=" + selectedId + "&ajax=true", expandAddress);
  return false;
};

function expandAddress(addressFields) {
  var newFields = $("<div></div>").append(addressFields).hide();
  var oldFields = $("#address_fields").after(newFields);
  newFields.slideDown("slow");
  oldFields.slideUp("slow", function() {
    oldFields.remove();
    newFields.attr("id", "address_fields");
  });
  $.unblockUI();
};

