var callbacks = [];

$(document).ready(function() {
  updateCountryDropdowns();
  bindReferrerEvents();
  initialiseDatepicker();
  
  for (var i in callbacks) {
  	if (typeof callbacks[i] == 'array') {
  		callbacks[i][0](callbacks[i][1]);
  	} else {
  		callbacks[i]();
  	}
  }
});

function initialiseDatepicker()
{
  var $dateFields = $('input[name^=contact_date_of_birth]');
  
  $dateFields.each(function() {
    $(this).data('default_value', $(this).val());
  }).focus(function() {
    if ($(this).val() == $(this).data('default_value'))
    {
      $(this).val('');
    }
  }).blur(function() {
    if ($(this).val() == '')
    {
      $(this).val($(this).data('default_value'));
    }
  });
}

function bindReferrerEvents() {
	$('input[id^=referrer]').click(
		function () {
			onReferrerSelect(this);
		}
	);
}

function toggleDefaultText(obj) {
	var $obj = $(obj);
	
	$obj.val('');
}

function onReferrerSelect(obj) {
	var $obj = $(obj);
	
	switch ($obj.val()) {
		case 'Magazine':
		case 'Newspaper':
		case 'Website':
		case 'Radio':
		case 'Other':
			var index = $obj.val().replace(' ', '').toLowerCase();
			
			if ($obj.attr('checked')) {
				var $text = $('input#referrer_more-'+ index);
				$text.removeAttr('disabled');
				
				$text.focus(
					function () {
						toggleDefaultText(this);
					}
				);
			} else {
				$('input#referrer_more-'+ index).attr('disabled', 'disabled');
			}
			break;
	}
}

function selectPaymentMethod() {
  var $paymentMethod = $('table#paymentOptionsTable').find('select#payment_method');
  
  $('table#paymentOptionsTable').find('tr#paymentMethodCC').addClass('hide');
  $('table#paymentOptionsTable').find('tr#paymentMethodEFT').addClass('hide');
    
  switch ($paymentMethod.val()) {
    case 'Credit card (Mastercard or VISA)':
      $('table#paymentOptionsTable').find('tr#paymentMethodCC').removeClass('hide');
    break;
    
    case 'Electronic funds transfer or direct deposit':
      $('table#paymentOptionsTable').find('tr#paymentMethodEFT').removeClass('hide');
    break;
  }
}

function checkVatInvoice() {
  var $checkboxVatInvoice = $('table#paymentOptionsTable').find('input#vat');
  
  if ($checkboxVatInvoice.is(':checked')) {
    // Show info
    $('table#paymentOptionsTable').find('tr[id^=vatInvoiceDetails]').each(function() {$(this).removeClass('hide');});
  } else {
    // Hide info
    $('table#paymentOptionsTable').find('tr[id^=vatInvoiceDetails]').each(function() {$(this).addClass('hide');});
  }
}

function viewTaC() {
  $('table#submitTable').find('tr#TaC').removeClass('hide');
}

function checkTaC() {
  var $table  = $('table#submitTable');
  var $tac    = $table.find('input#tac');
  var $button = $table.find('input#btnSubmit');
  
  if ($tac.is(':checked')) {
    // Enable submit
    $button.removeClass('disabled');
    $button.removeAttr('disabled');
  } else {
    // Disable submit
    $button.addClass('disabled');
    $button.attr('disabled', 'disabled');
  }
}

function fillVatOrganisationAddressFromPostal() {
  var $vatSameAsPostalCheckbox = $('table#paymentOptionsTable').find('input#vat_organisation_address_same_as_postal');
  
  // Postal elements
  var $postalStreet1  = $('input#postal_street_1');
  var $postalStreet2  = $('input#postal_street_2');
  var $postalCity     = $('input#postal_city');
  var $postalState    = $('input#postal_state');
  var $postalCode     = $('input#postal_code');
  var $postalCountry  = $('input#postal_country');
  
  // VAT elements
  var $vatStreet1 = $('table#paymentOptionsTable tr#vatInvoiceDetails-companyAddress').find('input#vat_organisation_address_street_1');
  var $vatStreet2 = $('table#paymentOptionsTable tr#vatInvoiceDetails-companyAddress').find('input#vat_organisation_address_street_2');
  var $vatCity    = $('table#paymentOptionsTable tr#vatInvoiceDetails-companyAddress').find('input#vat_organisation_address_city');
  var $vatState   = $('table#paymentOptionsTable tr#vatInvoiceDetails-companyAddress').find('input#vat_organisation_address_state');
  var $vatPostal  = $('table#paymentOptionsTable tr#vatInvoiceDetails-companyAddress').find('input#vat_organisation_address_code');
  var $vatCountry = $('table#paymentOptionsTable tr#vatInvoiceDetails-companyAddress').find('select#vat_organisation_address_country');
  
  if ($vatSameAsPostalCheckbox.is(':checked')) {
    $vatStreet1.val($postalStreet1.val());
    $vatStreet2.val($postalStreet2.val());
    $vatCity.val($postalCity.val());
    $vatState.val($postalState.val());
    $vatPostal.val($postalCode.val());
    $vatCountry.val($postalCountry.val());
  } else {
    $vatStreet1.val('');
    $vatStreet2.val('');
    $vatCity.val('');
    $vatState.val('');
    $vatPostal.val('');
    $vatCountry.val('');
  }
}

// Update country dropdowns
function updateCountryDropdowns() {
  // Fetch list of countries
  $.get('forms/includes/countries.html', function(html) {
    $('table.form select[rel^="countries"]').each(function() {
      var $dropdown = $(this);
      
      $dropdown.html(html);
    });
  }, 'html');
}

// Track a page view for a successful registration
function trackRegistrationSuccessPageView(tracker) {
	// Track a hit on Google Analytics
	pageTracker._trackPageview('/registrations/' + tracker + '.html');
}