function isLonInRange(a){inRange=AstroMath.raInRange(a);if(!inRange){alert("RA goes from (0,360)")}return inRange}function isLatInRange(a){inRange=AstroMath.decInRange(a);if(!inRange){alert("Declination goes from (-90,90)")}return inRange}function parseData(b){var a=false;if(AstroMath.parseText(b.value)){if(b.name=="lat"){a=isLatInRange(b.value)}else{if(b.name=="lon"){a=isLonInRange(b.value)}}}return a}function PxPyToLonLat(d,c,b,a){iscaled=inverseScalePosition(d,b,a);radLonLat=XYToLonLat(iscaled.x,iscaled.y,c);lonlat={lon:AstroMath.radiansToDegree(radLonLat.lon),lat:AstroMath.radiansToDegree(radLonLat.lat)};position=LonLatToXY(lonlat.lon,lonlat.lat,c);if((iscaled.x.toPrecision(5)!=position.x.toPrecision(5))||(iscaled.y.toPrecision(5)!=position.y.toPrecision(5))){return{lon:null,lat:null}}return lonlat}function scalePosition(g,a,f){var d=a+1;var e=(1-f)/2;var c=Math.ceil(d*g/2);var b=Math.ceil(e*g/2+g/4);return{px:c,py:b}}function LonLatToXY(e,b,d){if(d<7){var c=Math.sqrt(1+Math.cos(b*Math.PI/180)*Math.cos((e/2)*Math.PI/180));var a=Math.cos(b*Math.PI/180)*Math.sin((e/2)*Math.PI/180)/c;var f=Math.sin(b*Math.PI/180)/c}else{var a=e/180;var f=b/90}return{x:a,y:f}}function inverseScalePosition(g,c,b){var d=(2*c)/g;var f=(4*b-g)/(2*g);var a=d-1;var e=(-2*f)+1;return{x:a,y:e}}function XYToLonLat(a,g,f){if(f<7){var b=1-Math.pow(a,2)/2-Math.pow(g,2)/2;var e=Math.sqrt(b);var c=Math.asin(Math.sqrt(2)*g*e);var d=2*Math.atan(Math.sqrt(2)*a*e/(2*b-1))}else{var d=Math.PI*a;var c=(Math.PI/2)*g}return{lon:d,lat:c}}function maxRA(a){ra1=a.corner1.lon+180;ra2=a.corner2.lon+180;ra3=a.corner3.lon+180;ra4=a.corner4.lon+180;tempmax=Math.max(ra1,ra2);tempmax=Math.max(tempmax,ra3);return Math.max(tempmax,ra4)}function maxDec(a){dec1=a.corner1.lat;dec2=a.corner2.lat;dec3=a.corner3.lat;dec4=a.corner4.lat;tempmax=Math.max(dec1,dec2);tempmax=Math.max(tempmax,dec3);return Math.max(tempmax,dec4)}function minRA(a){ra1=a.corner1.lon+180;ra2=a.corner2.lon+180;ra3=a.corner3.lon+180;ra4=a.corner4.lon+180;tempmin=Math.min(ra1,ra2);tempmin=Math.min(tempmin,ra3);return Math.min(tempmin,ra4)}function minDec(a){dec1=a.corner1.lat;dec2=a.corner2.lat;dec3=a.corner3.lat;dec4=a.corner4.lat;tempmin=Math.min(dec1,dec2);tempmin=Math.min(tempmin,dec3);return Math.min(tempmin,dec4)}function defaultLonLat(){return{lon1:-180,lat1:90,lon2:180,lat2:90,lon3:-180,lat3:-90,lon4:180,lat4:-90}}function calculateCorner(c,a,b){iscale=inverseScalePosition(c,a.px,a.py);radLonLat=XYToLonLat(iscale.x,iscale.y,b);return{pixel:a,lon:AstroMath.radiansToDegree(radLonLat.lon),lat:AstroMath.radiansToDegree(radLonLat.lat)}}function onRangeLonLat(c,a,b){onrange=true;iscale=inverseScalePosition(c,a.pixel.px,a.pixel.py);position=LonLatToXY(a.lon,a.lat,b);if((iscale.x.toPrecision(5)!=position.x.toPrecision(5))||(iscale.y.toPrecision(5)!=position.y.toPrecision(5))){onrange=false}return onrange}function getCorners(d,e,b,a,c){fullSize=d*Math.pow(2,e);px=Math.abs(c.x);py=Math.abs(c.y)+a;lonlat=PxPyToLonLat(fullSize,e,px,py);corner1={lon:(lonlat.lon)?lonlat.lon:-180,lat:(lonlat.lat)?lonlat.lat:90};px=Math.abs(c.x)+b;py=Math.abs(c.y)+a;lonlat=PxPyToLonLat(fullSize,e,px,py);corner2={lon:(lonlat.lon)?lonlat.lon:180,lat:(lonlat.lat)?lonlat.lat:90};px=Math.abs(c.x);py=Math.abs(c.y);lonlat=PxPyToLonLat(fullSize,e,px,py);corner3={lon:(lonlat.lon)?lonlat.lon:-180,lat:(lonlat.lat)?lonlat.lat:-90};px=Math.abs(c.x)+b;py=Math.abs(c.y);lonlat=PxPyToLonLat(fullSize,e,px,py);corner4={lon:(lonlat.lon)?lonlat.lon:180,lat:(lonlat.lat)?lonlat.lat:-90};return{corner1:corner1,corner2:corner2,corner3:corner3,corner4:corner4}};