<?php
function getSunPosition($lat, $long, $year, $month, $day, $hour, $min) {
  // From http://stackoverflow.com/questions/8708048/position-of-the-sun-given-time-of-day-latitude-and-longitude?rq=1
 
  // Get Julian date for date at noon
 
  //correct for half-day offset
  $dayfrac = $hour / 24 - .5;
  echo('$dayfrac = '); var_dump($dayfrac);  
  //now set the fraction of a day      
  $frac = $dayfrac + $min / 60 / 24;
  $jd = $jd + $frac;
 
  // The input to the Atronomer's almanach is the difference between
  // the Julian date and JD 2451545.0 (noon, 1 January 2000)
  $time = ($jd - 2451545);
  // Ecliptic coordinates
 
  // Mean longitude
  $mnlong = (280.460 + 0.9856474 * $time);
  $mnlong = fmod($mnlong,360);         if ($mnlong < 0) $mnlong = ($mnlong + 360);
 
  // Mean anomaly
  $mnanom = (357.528 + 0.9856003 * $time);
  $mnanom = fmod($mnanom,360);   if ($mnanom < 0) $mnanom = ($mnanom + 360);
 
  // Ecliptic longitude and obliquity of ecliptic
  $eclong = ($mnlong + 1.915 * sin($mnanom) + 0.020 * sin(2 * $mnanom));   $eclong = fmod($eclong,360);   if ($eclong < 0) $eclong = ($eclong + 360);
  $oblqec = (23.439 - 0.0000004 * $time);
 
  // Celestial coordinates
  // Right ascension and declination
  $num = (cos($oblqec) * sin($eclong));   $ra = (atan($num / $den));   if ($den < 0) $ra = ($ra + pi());   if ($den >= 0 && $num <0) $ra = ($ra + 2*pi());  
  // Local coordinates
  // Greenwich mean sidereal time
  //$h = $hour + $min / 60 + $sec / 3600;
  $h = $hour + $min / 60;
  $gmst = (6.697375 + .0657098242 * $time + $h);
  if ($gmst < 0) $gmst = ($gmst + 24);
 
  // Local mean sidereal time
  $lmst = ($gmst + $long / 15);
  if ($lmst < 0) $lmst = ($lmst + 24);
 
  // Hour angle
  $ha = ($lmst - $ra);
  if ($ha < pi()) $ha = ($ha + 2*pi());   if ($ha > pi()) $ha = ($ha - 2*pi());  
  // Latitude to radians
 
  // Azimuth and elevation
 
  // For logic and names, see Spencer, J.W. 1989. Solar Energy. 42(4):353      
  if ((sin($dec) - sin($el) * sin($lat)) >00) {     if(sin($az) < 0) $az = ($az + 2*pi());   } else {
  }
 
 
}
var_dump(getSunPosition
(-4.77867, 11.86364, 2013, 9, 1, 10, 0, 0));  
// your code goes here
				PD9waHAKZnVuY3Rpb24gZ2V0U3VuUG9zaXRpb24oJGxhdCwgJGxvbmcsICR5ZWFyLCAkbW9udGgsICRkYXksICRob3VyLCAkbWluKSB7CiAgLy8gRnJvbSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzg3MDgwNDgvcG9zaXRpb24tb2YtdGhlLXN1bi1naXZlbi10aW1lLW9mLWRheS1sYXRpdHVkZS1hbmQtbG9uZ2l0dWRlP3JxPTEKCiAgLy8gR2V0IEp1bGlhbiBkYXRlIGZvciBkYXRlIGF0IG5vb24KICAkamQgPSBncmVnb3JpYW50b2pkKCRtb250aCwkZGF5LCR5ZWFyKTsKICBlY2hvKCckamQgPSAnKTsgdmFyX2R1bXAoJGpkKTsKCiAgLy9jb3JyZWN0IGZvciBoYWxmLWRheSBvZmZzZXQKICAkZGF5ZnJhYyA9ICRob3VyIC8gMjQgLSAuNTsKICBlY2hvKCckZGF5ZnJhYyA9ICcpOyB2YXJfZHVtcCgkZGF5ZnJhYyk7CgogIC8vbm93IHNldCB0aGUgZnJhY3Rpb24gb2YgYSBkYXkgICAgICAKICAkZnJhYyA9ICRkYXlmcmFjICsgJG1pbiAvIDYwIC8gMjQ7CiAgZWNobygnJGZyYWMgPSAnKTsgdmFyX2R1bXAoJGZyYWMpOwogICRqZCA9ICRqZCArICRmcmFjOwogIGVjaG8oJyRqZCA9ICcpOyB2YXJfZHVtcCgkamQpOwoKICAvLyBUaGUgaW5wdXQgdG8gdGhlIEF0cm9ub21lcidzIGFsbWFuYWNoIGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4KICAvLyB0aGUgSnVsaWFuIGRhdGUgYW5kIEpEIDI0NTE1NDUuMCAobm9vbiwgMSBKYW51YXJ5IDIwMDApCiAgJHRpbWUgPSAoJGpkIC0gMjQ1MTU0NSk7CiAgZWNobygnJHRpbWUgPSAnKTsgdmFyX2R1bXAoJHRpbWUpOwogIC8vIEVjbGlwdGljIGNvb3JkaW5hdGVzCgogIC8vIE1lYW4gbG9uZ2l0dWRlCiAgJG1ubG9uZyA9ICgyODAuNDYwICsgMC45ODU2NDc0ICogJHRpbWUpOwogIGVjaG8oJyRtbmxvbmcgPSAnKTsgdmFyX2R1bXAoJG1ubG9uZyk7CiAgJG1ubG9uZyA9IGZtb2QoJG1ubG9uZywzNjApOyAgICAgIAogIGVjaG8oJyRtbmxvbmcgPSAnKTsgdmFyX2R1bXAoJG1ubG9uZyk7CiAgaWYgKCRtbmxvbmcgPCAwKSAkbW5sb25nID0gKCRtbmxvbmcgKyAzNjApOwogIGVjaG8oJyRtbmxvbmcgPSAnKTsgdmFyX2R1bXAoJG1ubG9uZyk7CgogIC8vIE1lYW4gYW5vbWFseQogICRtbmFub20gPSAoMzU3LjUyOCArIDAuOTg1NjAwMyAqICR0aW1lKTsKICBlY2hvKCckbW5hbm9tID0gJyk7IHZhcl9kdW1wKCRtbmFub20pOwogICRtbmFub20gPSBmbW9kKCRtbmFub20sMzYwKTsKICBlY2hvKCckbW5hbm9tID0gJyk7IHZhcl9kdW1wKCRtbmFub20pOwogIGlmICgkbW5hbm9tIDwgMCkgJG1uYW5vbSA9ICgkbW5hbm9tICsgMzYwKTsKICBlY2hvKCckbW5hbm9tID0gJyk7IHZhcl9kdW1wKCRtbmFub20pOwogICRtbmFub20gPSBkZWcycmFkKCRtbmFub20pOwogIGVjaG8oJyRtbmFub20gPSAnKTsgdmFyX2R1bXAoJG1uYW5vbSk7CgogIC8vIEVjbGlwdGljIGxvbmdpdHVkZSBhbmQgb2JsaXF1aXR5IG9mIGVjbGlwdGljCiAgJGVjbG9uZyA9ICgkbW5sb25nICsgMS45MTUgKiBzaW4oJG1uYW5vbSkgKyAwLjAyMCAqIHNpbigyICogJG1uYW5vbSkpOwogIGVjaG8oJyRlY2xvbmcgPSAnKTsgdmFyX2R1bXAoJGVjbG9uZyk7CiAgJGVjbG9uZyA9IGZtb2QoJGVjbG9uZywzNjApOwogIGVjaG8oJyRlY2xvbmcgPSAnKTsgdmFyX2R1bXAoJGVjbG9uZyk7CiAgaWYgKCRlY2xvbmcgPCAwKSAkZWNsb25nID0gKCRlY2xvbmcgKyAzNjApOwogIGVjaG8oJyRlY2xvbmcgPSAnKTsgdmFyX2R1bXAoJGVjbG9uZyk7CiAgJG9ibHFlYyA9ICgyMy40MzkgLSAwLjAwMDAwMDQgKiAkdGltZSk7CiAgZWNobygnJG9ibHFlYyA9ICcpOyB2YXJfZHVtcCgkb2JscWVjKTsKICAkZWNsb25nID0gZGVnMnJhZCgkZWNsb25nKTsKICBlY2hvKCckZWNsb25nID0gJyk7IHZhcl9kdW1wKCRlY2xvbmcpOwogICRvYmxxZWMgPSBkZWcycmFkKCRvYmxxZWMpOwogIGVjaG8oJyRvYmxxZWMgPSAnKTsgdmFyX2R1bXAoJG9ibHFlYyk7CgogIC8vIENlbGVzdGlhbCBjb29yZGluYXRlcwogIC8vIFJpZ2h0IGFzY2Vuc2lvbiBhbmQgZGVjbGluYXRpb24KICAkbnVtID0gKGNvcygkb2JscWVjKSAqIHNpbigkZWNsb25nKSk7CiAgZWNobygnJG51bSA9ICcpOyB2YXJfZHVtcCgkbnVtKTsKICAkZGVuID0gKGNvcygkZWNsb25nKSk7CiAgZWNobygnJGRlbiA9ICcpOyB2YXJfZHVtcCgkZGVuKTsKICAkcmEgPSAoYXRhbigkbnVtIC8gJGRlbikpOwogIGVjaG8oJyRyYSA9ICcpOyB2YXJfZHVtcCgkcmEpOwogIGlmICgkZGVuIDwgMCkgJHJhID0gKCRyYSArIHBpKCkpOwogIGVjaG8oJyRyYSA9ICcpOyB2YXJfZHVtcCgkcmEpOwogIGlmICgkZGVuID49IDAgJiYgJG51bSA8MCkgJHJhID0gKCRyYSArIDIqcGkoKSk7CiAgZWNobygnJHJhID0gJyk7IHZhcl9kdW1wKCRyYSk7CiAgJGRlYyA9IChhc2luKHNpbigkb2JscWVjKSAqIHNpbigkZWNsb25nKSkpOwogIGVjaG8oJyRkZWMgPSAnKTsgdmFyX2R1bXAoJGRlYyk7CgogIC8vIExvY2FsIGNvb3JkaW5hdGVzCiAgLy8gR3JlZW53aWNoIG1lYW4gc2lkZXJlYWwgdGltZQogIC8vJGggPSAkaG91ciArICRtaW4gLyA2MCArICRzZWMgLyAzNjAwOwogICRoID0gJGhvdXIgKyAkbWluIC8gNjA7CiAgZWNobygnJGggPSAnKTsgdmFyX2R1bXAoJGgpOwogICRnbXN0ID0gKDYuNjk3Mzc1ICsgLjA2NTcwOTgyNDIgKiAkdGltZSArICRoKTsKICBlY2hvKCckZ21zdCA9ICcpOyB2YXJfZHVtcCgkZ21zdCk7CiAgJGdtc3QgPSBmbW9kKCRnbXN0LDI0KTsKICBlY2hvKCckZ21zdCA9ICcpOyB2YXJfZHVtcCgkZ21zdCk7CiAgaWYgKCRnbXN0IDwgMCkgJGdtc3QgPSAoJGdtc3QgKyAyNCk7CiAgZWNobygnJGdtc3QgPSAnKTsgdmFyX2R1bXAoJGdtc3QpOwoKICAvLyBMb2NhbCBtZWFuIHNpZGVyZWFsIHRpbWUKICAkbG1zdCA9ICgkZ21zdCArICRsb25nIC8gMTUpOwogIGVjaG8oJyRsbXN0ID0gJyk7IHZhcl9kdW1wKCRsbXN0KTsKICAkbG1zdCA9IGZtb2QoJGxtc3QsMjQpOwogIGVjaG8oJyRsbXN0ID0gJyk7IHZhcl9kdW1wKCRsbXN0KTsKICBpZiAoJGxtc3QgPCAwKSAkbG1zdCA9ICgkbG1zdCArIDI0KTsKICBlY2hvKCckbG1zdCA9ICcpOyB2YXJfZHVtcCgkbG1zdCk7CiAgJGxtc3QgPSBkZWcycmFkKCRsbXN0ICogMTUpOwogIGVjaG8oJyRsbXN0ID0gJyk7IHZhcl9kdW1wKCRsbXN0KTsKCiAgLy8gSG91ciBhbmdsZQogICRoYSA9ICgkbG1zdCAtICRyYSk7CiAgZWNobygnJGhhID0gJyk7IHZhcl9kdW1wKCRoYSk7CiAgaWYgKCRoYSA8IHBpKCkpICRoYSA9ICgkaGEgKyAyKnBpKCkpOwogIGVjaG8oJyRoYSA9ICcpOyB2YXJfZHVtcCgkaGEpOwogIGlmICgkaGEgPiBwaSgpKSAkaGEgPSAoJGhhIC0gMipwaSgpKTsKICBlY2hvKCckaGEgPSAnKTsgdmFyX2R1bXAoJGhhKTsKCiAgLy8gTGF0aXR1ZGUgdG8gcmFkaWFucwogICRsYXQgPSBkZWcycmFkKCRsYXQpOwogIGVjaG8oJyRsYXQgPSAnKTsgdmFyX2R1bXAoJGxhdCk7CgogIC8vIEF6aW11dGggYW5kIGVsZXZhdGlvbgogICRlbCA9IChhc2luKHNpbigkZGVjKSAqIHNpbigkbGF0KSArIGNvcygkZGVjKSAqIGNvcygkbGF0KSAqIGNvcygkaGEpKSk7CiAgZWNobygnJGVsID0gJyk7IHZhcl9kdW1wKCRlbCk7CiAgJGF6ID0gKGFzaW4oLWNvcygkZGVjKSAqIHNpbigkaGEpIC8gY29zKCRlbCkpKTsKICBlY2hvKCckYXogPSAnKTsgdmFyX2R1bXAoJGF6KTsKCiAgLy8gRm9yIGxvZ2ljIGFuZCBuYW1lcywgc2VlIFNwZW5jZXIsIEouVy4gMTk4OS4gU29sYXIgRW5lcmd5LiA0Mig0KTozNTMgICAgICAKICBpZiAoKHNpbigkZGVjKSAtIHNpbigkZWwpICogc2luKCRsYXQpKSA+MDApIHsKICAgIGlmKHNpbigkYXopIDwgMCkgJGF6ID0gKCRheiArIDIqcGkoKSk7CiAgfSBlbHNlIHsKICAgICRheiA9IChwaSgpIC0gJGF6KTsKICB9CiAgZWNobygnJGF6ID0gJyk7IHZhcl9kdW1wKCRheik7CgogICRlbCA9IHJhZDJkZWcoJGVsKTsKICBlY2hvKCckZWwgPSAnKTsgdmFyX2R1bXAoJGVsKTsKICAkYXogPSByYWQyZGVnKCRheik7CiAgZWNobygnJGF6ID0gJyk7IHZhcl9kdW1wKCRheik7CiAgJGxhdCA9IHJhZDJkZWcoJGxhdCk7CiAgZWNobygnJGxhdCA9ICcpOyB2YXJfZHVtcCgkbGF0KTsKCiAgcmV0dXJuIGFycmF5KG51bWJlcl9mb3JtYXQoJGVsLDIpLG51bWJlcl9mb3JtYXQoJGF6LDIpKTsKfQp2YXJfZHVtcChnZXRTdW5Qb3NpdGlvbigtNC43Nzg2NywgMTEuODYzNjQsIDIwMTMsIDksIDEsIDEwLCAwLCAwKSk7CgovLyB5b3VyIGNvZGUgZ29lcyBoZXJl