h = -(50.0/60.0) * Math.PI/180.0;
B = arpPosition.lat() * Math.PI/180.0;

function sqr(x)
{
  return x*x;
}

function sonnendeklination(T)
{
  return 0.40954*Math.sin(0.0172*(T-79.35));
}

function zeitdifferenz(Deklination)
{
  return 12.0*Math.acos((Math.sin(h) - Math.sin(B)*Math.sin(Deklination)) / (Math.cos(B)*Math.cos(Deklination)))/Math.PI;
}

function zeitgleichung(T)
{
  return -0.1752*Math.sin(0.033430 * T + 0.5474) - 0.1340*Math.sin(0.018234*T - 0.1939);
}

function aufgang1(T)
{
  DK = sonnendeklination(T);
  return 12 - zeitdifferenz(DK) - zeitgleichung(T);
}

function untergang1(T)
{
  DK = sonnendeklination(T);
  return 12 + zeitdifferenz(DK) - zeitgleichung(T);
}
  
function dayOfYear( time)
{
	var tage = 0;
	var datum = new Date( time);
	var tag = datum.getDate();
	var jahr = datum.getFullYear();
	var monat = datum.getMonth() + 1;

	for ( zaehler=1; zaehler<monat; zaehler++)
	{
		tage += (new Date( jahr, zaehler, 0 )).getDate();
	}
	tage += tag;
	
	datum=null; tag=null; jahr=null; monat=null;

	return tage;
}

function beginOfDay( time)
{
	var t = new Date(time);
	t.setHours(0);
	t.setMinutes(0);
	t.setSeconds(0);
	return ( t.getTime()/1000);
}

function getSunriseTime( time)
{
	time = time * 1000;  // Umwandlung in Millisekunden
	var t = new Date(time);
	var offsetTime = t.getTimezoneOffset();
	day = dayOfYear( time);
	midnight = beginOfDay( time);
  Aufgang = aufgang1(day) - arpPosition.lng() /15.0 - Math.round( offsetTime/60);
  t=null; offsetTime=null; day=null;
  return Math.round( midnight + ( Aufgang * 3600));
}

function getSunsetTime( time)
{
	time = time * 1000;  // Umwandlung in Millisekunden
	var t = new Date(time);
	var offsetTime = t.getTimezoneOffset();
	day = dayOfYear( time);
	midnight = beginOfDay( time);
  Untergang = untergang1(day) - arpPosition.lng() /15.0 - Math.round( offsetTime/60);
  t=null; offsetTime=null; day=null;
  return Math.round( midnight + ( Untergang * 3600));
}

