1 |
4307
|
leinfelder
|
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
|
2 |
|
|
<html>
|
3 |
|
|
<head>
|
4 |
|
|
<title>
|
5 |
|
|
<a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008 Overview
|
6 |
|
|
</title>
|
7 |
|
|
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
|
8 |
|
|
<script>
|
9 |
|
|
function asd() {
|
10 |
|
|
|
11 |
|
|
parent.document.title="MGRS.js Overview";
|
12 |
|
|
|
13 |
|
|
}
|
14 |
|
|
</script>
|
15 |
|
|
</head>
|
16 |
|
|
<body bgcolor="white" onload="asd();">
|
17 |
|
|
|
18 |
|
|
<!-- ========== START OF NAVBAR ========== -->
|
19 |
|
|
<a name="navbar_top"><!-- --></a>
|
20 |
|
|
<table border="0" width="100%" cellpadding="1" cellspacing="0">
|
21 |
|
|
<tr>
|
22 |
|
|
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
|
23 |
|
|
<a name="navbar_top_firstrow"><!-- --></a>
|
24 |
|
|
<table border="0" cellpadding="0" cellspacing="3">
|
25 |
|
|
<tr align="center" valign="top">
|
26 |
|
|
|
27 |
|
|
|
28 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td>
|
29 |
|
|
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td>
|
30 |
|
|
|
31 |
|
|
|
32 |
|
|
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
|
33 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
|
34 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
|
35 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
|
36 |
|
|
</tr>
|
37 |
|
|
</table>
|
38 |
|
|
</td>
|
39 |
|
|
<td bgcolor="#EEEEFF" align="right" valign="top">
|
40 |
|
|
<em>
|
41 |
|
|
<b><a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008</b></em>
|
42 |
|
|
</td>
|
43 |
|
|
</tr>
|
44 |
|
|
|
45 |
|
|
<tr>
|
46 |
|
|
<td bgcolor="white" class="NavBarCell2"><font size="-2">
|
47 |
|
|
PREV
|
48 |
|
|
NEXT</font></td>
|
49 |
|
|
<td bgcolor="white" class="NavBarCell2"><font size="-2">
|
50 |
|
|
<a href="index.html" target="_top"><b>FRAMES</b></a>
|
51 |
|
|
<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
|
52 |
|
|
|
53 |
|
|
<script>
|
54 |
|
|
<!--
|
55 |
|
|
if(window==top) {
|
56 |
|
|
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
|
57 |
|
|
}
|
58 |
|
|
//-->
|
59 |
|
|
</script>
|
60 |
|
|
<noscript>
|
61 |
|
|
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
|
62 |
|
|
</noscript>
|
63 |
|
|
</font></td>
|
64 |
|
|
</tr>
|
65 |
|
|
</table>
|
66 |
|
|
<!-- =========== END OF NAVBAR =========== -->
|
67 |
|
|
|
68 |
|
|
<hr>
|
69 |
|
|
<center>
|
70 |
|
|
|
71 |
|
|
<h2>MGRS.js</h2>
|
72 |
|
|
|
73 |
|
|
</center>
|
74 |
|
|
|
75 |
|
|
|
76 |
|
|
|
77 |
|
|
|
78 |
|
|
<h4>Summary</h4>
|
79 |
|
|
<p>
|
80 |
|
|
|
81 |
|
|
No overview generated for 'MGRS.js'<BR/><BR/>
|
82 |
|
|
|
83 |
|
|
</p>
|
84 |
|
|
|
85 |
|
|
<hr>
|
86 |
|
|
|
87 |
|
|
|
88 |
|
|
|
89 |
|
|
<!-- ========== METHOD SUMMARY =========== -->
|
90 |
|
|
|
91 |
|
|
<a name="method_summary"><!-- --></a>
|
92 |
|
|
<table border="1" cellpadding="3" cellspacing="0" width="100%">
|
93 |
|
|
<tr bgcolor="#CCCCFF" class="TableHeadingColor">
|
94 |
|
|
<td colspan=2>
|
95 |
|
|
<font size="+2">
|
96 |
|
|
<b>Method Summary</b>
|
97 |
|
|
</font>
|
98 |
|
|
</td>
|
99 |
|
|
</tr>
|
100 |
|
|
|
101 |
|
|
|
102 |
|
|
<tr bgcolor="white" class="TableRowColor">
|
103 |
|
|
<td align="right" valign="top" width="1%">
|
104 |
|
|
<font size="-1">
|
105 |
|
|
<code>static Object</code>
|
106 |
|
|
</font>
|
107 |
|
|
</td>
|
108 |
|
|
<td>
|
109 |
|
|
<code>
|
110 |
|
|
<b>
|
111 |
|
|
<a href="GLOBALS.html#AsciiToNum">AsciiToNum</a></b>( ascii )
|
112 |
|
|
</code>
|
113 |
|
|
<br>
|
114 |
|
|
|
115 |
|
|
|
116 |
|
|
</td>
|
117 |
|
|
</tr>
|
118 |
|
|
|
119 |
|
|
<tr bgcolor="white" class="TableRowColor">
|
120 |
|
|
<td align="right" valign="top" width="1%">
|
121 |
|
|
<font size="-1">
|
122 |
|
|
<code>static Object</code>
|
123 |
|
|
</font>
|
124 |
|
|
</td>
|
125 |
|
|
<td>
|
126 |
|
|
<code>
|
127 |
|
|
<b>
|
128 |
|
|
<a href="GLOBALS.html#degToRad">degToRad</a></b>(deg)
|
129 |
|
|
</code>
|
130 |
|
|
<br>
|
131 |
|
|
|
132 |
|
|
|
133 |
|
|
</td>
|
134 |
|
|
</tr>
|
135 |
|
|
|
136 |
|
|
<tr bgcolor="white" class="TableRowColor">
|
137 |
|
|
<td align="right" valign="top" width="1%">
|
138 |
|
|
<font size="-1">
|
139 |
|
|
<code>static Object</code>
|
140 |
|
|
</font>
|
141 |
|
|
</td>
|
142 |
|
|
<td>
|
143 |
|
|
<code>
|
144 |
|
|
<b>
|
145 |
|
|
<a href="GLOBALS.html#formatMGRS">formatMGRS</a></b>()
|
146 |
|
|
</code>
|
147 |
|
|
<br>
|
148 |
|
|
|
149 |
|
|
|
150 |
|
|
</td>
|
151 |
|
|
</tr>
|
152 |
|
|
|
153 |
|
|
<tr bgcolor="white" class="TableRowColor">
|
154 |
|
|
<td align="right" valign="top" width="1%">
|
155 |
|
|
<font size="-1">
|
156 |
|
|
<code>static Object</code>
|
157 |
|
|
</font>
|
158 |
|
|
</td>
|
159 |
|
|
<td>
|
160 |
|
|
<code>
|
161 |
|
|
<b>
|
162 |
|
|
<a href="GLOBALS.html#get100kID">get100kID</a></b>( easting, northing, zone_number)
|
163 |
|
|
</code>
|
164 |
|
|
<br>
|
165 |
|
|
|
166 |
|
|
Get the two letter 100k designator for a given UTM easting,
|
167 |
|
|
northing and zone number value.
|
168 |
|
|
</td>
|
169 |
|
|
</tr>
|
170 |
|
|
|
171 |
|
|
<tr bgcolor="white" class="TableRowColor">
|
172 |
|
|
<td align="right" valign="top" width="1%">
|
173 |
|
|
<font size="-1">
|
174 |
|
|
<code>static Object</code>
|
175 |
|
|
</font>
|
176 |
|
|
</td>
|
177 |
|
|
<td>
|
178 |
|
|
<code>
|
179 |
|
|
<b>
|
180 |
|
|
<a href="GLOBALS.html#get100kSetForZone">get100kSetForZone</a></b>(i)
|
181 |
|
|
</code>
|
182 |
|
|
<br>
|
183 |
|
|
|
184 |
|
|
Given a UTM zone number, figure out the MGRS 100K set it is in.
|
185 |
|
|
</td>
|
186 |
|
|
</tr>
|
187 |
|
|
|
188 |
|
|
<tr bgcolor="white" class="TableRowColor">
|
189 |
|
|
<td align="right" valign="top" width="1%">
|
190 |
|
|
<font size="-1">
|
191 |
|
|
<code>static Object</code>
|
192 |
|
|
</font>
|
193 |
|
|
</td>
|
194 |
|
|
<td>
|
195 |
|
|
<code>
|
196 |
|
|
<b>
|
197 |
|
|
<a href="GLOBALS.html#getLetter100kID">getLetter100kID</a></b>( column, row, parm)
|
198 |
|
|
</code>
|
199 |
|
|
<br>
|
200 |
|
|
|
201 |
|
|
Get the two-letter MGRS 100k designator given information
|
202 |
|
|
translated from the UTM northing, easting and zone number.
|
203 |
|
|
</td>
|
204 |
|
|
</tr>
|
205 |
|
|
|
206 |
|
|
<tr bgcolor="white" class="TableRowColor">
|
207 |
|
|
<td align="right" valign="top" width="1%">
|
208 |
|
|
<font size="-1">
|
209 |
|
|
<code>static Object</code>
|
210 |
|
|
</font>
|
211 |
|
|
</td>
|
212 |
|
|
<td>
|
213 |
|
|
<code>
|
214 |
|
|
<b>
|
215 |
|
|
<a href="GLOBALS.html#getLetterDesignator">getLetterDesignator</a></b>(lat)
|
216 |
|
|
</code>
|
217 |
|
|
<br>
|
218 |
|
|
|
219 |
|
|
|
220 |
|
|
</td>
|
221 |
|
|
</tr>
|
222 |
|
|
|
223 |
|
|
<tr bgcolor="white" class="TableRowColor">
|
224 |
|
|
<td align="right" valign="top" width="1%">
|
225 |
|
|
<font size="-1">
|
226 |
|
|
<code>static Object</code>
|
227 |
|
|
</font>
|
228 |
|
|
</td>
|
229 |
|
|
<td>
|
230 |
|
|
<code>
|
231 |
|
|
<b>
|
232 |
|
|
<a href="GLOBALS.html#LLtoUTM">LLtoUTM</a></b>()
|
233 |
|
|
</code>
|
234 |
|
|
<br>
|
235 |
|
|
|
236 |
|
|
Converts a set of Longitude and Latitude co-ordinates to UTM
|
237 |
|
|
given an ellipsoid
|
238 |
|
|
</td>
|
239 |
|
|
</tr>
|
240 |
|
|
|
241 |
|
|
<tr bgcolor="white" class="TableRowColor">
|
242 |
|
|
<td align="right" valign="top" width="1%">
|
243 |
|
|
<font size="-1">
|
244 |
|
|
<code>static Object</code>
|
245 |
|
|
</font>
|
246 |
|
|
</td>
|
247 |
|
|
<td>
|
248 |
|
|
<code>
|
249 |
|
|
<b>
|
250 |
|
|
<a href="GLOBALS.html#MGRS">MGRS</a></b>()
|
251 |
|
|
</code>
|
252 |
|
|
<br>
|
253 |
|
|
|
254 |
|
|
|
255 |
|
|
</td>
|
256 |
|
|
</tr>
|
257 |
|
|
|
258 |
|
|
<tr bgcolor="white" class="TableRowColor">
|
259 |
|
|
<td align="right" valign="top" width="1%">
|
260 |
|
|
<font size="-1">
|
261 |
|
|
<code>static Object</code>
|
262 |
|
|
</font>
|
263 |
|
|
</td>
|
264 |
|
|
<td>
|
265 |
|
|
<code>
|
266 |
|
|
<b>
|
267 |
|
|
<a href="GLOBALS.html#NumToAscii">NumToAscii</a></b>( num )
|
268 |
|
|
</code>
|
269 |
|
|
<br>
|
270 |
|
|
|
271 |
|
|
|
272 |
|
|
</td>
|
273 |
|
|
</tr>
|
274 |
|
|
|
275 |
|
|
|
276 |
|
|
</table>
|
277 |
|
|
<p>
|
278 |
|
|
|
279 |
|
|
<!-- ========== END METHOD SUMMARY =========== -->
|
280 |
|
|
|
281 |
|
|
|
282 |
|
|
<pre class="sourceview"><span class="comment">/*
|
283 |
|
|
Author: Patrice G. Cappelaere (Got library from Geoserver)
|
284 |
|
|
License: LGPL as per: http://www.gnu.org/copyleft/lesser.html
|
285 |
|
|
|
286 |
|
|
$Id: MGRS.js 2546 2007-01-23 12:07:39Z gjvoosten $
|
287 |
|
|
*/</span>
|
288 |
|
|
|
289 |
|
|
|
290 |
|
|
<span class="reserved">function</span> MGRS() {
|
291 |
|
|
<span class="comment">/**
|
292 |
|
|
* UTM zones are grouped, and assigned to one of a group of 6
|
293 |
|
|
* sets.
|
294 |
|
|
*/</span>
|
295 |
|
|
var NUM_100K_SETS = 6;
|
296 |
|
|
|
297 |
|
|
<span class="comment">/**
|
298 |
|
|
* The column letters (for easting) of the lower left value, per
|
299 |
|
|
* set.
|
300 |
|
|
*/</span>
|
301 |
|
|
var SET_ORIGIN_COLUMN_LETTERS = new Array(<span class="literal">'A'</span>,<span class="literal">'J'</span>,<span class="literal">'S'</span>,<span class="literal">'A'</span>,<span class="literal">'J'</span>,<span class="literal">'S'</span>);
|
302 |
|
|
|
303 |
|
|
<span class="comment">/**
|
304 |
|
|
* The row letters (for northing) of the lower left value, per
|
305 |
|
|
* set.
|
306 |
|
|
*/</span>
|
307 |
|
|
var SET_ORIGIN_ROW_LETTERS = new Array(<span class="literal">'A'</span>,<span class="literal">'F'</span>,<span class="literal">'A'</span>,<span class="literal">'F'</span>,<span class="literal">'A'</span>,<span class="literal">'F'</span>);
|
308 |
|
|
|
309 |
|
|
<span class="comment">/**
|
310 |
|
|
* The column letters (for easting) of the lower left value, per
|
311 |
|
|
* set,, for Bessel Ellipsoid.
|
312 |
|
|
*/</span>
|
313 |
|
|
var BESSEL_SET_ORIGIN_COLUMN_LETTERS = new Array( <span class="literal">'A'</span>, <span class="literal">'J'</span>, <span class="literal">'S'</span>, <span class="literal">'A'</span>, <span class="literal">'J'</span>, <span class="literal">'S'</span> );
|
314 |
|
|
|
315 |
|
|
<span class="comment">/**
|
316 |
|
|
* The row letters (for northing) of the lower left value, per
|
317 |
|
|
* set, for Bessel Ellipsoid.
|
318 |
|
|
*/</span>
|
319 |
|
|
var BESSEL_SET_ORIGIN_ROW_LETTERS = new Array( <span class="literal">'L'</span>, <span class="literal">'R'</span>, <span class="literal">'L'</span>, <span class="literal">'R'</span>, <span class="literal">'L'</span>, <span class="literal">'R'</span> );
|
320 |
|
|
var SET_NORTHING_ROLLOVER = 20000000;
|
321 |
|
|
|
322 |
|
|
<span class="comment">/**
|
323 |
|
|
* Use 5 digits for northing and easting values, for 1 meter
|
324 |
|
|
* accuracy of coordinate.
|
325 |
|
|
*/</span>
|
326 |
|
|
|
327 |
|
|
var ACCURACY_1_METER = 5;
|
328 |
|
|
|
329 |
|
|
<span class="comment">/**
|
330 |
|
|
* Use 4 digits for northing and easting values, for 10 meter
|
331 |
|
|
* accuracy of coordinate.
|
332 |
|
|
*/</span>
|
333 |
|
|
var ACCURACY_10_METER = 4;
|
334 |
|
|
|
335 |
|
|
<span class="comment">/**
|
336 |
|
|
* Use 3 digits for northing and easting values, for 100 meter
|
337 |
|
|
* accuracy of coordinate.
|
338 |
|
|
*/</span>
|
339 |
|
|
var ACCURACY_100_METER = 3;
|
340 |
|
|
|
341 |
|
|
<span class="comment">/**
|
342 |
|
|
* Use 2 digits for northing and easting values, for 1000 meter
|
343 |
|
|
* accuracy of coordinate.
|
344 |
|
|
*/</span>
|
345 |
|
|
|
346 |
|
|
var ACCURACY_1000_METER = 2;
|
347 |
|
|
<span class="comment">/**
|
348 |
|
|
* Use 1 digits for northing and easting values, for 10000 meter
|
349 |
|
|
* accuracy of coordinate.
|
350 |
|
|
*/</span>
|
351 |
|
|
var ACCURACY_10000_METER = 1;
|
352 |
|
|
|
353 |
|
|
<span class="comment">/** The set origin column letters to use. */</span>
|
354 |
|
|
var originColumnLetters = SET_ORIGIN_COLUMN_LETTERS;
|
355 |
|
|
|
356 |
|
|
<span class="comment">/** The set origin row letters to use. */</span>
|
357 |
|
|
var originRowLetters = SET_ORIGIN_ROW_LETTERS;
|
358 |
|
|
|
359 |
|
|
var A = 65; //AsciiToNum(<span class="literal">'A'</span>);
|
360 |
|
|
var I = 73; //AsciiToNum(<span class="literal">'I'</span>);
|
361 |
|
|
var O = 79; //AsciiToNum(<span class="literal">'O'</span>);
|
362 |
|
|
var V = 86; //AsciiToNum(<span class="literal">'V'</span>);
|
363 |
|
|
var Z = 90; //AsciiToNum(<span class="literal">'Z'</span>);
|
364 |
|
|
|
365 |
|
|
var DEBUG = false;
|
366 |
|
|
|
367 |
|
|
<span class="comment">/** The String holding the MGRS coordinate value. */</span>
|
368 |
|
|
var mgrs_;
|
369 |
|
|
var lat_;
|
370 |
|
|
var lon_;
|
371 |
|
|
var radlat_ ;
|
372 |
|
|
var radlon_ ;
|
373 |
|
|
|
374 |
|
|
var northing_;
|
375 |
|
|
var easting_;
|
376 |
|
|
var zone_number_;
|
377 |
|
|
var zone_letter_;
|
378 |
|
|
|
379 |
|
|
<span class="comment">/**
|
380 |
|
|
* Conversion of lat/lon to MGRS
|
381 |
|
|
*/</span>
|
382 |
|
|
<span class="reserved">this</span>.convert = <span class="reserved">function</span>(latitude, longitude) {
|
383 |
|
|
lat_ = parseFloat(latitude);
|
384 |
|
|
lon_ = parseFloat(longitude);
|
385 |
|
|
radlat_ = degToRad(lat_);
|
386 |
|
|
radlon_ = degToRad(lon_);
|
387 |
|
|
|
388 |
|
|
LLtoUTM();
|
389 |
|
|
<span class="reserved">return</span> formatMGRS();
|
390 |
|
|
}
|
391 |
|
|
|
392 |
|
|
<span class="reserved">function</span> degToRad(deg) {
|
393 |
|
|
<span class="reserved">return</span> (deg * (Math.PI / 180.0));
|
394 |
|
|
}
|
395 |
|
|
|
396 |
|
|
<span class="comment">/**
|
397 |
|
|
* Converts a set of Longitude and Latitude co-ordinates to UTM
|
398 |
|
|
* given an ellipsoid
|
399 |
|
|
*
|
400 |
|
|
* <span class="attrib">@param</span> ellip an ellipsoid definition.
|
401 |
|
|
* <span class="attrib">@param</span> llpoint the coordinate to be converted
|
402 |
|
|
* <span class="attrib">@param</span> utmpoint A UTMPoint instance to put the results in. If
|
403 |
|
|
* null, a new UTMPoint will be allocated.
|
404 |
|
|
* <span class="attrib">@return</span> A UTM class instance containing the value of
|
405 |
|
|
* <code>null</code> if conversion failed. If you pass
|
406 |
|
|
* in a UTMPoint, it will be returned as well if
|
407 |
|
|
* successful.
|
408 |
|
|
*/</span>
|
409 |
|
|
<span class="reserved">function</span> LLtoUTM() {
|
410 |
|
|
var Lat = lat_;
|
411 |
|
|
var Long = lon_;
|
412 |
|
|
var a = 6378137.0; //ellip.radius;
|
413 |
|
|
var eccSquared = 0.00669438; //ellip.eccsq;
|
414 |
|
|
var k0 = 0.9996;
|
415 |
|
|
var LongOrigin;
|
416 |
|
|
var eccPrimeSquared;
|
417 |
|
|
var N, T, C, A, M;
|
418 |
|
|
var LatRad = radlat_;
|
419 |
|
|
var LongRad = radlon_;
|
420 |
|
|
var LongOriginRad;
|
421 |
|
|
var ZoneNumber;
|
422 |
|
|
<span class="comment"> // (int)</span>
|
423 |
|
|
ZoneNumber = Math.floor((Long + 180) / 6) + 1;
|
424 |
|
|
<span class="comment">
|
425 |
|
|
//Make sure the longitude 180.00 is in Zone 60</span>
|
426 |
|
|
<span class="reserved">if</span> (Long == 180) {
|
427 |
|
|
ZoneNumber = 60;
|
428 |
|
|
}
|
429 |
|
|
<span class="comment">
|
430 |
|
|
// Special zone for Norway</span>
|
431 |
|
|
<span class="reserved">if</span> (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {
|
432 |
|
|
ZoneNumber = 32;
|
433 |
|
|
}
|
434 |
|
|
<span class="comment">
|
435 |
|
|
// Special zones for Svalbard</span>
|
436 |
|
|
<span class="reserved">if</span> (Lat >= 72.0 && Lat < 84.0) {
|
437 |
|
|
<span class="reserved">if</span> (Long >= 0.0 && Long < 9.0)
|
438 |
|
|
ZoneNumber = 31;
|
439 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> (Long >= 9.0 && Long < 21.0)
|
440 |
|
|
ZoneNumber = 33;
|
441 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> (Long >= 21.0 && Long < 33.0)
|
442 |
|
|
ZoneNumber = 35;
|
443 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> (Long >= 33.0 && Long < 42.0)
|
444 |
|
|
ZoneNumber = 37;
|
445 |
|
|
}
|
446 |
|
|
|
447 |
|
|
LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin
|
448 |
|
|
<span class="comment"> // in middle of</span>
|
449 |
|
|
<span class="comment"> // zone</span>
|
450 |
|
|
LongOriginRad = degToRad(LongOrigin);
|
451 |
|
|
|
452 |
|
|
eccPrimeSquared = (eccSquared) / (1 - eccSquared);
|
453 |
|
|
|
454 |
|
|
N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));
|
455 |
|
|
T = Math.tan(LatRad) * Math.tan(LatRad);
|
456 |
|
|
C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);
|
457 |
|
|
A = Math.cos(LatRad) * (LongRad - LongOriginRad);
|
458 |
|
|
|
459 |
|
|
M = a
|
460 |
|
|
* ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5
|
461 |
|
|
* eccSquared * eccSquared * eccSquared / 256)
|
462 |
|
|
* LatRad
|
463 |
|
|
- (3 * eccSquared / 8 + 3 * eccSquared * eccSquared
|
464 |
|
|
/ 32 + 45 * eccSquared * eccSquared
|
465 |
|
|
* eccSquared / 1024)
|
466 |
|
|
* Math.sin(2 * LatRad)
|
467 |
|
|
+ (15 * eccSquared * eccSquared / 256 + 45 * eccSquared
|
468 |
|
|
* eccSquared * eccSquared / 1024)
|
469 |
|
|
* Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared
|
470 |
|
|
* eccSquared / 3072)
|
471 |
|
|
* Math.sin(6 * LatRad));
|
472 |
|
|
|
473 |
|
|
var UTMEasting = (k0
|
474 |
|
|
* N
|
475 |
|
|
* (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T
|
476 |
|
|
+ 72 * C - 58 * eccPrimeSquared)
|
477 |
|
|
* A * A * A * A * A / 120.0) + 500000.0);
|
478 |
|
|
|
479 |
|
|
var UTMNorthing = (k0 * (M + N
|
480 |
|
|
* Math.tan(LatRad)
|
481 |
|
|
* (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A
|
482 |
|
|
/ 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared)
|
483 |
|
|
* A * A * A * A * A * A / 720.0)));
|
484 |
|
|
<span class="reserved">if</span> (Lat < 0.0) {
|
485 |
|
|
UTMNorthing += 10000000.0; //10000000 meter offset <span class="reserved">for</span>
|
486 |
|
|
<span class="comment"> // southern hemisphere</span>
|
487 |
|
|
}
|
488 |
|
|
|
489 |
|
|
northing_ = Math.round(UTMNorthing);
|
490 |
|
|
easting_ = Math.round(UTMEasting);
|
491 |
|
|
zone_number_ = ZoneNumber;
|
492 |
|
|
zone_letter_ = getLetterDesignator(Lat);
|
493 |
|
|
}
|
494 |
|
|
|
495 |
|
|
<span class="reserved">function</span> getLetterDesignator(lat) {
|
496 |
|
|
<span class="comment"> //This is here as an error flag to show that the Latitude is</span>
|
497 |
|
|
<span class="comment"> //outside MGRS limits</span>
|
498 |
|
|
var LetterDesignator = <span class="literal">'Z'</span>;
|
499 |
|
|
|
500 |
|
|
<span class="reserved">if</span> ((84 >= lat) && (lat >= 72))
|
501 |
|
|
LetterDesignator = <span class="literal">'X'</span>;
|
502 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((72 > lat) && (lat >= 64))
|
503 |
|
|
LetterDesignator = <span class="literal">'W'</span>;
|
504 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((64 > lat) && (lat >= 56))
|
505 |
|
|
LetterDesignator = <span class="literal">'V'</span>;
|
506 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((56 > lat) && (lat >= 48))
|
507 |
|
|
LetterDesignator = <span class="literal">'U'</span>;
|
508 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((48 > lat) && (lat >= 40))
|
509 |
|
|
LetterDesignator = <span class="literal">'T'</span>;
|
510 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((40 > lat) && (lat >= 32))
|
511 |
|
|
LetterDesignator = <span class="literal">'S'</span>;
|
512 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((32 > lat) && (lat >= 24))
|
513 |
|
|
LetterDesignator = <span class="literal">'R'</span>;
|
514 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((24 > lat) && (lat >= 16))
|
515 |
|
|
LetterDesignator = <span class="literal">'Q'</span>;
|
516 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((16 > lat) && (lat >= 8))
|
517 |
|
|
LetterDesignator = <span class="literal">'P'</span>;
|
518 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((8 > lat) && (lat >= 0))
|
519 |
|
|
LetterDesignator = <span class="literal">'N'</span>;
|
520 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((0 > lat) && (lat >= -8))
|
521 |
|
|
LetterDesignator = <span class="literal">'M'</span>;
|
522 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((-8 > lat) && (lat >= -16))
|
523 |
|
|
LetterDesignator = <span class="literal">'L'</span>;
|
524 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((-16 > lat) && (lat >= -24))
|
525 |
|
|
LetterDesignator = <span class="literal">'K'</span>;
|
526 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((-24 > lat) && (lat >= -32))
|
527 |
|
|
LetterDesignator = <span class="literal">'J'</span>;
|
528 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((-32 > lat) && (lat >= -40))
|
529 |
|
|
LetterDesignator = <span class="literal">'H'</span>;
|
530 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((-40 > lat) && (lat >= -48))
|
531 |
|
|
LetterDesignator = <span class="literal">'G'</span>;
|
532 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((-48 > lat) && (lat >= -56))
|
533 |
|
|
LetterDesignator = <span class="literal">'F'</span>;
|
534 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((-56 > lat) && (lat >= -64))
|
535 |
|
|
LetterDesignator = <span class="literal">'E'</span>;
|
536 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((-64 > lat) && (lat >= -72))
|
537 |
|
|
LetterDesignator = <span class="literal">'D'</span>;
|
538 |
|
|
<span class="reserved">else</span> <span class="reserved">if</span> ((-72 > lat) && (lat >= -80))
|
539 |
|
|
LetterDesignator = <span class="literal">'C'</span>;
|
540 |
|
|
<span class="reserved">return</span> LetterDesignator;
|
541 |
|
|
}
|
542 |
|
|
|
543 |
|
|
<span class="reserved">function</span> formatMGRS() {
|
544 |
|
|
var seasting = <span class="literal">""</span> + easting_;
|
545 |
|
|
var snorthing = <span class="literal">""</span>+ northing_;
|
546 |
|
|
<span class="reserved">while</span>( snorthing.length > 6 )
|
547 |
|
|
snorthing = snorthing.substr(1,snorthing.length-1);
|
548 |
|
|
|
549 |
|
|
var str= zone_number_ + <span class="literal">""</span> + zone_letter_ +
|
550 |
|
|
get100kID(easting_, northing_, zone_number_) +
|
551 |
|
|
seasting.substr(1,4) + snorthing.substr(1,4);
|
552 |
|
|
|
553 |
|
|
<span class="reserved">return</span> str;
|
554 |
|
|
}
|
555 |
|
|
|
556 |
|
|
<span class="comment">/**
|
557 |
|
|
* Get the two letter 100k designator for a given UTM easting,
|
558 |
|
|
* northing and zone number value.
|
559 |
|
|
*/</span>
|
560 |
|
|
<span class="reserved">function</span> get100kID( easting, northing, zone_number) {
|
561 |
|
|
var setParm = get100kSetForZone(zone_number);
|
562 |
|
|
var setColumn = Math.floor( easting / 100000);
|
563 |
|
|
var setRow = Math.floor( northing / 100000) % 20;
|
564 |
|
|
<span class="comment"> //trace("get100kID:"+setParm+" "+setColumn+" "+setRow);</span>
|
565 |
|
|
<span class="reserved">return</span> getLetter100kID(setColumn, setRow, setParm);
|
566 |
|
|
}
|
567 |
|
|
|
568 |
|
|
<span class="comment">/**
|
569 |
|
|
* Given a UTM zone number, figure out the MGRS 100K set it is in.
|
570 |
|
|
*/</span>
|
571 |
|
|
<span class="reserved">function</span> get100kSetForZone(i) {
|
572 |
|
|
var setParm = i % NUM_100K_SETS;
|
573 |
|
|
<span class="reserved">if</span> (setParm == 0)
|
574 |
|
|
setParm = NUM_100K_SETS;
|
575 |
|
|
|
576 |
|
|
<span class="reserved">return</span> setParm;
|
577 |
|
|
}
|
578 |
|
|
|
579 |
|
|
<span class="comment">/**
|
580 |
|
|
* Get the two-letter MGRS 100k designator given information
|
581 |
|
|
* translated from the UTM northing, easting and zone number.
|
582 |
|
|
*
|
583 |
|
|
* <span class="attrib">@param</span> setColumn the column index as it relates to the MGRS
|
584 |
|
|
* 100k set spreadsheet, created from the UTM easting.
|
585 |
|
|
* Values are 1-8.
|
586 |
|
|
* <span class="attrib">@param</span> setRow the row index as it relates to the MGRS 100k set
|
587 |
|
|
* spreadsheet, created from the UTM northing value. Values
|
588 |
|
|
* are from 0-19.
|
589 |
|
|
* <span class="attrib">@param</span> setParm the set block, as it relates to the MGRS 100k set
|
590 |
|
|
* spreadsheet, created from the UTM zone. Values are from
|
591 |
|
|
* 1-60.
|
592 |
|
|
* <span class="attrib">@return</span> two letter MGRS 100k code.
|
593 |
|
|
*/</span>
|
594 |
|
|
|
595 |
|
|
<span class="reserved">function</span> getLetter100kID( column, row, parm) {
|
596 |
|
|
<span class="comment"> // colOrigin and rowOrigin are the letters at the origin of the set</span>
|
597 |
|
|
var index = parm-1;
|
598 |
|
|
var colOrigin = AsciiToNum(SET_ORIGIN_COLUMN_LETTERS[index]);
|
599 |
|
|
var rowOrigin = AsciiToNum(SET_ORIGIN_ROW_LETTERS[index]);
|
600 |
|
|
<span class="comment">
|
601 |
|
|
// colInt and rowInt are the letters to build to return</span>
|
602 |
|
|
var colInt = colOrigin + column - 1;
|
603 |
|
|
var rowInt = rowOrigin + row;
|
604 |
|
|
var rollover = false;
|
605 |
|
|
|
606 |
|
|
<span class="reserved">if</span> ( colInt > Z ) {
|
607 |
|
|
colInt = colInt - Z + A - 1;
|
608 |
|
|
rollover = true;
|
609 |
|
|
}
|
610 |
|
|
|
611 |
|
|
<span class="reserved">if</span> (colInt == I || (colOrigin < I && colInt > I)
|
612 |
|
|
|| ((colInt > I || colOrigin < I) && rollover)) {
|
613 |
|
|
colInt++;
|
614 |
|
|
}
|
615 |
|
|
|
616 |
|
|
<span class="reserved">if</span> (colInt == O || (colOrigin < O && colInt > O)
|
617 |
|
|
|| ((colInt > O || colOrigin < O) && rollover)) {
|
618 |
|
|
colInt++;
|
619 |
|
|
|
620 |
|
|
<span class="reserved">if</span> (colInt == I) {
|
621 |
|
|
colInt++;
|
622 |
|
|
}
|
623 |
|
|
}
|
624 |
|
|
|
625 |
|
|
<span class="reserved">if</span> (colInt > Z) {
|
626 |
|
|
colInt = colInt - Z + A - 1;
|
627 |
|
|
}
|
628 |
|
|
|
629 |
|
|
<span class="reserved">if</span> (rowInt > V) {
|
630 |
|
|
rowInt = rowInt - V + A - 1;
|
631 |
|
|
rollover = true;
|
632 |
|
|
} <span class="reserved">else</span> {
|
633 |
|
|
rollover = false;
|
634 |
|
|
}
|
635 |
|
|
|
636 |
|
|
<span class="reserved">if</span>( ((rowInt == I) || ((rowOrigin < I) && (rowInt > I)))
|
637 |
|
|
|| (((rowInt > I)||(rowOrigin < I)) && rollover)) {
|
638 |
|
|
rowInt++;
|
639 |
|
|
}
|
640 |
|
|
|
641 |
|
|
<span class="reserved">if</span>( ((rowInt == O) || ((rowOrigin < O) && (rowInt > O)))
|
642 |
|
|
|| (((rowInt > O)|| (rowOrigin < O)) && rollover)) {
|
643 |
|
|
rowInt++;
|
644 |
|
|
|
645 |
|
|
<span class="reserved">if</span> (rowInt == I) {
|
646 |
|
|
rowInt++;
|
647 |
|
|
}
|
648 |
|
|
}
|
649 |
|
|
|
650 |
|
|
<span class="reserved">if</span> (rowInt > V) {
|
651 |
|
|
rowInt = rowInt - V + A - 1;
|
652 |
|
|
}
|
653 |
|
|
|
654 |
|
|
var twoLetter = NumToAscii(colInt) + <span class="literal">""</span> + NumToAscii(rowInt);
|
655 |
|
|
<span class="reserved">return</span> twoLetter;
|
656 |
|
|
}
|
657 |
|
|
|
658 |
|
|
|
659 |
|
|
<span class="reserved">function</span> AsciiToNum( ascii ) {
|
660 |
|
|
switch( ascii ) {
|
661 |
|
|
case <span class="literal">'A'</span>:
|
662 |
|
|
<span class="reserved">return</span> 65;
|
663 |
|
|
case <span class="literal">'B'</span>:
|
664 |
|
|
<span class="reserved">return</span> 66;
|
665 |
|
|
case <span class="literal">'C'</span>:
|
666 |
|
|
<span class="reserved">return</span> 67;
|
667 |
|
|
case <span class="literal">'D'</span>:
|
668 |
|
|
<span class="reserved">return</span> 68;
|
669 |
|
|
case <span class="literal">'E'</span>:
|
670 |
|
|
<span class="reserved">return</span> 69;
|
671 |
|
|
case <span class="literal">'F'</span>:
|
672 |
|
|
<span class="reserved">return</span> 70;
|
673 |
|
|
case <span class="literal">'G'</span>:
|
674 |
|
|
<span class="reserved">return</span> 71;
|
675 |
|
|
case <span class="literal">'H'</span>:
|
676 |
|
|
<span class="reserved">return</span> 72;
|
677 |
|
|
case <span class="literal">'I'</span>:
|
678 |
|
|
<span class="reserved">return</span> 73;
|
679 |
|
|
case <span class="literal">'J'</span>:
|
680 |
|
|
<span class="reserved">return</span> 74;
|
681 |
|
|
case <span class="literal">'K'</span>:
|
682 |
|
|
<span class="reserved">return</span> 75;
|
683 |
|
|
case <span class="literal">'L'</span>:
|
684 |
|
|
<span class="reserved">return</span> 76;
|
685 |
|
|
case <span class="literal">'M'</span>:
|
686 |
|
|
<span class="reserved">return</span> 77;
|
687 |
|
|
case <span class="literal">'N'</span>:
|
688 |
|
|
<span class="reserved">return</span> 78;
|
689 |
|
|
case <span class="literal">'O'</span>:
|
690 |
|
|
<span class="reserved">return</span> 79;
|
691 |
|
|
case <span class="literal">'P'</span>:
|
692 |
|
|
<span class="reserved">return</span> 80;
|
693 |
|
|
case <span class="literal">'Q'</span>:
|
694 |
|
|
<span class="reserved">return</span> 81;
|
695 |
|
|
case <span class="literal">'R'</span>:
|
696 |
|
|
<span class="reserved">return</span> 82;
|
697 |
|
|
case <span class="literal">'S'</span>:
|
698 |
|
|
<span class="reserved">return</span> 83;
|
699 |
|
|
case <span class="literal">'T'</span>:
|
700 |
|
|
<span class="reserved">return</span> 84;
|
701 |
|
|
case <span class="literal">'U'</span>:
|
702 |
|
|
<span class="reserved">return</span> 85;
|
703 |
|
|
case <span class="literal">'V'</span>:
|
704 |
|
|
<span class="reserved">return</span> 86;
|
705 |
|
|
case <span class="literal">'W'</span>:
|
706 |
|
|
<span class="reserved">return</span> 87;
|
707 |
|
|
case <span class="literal">'X'</span>:
|
708 |
|
|
<span class="reserved">return</span> 88;
|
709 |
|
|
case <span class="literal">'Y'</span>:
|
710 |
|
|
<span class="reserved">return</span> 89;
|
711 |
|
|
case <span class="literal">'Z'</span>:
|
712 |
|
|
<span class="reserved">return</span> 90;
|
713 |
|
|
}
|
714 |
|
|
}
|
715 |
|
|
|
716 |
|
|
<span class="reserved">function</span> NumToAscii( num ) {
|
717 |
|
|
switch( num ) {
|
718 |
|
|
case 65:
|
719 |
|
|
<span class="reserved">return</span> <span class="literal">'A'</span>;
|
720 |
|
|
case 66:
|
721 |
|
|
<span class="reserved">return</span> <span class="literal">'B'</span>;
|
722 |
|
|
case 67:
|
723 |
|
|
<span class="reserved">return</span> <span class="literal">'C'</span>;
|
724 |
|
|
case 68:
|
725 |
|
|
<span class="reserved">return</span> <span class="literal">'D'</span>;
|
726 |
|
|
case 69:
|
727 |
|
|
<span class="reserved">return</span> <span class="literal">'E'</span>;
|
728 |
|
|
case 70:
|
729 |
|
|
<span class="reserved">return</span> <span class="literal">'F'</span>;
|
730 |
|
|
case 71:
|
731 |
|
|
<span class="reserved">return</span> <span class="literal">'G'</span>;
|
732 |
|
|
case 72:
|
733 |
|
|
<span class="reserved">return</span> <span class="literal">'H'</span>;
|
734 |
|
|
case 73:
|
735 |
|
|
<span class="reserved">return</span> <span class="literal">'I'</span>;
|
736 |
|
|
case 74:
|
737 |
|
|
<span class="reserved">return</span> <span class="literal">'J'</span>;
|
738 |
|
|
case 75 :
|
739 |
|
|
<span class="reserved">return</span> <span class="literal">'K'</span>;
|
740 |
|
|
case 76:
|
741 |
|
|
<span class="reserved">return</span> <span class="literal">'L'</span>;
|
742 |
|
|
case 77:
|
743 |
|
|
<span class="reserved">return</span> <span class="literal">'M'</span>;
|
744 |
|
|
case 78:
|
745 |
|
|
<span class="reserved">return</span> <span class="literal">'N'</span>;
|
746 |
|
|
case 79:
|
747 |
|
|
<span class="reserved">return</span> <span class="literal">'O'</span>;
|
748 |
|
|
case 80:
|
749 |
|
|
<span class="reserved">return</span> <span class="literal">'P'</span>;
|
750 |
|
|
case 81:
|
751 |
|
|
<span class="reserved">return</span> <span class="literal">'Q'</span>;
|
752 |
|
|
case 82:
|
753 |
|
|
<span class="reserved">return</span> <span class="literal">'R'</span>;
|
754 |
|
|
case 83:
|
755 |
|
|
<span class="reserved">return</span> <span class="literal">'S'</span>;
|
756 |
|
|
case 84:
|
757 |
|
|
<span class="reserved">return</span> <span class="literal">'T'</span>;
|
758 |
|
|
case 85:
|
759 |
|
|
<span class="reserved">return</span> <span class="literal">'U'</span>;
|
760 |
|
|
case 86:
|
761 |
|
|
<span class="reserved">return</span> <span class="literal">'V'</span>;
|
762 |
|
|
case 87:
|
763 |
|
|
<span class="reserved">return</span> <span class="literal">'W'</span>;
|
764 |
|
|
case 88:
|
765 |
|
|
<span class="reserved">return</span> <span class="literal">'X'</span>;
|
766 |
|
|
case 89:
|
767 |
|
|
<span class="reserved">return</span> <span class="literal">'Y'</span>;
|
768 |
|
|
case 90:
|
769 |
|
|
<span class="reserved">return</span> <span class="literal">'Z'</span>;
|
770 |
|
|
}
|
771 |
|
|
}
|
772 |
|
|
}</pre>
|
773 |
|
|
<hr>
|
774 |
|
|
|
775 |
|
|
|
776 |
|
|
|
777 |
|
|
<!-- ========== START OF NAVBAR ========== -->
|
778 |
|
|
<a name="navbar_top"><!-- --></a>
|
779 |
|
|
<table border="0" width="100%" cellpadding="1" cellspacing="0">
|
780 |
|
|
<tr>
|
781 |
|
|
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
|
782 |
|
|
<a name="navbar_top_firstrow"><!-- --></a>
|
783 |
|
|
<table border="0" cellpadding="0" cellspacing="3">
|
784 |
|
|
<tr align="center" valign="top">
|
785 |
|
|
|
786 |
|
|
|
787 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td>
|
788 |
|
|
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td>
|
789 |
|
|
|
790 |
|
|
|
791 |
|
|
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
|
792 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
|
793 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
|
794 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
|
795 |
|
|
</tr>
|
796 |
|
|
</table>
|
797 |
|
|
</td>
|
798 |
|
|
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
|
799 |
|
|
<b><a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008</b></em>
|
800 |
|
|
</td>
|
801 |
|
|
</tr>
|
802 |
|
|
|
803 |
|
|
<tr>
|
804 |
|
|
<td bgcolor="white" class="NavBarCell2"><font size="-2">
|
805 |
|
|
PREV
|
806 |
|
|
NEXT</font></td>
|
807 |
|
|
<td bgcolor="white" class="NavBarCell2"><font size="-2">
|
808 |
|
|
<a href="index.html" target="_top"><b>FRAMES</b></a>
|
809 |
|
|
<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
|
810 |
|
|
|
811 |
|
|
<script>
|
812 |
|
|
<!--
|
813 |
|
|
if(window==top) {
|
814 |
|
|
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
|
815 |
|
|
}
|
816 |
|
|
//-->
|
817 |
|
|
</script>
|
818 |
|
|
<noscript>
|
819 |
|
|
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
|
820 |
|
|
</noscript>
|
821 |
|
|
</font></td>
|
822 |
|
|
</tr>
|
823 |
|
|
</table>
|
824 |
|
|
<!-- =========== END OF NAVBAR =========== -->
|
825 |
|
|
|
826 |
|
|
<hr>
|
827 |
|
|
<font size="-1">
|
828 |
|
|
|
829 |
|
|
</font>
|
830 |
|
|
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Sun Apr 27 20:30:54 2008</div>
|
831 |
|
|
</body>
|
832 |
|
|
</html>
|