// Declare variables for later use
var filter1;
var filter2;
var _mSecPerDay = 1000 * 60 * 60 * 24;
var filterurl;

// Cookies (used for filtering) to expire in one year
var cookieExpire = cookieDate(new Date(Number(new Date()) + 365 * _mSecPerDay));

function zeroPad(number, len)
{
  // Left-pad the given number with zeros into a string of the given length.
  //
  //  Notes:  - Input must be >= 0.
  //          - Length is to the left of the deciml, so zeroPad(2.17, 3) => 002.17

  var padding = '00000000000000000000000000000000000000000000000000000000000000000000';
  
  if (number <= 0)
    return padding.substring(0, len);
  else
    return padding.substring(0, len - (Math.floor(Math.log(number)/Math.log(10)) + 1)) + String(number);
};

function cookieDate(date)
{
  // Return a date/time string in the format expected by document.cookie: Wdy, DD-Mon-YY HH:MM:SS GMT
  switch (date.getUTCDay())
  {
    case 0: {result = 'Sun'; break;}
    case 1: {result = 'Mon'; break;}
    case 2: {result = 'Tue'; break;}
    case 3: {result = 'Wed'; break;}
    case 4: {result = 'Thu'; break;}
    case 5: {result = 'Fri'; break;}
    case 6: {result = 'Sat'; break;}
  } 
  
  result += ', ' + zeroPad(date.getUTCDate(), 2);

  switch (date.getUTCMonth())
  {
    case 0:  {result += '-Jan-'; break;}
    case 1:  {result += '-Feb-'; break;}
    case 2:  {result += '-Mar-'; break;}
    case 3:  {result += '-Apr-'; break;}
    case 4:  {result += '-May-'; break;}
    case 5:  {result += '-Jun-'; break;}
    case 6:  {result += '-Jul-'; break;}
    case 7:  {result += '-Aug-'; break;}
    case 8:  {result += '-Sep-'; break;}
    case 9:  {result += '-Oct-'; break;}
    case 10: {result += '-Nov-'; break;}
    case 11: {result += '-Dec-'; break;}
  } 

  result += String(date.getUTCFullYear()).substr(2, 2) + ' ' +
            zeroPad(date.getUTCHours(), 2) + ':' +
            zeroPad(date.getUTCMinutes(), 2) + ':' +
            zeroPad(date.getUTCSeconds(), 2) + ' GMT';
            
  return result;
};

function showFilter()
{
	filter1.style.display = 'block';
	filter2.style.display = 'none';
};

function hideFilter()
{
	filter2.style.display = 'block';
	filter1.style.display = 'none';
	applyFilter();
};

function setCookie(name, value)
{
	//console.info(name,value);
	// setCookie: helper function to set a browser cookie to the supplied name & value
	if (value == '')
		document.cookie = name + '=;expires=Sunday, 10-Oct-01 00:00:00 GMT;path=/'
	else
		document.cookie = name + '=' + value + ';expires=' + cookieExpire + ';path=/';
};

function clearFilter()
{
	//examples.
	//  document.getElementById('nCGRating1').checked = '1';
	//  document.getElementById('nSatLon').value      = '';

	// Reset the onscreen elements to their default (unfiltered) values
 	document.getElementById('atm').checked  = '';
	document.getElementById('carwash').checked  = '';
	document.getElementById('c_store').checked  = '';
	document.getElementById('restaurant').checked  = '';
	document.getElementById('vacuums').checked  = '';
	document.getElementById('pay_at_pump').checked  = '';
	document.getElementById('speedpass').checked  = '';
	document.getElementById('truck_stop').checked  = '';
	document.getElementById('full_service').checked  = '';
	document.getElementById('open_24_hour_gasoline').checked  = '';
	document.getElementById('automotive_repair').checked  = '';
	document.getElementById('diesel').checked  = '';
	document.getElementById('ethanol').checked  = '';
	document.getElementById('propane').checked  = '';
	document.getElementById('atm').checked  = '';

	// Clear the filter cookies
	setCookie('atm', '');
	setCookie('carwash', '');
	setCookie('c_store', '');
	setCookie('restaurant', '');
	setCookie('vacuums', '');
	setCookie('pay_at_pump', '');
	setCookie('speedpass', '');
	setCookie('truck_stop', '');
	setCookie('full_service', '');
	setCookie('open_24_hour_gasoline', '');
	setCookie('automotive_repair', ''); 
	setCookie('diesel', '');
	setCookie('ethanol', '');
	setCookie('propane', '');

	//setCookie('fromadd', '');
  	// Refresh the display  
  	applyFilter();
};

function getCookie(name) 
{
  // thanks to http://www.quirksmode.org/js/cookies.html
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for (var i = 0; i < ca.length; i++) 
	{
		var c = ca[i];
		while (c.charAt(0) == ' ') 
		  c = c.substring(1, c.length);

		if (c.indexOf(nameEQ) == 0)
		  return c.substring(nameEQ.length, c.length);
	}
	return null;
}

