// Require jQuery validation.js plugin


function showAddressFields()
{
	$("#field_streetnumber").css('display', 'block');
	$("#field_streetname").css('display', 'block');
	$("#field_city").css('display', 'block');
	$("#field_state").css('display', 'block');
	
	//if already marked as error border
	$("#field_streetnumber input").removeClass('error');
	$("#field_streetname  input").removeClass('error');
	$("#field_city  input").removeClass('error');
	$("#field_state select").removeClass('error');
	
	// 
	$("#field_streetnumber label.error").remove();
	$("#field_streetname label.error").remove();
	$("#field_city label.error").remove();
	$("#field_state label.error").remove();

	$('#field_streetnumber').focus();

}

function hideAddressFields()
{
	$("#field_streetnumber").css('display', 'none');
	$("#field_streetname").css('display', 'none');
	$("#field_city").css('display', 'none');
	$("#field_state").css('display', 'none');
}

function emptyAddressFields()
{
	$("#streetnumber").val('');
	$("#streetname").val('');
	$("#city").val('');
	$("#state").val('');
}


function showPCALoader()
{
	$('#containerLoadingPCA').css('display', 'block');
}

function hidePCALoader()
{
	$('#containerLoadingPCA').css('display', 'none');
}

function showPCAOptions(pca_description, pca_id) // results are global...
{
	
	$('#selectaddressPCA').empty();

	var optionsArr = '<option value="">Choose your address:</option>';
	for (i=0; i<pca_id.length; i++){
		
		optionsArr += '<option value="'+ pca_id[i]+ '">' + pca_description[i] + '</option>';
	}
	$('#selectaddressPCA').append(optionsArr);
	$('#field_selectaddressPCA').css('display', 'block');
}

function hidePCAOptions()
{
	$('#field_selectaddressPCA').css('display', 'none');
}

function makePCACall(queryString)
{
	var accountCode = 'GLOBA11170';
	var licenseCode = 'FX54-XY45-PA85-WM39';

	$("#pcaScriptTag").remove();
	
	var strUrl = 'https://services.postcodeanywhere.co.uk/inline.aspx?' + queryString;
	strUrl += "&account_code=" + escape(accountCode);
	strUrl += "&license_code=" + escape(licenseCode);

	$('head').append('<script "text/javascript" id="pcaScriptTag" src="' + strUrl + '" />');
}




function pcaByPostcodeBegin()
{
	
	if(!$("#application_form").validate().element("#zip"))
	{
		return;
	}
	hidePCAOptions();
	showPCALoader();
	
	var postcode = $("#zip").val();
	
	var queryString = 'action=lookup&type=by_postcode&callback=pcaByPostcodeEnd&postcode=' + escape(postcode);
	
	makePCACall(queryString);
}


function pcaByPostcodeEnd()
{
	hidePCALoader();

	if (pcaIsError || pcaRecordCount==0) { //alert(pcaErrorMessage);
		hidePCAOptions();
		emptyAddressFields();
		showAddressFields();
	} else {
		showPCAOptions(pca_description, pca_id); // they are made global by PCA
	}
}


function pcaFetchBegin()
{
	hidePCAOptions();
	showPCALoader();

	var queryString = 'action=fetch&style=raw&callback=pcaFetchEnd&id=' + escape($('#selectaddressPCA').val());
	makePCACall(queryString);
}

function pcaFetchEnd()
{
	hidePCALoader();
	
	if (pcaIsError || pcaRecordCount==0) {
		if(pcaIsError) {
			alert(pcaErrorMessage);
		}
		return;
	}
	
	showAddressFields();


	/*pca_id[0] = "7570391.00";
	pca_seq[0] = "0";
	pca_organisation_name[0] = "Argos Ltd";
	pca_department_name[0] = "";
	pca_line1[0] = "69-70 St. Mary Street";
	pca_line2[0] = "";
	pca_line3[0] = "";
	pca_line4[0] = "";
	pca_line5[0] = "";
	pca_post_town[0] = "Weymouth";
	pca_county[0] = "Dorset";
	pca_postcode[0] = "DT4 8PP";
	pca_mailsort[0] = "69923";
	pca_barcode[0] = "(DT48PP1UM)";
	pca_is_residential[0] = "0";
	pca_is_small_organisation[0] = "1";
	pca_is_large_organisation[0] = "0";
	pca_delivery_point_suffix[0] = "1U";
	pca_checksum[0] = "M";
	pca_name_or_number[0] = "69-70";
	pca_sub_building_name[0] = "";
	pca_building_name[0] = "";
	pca_building_number[0] = "69-70";
	pca_thoroughfare_name[0] = "St. Mary";
	pca_thoroughfare_descriptor[0] = "Street";
	pca_dependent_thoroughfare_name[0] = "";
	pca_dependent_thoroughfare_descriptor[0] = "";
	pca_double_dependent_locality[0] = "";
	pca_dependent_locality[0] = "";
	pca_po_box_number[0] = "";
	pca_number_of_households[0] = "1";
	pca_concatenation_operator[0] = "";
	pca_building_name_or_number[0] = "69-70";
	pca_building_flat[0] = "";
	pca_reformatted_sub_building[0] = "";
	pca_reformatted_building_number[0] = "69-70";
	pca_reformatted_building_name[0] = "";*/

	$('#streetnumber').val( pca_building_number[0] ? ('' + pca_building_number[0]) : pca_building_name[0]);
	if(!$('#streetnumber').val() && pca_po_box_number[0]) {
		$('#streetnumber').val( 'PO BOX ' + pca_po_box_number[0]);
	}

	$('#streetname').val('' + pca_thoroughfare_name[0] + ' ' + pca_thoroughfare_descriptor[0]);
	$('#city').val('' + pca_post_town[0]);

	var county = '' + pca_county[0].replace('County ', '');
	if(!county) {
		var zipPrefix = pca_postcode[0].substring(0, 2);
		var londonPrefixes = ['WD', 'EN', 'UB', 'HA', 'IG', 'WD', 'NW', 'WC', 'EC', 'TW', 'SM', 'SW', 'SE', 'RM', 'KT', 'CR', 'BR', 'DA',
			'E0', 'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9', 'N0', 'N1', 'N2', 'N3', 'N4', 'N5', 'N6', 'N7', 'N8', 'N9'];
		for(var londonPrefixIndex in londonPrefixes) {
			if(zipPrefix == londonPrefixes[londonPrefixIndex]) {
				county = 'Greater London';
				break;
			}
		}
	}

	$('#state').val(county);
}
