﻿function findFranchiseList() {
	if ($('#ffbz_zip_code').val() === '') { return false; }

	$('#ffbz_search_results').hide();
	$('#red_X').click(function(e){
		$('#server_response').text('');		
	});
	if ($.cookie(SESSION_GUID, 'ffbz_zip_code') !== null || $('#ffbz_zip_code').val() !== '') {
		$('.ffbz_wait').css('display', '');
		
		$.cookie(SESSION_GUID, 'ffbz_zip_code', $('#ffbz_zip_code').val(), {path:'/'});
		$('#ffbz_search_results').empty();
		
		AjaxManager.Operation.getOperationsForZipCode($('#ffbz_zip_code').val() , false);
	}
}

function findFranchiseOperationsRetrieved(operations){
	$('#ffbz_search_results').empty();
	$('#server_response').empty();
	if(operations === null || operations.length === 0){
		var checkAvail = $('.checkAvailability').val();
		if (checkAvail  == 'True'){ 
			$('#server_response').text("Sorry, this service is not available in your area at this time");
		} else {
			$('#ffbz_search_results').append("<div>We're sorry, Stanley Steemer does not provide service in this area.</div>");
		}
	} else {
		for(var index = 0; index < operations.length; index++){
			displayFranchiseInfo(operations[index]);
		}
	}
	$('#ffbz_zip_code').val($.cookie(SESSION_GUID, 'ffbz_zip_code'));
	$('.ffbz_wait').css('display', 'none');
	$('#ffbz_search_results').show();
}

function displayFranchiseInfo(franchise) {
	$('#ffbz_wait_image').remove();
	
	var checkAvail = $('.checkAvailability').val();
	if (checkAvail  == 'True')
	{
		var requiresAirDuct = $('.requiresAirDuct').val();
		var requiresHardwood = $('.requiresHardwood').val();
		var requiresFlooring = $('.requiresFlooring').val();

		$('#ffbz_zip_code').hide();
		$('#ffbz_description').hide();
		$('#ffbz_go').hide();

		$('#red_X').show()
			.unbind()
			.css('cursor', 'pointer')
			.click(function() {
				$('#server_response').text('');
				$('#red_X').hide();
				$('#ffbz_zip_code').show();
				$('#ffbz_description').show();
				$('#ffbz_go').show();
			});

		if ((requiresAirDuct == "True" && franchise.DoesAirDuctCleaning) ||
		(requiresHardwood == "True" && franchise.DoesHardwoodRefinishing) ||
		(requiresFlooring == "True" && franchise.DoesCarpetSales))		
		{
			$('#server_response').text("Service is available in your area:");
			// Add franchise contact info
			var detail = "<div id='sa_franchise_" + franchise.OperationID + "' style='color:Black; font-style:normal; font-weight:normal;'>" + common.formatAddress(franchise) + "</div>";
			$('#server_response').append(detail);
			return true;
		}
		else if($('#server_response').text().length === 0){
			$('#server_response').text("Sorry, this service is not available in your area at this time");
			return false;
		}
	}
	else if(franchise.OperationID !== null)
	{
		// if cookie is null then we know it was changed and hasn't been reset and saved yet
		var detail = "<div id='ffbz_franchise_" + franchise.OperationID + "'>" + common.formatAddress(franchise) + "<hr /></div>";
		$('#ffbz_search_results').append(detail);
		return true;
	}
}

function showErrorMessage(err) {
	$('#ffbz_search_results').empty();
	$('.ffbz_wait').hide();
	$('#ffbz_search_results').append("<div><span class='red'>We're sorry, there was an error looking up your zip code.  Please try again.</span></div>");
	$('#ffbz_search_results').fadeIn('slow');
}

function displayCorporateAddress() {
	$('.ffbz_corp').css('display', '');
}

function displayFranchiseSearch() {
	$('.ffbz_franchise').show();
	$('.ffbz_franchise').css('display', '');
}

function findFranchiseOnAreasAndServiceChanged(){
	var territory = AjaxManager.Territory.getTerritory();
	if(territory !== null){
		$('#ffbz_zip_code').val(territory.Zip);	
		var operation = AjaxManager.Operation.getOperation();
		if(operation !== null){
			displayFranchiseInfo(operation);
		} else {
			findFranchiseList();
		}
	}
}

function findFranchiseSubscribeToPublisher(){
	findFranchiseOperationsRetrieved.subscribe(AjaxManager.Operation.onOperationsRetrieved);
	findFranchiseOnAreasAndServiceChanged.subscribe(AjaxManager.AreasAndServices.onAreasAndServicesChanged);
}

$(document).ready(function() {
	$('#check_availability_link').click(function(e) {
		e.stopPropagation();
		e.preventDefault();
		$('#ffbz_availability').hide();
		$('.ffbz_wait').hide();
		$('#ffbz_search_body').show();
	});

	$('#ffbz_zip_code').keydown(function(event) {
		if (event.keyCode == 13) {
			$('#ffbz_go').click();			
			
			return false;
		}
	});
	
	$('#ffbz_search_results').empty();
	findFranchiseSubscribeToPublisher();
});


