/* #############################################
	 onReady
	#################################################*/
$(function()
{
	checkQuery();

	//init buttons
	btnInit("closeBtn",true,true);
	btnInit("searchBtn",true,true);
	
	$('a#searchBtn').click(function(){
		submitAddress();
		return false;
	});
	
	$('form#address').submit(function(){
		submitAddress();
		return false;
	});
	
	$('input#txtAddress').focus(function(){
		if ($(this).val() == 'City and State or Zip Code'){$(this).val('');}
	});	
	
	$('a#closeBtn').click(function(){
		window.close();
	});	
	
	$("div#branchesOverview").corner("cc:#fff");	

	displaySortedBranches();

});


/* #############################################
checks if an address is being sent to the tool upon opening (marketing home page locator module which asks for zip for example)
#################################################*/
function checkQuery()
{	
	var DEFAULT_RADIUS = 100;
	var OVERVIEW_CLICK_RADIUS = 10;
	var DEFAULT_ZOOM_DISTANCE = 10;	
	
	var location = document.location.href;
	if (location.indexOf('address') > -1)
	{
		var addressValue, radiusValue;
		var locationSplit = location.split('=');

		if(location.indexOf('radius') > -1)
		{
			addressValue = unescape(locationSplit[1].substring(0,locationSplit[1].indexOf('&')));
			radiusValue = unescape(locationSplit[2]);
		}
		else
		{
			addressValue = unescape(locationSplit[1]);
			radiusValue = DEFAULT_RADIUS;
		}
		
		$("input#txtAddress").val(addressValue);
		$("select#ddRadius").val(radiusValue);

		submitAddress();	

	}

}


//handler function to find branches from button click or hitting enter (form submission)
function submitAddress()
{
		var address	= $("input#txtAddress").val().trim().toLowerCase();
		var radius	= $("select#ddRadius").val();
		window.location = "search.html?address=" + address + "&radius=" + radius;	
}


function displaySortedBranches()
{
	var NUM_GRID_COLS = 3;

	var BranchesColumnIds = ["#branchesStateFirstCol","#branchesStateMiddleCol","#branchesStateLastCol"];
	var BranchesColumnIdsIndex = 0;
	var outputColumnId = BranchesColumnIds[BranchesColumnIdsIndex];
	
	var sortedBranches = branches.all.sort(sortBranchByStateCityName);	
	var branchCount = branches.all.length;
	var maxColumnItems = branchCount / NUM_GRID_COLS;
	
	var currentState = sortedBranches[0].addr.st.toLowerCase();
	var outputHtml = "<h4 id='"+ currentState +"'>"+ states[currentState] +"</h4>";
	
	var count = 0;
	var columnBranchCount = 0;
	for (var branch in sortedBranches)
	{
		b = sortedBranches[branch];
		if(b.addr.st.toLowerCase() != currentState)
		{
			if(columnBranchCount > maxColumnItems) 
			{
				$(outputColumnId).append(outputHtml);
				outputHtml = "";
				
				outputColumnId = BranchesColumnIds[++BranchesColumnIdsIndex];
				columnBranchCount = 0;		
			}
			
			currentState = b.addr.st.toLowerCase();			
			outputHtml += "<h4 id='"+ currentState +"'>"+ states[currentState] +"</h4>";
		}
		
		outputHtml += "<a href='search.html?sortedBranchIndex="+ count +"' class='sortedBranchName'>" + ((b.addr.c.toLowerCase() != b.n.toLowerCase()) ? b.addr.c + ", " : "") + b.n + "</a><br />";

		//save mods to branch back to global 
		sortedBranches[branch] = b;
		count++;
		columnBranchCount++;
		
	}
	
	$(outputColumnId).append(outputHtml);

	

}

function selectBranch(sortedBranchIndex)
{
	window.location.href = "search.html?sortedBranchIndex=" + sortedBranchIndex;	
}

/* #############################################
Sorting comparer function
#################################################*/
function sortBranchByStateCityName(x,y)
{
	if(x.addr.st.toLowerCase() < y.addr.st.toLowerCase())
	{
		return -1;
	}
	else if((x.addr.st.toLowerCase() == y.addr.st.toLowerCase()) && (x.addr.c.toLowerCase() < y.addr.c.toLowerCase()))
	{
		return -1;
	}
	else if((x.addr.st.toLowerCase() == y.addr.st.toLowerCase()) && (x.addr.c.toLowerCase() == y.addr.c.toLowerCase()) && (x.n.toLowerCase() < y.n.toLowerCase()))
	{
		return -1;
	}
	else
	{
		return 1;
	}
}


/* #############################################
trim string
#################################################*/
String.prototype.trim = function() {return this.replace(/^\s+|\s+$/g, '');};