function setfromCookie()
{
	if (getCookie('atm')) document.getElementById('atm').checked  = '1';
 	if (getCookie('carwash')) document.getElementById('carwash').checked  = '1';
 	if (getCookie('c_store')) document.getElementById('c_store').checked  = '1';
  	if (getCookie('restaurant')) document.getElementById('restaurant').checked  = '1';
 	if (getCookie('vacuums')) document.getElementById('vacuums').checked  = '1';
 	if (getCookie('pay_at_pump')) document.getElementById('pay_at_pump').checked  = '1';
 	if (getCookie('speedpass')) document.getElementById('speedpass').checked  = '1';
 	if (getCookie('truck_stop')) document.getElementById('truck_stop').checked  = '1';
 	if (getCookie('full_service')) document.getElementById('full_service').checked  = '1';
 	if (getCookie('open_24_hour_gasoline')) document.getElementById('open_24_hour_gasoline').checked  = '1';
 	if (getCookie('automotive_repair')) document.getElementById('automotive_repair').checked  = '1';
 	if (getCookie('diesel')) document.getElementById('diesel').checked  = '1';
 	if (getCookie('ethanol')) document.getElementById('ethanol').checked  = '1';
 	if (getCookie('propane')) document.getElementById('propane').checked  = '1';

 	//if (getCookie('fromadd')) document.getElementById('fromadd').value  = getCookie('fromadd');
	//console.info('fromadd',getCookie('fromadd'));
}

function summarizeFilter()
{
  	// summarizeFilter: generate onscreen text for the current filter
	/*
	console.info('atm',getCookie('atm'));
	console.info('carwash',getCookie('carwash'));
	console.info('c_store',getCookie('c_store'));
	console.info('restaurant',getCookie('restaurant'));
	console.info('vacuums',getCookie('vacuums'));
	console.info('pay_at_pump',getCookie('pay_at_pump'));
	console.info('speedpass',getCookie('speedpass'));
	console.info('truck_stop',getCookie('truck_stop'));
	console.info('full_service',getCookie('full_service'));
	console.info('open_24_hour_gasoline',getCookie('open_24_hour_gasoline'));
	console.info('automotive_repair',getCookie('automotive_repair'));
	console.info('diesel',getCookie('diesel'));
	console.info('ethanol',getCookie('ethanol'));
	console.info('propane',getCookie('propane'));
	//*/
//console.info('atm',getCookie('atm'));
//console.info('filter',filter_atm);
	filterurl="";
	var descr = [];
	if (getCookie('atm'))  		
	{	
		//descr.push('ATM');
		descr.push(filter_atm);
		filterurl+="&atm=Y";
	}
	if (getCookie('carwash')) 		
	{	
		//descr.push('Car Wash');
		descr.push(filter_carwash);
		filterurl+="&carwash=Y";
	}
	if (getCookie('c_store')) 		
	{	
		//descr.push('C-Store');
		descr.push(filter_cstore);
		filterurl+="&c_store=Y";
	}
	if (getCookie('restaurant')) 		
	{	
		//descr.push('Restaurant');
		descr.push(filter_restaurant);
		filterurl+="&restaurant=Y";
	}
	if (getCookie('vacuums')) 		
	{	
		//descr.push('Vacuums');
		descr.push(filter_vacuums);
		filterurl+="&vacuums=Y";
	}
	if (getCookie('pay_at_pump')) 		
	{	
		//descr.push('Pay at Pump');
		descr.push(filter_pap);
		filterurl+="&pay_at_pump=Y";
	}
	if (getCookie('speedpass')) 		
	{	
		//descr.push('Speedpass');
		descr.push(filter_speedpass);
		filterurl+="&speedpass=Y";
	}
	if (getCookie('truck_stop')) 		
	{	
		//descr.push('Truck Stop');
		descr.push(filter_truckstops);
		filterurl+="&truck_stop=Y";
	}
	if (getCookie('full_service')) 		
	{	
		//descr.push('Truck Stop');
		descr.push(filter_fullservice);
		filterurl+="&full_service=Y";
	}
	if (getCookie('open_24_hour_gasoline')) 		
	{	
		//descr.push('Truck Stop');
		descr.push(filter_o24);
		filterurl+="&open_24_hour_gasoline=Y";
	}
	if (getCookie('automotive_repair')) 		
	{	
		//descr.push('Automotive Repair');
		descr.push(filter_servicebays);
		filterurl+="&automotive_repair=Y";
	}
	if (getCookie('diesel')) 		
	{	
		//descr.push('diesel');
		descr.push(filter_diesel);
		filterurl+="&diesel=Y";
	}
	if (getCookie('ethanol')) 		
	{	
		//descr.push('Ethanol');
		descr.push(filter_ethanol);
		filterurl+="&ethanol=Y";
	}
	if (getCookie('propane')) 		
	{	
		//descr.push('Propane');
		descr.push(filter_propane);
		filterurl+="&propane=Y";
	}
	if (descr.join('') != '')
		document.getElementById('filter_summary').innerHTML = descr.join(', ');
	else
		document.getElementById('filter_summary').innerHTML = filter_none;
	//console.info('filterurl',filterurl);
};

function applyFilter()
{
	//console.info('applyFilter');
	// applyFilter: when filter has changed, apply the new values to the display

	// Refresh the small-version description of the new filter  
	summarizeFilter();

	// Finally, refresh the map with the new filter.
	viewChange();
};


