<search function="horizonview">
  <name>Horizon View</name>
  <category>Reference<category>General</category></category>
  <contributor>Gregory Krohne</contributor>
  <link>http://www.fourmilab.ch/yoursky/#Horizon</link>
  <email>zeakz1d02@sneakemail.com</email>
  <description>
  The view of the horizon sky from a given location, date, and time. The viewing direction (azimuth) may be set to compass points or a set number of degrees.
    <div class="helpboxDescLabels">Switches:</div>
    <table class="helpboxDescTable">
      <tr><td>/latitude</td><td> - </td><td>degrees, minutes, seconds</td></tr>
      <tr><td>/longitude</td><td> - </td><td>or decimal form</td></tr>
      <tr><td>/north|south</td><td> - </td><td>latitude direction</td></tr>
      <tr><td>/east|west</td><td> - </td><td>longitude direction</td></tr>
      <tr><td>/city|location</td><td> - </td><td>A nearby city, instead of lat/lon</td></tr>
      <tr><td colspan="3">/azimuth|direction:degrees|</td></tr>
			<tr><td colspan="3"> - north|northeast|east|southeast|</td></tr>
			<tr><td colspan="3"> - south|southwest|west|northwest</td></tr>
      <tr><td>/field|view:degrees</td><td> - </td><td>field of view</td></tr>
      <tr><td>/date|universal</td><td> - </td><td>date/time in universal format</td></tr>
      <tr><td>/julian</td><td> - </td><td>date/time in Julian format</td></tr>
      <tr><td>/image|size</td><td> - </td><td>Image width/height in pixels</td></tr>
      <tr><td colspan="3">/colour|color:[colour|color|black|white|night|red]</td></tr>
    </table>
    <div class="helpboxDescLabels">Examples:</div>
    <table class="helpboxDescTable">
      <tr><td>horizonview 90 0</td></tr>
      <tr><td> - at the south pole</td></tr>
      <tr><td>horizonview /lat:21d18m21s /north /lon:157d51m36s /west /direction:southwest</td></tr>
      <tr><td> - Hololulu, Hawaii</td></tr>
      <tr><td>horizonview /city:Paris /date:[2000-01-01,1:00:00]</td></tr>
      <tr><td> - Paris at the turn of the century</td></tr>
      <tr><td>horizonview /color:night /size:1024</td></tr>
      <tr><td> - large, red (night vision) map</td></tr>
    </table>
  </description>
  <form name="horizonviewf"
        method="post"
        action="http://www.fourmilab.ch/cgi-bin/uncgi/Yourhorizon">
		<input type="hidden" name="date" value="0"/>
    <input type="hidden" name="utc" value="2000-01-01 12:00:00" />
    <input type="hidden" name="jd" value="2451545.00000" />
    <input type="hidden" name="azimuth" value="V" />
    <input type="hidden" name="azideg" value="0° (N)" />
    <input type="hidden" name="fov" value="45°" />
    <input type="hidden" name="lat" value="47°" />
    <input type="hidden" name="ns" value="North" />
    <input type="hidden" name="lon" value="7°" />
    <input type="hidden" name="ew" value="East" />
    <input type="hidden" name="coords" value="on" />
    <input type="hidden" name="moonp" value="on" />
    <input type="hidden" name="deep" value="on" />
    <input type="hidden" name="deepm" value="6.5" />
    <input type="hidden" name="consto" value="on" />
    <input type="hidden" name="constn" value="on" />
    <input type="hidden" name="constb" value="on" />
    <input type="hidden" name="limag" value="6.5" />
    <input type="hidden" name="starn" value="on" />
    <input type="hidden" name="starnm" value="3.5" />
    <input type="hidden" name="starb" value="on" />
    <input type="hidden" name="starbm" value="4.0" />
    <input type="hidden" name="showm" value="on" />
    <input type="hidden" name="showmb" value="-1.5" />
    <input type="hidden" name="showmd" value="6.0" />
    <input type="hidden" name="terrain" value="on" />
    <input type="hidden" name="terrough" value="0.7" />
    <input type="hidden" name="scenery" value="on" />
    <input type="hidden" name="imgsize" value="512" />
    <input type="hidden" name="scheme" value="0" />
    <input type="hidden" name="edump" value="-xe" />
    <input type="hidden" name="elements" value="" />
  </form>
  <script><![CDATA[
    function horizonview(q)
    {
      if( nullArgs("horizonview", q) )
        return;

      // Default FORM variables for horizonviewf
      document.horizonviewf.date.value = "0";
      document.horizonviewf.utc.value = "";
      document.horizonviewf.jd.value = "";
      document.horizonviewf.azimuth.value = "";
      document.horizonviewf.azideg.value = "";
      document.horizonviewf.fov.value = "";
      document.horizonviewf.lat.value = "";
      document.horizonviewf.ns.value = "";
      document.horizonviewf.lon.value = "";
      document.horizonviewf.ew.value = "";
      //document.horizonviewf.coords.value = "";
      //document.horizonviewf.moonp.value = "";
      //document.horizonviewf.deep.value = "";
      //document.horizonviewf.deepm.value = "";
      //document.horizonviewf.consto.value = "";
      //document.horizonviewf.constn.value = "";
      //document.horizonviewf.constb.value = "";
      //document.horizonviewf.limag.value = "";
      //document.horizonviewf.starn.value = "";
      //document.horizonviewf.starnm.value = "";
      //document.horizonviewf.starb.value = "";
      //document.horizonviewf.starbm.value = "";
      document.horizonviewf.showm.value = "";
      //document.horizonviewf.showmb.value = "";
      //document.horizonviewf.showmd.value = "";
      //document.horizonviewf.terrain.value = "";
      //document.horizonviewf.terrough.value = "";
      //document.horizonviewf.scenery.value = "";
      //document.horizonviewf.imgsize.value = "";
      //document.horizonviewf.scheme.value = "";
      //document.horizonviewf.edump.value = "";
      //document.horizonviewf.elements.value = "";
			
      // Parse switches with parseArgs:
      var args = parseArgs(q, "latitude, longitude, north, south, east, west, city, location, date, image, size, colour, color, julian, universal, azimuth, direction, field, view");
      for (var iSwitch = 0; iSwitch < args.switches.length; iSwitch++)
      {
        switch( args.switches[iSwitch].name )
        {
          case "latitude":
						document.horizonviewf.lat.value = args.switches[iSwitch].value;
            break;
          case "longitude":
						document.horizonviewf.lon.value = args.switches[iSwitch].value;
            break;
          case "north":
						document.horizonviewf.ns.value = "North";
            break;
          case "south":
						document.horizonviewf.ns.value = "South";
            break;
          case "east":
						document.horizonviewf.ew.value = "East";
            break;
          case "west":
						document.horizonviewf.ew.value = "West";
            break;
          case "city":
          case "location":
						getCity(args.switches[iSwitch].value);
            break;
          case "date":
					case "universal":
						// Parse out the date/time portion, however it was enclosed
						var pattern = /\d+[\/-]\d+[\/-]\d+[\D\d+:\d+[:\d+]?]?/;
						var result = args.switches[iSwitch].value.match(pattern);
						if (result != null) {
							document.horizonviewf.utc.value = result[0];
							document.horizonviewf.date.value = "1";
						}
						break;
					case "julian":
						document.horizonviewf.date.value = "2";
						document.horizonviewf.jd.value = args.switches[iSwitch].value;
						break;
          case "image":
          case "size":
						document.horizonviewf.imgsize.value = args.switches[iSwitch].value;
            break;
          case "colour":
          case "color":
						switch( args.switches[iSwitch].value.toLowerCase() )
						{
							case "black":
							case "b":
								document.horizonviewf.scheme.value = "1";
								break;
							case "white":
							case "w":
								document.horizonviewf.scheme.value = "2";
								break;
							case "night":
							case "n":
							case "red":
							case "r":
								document.horizonviewf.scheme.value = "3";
								break;
							default:
								document.horizonviewf.scheme.value = "0";
								break;
						}
            break;
          case "azimuth":
          case "direction":
						switch( args.switches[iSwitch].value.toLowerCase() )
						{
							case "north":
							case "n":
								document.horizonviewf.azimuth.value = "0";
								document.horizonviewf.azideg.value = "0";
								break;
							case "northeast":
							case "ne":
								document.horizonviewf.azimuth.value = "45";
								document.horizonviewf.azideg.value = "45";
								break;
							case "east":
							case "e":
								document.horizonviewf.azimuth.value = "90";
								document.horizonviewf.azideg.value = "90";
								break;
							case "southeast":
							case "se":
								document.horizonviewf.azimuth.value = "135";
								document.horizonviewf.azideg.value = "135";
								break;
							case "south":
							case "s":
								document.horizonviewf.azimuth.value = "180";
								document.horizonviewf.azideg.value = "180";
								break;
							case "southwest":
							case "sw":
								document.horizonviewf.azimuth.value = "225";
								document.horizonviewf.azideg.value = "225";
								break;
							case "west":
							case "w":
								document.horizonviewf.azimuth.value = "270";
								document.horizonviewf.azideg.value = "270";
								break;
							case "northwest":
							case "nw":
								document.horizonviewf.azimuth.value = "315";
								document.horizonviewf.azideg.value = "315";
								break;
							default:
								var pattern =/\d+[\.\d+]?/;
								var result = args.switches[iSwitch].value.match(pattern);
								if (result != null) {
									document.horizonviewf.azimuth.value = "";
									document.horizonviewf.azideg.value = result[0];
								}
								break;
						}
            break;
          case "field":
          case "view":
						var pattern =/\d+[\.\d+]?/;
						var result = args.switches[iSwitch].value.match(pattern);
						if (result != null) {
							document.horizonviewf.fov.value = result[0];
						}
            break;
          default:
            break;
        }
      }
			
			if (args.q) {
				var parsed = args.q.split(/ /);
				document.horizonviewf.lat.value = parsed[0];
				if (parsed[1])
					document.horizonviewf.lon.value = parsed[1];
				if (parsed[2])
				document.horizonviewf.fov.value = result[2];
			}
			
      submitForm(horizonviewf);
    }
		
		function getCity(strCity) {
			
			var citiesURL = "http://www.fourmilab.ch/yoursky/cities.html";
			// get the target city from the list
			var citiesXmlHttp = new ActiveXObject("Microsoft.XmlHttp");
			citiesXmlHttp.open("GET", citiesURL, false);
			citiesXmlHttp.send();
			
			var citiesBody = citiesXmlHttp.responseText;
			
			// parse out the city we want
			/*
<a href="/cgi-bin/uncgi/Yoursky?z=1&lat=48.84&ns=North&lon=2.34&ew=East">
Paris, France</a>
			*/
			var cityRegExp = new RegExp(
					'<a href\\="\\/cgi\\-bin\\/uncgi\\/Yoursky\\?z\\=1\\&lat\\=(.*)\\&ns\\=(North|South)\\&lon\\=(.*)\\&ew\\=(East|West)">'
					+ '\\n?.*'
					+ strCity
					+ '.*'
					+ '<\\/a>', "i");
			var cityResult = cityRegExp.exec(citiesBody);
			
			if (cityResult == null)
			{
				
				alert( "City/Location [" + strCity + "] not found" );
				
			} else {
				document.horizonviewf.lat.value = cityResult[1];
				document.horizonviewf.ns.value = cityResult[2];
				document.horizonviewf.lon.value = cityResult[3];						
				document.horizonviewf.ew.value = cityResult[4];
			
			}
			
			return;
				
		}
  ]]></script>
  <copyright>
    The following applies if this file is included and distributed with Dave's Quick Search Deskbar:
    Copyright (c) 2002 David Bau; Distributed under the terms of the GNU Public License, Version 2 (http://www.gnu.org/copyleft/gpl.txt)
  </copyright>
  <created_by>
    This search file was initially created on 08/18/04 at 17:01:49
    by Dave's Quick Search Deskbar Search Wizard version 1.3,
    Copyright (c) 2002 Glenn Carr; Distributed under the terms of the GNU General Public License, Version 2
  </created_by>
</search>
