// jquery app:


var showhide_app_init = function()
{
	$('#showhide-ctrl-show').click(
	    function($e)
		{
		   $e.preventDefault();			
		   $('#showhide-contents').show();
		}
	);
		
    $('#showhide-ctrl-hide').click(
	    function($e)
		{
			$e.preventDefault();
		   $('#showhide-contents').hide();
		}
	);
}

var txtf_listen_app_init = function() // p.84
{
	$('#textform').submit(
		function($e){
		   //alert("You submitted something.");
		   $e.preventDefault(); 
		   handleInput();
		}
	);
	
	$('#textf').hover(
	   function()
	   {
	   }
	 );
	
	$('#textf').focus(
		function()
		{			 
		  $('#textf').addClass('tmpFocused');
		}
     );
	
    $('#textf').blur(
		function()
		{			 
		  $('#textf').removeClass('tmpFocused');
		}
     );
	
	$('#textb').hover(
	   function()
	   {
	   }
	);
	
	$('#textf-reset').click(
	  function(){
		  $('#txtf-listen-mod .bd ul').empty();
	  }						
	);
	
	var handleInput = function()
	{
		var inputVal = $('#textf').val();
		if(inputVal)
		{
			$('#txtf-listen-mod .bd ul').append('<li>' + inputVal + '</li>');
		}
		$('#textf').attr( {value: ''} );
	}
}


var search_app_init = function()
{
	$('#ajax-search-form').submit(
		function($e){
		   $e.preventDefault();
		   _resetErr();
		   handleAjaxInput();
		}
	);
	
	$('#ajax-search-reset').click(
		function()
		{
			$('#ajax-search-result').empty();
			$('#ajax-search-input').attr( {value: ''} );
			_resetErr();
		}							  
	);
	
	var _resetErr = function()
	{
		$('#err-blankinput').hide();
		$('#err-client').hide();
		$('#err-remote').hide();
		$('#err-search').hide();
		$('#err-vendor').hide();
	};
	
	var ajaxSearchComplete = function()
	{
	};
		
	var ajaxSearchSuccess = function(txt)
	{
	};
		
	var ajaxSearchError = function()
	{
		$('#err-remote').show();
	};
		
	var ajaxClientError = function()
	{
		$('#err-client').show();
		var dummy = function(){};
		Window.setTimeout(dummy,1000);
	}
	
	
	var showResponse = function($response)
	{
		var json = eval( "(" + $response.responseText + ")" );
		var html = '';
		
		if(json.err)
		{
			if(json.Error)
			{
				html += '<span class=\"remote_parse_msg\">';
				
				if(json.remote_parse_msg)
				{
					html +=  json.remote_parse_msg;
				}
				else
				{
					html +=  'Unknown error on Yahoo Geo server.' 
				}
				
				html +=  '</span>';
			}
			
			$('#ajax-search-result').html(html);
			return;
		}
		
		var html = '';
		
		if(json.Result)
		{
			for(var i=0; i < json.Result.length; i++)
			{
				html += formatAddressResult(json.Result[i], i)
			}
		}	
		
		$('#ajax-search-result').html(html);
	}
	
	var formatAddressResult = function(result, idx)
	{
		var first = '';
		if( 0 === idx ){ first = ' first' }
		
		var _html = '<div class=\"result' + first + '\">';

		_html += '<div class=\"addr' + first + '\">';
		
		if(result.Address)
		{ 
			_html += '<span class=\"address\">' + result.Address + '</span>';
		}
		
		if(result.City)
		{
			_html += '<span class=\"city\">' + result.City + ',</span>';
		}
		

		if(result.State)
		{ 
			_html += '<span class=\"state\">' + result.State + '</span>';
		}
		
		if(result.Zip)
		{  
			_html += '<span class="\zip\">' + result.Zip + '</span>';
		}
		
		
		if(result.Country)
		{ 
			_html += '<span class=\"country\">' + result.Country + '</span>';
		}
		
		_html += '</div>'; // addr
		
		if(result.coord_lat && result.coord_lon  )
		{
			_html += '<div class=\"geo' + first + '\">' + result.coord_lat + ' / ' + result.coord_lon + '</div>'; // geo	
		}
		
		_html += '</div>'; // result
		
		return _html;
	}
		
		
	var handleAjaxInput = function()
	{
		var location = $('#ajax-search-input').val();
		var _crumb =   $('#ajax-search-crumb').val();
		
		if( !location )
		{
			$('#err-blankinput').show();
			return;
		}
		
		try{
			$.ajax({
   				type:'POST',
   				url:'xhr.php5',
 				dataType:'json',
				data: {'modid': 'geo_1',//'g_search', 
					'_crumb': _crumb, 
					'location': location },
				//complete:ajaxSearchComplete,
   				success:ajaxSearchSuccess,
   				error:ajaxSearchError,
				complete: function($response,$status)
				{
					if( 'success' == $status || 'notmodified' == $status )
					{
						showResponse($response);	
					}
					else
					{
						ajaxSearchError();
					}
			
				} // complete
			}); 
	
		}
		catch(e)
		{
			//alert("Exception: name=" + e.name + ", message=" + e.message);
			ajaxClientError();
		}
	};// handleAjaxInput
}

$(document).ready(

  function()
  {
	 showhide_app_init();
	 txtf_listen_app_init();
	 search_app_init();
  }
  
); // doc.ready()

