﻿function PhBusinessManager()
{
	this.m_oAjax			= null;
	this.m_oTargetLayer		= null;
	
	this.m_oTypeFilter		= null;
	this.m_oKeywordFilter	= null;
	
	this.m_strSearchPage	= '';
	this.m_strFilterBy		= '';
		
	this.InitObject();
}

PhBusinessManager.prototype.InitObject = function()
{
	this.m_oAjax = new PhAjaxJson();
}

PhBusinessManager.prototype.SetTargetLayer = function( target_layer )
{
	this.m_oTargetLayer = target_layer;
}

PhBusinessManager.prototype.SetTypeFilter = function( elm )
{
	this.m_oTypeFilter = elm;
}

PhBusinessManager.prototype.SetKeywordFilter = function( elm )
{
	this.m_oKeywordFilter = elm;
}

PhBusinessManager.prototype.SetSearchPage = function( search_page )
{
	this.m_strSearchPage = search_page;
}

PhBusinessManager.prototype.ResetFilters = function()
{
	this.m_oKeywordFilter.value			= '';
	this.m_oTypeFilter.selectedIndex	= 0;
}

PhBusinessManager.prototype.Search = function()
{		
	document.getElementsByTagName( 'body' )[0].style.cursor = 'wait';
	
	var filter			= '';
	var keyword			= 'keyword='+this.m_oKeywordFilter.value;
	var type			= 'type='+this.m_oTypeFilter.value;
	var letter			= 'letter=';
	var query_string	= letter+'&'+keyword+'&'+type;

	var me = this;
	var cb = function( obj ){me.DisplayResults( obj ); };
	
	filter = '<span class="filter_by_heading">Filtered By:</span> ';
	filter += '<span class="filter_by_value">'+this.m_oTypeFilter.options[this.m_oTypeFilter.selectedIndex].text;
	
	if( this.m_oKeywordFilter.value != '' )
		filter += ' with names containing "'+this.m_oKeywordFilter.value+'"';
		
	this.m_strFilterBy = filter+'</span>';
	this.m_oAjax.SendRequest( this.m_strSearchPage, query_string, null, cb );
}

PhBusinessManager.prototype.SearchByLetter = function( letter )
{
	document.getElementsByTagName( 'body' )[0].style.cursor = 'wait';
	
	var query_string	= 'type=0&keyword=&letter='+((letter == '#')? '%23' : letter);
	var me = this;
	var cb = function( obj ){me.DisplayResults( obj ); };
		
	this.m_strFilterBy = '<span class="filter_by_heading">Filtered By:</span><span class="filter_by_value"> The Letter \''+letter+'\'</span>';
	this.m_oAjax.SendRequest( this.m_strSearchPage, query_string, null, cb );	
}

PhBusinessManager.prototype.ClearResults = function( obj )
{
	var i = 0;
	
	for( i = this.m_oTargetLayer.childNodes.length-1; i >= 0; i-- )
		g_oClient.RemoveElement( this.m_oTargetLayer.childNodes[i] );
}

PhBusinessManager.prototype.DisplayResults = function( obj )
{
	var b = null;
	var l = null;
	
	var address			= '';
	var phone			= '';
	
	var filter_by_div	= null;
	var business_div	= null;
	var name_div		= null;
	var addr_div		= null;
	var phone_div		= null;
	
	var i = 0;
	var j = 0;
	
	this.ClearResults();
	
	filter_by_div = document.createElement( 'div' );
	filter_by_div.className = 'filter_by';
	filter_by_div.innerHTML = this.m_strFilterBy;
	
	this.m_oTargetLayer.appendChild( filter_by_div );
	
	if( obj.Businesses.length > 0 )
	{
		for( i = 0; i < obj.Businesses.length; i++ )
		{
			b		= obj.Businesses[i]
			l		= b.locations[0];
			address	= '';
			phone	= '';
			
			address = (l.street_1 == '')? 'No address provided<br />' : l.street_1+'<br />';
			
			if( l.street_2 != '' )
				address += l.street_2+'<br />';
				
			address += l.city+', '+l.state+' '+l.zipcode;
			
			if( l.local_number != '?' )
				phone += l.local_number;
				
			if( l.toll_free_number != '?' )
				phone += (phone == '')? l.toll_free_number : '<br />'+l.toll_free_number;
			
			business_div = document.createElement( 'div' );
			business_div.className = 'business_listing';
			
			name_div = document.createElement( 'div' );
			name_div.className = 'name_section';
			name_div.innerHTML = '<a class="business_details_link" href="business_details.aspx?business_id='+b.id+'">'+obj.Businesses[i].name+'</a>';
			
			addr_div = document.createElement( 'div' );
			addr_div.className = 'address_section';
			addr_div.innerHTML = address;
			
			phone_div = document.createElement( 'div' );
			phone_div.className = 'phone_numbers_section';
			phone_div.innerHTML = phone;
			
			business_div.appendChild( name_div );
			business_div.appendChild( addr_div );
			
			if( phone != '' )
				business_div.appendChild( phone_div );
			
			this.m_oTargetLayer.appendChild( business_div );
		}
	}
	else
	{
		business_div = document.createElement( 'div' );
		business_div.className = 'business_listing';
		
		name_div = document.createElement( 'div' );
		name_div.className = 'name_section';
		name_div.innerHTML = 'No matching businesses found.';
		
		business_div.appendChild( name_div );
		this.m_oTargetLayer.appendChild( business_div );				
	}
	
	document.getElementsByTagName( 'body' )[0].style.cursor = 'default';
}

var g_oBusinessManager = new PhBusinessManager();