function shipBill()
{
  var af = document.addform
	if (!af.ship_bill.checked)
	{
		// clear shipping fields
		af.saddr1.value = "";
		af.saddr2.value = "";
		af.scity.value = "";
		af.scountyprovince.value = "";
		af.spostalcode.value = "";
    af.scountry.value = collectionAddress.scountry;
	} else {
		// copy billing to shipping
    if ((af.ssel && af.ssel[1].checked) ||
        !af.ssel)
    {
  		af.saddr1.value = af.baddr1.value;
  		af.saddr2.value = af.baddr2.value;
  		af.scity.value = af.bcity.value;
  		af.scountyprovince.value = af.bcountyprovince.value;
  		af.spostalcode.value = af.bpostalcode.value;
      af.scountry.value = af.bcountry.value;
    }
    else if (af.ssel && af.ssel[0].checked)
    {
      // copy selection
      af.addsels.selectedIndex = af.addselb.selectedIndex;
    }
	}
}

function checkDespatch(obj)
{
  var despatchId = obj.value;
  var af = document.addform;

  if (postal[despatchId] == 1)
  {
    // postal option
    enableShipping();
  }
  else
  {
    // non-postal option
    disableShipping();
  }
}

function enableShipping()
{
  var af = document.addform;

  af.saddr1.value = "";
  af.saddr1.disabled = false;
  af.saddr1.style.background = "#fff";
  af.saddr2.value = "";
  af.saddr2.disabled = false;
  af.saddr2.style.background = "#fff";
  af.scity.value = "";
  af.scity.disabled = false;
  af.scity.style.background = "#fff";
  af.scountyprovince.value = "";
  af.scountyprovince.disabled = false;
  af.scountyprovince.style.background = "#fff";
  af.spostalcode.value = "";
  af.spostalcode.disabled = false;
  af.spostalcode.style.background = "#fff";
  af.scountry.value = "";
  af.scountry.disabled = false;
  af.scountry.style.background = "#fff";
  af.ship_bill.disabled = '';
}

function disableShipping()
{
  var af = document.addform;

  af.saddr1.value = collectionAddress.saddr1;
  af.saddr1.disabled = true;
  af.saddr1.style.background = "#ccc";
  af.saddr2.value = collectionAddress.saddr2;
  af.saddr2.disabled = true;
  af.saddr2.style.background = "#ccc";
  af.scity.value = collectionAddress.scity;
  af.scity.disabled = true;
  af.scity.style.background = "#ccc";
  af.scountyprovince.value = collectionAddress.scountyprovince;
  af.scountyprovince.disabled = true;
  af.scountyprovince.style.background = "#ccc";
  af.spostalcode.value = collectionAddress.spostalcode;
  af.spostalcode.disabled = true;
  af.spostalcode.style.background = "#ccc";
  af.scountry.value = collectionAddress.scountry;
  af.scountry.disabled = true;
  af.scountry.style.background = "#ccc";
  af.ship_bill.disabled = true;
  af.ship_bill.checked = false;
}

$(document).ready( function() {

  var doSubmit = false;

  // Add handlers to the despatch options to determine shipping/non-shipping.
  
  var addrFields = new Array('saddr1', 'saddr2', 'scity', 'scountyprovince',
    'spostalcode', 'scountry');
  
  $("input[name='despatch'][type='radio']").live('click', function() {

    var val = $(this).val();
    $(this).prop("selected", "selected");
    $(this).parent().addClass("checked");
    controlShipping(postal[val]);
  });

  $("#ship_bill").live('click', function() {

    // copy over
    for (index in addrFields)
    {
      var field = addrFields[index];
      var bField = field.replace(/^s?/, 'b');
      var val = "";
      if ($(this).is(":checked"))
      {
        val = $("#" + bField).val();
      }

      $("#" + field).val(val);
      $("#" + field).change();
    }

    if ($(this).is(":checked"))
    {
      $("div.despatch").hide();
    }
    else
    {
      $("div.despatch").show();
    }
  });

  selectDespatchOption();

  /**
   * Controls the state of the input fields on the address form
   *
   * @param boolean isPostal
   */
  function controlShipping(isPostal)
  {
    isPostal = (isPostal ? true : false);

    if (isPostal)
    {
      for (index in addrFields)
      {
        var field = addrFields[index];
        $("#" + field).val("").css("background-color", "").prop("disabled", "");
      }
    }
    else
    {
      for (index in addrFields)
      {
        var field = addrFields[index];
        $("#" + field).val(collectionAddress[field])
          .prop("disabled", "disabled");
      }
    }
    $("#ship_bill").prop("disabled", "");
  }

  /**
   * Fires the selection for the despatch options.
   * Sets a default to the first option if nothing is selected.
   *
   * @return void
   */
  function selectDespatchOption()
  {
    if (!$("input[name='despatch']:selected").length)
    {
      var obj = $("input[name='despatch']:first");
    }
    else
    {
      var obj = $("input[name='despatch']:selected");
    }
    obj.click();
    if ($("#ship_bill:checked").length)
    {
      shipBill();
    }
  }

  // Bind submit button to collections check
  $("form[name=addform]").bind("submit", function()
  {
    if (doSubmit)
    {
      return true;
    }

    // Collection type supplied?
    if (typeof collType === 'undefined')
    {
      return true;
    }
    
    // Collection type selected?
    var choice = $("input[name=despatch][type=radio]:checked").val();
    var isCollection = false;
    var haveDatas = false;
    var dataObjs = "";
    for (i in collInfos)
    {
      var elem = collInfos[i];
      if (elem.da_id == choice && elem.type == collType)
      {
        isCollection = true;

        if (elem.data != '' && elem.data !== null)
        {
          dataObjs += "<li>" +
            "<strong>" + elem.shortartist + "</strong>: " +
            elem.data + "</li>";
        }
      }
    }
    if (!isCollection || !dataObjs.length)
    {
      // No specific collection info
      return true;
    }

    // Any popover?
    if (!$("#collections-modal").size())
    {
      // carry on
      return true;
    }

    // We have info to show, show the dialog and return the response
    $("#collections-infos").html(dataObjs);
    $("#collections-modal").dialog(
    {
      modal: true,
      resizable: false,
      title: "Collections information"
    });
    $(".ui-dialog-titlebar-close").remove();
    $("#collections-modal").dialog("option", "buttons",
      {
        "Continue": function() { doSubmit = true; $("form[name=addform]").submit() },
        "Cancel" : function() { doSubmit = false; $("#collections-modal").dialog("destroy"); }
      }
    );

    return false;
  })
});

function breakout()
{
  if (self != top)
  {
    if (document.images)
    {
      top.location.replace(window.location.href);
    } else
    {
      top.location.href = window.location.href;
    }
  }
}

