// 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()) + 1 * _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('lubes').checked  = '';
	document.getElementById('fuels').checked  = '';

	// Clear the filter cookies
	setCookie('lubes', '');
	setCookie('fuels', '');

	//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('lubes')) document.getElementById('lubes').checked  = '1';
 	if (getCookie('fuels')) document.getElementById('fuels').checked  = '1';

 	//if (getCookie('fromadd')) document.getElementById('fromadd').value  = getCookie('fromadd');
	//console.info('fromadd',getCookie('fromadd'));
}

function summarizeFilter()
{
 	filterurl="";
	var descr = [];
	if (getCookie('lubes'))  		
	{	
		//descr.push('lubes');
		descr.push(filter_lubes);
		filterurl+="&lubes=Y";
	}
	if (getCookie('fuels')) 		
	{	
		//descr.push('fuels');
		descr.push(filter_fuels);
		filterurl+="&fuels=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();
};


