
var offsetxpoint=-60;var offsetypoint=22;var ie=document.all;var ns6=document.getElementById&&!document.all;var enabletip=false;var tip_onmouseout;var tip_width,tip_height;var tip_options;function ietruebody(){return(document.compatMode&&document.compatMode!="BackCompat")?document.documentElement:document.body}
function ddrivetip(thetext,thecolor,thewidth,theheight,options){if(ns6||ie){tip_onmouseout=this.onmouseout!=hideddrivetip?this.onmouseout:null;this.onmouseout=hideddrivetip;tip_width=thewidth;tip_height=theheight;tip_options=options;var tipobj=document.getElementById("dhtmltooltip");if(!tipobj){document.body.appendChild(tipobj=document.createElement("TABLE"));tipobj.id="dhtmltooltip";var t=tipobj.insertRow(-1).insertCell(-1);tipobj.cellPadding=0;tipobj.cellSpacing=0;tipobj.borders=0;tipobj.style.position="absolute";tipobj.style.zIndex=999;}
var inObj=(tipobj.tagName=="TABLE")?tipobj.rows[0].cells[0]:tipobj;inObj.style.color=(options&&options.color)?options.color:"";inObj.style.border=(options&&options.border)?options.border:"";inObj.style.fontSize=(options&&options.fontSize)?options.fontSize:"";inObj.style.fontStyle=(options&&options.fontStyle)?options.fontStyle:"";inObj.style.fontWeight=(options&&options.fontWeight)?options.fontWeight:"";inObj.style.fontFamily=(options&&options.fontFamily)?options.fontFamily:"";inObj.style.padding=(options&&options.padding)?options.padding+"px":"";inObj.style.whiteSpace=(options&&options.nowrap)?"nowrap":"";inObj.innerHTML=thetext;var imgs=inObj.getElementsByTagName("IMG");if(imgs)for(var i in imgs)if(imgs[i])imgs[i].onload=positiontip;if(typeof thecolor!="undefined"&&thecolor!="")inObj.style.backgroundColor=thecolor;enabletip=true;return false;}}
function positiontip_event(e){if(enabletip){var curX=(ns6)?e.pageX:event.clientX;var curY=(ns6)?e.pageY:event.clientY;document.tip_curX=curX;document.tip_curY=curY;positiontip(curX,curY);}
if(window.coolbar_savedMouseMove)
return window.coolbar_savedMouseMove(e);}
function positiontip(curX,curY){if(!enabletip)return;if(typeof curX!="number")curX=document.tip_curX;if(typeof curY!="number")curY=document.tip_curY;var w=ie&&!window.opera?ietruebody().clientWidth:window.innerWidth-20;var h=ie&&!window.opera?ietruebody().clientHeight:window.innerHeight-20;var rightedge=w-curX-offsetxpoint;var bottomedge=h-curY-offsetypoint;var leftedge=(offsetxpoint<0)?offsetxpoint*(-1):-1000;var tipobj=document.getElementById("dhtmltooltip");if(tipobj){var inObj=(tipobj.tagName=="TABLE")?tipobj.rows[0].cells[0]:tipobj;tipobj.style.width=null;tipobj.style.height=null;if(tip_width){tipobj.style.width=tip_width+"px";}else{var maxWidth=(tip_options)?tip_options.maxWidth:0;if(maxWidth){tipobj.style.width="1px";inObj.noWrap=true;if(inObj.offsetWidth>maxWidth)
tipobj.style.width=maxWidth+"px";inObj.noWrap=false;}}
if(tip_height)tipobj.style.height=tip_height+"px";var left,top;if(rightedge<tipobj.offsetWidth)
left=ie?ietruebody().scrollLeft+curX-tipobj.offsetWidth:window.pageXOffset+curX-tipobj.offsetWidth;else if(curX<leftedge)
left=5;else
left=curX+offsetxpoint;if(bottomedge>=tipobj.offsetHeight&&curY+offsetypoint<h-tipobj.offsetHeight){top=curY+offsetypoint;}else{top=ie?ietruebody().scrollTop+curY-tipobj.offsetHeight-offsetypoint:window.pageYOffset+curY-tipobj.offsetHeight-offsetypoint;if(top<0){top=Math.max(0,Math.min(h-tipobj.offsetHeight,Math.round(curY-tipobj.offsetHeight/2)));if(curX<w/2)left=curX+15;else left=curX-tipobj.offsetWidth-15;}}
if(left||left==0)tipobj.style.left=left+"px";if(top||top==0)tipobj.style.top=top+"px";tipobj.style.visibility="visible";}}
function hideddrivetip(){if(ns6||ie){enabletip=false
var tipobj=document.getElementById("dhtmltooltip");if(tipobj){tipobj.style.visibility="hidden";tipobj.style.left="-1000px";tipobj.style.backgroundColor='';tipobj.style.width='';}}
if(tip_onmouseout)tip_onmouseout();}
if(!document.coolbar_initilized){document.coolbar_initilized=true;window.coolbar_savedMouseMove=document.onmousemove;document.onmousemove=positiontip_event;}
var centerRA,centerDE;var degPerPixel,radPerPixel;var rotateDeg=0,rotateRad=0,m_reverse=false;var shiftX=0,shiftY=0;var sin_fi1,cos_fi1;var sin_r=0,cos_r=1;var radPerDeg=Math.PI/180,radPerHour=Math.PI/12,PI_2=Math.PI/2,PI2=Math.PI*2;function setCenter(ra,de){centerRA=ra;centerDE=de;sin_fi1=Math.sin(de*Math.PI/180);cos_fi1=Math.cos(de*Math.PI/180);}
function setResolution(p_degPerPixel){degPerPixel=p_degPerPixel;radPerPixel=p_degPerPixel*Math.PI/180;}
function setRotation(p_rotateDeg){rotateDeg=p_rotateDeg;rotateRad=p_rotateDeg*Math.PI/180;sin_r=Math.sin(-rotateRad);cos_r=Math.cos(-rotateRad);}
function setReverse(p_reverse){m_reverse=p_reverse;}
function setShift(s_x,s_y){shiftX=s_x;shiftY=s_y;}
function formatRA(ra){if(ra<0){ra+=24;}else if(ra>=24){ra-=24;}
var hh=Math.floor(ra).toFixed(0);if(hh.length==1){hh="0"+hh;}
var mm=Math.floor(((ra-Math.floor(ra))*60)).toFixed(0);if(mm.length==1){mm="0"+mm;}
var ss=((ra*60-Math.floor(ra*60))*60).toFixed(2);if(ss.length==4){ss="0"+ss;}
return hh+"<sup>h</sup>"+mm+"<sup>m</sup>"+ss+"<sup>s</sup>";}
function formatDE(de){var deg=Math.floor(Math.abs(de)).toFixed(0);if(deg.length==1){deg="0"+deg;}
if(de<0){deg="-"+deg;}else{deg="+"+deg;}
var mm=Math.floor(Math.abs((Math.abs(de)-Math.floor(Math.abs(de)))*60)).toFixed(0);if(mm.length==1){mm="0"+mm;}
var ss=((Math.abs(de)*60-Math.floor(Math.abs(de*60)))*60).toFixed(1);if(ss.length==3){ss="0"+ss;}
return deg+"&deg;"+mm+"&prime;"+ss+"&Prime;";}
function extendNumber(num,len){var s=''+num;while(s.length<len)s='0'+s;return s;}
function getProjection(ra2,de2){var la=ra2*radPerHour;var fi=de2*radPerDeg;var sin_fi=Math.sin(fi);var cos_fi=Math.cos(fi);var la_la0=la-centerRA*radPerHour;var sin_la_la0=Math.sin(la_la0);var cos_la_la0=Math.cos(la_la0);var c=Math.acos(sin_fi1*sin_fi+cos_fi1*cos_fi*cos_la_la0);var k=(c===0)?0:-c/Math.sin(c)/radPerPixel;var x1=cos_fi*sin_la_la0;var y1=(cos_fi1*sin_fi-sin_fi1*cos_fi*cos_la_la0);this.x=(m_reverse?-k:k)*(x1*cos_r-y1*sin_r)+shiftX;this.y=k*(x1*sin_r+y1*cos_r)+shiftY;}
function getRevProjection(px1,py1){px1-=shiftX;py1-=shiftY;var x=(px1*(m_reverse?1:-1)*cos_r-py1*sin_r)*radPerPixel;var y=-(px1*(m_reverse?1:-1)*sin_r+py1*cos_r)*radPerPixel;var c=Math.sqrt(x*x+y*y);var sin_c=Math.sin(c);var cos_c=Math.cos(c);var fi=c===0?centerDE:Math.asin(cos_c*sin_fi1+y*sin_c*cos_fi1/c)/radPerDeg;var ala,t=0,atan;if(Math.abs(centerDE-90)<1e-9){ala=y===0?0:-x/y;t=-y;atan=y===0?Math.PI/(x<0?-2:2):Math.atan(ala);}else if(Math.abs(centerDE+90)<1e-9){ala=y===0?0:x/y;t=y;atan=y===0?Math.PI/(x<0?-2:2):Math.atan(ala);}else{t=c*cos_fi1*cos_c-y*sin_fi1*sin_c;ala=t===0?0:x*sin_c/t;atan=Math.atan(ala);}
if(t<0){atan=atan-Math.PI;}
var la=centerRA+atan/radPerHour;if(la<0){la+=24;}else if(la>=24){la-=24;}
this.ra=la;this.de=fi;}
function getTanProjection(ra2,de2){var x1=0,y1=0;if(centerRA!=ra2||centerDE!=de2){var r0=(ra2-centerRA)*radPerHour;var RA2=ra2*radPerHour,DE2=de2*radPerDeg;var sin_de2=Math.sin(DE2),cos_de2=Math.cos(DE2),cos_ra2=Math.cos(r0);var radius=Math.acos(sin_fi1*sin_de2+cos_fi1*cos_de2*cos_ra2);if(radius<Math.PI){var theta=1e30,sinA=0,cosA=0;if(centerDE>=90.0){theta=Math.PI-r0;if(theta<0.0)theta+=PI2;if(theta>=0.0)theta-=PI2;}else if(centerDE<=-90.0){theta=r0;if(theta<0.0)theta+=PI2;if(theta>=0.0)theta-=PI2;}else{var sin_ra2=Math.sin(r0);var sin_r=Math.sin(radius),cos_r=Math.cos(radius);sinA=cos_de2*sin_ra2/sin_r;cosA=(sin_de2-sin_fi1*cos_r)/(cos_fi1*sin_r);if(rotateRad!=0){theta=Math.atan2(sinA,cosA);if(theta<0.0)theta+=PI2;}}
var k=Math.tan(radius)/radPerPixel;if(theta!=1e30){theta+=rotateRad;x1=(m_reverse?k:-k)*Math.sin(theta);y1=-k*Math.cos(theta);}else{x1=(m_reverse?k:-k)*sinA;y1=-k*cosA;}}}
this.x=x1+shiftX;this.y=y1+shiftY;}
function getRevTanProjection(px1,py1){if(m_reverse)px1=-px1;px1-=shiftX;py1-=shiftY;var x=px1*radPerPixel;var y=py1*radPerPixel;var radius=Math.atan(Math.sqrt(x*x+y*y));var theta=Math.atan2(y,x)+rotateRad+PI_2;var sin_t=sin_fi1*Math.cos(radius)+cos_fi1*Math.sin(radius)*Math.cos(theta);var sin_decl=sin_t;var cos_decl=Math.sqrt(1-sin_t*sin_t);var decl=Math.atan2(sin_t,cos_decl);var rra=0.0;if(cos_decl!=0.0){if(centerDE>=90){theta=Math.atan2(-x,-y);rra=12+centerRA-(rotateRad+theta)/radPerHour;}else if(centerDE<=-90){theta=Math.atan2(-x,-y);rra=centerRA+(rotateRad+theta)/radPerHour;}else{sin_t=Math.sin(theta)*Math.sin(radius)/cos_decl;var cos_t=(Math.cos(radius)-sin_decl*sin_fi1)/(cos_decl*cos_fi1);rra=centerRA-Math.atan2(sin_t,cos_t)/radPerHour;}}
if(rra<0){rra+=24;}else if(rra>=24){rra-=24;}
this.ra=rra;this.de=decl/radPerDeg;}
function getAitoffProjection(width,height,RA,DE){var f=DE/180.0*Math.PI;var q=(RA-12)/12.0*Math.PI;var a=Math.acos(Math.cos(f)*Math.cos(q/2));var xx=0;var yy=0;if(a!=0.0){a=-a/Math.PI/Math.sin(a);xx=a*width*Math.cos(f)*Math.sin(q/2);yy=a*height*Math.sin(f);}
xx=xx+width/2;yy=yy+height/2;this.x=Math.round(xx);this.y=Math.round(yy);}
function getRevAitoffProjection(width,height,x,y){x=x-width/2;y=y-height/2;if(x===0&&y===0){this.ra=12;this.de=0;return;}
var V=0.0,S=0.0;var R1=-width/Math.PI;var R2=-height/Math.PI;V=y*y/R2/R2+x*x/R1/R1;S=x*x*R2*R2/(R1*R1*y*y+x*x*R2*R2);var T=0.0,Z=0.0;Z=Math.cos(Math.sqrt(V));T=S*(1-Z*Z)+Z*Z;var f=0.0,q=0.0;f=Math.acos(Math.sqrt(T));q=2*Math.acos(Z/Math.cos(f));var DE=0.0,RA=0.0;DE=(y<0?1:-1)*f/radPerDeg;RA=(x<0?1:-1)*q/radPerHour+12;this.ra=RA;this.de=DE;}
function checkPointInEllipse(p,x0,y0,r1,r2,angle){var x2=x0-r2*Math.cos(angle-rotateRad);var y2=y0+r2*Math.sin(angle-rotateRad);var d1sq=(p.x-x2)*(p.x-x2)+(p.y-y2)*(p.y-y2);var d2sq=(x2-x0)*(x2-x0)+(y2-y0)*(y2-y0);var d3sq=(p.x-x0)*(p.x-x0)+(p.y-y0)*(p.y-y0);var cosG=(d2sq+d3sq-d1sq)/(2*Math.sqrt(d2sq)*Math.sqrt(d3sq));var A=cosG*cosG;var B=1-A;var C=d3sq*(A/(r2*r2)+B/(r1*r1));return(C<=1);}
var SIDEREAL_GMST=-100;var SIDEREAL_GAST=-200;var SIDEREAL_LMST=-300;var SIDEREAL_LAST=-400;function julian_date(now_time_tm_year,now_time_tm_mon,now_time_tm_day,now_time_tm_hour,now_time_tm_min,now_time_tm_sec){var year=now_time_tm_year;var month=now_time_tm_mon+1;var day=now_time_tm_day;var UT=now_time_tm_hour+now_time_tm_min/60.0+now_time_tm_sec/3600.0;var JD=367*year-
toInt(7.0*(year+toInt((month+9.0)/12.0))/4.0)-
toInt(3.0*(toInt((year+(month-9.0)/7.0)/100.0)
+1.0)/4.0)+
toInt(275.0*month/9.0)+
day+1721028.5+UT/24.0;return(JD);}
function toInt(nmb){if(nmb>0)return Math.floor(nmb)
if(nmb<0)return Math.ceil(nmb)
return nmb;}
function FDoY(Y,M,D){return(Date.UTC(Y,M,D)-Date.UTC(Y,1,1))/86400000+1;}
function sidereal_time(time_now_tm_year,time_now_tm_mon,time_now_tm_day,time_now_tm_hour,time_now_tm_min,time_now_tm_sec,type,longitude){var JD_J2000,JD_now,JD_diff;var gmst,gast,JC,eqtime,last,lmst;time_ref_tm_sec=0;time_ref_tm_min=0;time_ref_tm_hour=12;time_ref_tm_day=1;time_ref_tm_mon=0;time_ref_tm_year=100;JD_J2000=julian_date(time_ref_tm_year,time_ref_tm_mon,time_ref_tm_day,time_ref_tm_hour,time_ref_tm_min,time_ref_tm_sec);JD_now=julian_date(time_now_tm_year,time_now_tm_mon,time_now_tm_day,time_now_tm_hour,time_now_tm_min,time_now_tm_sec);JD_diff=JD_now-JD_J2000;JC=JD_diff/36525.0;gmst=280.46061837+360.98564736629*JD_diff+
0.0003887933*Math.pow(JC,2)-
Math.pow(JC,3)/38710000.0;while(gmst>=360.0)
gmst-=360.0;gmst=gmst/15.0;if(type==SIDEREAL_GMST)
return(gmst);var day_of_year=FDoY(time_now_tm_year,time_now_tm_mon+1,time_now_tm_day);eqtime=(-0.49+0.3*day_of_year/365.0+
0.07*Math.cos(2.0*6.2831853*(day_of_year-35.0)/365.0))/3600.0;gast=gmst+eqtime;while(gast>24.0)gast-=24.0;if(type==SIDEREAL_GAST)return gast;last=gast+24.0+longitude/15.0;while(last>24.0)last-=24.0;if(type==SIDEREAL_LAST)return last;lmst=gmst+24.0+longitude/15.0;while(lmst>24.0)
lmst-=24.0;if(type==SIDEREAL_LMST)
return lmst;return lmst;}
function arrayContains(p_array,p_element){var i;for(i=0;i<p_array.length;i++){if(p_array[i]==p_element)return i;}
return-1;}
function Point(x,y){this.x=x;this.y=y;}
var SDSS_array=[[[149,156]],[[148.5,156]],[[146,156],[187,188]],[[143.5,155.5],[179,182],[184.5,189],[193,196.5]],[[142,155.5],[170.5,175],[177,198],[201,205.5]],[[141,154],[166,168],[169,208]],[[140,152.5],[164,211]],[[139,150.5],[159.5,160.5],[161.5,213.5],[231.5,234]],[[138,150.5],[158,216],[231,236.5]],[[137,150.5],[157,217.5],[230,238.5]],[[136,219],[229.5,239.5]],[[134.5,221.5],[229.5,240.5]],[[133.5,223.5],[231,242]],[[132.5,225.5],[233,243]],[[132,226.5],[234.5,244]],[[131,227.5],[235.5,244.5]],[[130.5,228.5],[236.5,244.5]],[[130,229],[237,245]],[[129.5,231],[238,245]],[[129,233.5],[238.5,245.5]],[[128,235.5],[239,246]],[[127,237.5],[239.5,247.5]],[[126,238],[240,248]],[[125.5,238.5],[241.5,249]],[[124,239],[242.5,250]],[[123.5,239.5],[243.5,250.5]],[[122.5,239.5],[245,251]],[[121.5,240],[245.5,251]],[[120.5,240.5],[246,251.5]],[[120,241],[246.5,251.5]],[[119.5,242],[246.5,251.5]],[[119.5,242.5],[246.5,252.5]],[[119,243],[246.5,253.5]],[[119,244],[247.5,254.5]],[[118.5,244.5],[248.5,255]],[[118,245.5],[249,256]],[[117.5,246.5],[250,257]],[[117,247],[251,257]],[[116.5,247.5],[252,257.5]],[[116,247.5],[252,257.5]],[[115.5,248],[252,257.5]],[[115,249],[252.5,257.5]],[[114,249.5],[252.5,257.5]],[[114,250],[252.5,258]],[[114,250.5],[253,258.5]],[[114,251.5],[253.5,258.5]],[[114.5,252.5],[254,259]],[[115,253],[254.5,259.5]],[[115,254],[255,260]],[[114.5,254.5],[255,260.5]],[[114,255],[255.5,261]],[[114,261]],[[113.5,261.5]],[[113,262]],[[112.5,263]],[[112,263]],[[111.5,257.5],[258,263.5]],[[111,257.5],[258.5,263.5]],[[110.5,258],[259.5,264]],[[110,258],[260.5,264]],[[110,258],[260,264]],[[110,258],[260,264]],[[110.5,258],[260,264]],[[110.5,258],[260,264.5]],[[112,258.5],[260,264.5]],[[111.5,258.5],[260,264.5]],[[110.5,258.5],[260.5,264.5]],[[109,259],[261.5,265]],[[108.5,259],[262,265.5]],[[110,259.5],[262.5,265.5]],[[111.5,259.5],[263,266]],[[111.5,259.5],[263,266.5]],[[112,260],[263,267]],[[113,260],[263,267]],[[114.5,260],[262.5,268]],[[114.5,260],[262.5,268]],[[114.5,260.5],[262.5,268.5]],[[114,260.5],[263,269]],[[114,261],[264,268.5]],[[114.5,261.5],[264.5,267]],[[115,262],[265,266]],[[115,262.5]],[[115,263]],[[114.5,263.5]],[[113.5,263.5]],[[113,264]],[[112.5,264.5]],[[112.5,265]],[[113.5,265]],[[112,264.5]],[[112,264]],[[112.5,264]],[[113,263.5]],[[113.5,263]],[[115,263]],[[116,262.5]],[[115.5,262]],[[115,261.5]],[[114.5,261.5]],[[114.5,261]],[[115,261]],[[115,261.5]],[[114.5,261.5]],[[114,261.5]],[[113.5,158],[161,261]],[[113,154],[160.5,260.5]],[[113.5,151.5],[160.5,260]],[[114,149.5],[160.5,252.5],[253.5,259.5]],[[114.5,142],[143,148],[161,252.5],[254.5,258.5],[358.5,377]],[[115,140.5],[143,146.5],[161.5,252.5],[254.5,258],[349,385.5]],[[115.5,138.5],[143,144.5],[161.5,254],[255,257.5],[343,392.5]],[[116,136],[158,254.5],[255.5,256.5],[338,396.5]],[[116,135.5],[155,254.5],[334.5,397]],[[116,135.5],[152,254.5],[330,397]],[[116,135.5],[148.5,255],[326,360.5],[370.5,397]],[[116.5,134.5],[144.5,255],[324,348],[384,397]],[[117,133],[141.5,255],[322,342.5],[390,397]],[[117.5,132.5],[138,255.5],[320,338.5],[393,397]],[[117.5,131.5],[136.5,255.5],[318,334.5]],[[117.5,130],[135,255],[318,330.5]],[[117.5,129],[131.5,254],[318,328]],[[117.5,127],[128.5,253],[318,325]],[[117.5,124.5],[127,252.5],[318,323]],[[118,122.5],[124,252.5],[318.5,321]],[[118,121],[123,253]],[[118.5,120],[121.5,253.5]],[[118.5,119.5],[121,251.5]],[[120.5,251]],[[120,250.5]],[[119.5,250.5]],[[119,249]],[[119,249.5]],[[120,249]],[[120,122],[123,248.5]],[[122,247]],[[122.5,246]],[[123,244]],[[122.5,230.5],[234.5,244.5]],[[121.5,253.5],[311.5,421.5]],[[121.5,253.5],[311.5,422]],[[123.5,253],[311.5,422]],[[124,253],[311.5,422.5]],[[124,252.5],[311.5,422.5]],[[124.5,252],[312,423]],[[171,242]],[[171.5,242]],[[171.5,242]],[[171.5,233.5]],[[171.5,216.5]],[[309,311],[421.5,426.5]],[[309,316],[416.5,426.5]],[[309.5,320],[412.5,426.5]],[[310,325],[409,426.5]],[[310.5,329.5],[405,426.5]],[[310.5,334.5],[400.5,426.5]],[[311.5,339.5],[394.5,424.5]],[[315.5,344.5],[389,419.5]],[[318,354],[381,416]],[[321,412]],[[325,408.5]],[[329.5,403]],[[337,398]],[[344,392.5]],[[352,382]]];var SDSS_minDE=-11.5;var SDSS_maxDE=70.5;function isCoveredSDSS(RA,DE){return true;}
function padNumber(number,len){var s=""+number;while(s.length<len)s="0"+s;return s;}
var labelShowPostProcess;function ObjectByPoint(p,stars,galaxies,nebulae,multiples,custom){var i;if(custom&&custom!==null&&custom.length){for(i=0;i<custom.length;i+=12){if(p.x>=parseInt(custom[i],10)-2&&p.x<=parseInt(custom[i],10)+2&&p.y>=parseInt(custom[i+1],10)-2&&p.y<=parseInt(custom[i+1],10)+2){this.type="custom";this.objType=1;this.x=custom[i];this.y=custom[i+1];this.objId=custom[i+2];this.p3=custom[i+3];this.p4=custom[i+4];this.p5=custom[i+5];this.p6=custom[i+6];this.p7=custom[i+7];this.p8=custom[i+8];this.p9=custom[i+9];this.p10=custom[i+10];this.p11=custom[i+11];return;}}}
if(stars&&stars!==null&&stars.length){for(i=0;i<stars.length;i+=9){if(p.x>=parseInt(stars[i],10)-2&&p.x<=parseInt(stars[i],10)+2&&p.y>=parseInt(stars[i+1],10)-2&&p.y<=parseInt(stars[i+1],10)+2){this.type="star";this.objType=1;this.x=stars[i];this.y=stars[i+1];this.objId=stars[i+2];this.p3=stars[i+3];this.p4=stars[i+4];this.p5=stars[i+5];this.p6=stars[i+6];this.p7=stars[i+7];this.p8=stars[i+8];return;}}}
if(galaxies&&galaxies!==null&&galaxies.length){for(i=0;i<galaxies.length;i+=12){var r1=parseInt(galaxies[i+9],10)/360000/degPerPixel/2;var x0=parseInt(galaxies[i],10),y0=parseInt(galaxies[i+1],10);if(p.x>=x0-r1&&p.x<=x0+r1&&p.y>=y0-r1&&p.y<=y0+r1){var angle=galaxies[i+11]*Math.PI/180.0;var r2=parseInt(galaxies[i+10],10)/360000/degPerPixel/2;if(checkPointInEllipse(p,x0,y0,r1,r2,angle)){this.type="galaxy";this.objType=2;this.x=galaxies[i];this.y=galaxies[i+1];this.objId=galaxies[i+2];this.p3=galaxies[i+3];this.p4=galaxies[i+4];this.p5=galaxies[i+5];this.p6=galaxies[i+6];this.p7=galaxies[i+7];this.p8=galaxies[i+8];this.p9=galaxies[i+9];this.p10=galaxies[i+10];this.p11=galaxies[i+11];return;}}}}
if(nebulae&&nebulae!==null&&nebulae.length){for(i=0;i<nebulae.length;i+=10){var r1=parseInt(nebulae[i+9],10)/360000/degPerPixel/2;var x0=parseInt(nebulae[i],10),y0=parseInt(nebulae[i+1],10);if(p.x>=x0-r1&&p.x<=x0+r1&&p.y>=y0-r1&&p.y<=y0+r1){this.type="nebula";this.objType=3;this.x=nebulae[i];this.y=nebulae[i+1];this.objId=nebulae[i+2];this.p3=nebulae[i+3];this.p4=nebulae[i+4];this.p5=nebulae[i+5];this.p6=nebulae[i+6];this.p7=nebulae[i+7];this.p8=nebulae[i+8];this.p9=nebulae[i+9];return;}}}
if(multiples&&multiples!==null&&multiples.length){for(i=0;i<multiples.length;i+=10){var r1=parseInt(multiples[i+9],10)/360000/degPerPixel/2;var x0=parseInt(multiples[i],10),y0=parseInt(multiples[i+1],10);if(p.x>=x0-r1&&p.x<=x0+r1&&p.y>=y0-r1&&p.y<=y0+r1){this.type="multiple";this.objType=4;this.x=multiples[i];this.y=multiples[i+1];this.objId=multiples[i+2];this.p3=multiples[i+3];this.p4=multiples[i+4];this.p5=multiples[i+5];this.p6=multiples[i+6];this.p7=multiples[i+7];this.p8=multiples[i+8];this.p9=multiples[i+9];return;}}}}
function fillTemplate(){var d_i=arguments.length-1;var template2=arguments[0];for(var i=0;i<d_i;i++){template2=replaceString(template2,'<<p'+i+'>>',arguments[i+1]);}
return template2;}
function replaceString(source,s_old,s_new){var indx=source.indexOf(s_old);if(indx>=0){var vv1=source.substring(0,indx);var vv2=s_new;var vv3=source.substring(indx+s_old.length);return vv1+vv2+vv3;}
return source;}
function showObjectInfoLabel(p,a,g,n,m,u,na_list){var b='';var ddw=0,ddh=0,ddcolor='';var s=new ObjectByPoint(p,a,g,n,m,u);if(s&&s.type){if(s.type=="custom"){var pimg=s.p5;if(pimg==''||pimg=='null')pimg='nopicture.gif'
b=fillTemplate(templateU,s.p3,s.p4,pimg,s.p6,constel[s.p7],s.p8,s.p9,s.p10,s.p11);ddw=400;ddh=20;}else if(s.type=="star"){b=fillTemplate(templateA,s.p3,constel[s.p4],formatRA(s.p5),formatDE(s.p6),(s.p7=='0'?unknown_label:s.p7),s.p8);ddw=250;ddh=120;}else if(s.type=="galaxy"){b=fillTemplate(templateG,s.p3,constel[s.p4],formatRA(s.p5),formatDE(s.p6),(s.p7=='0'?unknown_label:s.p7),s.p8,Math.round(s.p9<600?s.p9:s.p9/60.0)/100.0+(s.p9<600?'&Prime;':'&prime;'),Math.round(s.p10<600?s.p10:s.p10/60.0)/100.0+(s.p10<600?'&Prime;':'&prime;'));ddw=250;ddh=135;}else if(s.type=="nebula"){b=fillTemplate(templateG,s.p3,constel[s.p4],formatRA(s.p5),formatDE(s.p6),(s.p7=='0'?unknown_label:s.p7),s.p8,Math.round(s.p9<600?s.p9:s.p9/60.0)/100.0+(s.p9<600?'&Prime;':'&prime;'),Math.round(s.p10<600?s.p10:s.p10/60.0)/100.0+(s.p10<600?'&Prime;':'&prime;'));ddw=250;ddh=135;}else if(s.type=="multiple"){b=fillTemplate(templateG,s.p3,constel[s.p4],formatRA(s.p5),formatDE(s.p6),(s.p7=='0'?unknown_label:s.p7),s.p8,Math.round(s.p9<600?s.p9:s.p9/60.0)/100.0+(s.p9<600?'&Prime;':'&prime;'),Math.round(s.p10<600?s.p10:s.p10/60.0)/100.0+(s.p10<600?'&Prime;':'&prime;'));ddw=250;ddh=135;}}
if(b===''){hideddrivetip();p.g.style.cursor='crosshair';}else{ddrivetip(b,ddcolor,0,0,{maxWidth:400});if(s.type!="custom"&&show_users){var tLabel=document.getElementById('t_label');if(tLabel){if(s.type!="star"||(typeof na_list!='undefined'&&arrayContains(na_list,s.objId)!=-1)){tLabel.style.backgroundColor='gray';tLabel.style.backgroundImage='url(images/adopt_gray.gif)';tLabel.style.backgroundPosition='center center';tLabel.style.backgroundRepeat='no-repeat';}else if(typeof admag!='undefined'&&admag>s.p8){tLabel.style.backgroundColor='gray';tLabel.style.backgroundImage='url(images/adopt_gray.gif)';tLabel.style.backgroundPosition='center center';tLabel.style.backgroundRepeat='no-repeat';}else{tLabel.style.backgroundColor='yellow';tLabel.style.backgroundImage='url(images/adopt_yellow.gif)';tLabel.style.backgroundPosition='center center';tLabel.style.backgroundRepeat='no-repeat';}}}
if(labelShowPostProcess)labelShowPostProcess(s);p.g.style.cursor='pointer';}}
function openObjectInfoPage(p,a,g,n,m,u,na){var s=new ObjectByPoint(p,a,g,n,m,u);if(s&&s.type){window.open("starview?object_type="+s.objType+"&object_id="+s.objId+(typeof adam!="undefined"?("&amount="+adam):"")+(typeof gid!="undefined"?("&gid="+gid):""),"_blank");}}
function getXpos(e){var r=0;while(e){r+=e.offsetLeft;e=e.offsetParent;}
return r;}
function getYpos(e){var r=0;while(e){r+=e.offsetTop;e=e.offsetParent;}
return r;}
var PlanetNames=new Array("Mercury","Venus","Sun","Mars","Jupiter","Saturn","Uranus","Neptune","Pluto");var DEGS=180/Math.PI;var RADS=Math.PI/180;var EPS=1.0e-12;function coord()
{this.ra=parseFloat("0");this.de=parseFloat("0");this.rvec=parseFloat("0");}
function horizon()
{this.alt=parseFloat("0");this.az=parseFloat("0");}
function elem()
{this.a=parseFloat("0");this.e=parseFloat("0");this.i=parseFloat("0");this.O=parseFloat("0");this.w=parseFloat("0");this.L=parseFloat("0");}
function PlanetPos(date)
{this.date=date;var year=date.getUTCFullYear();var month=date.getUTCMonth()+1;var day=date.getUTCDate();var hour=date.getUTCHours();var mins=date.getUTCMinutes();var secs=date.getUTCSeconds();this.dn=day_number(year,month,day,hour,mins,secs);for(var p=0;p<9;p++)
{var obj=new coord();get_coord(obj,p,this.dn);this[PlanetNames[p]]=obj;}}
function day_number(y,m,d,hour,mins,secs)
{var h=hour+mins/60+secs/3600;var rv=367*y
-Math.floor(7*(y+Math.floor((m+9)/12))/4)
+Math.floor(275*m/9)+d-730531.5+h/24;return rv;}
function get_coord(obj,p,d)
{var planet=new elem();mean_elements(planet,p,d);var ap=planet.a;var ep=planet.e;var ip=planet.i;var op=planet.O;var pp=planet.w;var lp=planet.L;var earth=new elem();mean_elements(earth,2,d);var ae=earth.a;var ee=earth.e;var ie=earth.i;var oe=earth.O;var pe=earth.w;var le=earth.L;var me=mod2pi(le-pe);var ve=true_anomaly(me,ee);var re=ae*(1-ee*ee)/(1+ee*Math.cos(ve));var xe=re*Math.cos(ve+pe);var ye=re*Math.sin(ve+pe);var ze=0.0;var mp=mod2pi(lp-pp);var vp=true_anomaly(mp,planet.e);var rp=ap*(1-ep*ep)/(1+ep*Math.cos(vp));var xh=rp*(Math.cos(op)*Math.cos(vp+pp-op)-Math.sin(op)*Math.sin(vp+pp-op)*Math.cos(ip));var yh=rp*(Math.sin(op)*Math.cos(vp+pp-op)+Math.cos(op)*Math.sin(vp+pp-op)*Math.cos(ip));var zh=rp*(Math.sin(vp+pp-op)*Math.sin(ip));if(p==2)
{xh=0;yh=0;zh=0;}
var xg=xh-xe;var yg=yh-ye;var zg=zh-ze;var ecl=23.439281*RADS;var xeq=xg;var yeq=yg*Math.cos(ecl)-zg*Math.sin(ecl);var zeq=yg*Math.sin(ecl)+zg*Math.cos(ecl);obj.ra=mod2pi(Math.atan2(yeq,xeq))*DEGS;obj.de=Math.atan(zeq/Math.sqrt(xeq*xeq+yeq*yeq))*DEGS;obj.rvec=Math.sqrt(xeq*xeq+yeq*yeq+zeq*zeq);}
function mean_elements(p,i,d)
{var cy=d/36525;switch(i)
{case 0:p.a=0.38709893+0.00000066*cy;p.e=0.20563069+0.00002527*cy;p.i=(7.00487-23.51*cy/3600)*RADS;p.O=(48.33167-446.30*cy/3600)*RADS;p.w=(77.45645+573.57*cy/3600)*RADS;p.L=mod2pi((252.25084+538101628.29*cy/3600)*RADS);break;case 1:p.a=0.72333199+0.00000092*cy;p.e=0.00677323-0.00004938*cy;p.i=(3.39471-2.86*cy/3600)*RADS;p.O=(76.68069-996.89*cy/3600)*RADS;p.w=(131.53298-108.80*cy/3600)*RADS;p.L=mod2pi((181.97973+210664136.06*cy/3600)*RADS);break;case 2:p.a=1.00000011-0.00000005*cy;p.e=0.01671022-0.00003804*cy;p.i=(0.00005-46.94*cy/3600)*RADS;p.O=(-11.26064-18228.25*cy/3600)*RADS;p.w=(102.94719+1198.28*cy/3600)*RADS;p.L=mod2pi((100.46435+129597740.63*cy/3600)*RADS);break;case 3:p.a=1.52366231-0.00007221*cy;p.e=0.09341233+0.00011902*cy;p.i=(1.85061-25.47*cy/3600)*RADS;p.O=(49.57854-1020.19*cy/3600)*RADS;p.w=(336.04084+1560.78*cy/3600)*RADS;p.L=mod2pi((355.45332+68905103.78*cy/3600)*RADS);break;case 4:p.a=5.20336301+0.00060737*cy;p.e=0.04839266-0.00012880*cy;p.i=(1.30530-4.15*cy/3600)*RADS;p.O=(100.55615+1217.17*cy/3600)*RADS;p.w=(14.75385+839.93*cy/3600)*RADS;p.L=mod2pi((34.40438+10925078.35*cy/3600)*RADS);break;case 5:p.a=9.53707032-0.00301530*cy;p.e=0.05415060-0.00036762*cy;p.i=(2.48446+6.11*cy/3600)*RADS;p.O=(113.71504-1591.05*cy/3600)*RADS;p.w=(92.43194-1948.89*cy/3600)*RADS;p.L=mod2pi((49.94432+4401052.95*cy/3600)*RADS);break;case 6:p.a=19.19126393+0.00152025*cy;p.e=0.04716771-0.00019150*cy;p.i=(0.76986-2.09*cy/3600)*RADS;p.O=(74.22988-1681.40*cy/3600)*RADS;p.w=(170.96424+1312.56*cy/3600)*RADS;p.L=mod2pi((313.23218+1542547.79*cy/3600)*RADS);break;case 7:p.a=30.06896348-0.00125196*cy;p.e=0.00858587+0.00002510*cy;p.i=(1.76917-3.64*cy/3600)*RADS;p.O=(131.72169-151.25*cy/3600)*RADS;p.w=(44.97135-844.43*cy/3600)*RADS;p.L=mod2pi((304.88003+786449.21*cy/3600)*RADS);break;case 8:p.a=39.48168677-0.00076912*cy;p.e=0.24880766+0.00006465*cy;p.i=(17.14175+11.07*cy/3600)*RADS;p.O=(110.30347-37.33*cy/3600)*RADS;p.w=(224.06676-132.25*cy/3600)*RADS;p.L=mod2pi((238.92881+522747.90*cy/3600)*RADS);break;default:window.alert("function mean_elements() failed!");}}
function true_anomaly(M,e)
{var V,E1;var E=M+e*Math.sin(M)*(1.0+e*Math.cos(M));do
{E1=E;E=E1-(E1-e*Math.sin(E1)-M)/(1-e*Math.cos(E1));}
while(Math.abs(E-E1)>EPS);V=2*Math.atan(Math.sqrt((1+e)/(1-e))*Math.tan(0.5*E));if(V<0)V=V+(2*Math.PI);return V;}
function ha2str(x)
{if((x<0)||(360<x))window.alert("function ha2str() range error!");var ra=x/15;var h=Math.floor(ra);var m=60*(ra-h);return cintstr(h,3)+"h "+frealstr(m,4,1)+"m";}
function dec2str(x)
{if((x<-90)||(+90<x))window.alert("function dec2str() range error!");var de=Math.abs(x);var sgn=(x<0)?-1:+1;var d=Math.floor(de);var m=60*(de-d);return cintstr(sgn*d,3)+"� "+frealstr(m,4,1)+"'";}
function abs_floor(x)
{var r;if(x>=0.0)r=Math.floor(x);else r=Math.ceil(x);return r;}
function mod2pi(x)
{var b=x/(2*Math.PI);var a=(2*Math.PI)*(b-abs_floor(b));if(a<0)a=(2*Math.PI)+a;return a;}
function coord_to_horizon(utc,ra,de,lat,lon,h)
{var lmst,ha,sin_alt,cos_az,alt,az;ha=mean_sidereal_time(utc,lon)-ra;if(ha<0)ha=ha+360;ha=ha*RADS;de=de*RADS;lat=lat*RADS;sin_alt=Math.sin(de)*Math.sin(lat)+Math.cos(de)*Math.cos(lat)*Math.cos(ha);alt=Math.asin(sin_alt);cos_az=(Math.sin(de)-Math.sin(alt)*Math.sin(lat))/(Math.cos(alt)*Math.cos(lat));az=Math.acos(cos_az);h.alt=alt*DEGS;h.az=az*DEGS;if(Math.sin(ha)>0)h.az=360-h.az;}
function mean_sidereal_time(d,lon)
{var year=d.getUTCFullYear();var month=d.getUTCMonth()+1;var day=d.getUTCDate();var hour=d.getUTCHours();var minute=d.getUTCMinutes();var second=d.getUTCSeconds();if((month==1)||(month==2))
{year=year-1;month=month+12;}
var a=Math.floor(year/100);var b=2-a+Math.floor(a/4);var c=Math.floor(365.25*year);var d=Math.floor(30.6001*(month+1));var jd=b+c+d-730550.5+day
+(hour+minute/60.0+second/3600.0)/24.0;var jt=jd/36525.0;var mst=280.46061837+360.98564736629*jd
+0.000387933*jt*jt-jt*jt*jt/38710000+lon;if(mst>0.0)
{while(mst>360.0)
mst=mst-360.0;}
else
{while(mst<0.0)
mst=mst+360.0;}
return mst;}
function dms2real(deg,min,sec)
{var rv;if(deg<0)rv=deg-min/60-sec/3600;else rv=deg+min/60+sec/3600;return rv;}
function degr2str(x)
{var de=Math.abs(x);var sgn=(x<0)?-1:+1;var d=Math.floor(de);var m=60*(de-d);return cintstr(sgn*d,3)+"&deg; "+frealstr(m,4,1)+"&prime;";}
function lat2str(x)
{var de=Math.abs(x);var sgn=(x<0)?" S":" N";var d=Math.floor(de);var m=60*(de-d);return cintstr(d,3)+"&deg; "+frealstr(m,4,1)+"&prime;"+sgn;}
function lon2str(x)
{var de=Math.abs(x);var sgn=(x<0)?" W":" E";var d=Math.floor(de);var m=60*(de-d);return cintstr(d,3)+"&deg; "+frealstr(m,4,1)+"&prime;"+sgn;}
function d2(n)
{if((n<0)||(99<n))return"xx";return(n<10)?("0"+n):n;}
function cintstr(num,width)
{var str=num.toString(10);var len=str.length;var intgr="";var i;for(i=0;i<width-len;i++)
intgr+=' ';for(i=0;i<len;i++)
intgr+=str.charAt(i);return intgr;}
function frealstr(num,width,fract)
{var str=num.toFixed(fract);var len=str.length;var real="";var i;for(i=0;i<width-len;i++)
real+=' ';for(i=0;i<len;i++)
real+=str.charAt(i);return real;}
function open_window(name)
{msgWindow=window.open("","msgWindow","toolbar=no,status=no,menubar=yes,scrollbars=yes,width=550,height=400,resizable=yes");msgWindow.document.open();msgWindow.document.writeln("<html><head><title>"+name+"</title></head>");msgWindow.document.writeln("<body>");msgWindow.document.writeln("<pre>");}
function close_window()
{msgWindow.document.writeln("<p>");msgWindow.document.writeln("All done!");msgWindow.document.writeln("</pre>");msgWindow.document.writeln("</body></html>");msgWindow.document.close();}
if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;dwr.engine.setErrorHandler=function(handler){dwr.engine._errorHandler=handler;};dwr.engine.setWarningHandler=function(handler){dwr.engine._warningHandler=handler;};dwr.engine.setTextHtmlHandler=function(handler){dwr.engine._textHtmlHandler=handler;}
dwr.engine.setTimeout=function(timeout){dwr.engine._timeout=timeout;};dwr.engine.setPreHook=function(handler){dwr.engine._preHook=handler;};dwr.engine.setPostHook=function(handler){dwr.engine._postHook=handler;};dwr.engine.setHeaders=function(headers){dwr.engine._headers=headers;};dwr.engine.setParameters=function(parameters){dwr.engine._parameters=parameters;};dwr.engine.XMLHttpRequest=1;dwr.engine.IFrame=2;dwr.engine.ScriptTag=3;dwr.engine.setRpcType=function(newType){if(newType!=dwr.engine.XMLHttpRequest&&newType!=dwr.engine.IFrame&&newType!=dwr.engine.ScriptTag){dwr.engine._handleError(null,{name:"dwr.engine.invalidRpcType",message:"RpcType must be one of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag"});return;}
dwr.engine._rpcType=newType;};dwr.engine.setHttpMethod=function(httpMethod){if(httpMethod!="GET"&&httpMethod!="POST"){dwr.engine._handleError(null,{name:"dwr.engine.invalidHttpMethod",message:"Remoting method must be one of GET or POST"});return;}
dwr.engine._httpMethod=httpMethod;};dwr.engine.setOrdered=function(ordered){dwr.engine._ordered=ordered;};dwr.engine.setAsync=function(async){dwr.engine._async=async;};dwr.engine.setActiveReverseAjax=function(activeReverseAjax){if(activeReverseAjax){if(dwr.engine._activeReverseAjax)return;dwr.engine._activeReverseAjax=true;dwr.engine._poll();}
else{if(dwr.engine._activeReverseAjax&&dwr.engine._pollReq)dwr.engine._pollReq.abort();dwr.engine._activeReverseAjax=false;}};dwr.engine.setPollType=function(newPollType){if(newPollType!=dwr.engine.XMLHttpRequest&&newPollType!=dwr.engine.IFrame){dwr.engine._handleError(null,{name:"dwr.engine.invalidPollType",message:"PollType must be one of dwr.engine.XMLHttpRequest or dwr.engine.IFrame"});return;}
dwr.engine._pollType=newPollType;};dwr.engine.defaultErrorHandler=function(message,ex){dwr.engine._debug("Error: "+ex.name+", "+ex.message,true);if(message==null||message=="")alert("A server error has occured. More information may be available in the console.");else if(message.indexOf("0x80040111")!=-1)dwr.engine._debug(message);else alert(message);};dwr.engine.defaultWarningHandler=function(message,ex){dwr.engine._debug(message);};dwr.engine.beginBatch=function(){if(dwr.engine._batch){dwr.engine._handleError(null,{name:"dwr.engine.batchBegun",message:"Batch already begun"});return;}
dwr.engine._batch=dwr.engine._createBatch();};dwr.engine.endBatch=function(options){var batch=dwr.engine._batch;if(batch==null){dwr.engine._handleError(null,{name:"dwr.engine.batchNotBegun",message:"No batch in progress"});return;}
dwr.engine._batch=null;if(batch.map.callCount==0)return;if(options)dwr.engine._mergeBatch(batch,options);if(dwr.engine._ordered&&dwr.engine._batchesLength!=0){dwr.engine._batchQueue[dwr.engine._batchQueue.length]=batch;}
else{dwr.engine._sendData(batch);}};dwr.engine.setPollMethod=function(type){dwr.engine.setPollType(type);};dwr.engine.setMethod=function(type){dwr.engine.setRpcType(type);};dwr.engine.setVerb=function(verb){dwr.engine.setHttpMethod(verb);};dwr.engine._origScriptSessionId="65CD4F368AEDC443FE042A120AD090C9";dwr.engine._sessionCookieName="JSESSIONID";dwr.engine._allowGetForSafariButMakeForgeryEasier="true";dwr.engine._scriptTagProtection="throw 'allowScriptTagRemoting is false.';";dwr.engine._defaultPath="/dwr";dwr.engine._scriptSessionId=null;dwr.engine._getScriptSessionId=function(){if(dwr.engine._scriptSessionId==null){dwr.engine._scriptSessionId=dwr.engine._origScriptSessionId+Math.floor(Math.random()*1000);}
return dwr.engine._scriptSessionId;};dwr.engine._errorHandler=dwr.engine.defaultErrorHandler;dwr.engine._warningHandler=dwr.engine.defaultWarningHandler;dwr.engine._preHook=null;dwr.engine._postHook=null;dwr.engine._batches={};dwr.engine._batchesLength=0;dwr.engine._batchQueue=[];dwr.engine._rpcType=dwr.engine.XMLHttpRequest;dwr.engine._httpMethod="POST";dwr.engine._ordered=false;dwr.engine._async=true;dwr.engine._batch=null;dwr.engine._timeout=0;dwr.engine._DOMDocument=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","Msxml2.DOMDocument.3.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"];dwr.engine._XMLHTTP=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];dwr.engine._activeReverseAjax=false;dwr.engine._pollType=dwr.engine.XMLHttpRequest;dwr.engine._outstandingIFrames=[];dwr.engine._pollReq=null;dwr.engine._pollCometInterval=200;dwr.engine._pollRetries=0;dwr.engine._maxPollRetries=0;dwr.engine._textHtmlHandler=null;dwr.engine._headers=null;dwr.engine._parameters=null;dwr.engine._postSeperator="\n";dwr.engine._defaultInterceptor=function(data){return data;}
dwr.engine._urlRewriteHandler=dwr.engine._defaultInterceptor;dwr.engine._contentRewriteHandler=dwr.engine._defaultInterceptor;dwr.engine._replyRewriteHandler=dwr.engine._defaultInterceptor;dwr.engine._nextBatchId=0;dwr.engine._propnames=["rpcType","httpMethod","async","timeout","errorHandler","warningHandler","textHtmlHandler"];dwr.engine._partialResponseNo=0;dwr.engine._partialResponseYes=1;dwr.engine._partialResponseFlush=2;dwr.engine._execute=function(path,scriptName,methodName,vararg_params){var singleShot=false;if(dwr.engine._batch==null){dwr.engine.beginBatch();singleShot=true;}
var batch=dwr.engine._batch;var args=[];for(var i=0;i<arguments.length-3;i++){args[i]=arguments[i+3];}
if(batch.path==null){batch.path=path;}
else{if(batch.path!=path){dwr.engine._handleError(batch,{name:"dwr.engine.multipleServlets",message:"Can't batch requests to multiple DWR Servlets."});return;}}
var callData;var lastArg=args[args.length-1];if(typeof lastArg=="function"||lastArg==null)callData={callback:args.pop()};else callData=args.pop();dwr.engine._mergeBatch(batch,callData);batch.handlers[batch.map.callCount]={exceptionHandler:callData.exceptionHandler,callback:callData.callback};var prefix="c"+batch.map.callCount+"-";batch.map[prefix+"scriptName"]=scriptName;batch.map[prefix+"methodName"]=methodName;batch.map[prefix+"id"]=batch.map.callCount;for(i=0;i<args.length;i++){dwr.engine._serializeAll(batch,[],args[i],prefix+"param"+i);}
batch.map.callCount++;if(singleShot)dwr.engine.endBatch();};dwr.engine._poll=function(overridePath){if(!dwr.engine._activeReverseAjax)return;var batch=dwr.engine._createBatch();batch.map.id=0;batch.map.callCount=1;batch.isPoll=true;if(navigator.userAgent.indexOf("Gecko/")!=-1){batch.rpcType=dwr.engine._pollType;batch.map.partialResponse=dwr.engine._partialResponseYes;}
else if(document.all){batch.rpcType=dwr.engine.IFrame;batch.map.partialResponse=dwr.engine._partialResponseFlush;}
else{batch.rpcType=dwr.engine._pollType;batch.map.partialResponse=dwr.engine._partialResponseNo;}
batch.httpMethod="POST";batch.async=true;batch.timeout=0;batch.path=(overridePath)?overridePath:dwr.engine._defaultPath;batch.preHooks=[];batch.postHooks=[];batch.errorHandler=dwr.engine._pollErrorHandler;batch.warningHandler=dwr.engine._pollErrorHandler;batch.handlers[0]={callback:function(pause){dwr.engine._pollRetries=0;setTimeout("dwr.engine._poll()",pause);}};dwr.engine._sendData(batch);if(batch.rpcType==dwr.engine.XMLHttpRequest){dwr.engine._checkCometPoll();}};dwr.engine._pollErrorHandler=function(msg,ex){dwr.engine._pollRetries++;dwr.engine._debug("Reverse Ajax poll failed (pollRetries="+dwr.engine._pollRetries+"): "+ex.name+" : "+ex.message);if(dwr.engine._pollRetries<dwr.engine._maxPollRetries){setTimeout("dwr.engine._poll()",10000);}
else{dwr.engine._debug("Giving up.");}};dwr.engine._createBatch=function(){var batch={map:{callCount:0,page:window.location.pathname+window.location.search,httpSessionId:dwr.engine._getJSessionId(),scriptSessionId:dwr.engine._getScriptSessionId()},charsProcessed:0,paramCount:0,headers:[],parameters:[],isPoll:false,headers:{},handlers:{},preHooks:[],postHooks:[],rpcType:dwr.engine._rpcType,httpMethod:dwr.engine._httpMethod,async:dwr.engine._async,timeout:dwr.engine._timeout,errorHandler:dwr.engine._errorHandler,warningHandler:dwr.engine._warningHandler,textHtmlHandler:dwr.engine._textHtmlHandler};if(dwr.engine._preHook)batch.preHooks.push(dwr.engine._preHook);if(dwr.engine._postHook)batch.postHooks.push(dwr.engine._postHook);var propname,data;if(dwr.engine._headers){for(propname in dwr.engine._headers){data=dwr.engine._headers[propname];if(typeof data!="function")batch.headers[propname]=data;}}
if(dwr.engine._parameters){for(propname in dwr.engine._parameters){data=dwr.engine._parameters[propname];if(typeof data!="function")batch.parameters[propname]=data;}}
return batch;}
dwr.engine._mergeBatch=function(batch,overrides){var propname,data;for(var i=0;i<dwr.engine._propnames.length;i++){propname=dwr.engine._propnames[i];if(overrides[propname]!=null)batch[propname]=overrides[propname];}
if(overrides.preHook!=null)batch.preHooks.unshift(overrides.preHook);if(overrides.postHook!=null)batch.postHooks.push(overrides.postHook);if(overrides.headers){for(propname in overrides.headers){data=overrides.headers[propname];if(typeof data!="function")batch.headers[propname]=data;}}
if(overrides.parameters){for(propname in overrides.parameters){data=overrides.parameters[propname];if(typeof data!="function")batch.map["p-"+propname]=""+data;}}};dwr.engine._getJSessionId=function(){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=cookies[i];while(cookie.charAt(0)==' ')cookie=cookie.substring(1,cookie.length);if(cookie.indexOf(dwr.engine._sessionCookieName+"=")==0){return cookie.substring(11,cookie.length);}}
return"";}
dwr.engine._checkCometPoll=function(){for(var i=0;i<dwr.engine._outstandingIFrames.length;i++){var text="";var iframe=dwr.engine._outstandingIFrames[i];try{text=dwr.engine._getTextFromCometIFrame(iframe);}
catch(ex){dwr.engine._handleWarning(iframe.batch,ex);}
if(text!="")dwr.engine._processCometResponse(text,iframe.batch);}
if(dwr.engine._pollReq){var req=dwr.engine._pollReq;var text=req.responseText;dwr.engine._processCometResponse(text,req.batch);}
if(dwr.engine._outstandingIFrames.length>0||dwr.engine._pollReq){setTimeout("dwr.engine._checkCometPoll()",dwr.engine._pollCometInterval);}};dwr.engine._getTextFromCometIFrame=function(frameEle){var body=frameEle.contentWindow.document.body;if(body==null)return"";var text=body.innerHTML;if(text.indexOf("<PRE>")==0||text.indexOf("<pre>")==0){text=text.substring(5,text.length-7);}
return text;};dwr.engine._processCometResponse=function(response,batch){if(batch.charsProcessed==response.length)return;if(response.length==0){batch.charsProcessed=0;return;}
var firstStartTag=response.indexOf("//#DWR-START#",batch.charsProcessed);if(firstStartTag==-1){batch.charsProcessed=response.length;return;}
var lastEndTag=response.lastIndexOf("//#DWR-END#");if(lastEndTag==-1){return;}
if(response.charCodeAt(lastEndTag+11)==13&&response.charCodeAt(lastEndTag+12)==10){batch.charsProcessed=lastEndTag+13;}
else{batch.charsProcessed=lastEndTag+11;}
var exec=response.substring(firstStartTag+13,lastEndTag);dwr.engine._receivedBatch=batch;dwr.engine._eval(exec);dwr.engine._receivedBatch=null;};dwr.engine._sendData=function(batch){batch.map.batchId=dwr.engine._nextBatchId++;dwr.engine._batches[batch.map.batchId]=batch;dwr.engine._batchesLength++;batch.completed=false;for(var i=0;i<batch.preHooks.length;i++){batch.preHooks[i]();}
batch.preHooks=null;if(batch.timeout&&batch.timeout!=0){batch.interval=setInterval(function(){dwr.engine._abortRequest(batch);},batch.timeout);}
if(batch.rpcType==dwr.engine.XMLHttpRequest){if(window.XMLHttpRequest){batch.req=new XMLHttpRequest();}
else if(window.ActiveXObject&&!(navigator.userAgent.indexOf("Mac")>=0&&navigator.userAgent.indexOf("MSIE")>=0)){batch.req=dwr.engine._newActiveXObject(dwr.engine._XMLHTTP);}}
var prop,request;if(batch.req){if(batch.async){batch.req.onreadystatechange=function(){dwr.engine._stateChange(batch);};}
if(batch.isPoll){dwr.engine._pollReq=batch.req;batch.req.batch=batch;}
var indexSafari=navigator.userAgent.indexOf("Safari/");if(indexSafari>=0){var version=navigator.userAgent.substring(indexSafari+7);if(parseInt(version,10)<400){if(dwr.engine._allowGetForSafariButMakeForgeryEasier=="true")batch.httpMethod="GET";else dwr.engine._handleWarning(batch,{name:"dwr.engine.oldSafari",message:"Safari GET support disabled. See getahead.org/dwr/server/servlet and allowGetForSafariButMakeForgeryEasier."});}}
batch.mode=batch.isPoll?dwr.engine._ModePlainPoll:dwr.engine._ModePlainCall;request=dwr.engine._constructRequest(batch);try{batch.req.open(batch.httpMethod,request.url,batch.async);try{for(prop in batch.headers){var value=batch.headers[prop];if(typeof value=="string")batch.req.setRequestHeader(prop,value);}
if(!batch.headers["Content-Type"])batch.req.setRequestHeader("Content-Type","text/plain");}
catch(ex){dwr.engine._handleWarning(batch,ex);}
batch.req.send(request.body);if(!batch.async)dwr.engine._stateChange(batch);}
catch(ex){dwr.engine._handleError(batch,ex);}}
else if(batch.rpcType!=dwr.engine.ScriptTag){var idname=batch.isPoll?"dwr-if-poll-"+batch.map.batchId:"dwr-if-"+batch.map["c0-id"];batch.div=document.createElement("div");batch.div.innerHTML="<iframe src='javascript:void(0)' frameborder='0' style='width:0px;height:0px;border:0;' id='"+idname+"' name='"+idname+"'></iframe>";document.body.appendChild(batch.div);batch.iframe=document.getElementById(idname);batch.iframe.batch=batch;batch.mode=batch.isPoll?dwr.engine._ModeHtmlPoll:dwr.engine._ModeHtmlCall;if(batch.isPoll)dwr.engine._outstandingIFrames.push(batch.iframe);request=dwr.engine._constructRequest(batch);if(batch.httpMethod=="GET"){batch.iframe.setAttribute("src",request.url);}
else{batch.form=document.createElement("form");batch.form.setAttribute("id","dwr-form");batch.form.setAttribute("action",request.url);batch.form.setAttribute("target",idname);batch.form.target=idname;batch.form.setAttribute("method",batch.httpMethod);for(prop in batch.map){var value=batch.map[prop];if(typeof value!="function"){var formInput=document.createElement("input");formInput.setAttribute("type","hidden");formInput.setAttribute("name",prop);formInput.setAttribute("value",value);batch.form.appendChild(formInput);}}
document.body.appendChild(batch.form);batch.form.submit();}}
else{batch.httpMethod="GET";batch.mode=batch.isPoll?dwr.engine._ModePlainPoll:dwr.engine._ModePlainCall;request=dwr.engine._constructRequest(batch);batch.script=document.createElement("script");batch.script.id="dwr-st-"+batch.map["c0-id"];batch.script.src=request.url;document.body.appendChild(batch.script);}};dwr.engine._ModePlainCall="/call/plaincall/";dwr.engine._ModeHtmlCall="/call/htmlcall/";dwr.engine._ModePlainPoll="/call/plainpoll/";dwr.engine._ModeHtmlPoll="/call/htmlpoll/";dwr.engine._constructRequest=function(batch){var request={url:batch.path+batch.mode,body:null};if(batch.isPoll==true){request.url+="ReverseAjax.dwr";}
else if(batch.map.callCount==1){request.url+=batch.map["c0-scriptName"]+"."+batch.map["c0-methodName"]+".dwr";}
else{request.url+="Multiple."+batch.map.callCount+".dwr";}
var sessionMatch=location.href.match(/jsessionid=([^?]+)/);if(sessionMatch!=null){request.url+=";jsessionid="+sessionMatch[1];}
var prop;if(batch.httpMethod=="GET"){batch.map.callCount=""+batch.map.callCount;request.url+="?";for(prop in batch.map){if(typeof batch.map[prop]!="function"){request.url+=encodeURIComponent(prop)+"="+encodeURIComponent(batch.map[prop])+"&";}}
request.url=request.url.substring(0,request.url.length-1);}
else{request.body="";for(prop in batch.map){if(typeof batch.map[prop]!="function"){request.body+=prop+"="+batch.map[prop]+dwr.engine._postSeperator;}}
request.body=dwr.engine._contentRewriteHandler(request.body);}
request.url=dwr.engine._urlRewriteHandler(request.url);return request;};dwr.engine._stateChange=function(batch){var toEval;if(batch.completed){dwr.engine._debug("Error: _stateChange() with batch.completed");return;}
var req=batch.req;try{if(req.readyState!=4)return;}
catch(ex){dwr.engine._handleWarning(batch,ex);dwr.engine._clearUp(batch);return;}
try{var reply=req.responseText;reply=dwr.engine._replyRewriteHandler(reply);var status=req.status;if(reply==null||reply==""){dwr.engine._handleWarning(batch,{name:"dwr.engine.missingData",message:"No data received from server"});}
else if(status!=200){dwr.engine._handleError(batch,{name:"dwr.engine.http."+status,message:req.statusText});}
else{var contentType=req.getResponseHeader("Content-Type");if(!contentType.match(/^text\/plain/)&&!contentType.match(/^text\/javascript/)){if(contentType.match(/^text\/html/)&&typeof batch.textHtmlHandler=="function"){batch.textHtmlHandler();}
else{dwr.engine._handleWarning(batch,{name:"dwr.engine.invalidMimeType",message:"Invalid content type: '"+contentType+"'"});}}
else{if(batch.isPoll&&batch.map.partialResponse==dwr.engine._partialResponseYes){dwr.engine._processCometResponse(reply,batch);}
else{if(reply.search("//#DWR")==-1){dwr.engine._handleWarning(batch,{name:"dwr.engine.invalidReply",message:"Invalid reply from server"});}
else{toEval=reply;}}}}}
catch(ex){dwr.engine._handleWarning(batch,ex);}
dwr.engine._callPostHooks(batch);dwr.engine._receivedBatch=batch;if(toEval!=null)toEval=toEval.replace(dwr.engine._scriptTagProtection,"");dwr.engine._eval(toEval);dwr.engine._receivedBatch=null;dwr.engine._clearUp(batch);};dwr.engine._remoteHandleCallback=function(batchId,callId,reply){var batch=dwr.engine._batches[batchId];if(batch==null){dwr.engine._debug("Warning: batch == null in remoteHandleCallback for batchId="+batchId,true);return;}
try{var handlers=batch.handlers[callId];if(!handlers){dwr.engine._debug("Warning: Missing handlers. callId="+callId,true);}
else if(typeof handlers.callback=="function")handlers.callback(reply);}
catch(ex){dwr.engine._handleError(batch,ex);}};dwr.engine._remoteHandleException=function(batchId,callId,ex){var batch=dwr.engine._batches[batchId];if(batch==null){dwr.engine._debug("Warning: null batch in remoteHandleException",true);return;}
var handlers=batch.handlers[callId];if(handlers==null){dwr.engine._debug("Warning: null handlers in remoteHandleException",true);return;}
if(ex.message==undefined)ex.message="";if(typeof handlers.exceptionHandler=="function")handlers.exceptionHandler(ex.message,ex);else if(typeof batch.errorHandler=="function")batch.errorHandler(ex.message,ex);};dwr.engine._remoteHandleBatchException=function(ex,batchId){var searchBatch=(dwr.engine._receivedBatch==null&&batchId!=null);if(searchBatch){dwr.engine._receivedBatch=dwr.engine._batches[batchId];}
if(ex.message==undefined)ex.message="";dwr.engine._handleError(dwr.engine._receivedBatch,ex);if(searchBatch){dwr.engine._receivedBatch=null;dwr.engine._clearUp(dwr.engine._batches[batchId]);}};dwr.engine._remotePollCometDisabled=function(ex,batchId){dwr.engine.setActiveReverseAjax(false);var searchBatch=(dwr.engine._receivedBatch==null&&batchId!=null);if(searchBatch){dwr.engine._receivedBatch=dwr.engine._batches[batchId];}
if(ex.message==undefined)ex.message="";dwr.engine._handleError(dwr.engine._receivedBatch,ex);if(searchBatch){dwr.engine._receivedBatch=null;dwr.engine._clearUp(dwr.engine._batches[batchId]);}};dwr.engine._remoteBeginIFrameResponse=function(iframe,batchId){if(iframe!=null)dwr.engine._receivedBatch=iframe.batch;dwr.engine._callPostHooks(dwr.engine._receivedBatch);};dwr.engine._remoteEndIFrameResponse=function(batchId){dwr.engine._clearUp(dwr.engine._receivedBatch);dwr.engine._receivedBatch=null;};dwr.engine._eval=function(script){if(script==null)return null;if(script==""){dwr.engine._debug("Warning: blank script",true);return null;}
return eval(script);};dwr.engine._abortRequest=function(batch){if(batch&&!batch.completed){clearInterval(batch.interval);dwr.engine._clearUp(batch);if(batch.req)batch.req.abort();dwr.engine._handleError(batch,{name:"dwr.engine.timeout",message:"Timeout"});}};dwr.engine._callPostHooks=function(batch){if(batch.postHooks){for(var i=0;i<batch.postHooks.length;i++){batch.postHooks[i]();}
batch.postHooks=null;}}
dwr.engine._clearUp=function(batch){if(!batch){dwr.engine._debug("Warning: null batch in dwr.engine._clearUp()",true);return;}
if(batch.completed=="true"){dwr.engine._debug("Warning: Double complete",true);return;}
if(batch.div)batch.div.parentNode.removeChild(batch.div);if(batch.iframe){for(var i=0;i<dwr.engine._outstandingIFrames.length;i++){if(dwr.engine._outstandingIFrames[i]==batch.iframe){dwr.engine._outstandingIFrames.splice(i,1);}}
batch.iframe.parentNode.removeChild(batch.iframe);}
if(batch.form)batch.form.parentNode.removeChild(batch.form);if(batch.req){if(batch.req==dwr.engine._pollReq)dwr.engine._pollReq=null;delete batch.req;}
if(batch.map&&batch.map.batchId){delete dwr.engine._batches[batch.map.batchId];dwr.engine._batchesLength--;}
batch.completed=true;if(dwr.engine._batchQueue.length!=0){var sendbatch=dwr.engine._batchQueue.shift();dwr.engine._sendData(sendbatch);}};dwr.engine._handleError=function(batch,ex){if(typeof ex=="string")ex={name:"unknown",message:ex};if(ex.message==null)ex.message="";if(ex.name==null)ex.name="unknown";if(batch&&typeof batch.errorHandler=="function")batch.errorHandler(ex.message,ex);else if(dwr.engine._errorHandler)dwr.engine._errorHandler(ex.message,ex);dwr.engine._clearUp(batch);};dwr.engine._handleWarning=function(batch,ex){if(typeof ex=="string")ex={name:"unknown",message:ex};if(ex.message==null)ex.message="";if(ex.name==null)ex.name="unknown";if(batch&&typeof batch.warningHandler=="function")batch.warningHandler(ex.message,ex);else if(dwr.engine._warningHandler)dwr.engine._warningHandler(ex.message,ex);dwr.engine._clearUp(batch);};dwr.engine._serializeAll=function(batch,referto,data,name){if(data==null){batch.map[name]="null:null";return;}
switch(typeof data){case"boolean":batch.map[name]="boolean:"+data;break;case"number":batch.map[name]="number:"+data;break;case"string":batch.map[name]="string:"+encodeURIComponent(data);break;case"object":if(data instanceof String)batch.map[name]="String:"+encodeURIComponent(data);else if(data instanceof Boolean)batch.map[name]="Boolean:"+data;else if(data instanceof Number)batch.map[name]="Number:"+data;else if(data instanceof Date)batch.map[name]="Date:"+data.getTime();else if(data&&data.join)batch.map[name]=dwr.engine._serializeArray(batch,referto,data,name);else batch.map[name]=dwr.engine._serializeObject(batch,referto,data,name);break;case"function":break;default:dwr.engine._handleWarning(null,{name:"dwr.engine.unexpectedType",message:"Unexpected type: "+typeof data+", attempting default converter."});batch.map[name]="default:"+data;break;}};dwr.engine._lookup=function(referto,data,name){var lookup;for(var i=0;i<referto.length;i++){if(referto[i].data==data){lookup=referto[i];break;}}
if(lookup)return"reference:"+lookup.name;referto.push({data:data,name:name});return null;};dwr.engine._serializeObject=function(batch,referto,data,name){var ref=dwr.engine._lookup(referto,data,name);if(ref)return ref;if(data.nodeName&&data.nodeType){return dwr.engine._serializeXml(batch,referto,data,name);}
var reply="Object_"+dwr.engine._getObjectClassName(data)+":{";var element;for(element in data){if(typeof data[element]!="function"){batch.paramCount++;var childName="c"+dwr.engine._batch.map.callCount+"-e"+batch.paramCount;dwr.engine._serializeAll(batch,referto,data[element],childName);reply+=encodeURIComponent(element)+":reference:"+childName+", ";}}
if(reply.substring(reply.length-2)==", "){reply=reply.substring(0,reply.length-2);}
reply+="}";return reply;};dwr.engine._errorClasses={"Error":Error,"EvalError":EvalError,"RangeError":RangeError,"ReferenceError":ReferenceError,"SyntaxError":SyntaxError,"TypeError":TypeError,"URIError":URIError};dwr.engine._getObjectClassName=function(obj){if(obj&&obj.constructor&&obj.constructor.toString)
{var str=obj.constructor.toString();var regexpmatch=str.match(/function\s+(\w+)/);if(regexpmatch&&regexpmatch.length==2){return regexpmatch[1];}}
if(obj&&obj.constructor){for(var errorname in dwr.engine._errorClasses){if(obj.constructor==dwr.engine._errorClasses[errorname])return errorname;}}
if(obj){var str=Object.prototype.toString.call(obj);var regexpmatch=str.match(/\[object\s+(\w+)/);if(regexpmatch&&regexpmatch.length==2){return regexpmatch[1];}}
return"Object";};dwr.engine._serializeXml=function(batch,referto,data,name){var ref=dwr.engine._lookup(referto,data,name);if(ref)return ref;var output;if(window.XMLSerializer)output=new XMLSerializer().serializeToString(data);else if(data.toXml)output=data.toXml;else output=data.innerHTML;return"XML:"+encodeURIComponent(output);};dwr.engine._serializeArray=function(batch,referto,data,name){var ref=dwr.engine._lookup(referto,data,name);if(ref)return ref;var reply="Array:[";for(var i=0;i<data.length;i++){if(i!=0)reply+=",";batch.paramCount++;var childName="c"+dwr.engine._batch.map.callCount+"-e"+batch.paramCount;dwr.engine._serializeAll(batch,referto,data[i],childName);reply+="reference:";reply+=childName;}
reply+="]";return reply;};dwr.engine._unserializeDocument=function(xml){var dom;if(window.DOMParser){var parser=new DOMParser();dom=parser.parseFromString(xml,"text/xml");if(!dom.documentElement||dom.documentElement.tagName=="parsererror"){var message=dom.documentElement.firstChild.data;message+="\n"+dom.documentElement.firstChild.nextSibling.firstChild.data;throw message;}
return dom;}
else if(window.ActiveXObject){dom=dwr.engine._newActiveXObject(dwr.engine._DOMDocument);dom.loadXML(xml);return dom;}
else{var div=document.createElement("div");div.innerHTML=xml;return div;}};dwr.engine._newActiveXObject=function(axarray){var returnValue;for(var i=0;i<axarray.length;i++){try{returnValue=new ActiveXObject(axarray[i]);break;}
catch(ex){}}
return returnValue;};dwr.engine._debug=function(message,stacktrace){var written=false;try{if(window.console){if(stacktrace&&window.console.trace)window.console.trace();window.console.log(message);written=true;}
else if(window.opera&&window.opera.postError){window.opera.postError(message);written=true;}}
catch(ex){}
if(!written){var debug=document.getElementById("dwr-debug");if(debug){var contents=message+"<br/>"+debug.innerHTML;if(contents.length>2048)contents=contents.substring(0,2048);debug.innerHTML=contents;}}};
if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(ChatService==null)var ChatService={};ChatService._path='/dwr';ChatService.setUserInfo=function(p0,p1,p2,p3,p4,p5,p6,callback){dwr.engine._execute(ChatService._path,'ChatService','setUserInfo',p0,p1,p2,p3,p4,p5,p6,callback);}
ChatService.setNotifyOnPositionChange=function(p0,callback){dwr.engine._execute(ChatService._path,'ChatService','setNotifyOnPositionChange',p0,callback);}
ChatService.getPublicMessages=function(callback){dwr.engine._execute(ChatService._path,'ChatService','getPublicMessages',callback);}
ChatService.stickToUserRequest=function(p0,callback){dwr.engine._execute(ChatService._path,'ChatService','stickToUserRequest',p0,callback);}
ChatService.stickToUserRequestCancel=function(p0,callback){dwr.engine._execute(ChatService._path,'ChatService','stickToUserRequestCancel',p0,callback);}
ChatService.stickToUserResponse=function(p0,p1,callback){dwr.engine._execute(ChatService._path,'ChatService','stickToUserResponse',p0,p1,callback);}
ChatService.stickToUser=function(p0,callback){dwr.engine._execute(ChatService._path,'ChatService','stickToUser',p0,callback);}
ChatService.dropUser=function(p0,callback){dwr.engine._execute(ChatService._path,'ChatService','dropUser',p0,callback);}
ChatService.getStuckUsers=function(callback){dwr.engine._execute(ChatService._path,'ChatService','getStuckUsers',callback);}
ChatService.sendPublicMessage=function(p0,callback){dwr.engine._execute(ChatService._path,'ChatService','sendPublicMessage',p0,callback);}
ChatService.sendPrivateMessage=function(p0,p1,callback){dwr.engine._execute(ChatService._path,'ChatService','sendPrivateMessage',p0,p1,callback);}
ChatService.setUserDetails=function(p0,callback){dwr.engine._execute(ChatService._path,'ChatService','setUserDetails',p0,callback);}
ChatService.getActiveUsers=function(callback){dwr.engine._execute(ChatService._path,'ChatService','getActiveUsers',callback);}
ChatService.setPosition=function(p0,p1,p2,p3,callback){dwr.engine._execute(ChatService._path,'ChatService','setPosition',p0,p1,p2,p3,callback);}
ChatService.setUsername=function(p0,callback){dwr.engine._execute(ChatService._path,'ChatService','setUsername',p0,callback);}
ChatService.getUserInfo=function(callback){dwr.engine._execute(ChatService._path,'ChatService','getUserInfo',callback);}
if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(CoolPlaces==null)var CoolPlaces={};CoolPlaces._path='/dwr';CoolPlaces.getNewId=function(callback){dwr.engine._execute(CoolPlaces._path,'CoolPlaces','getNewId',callback);}
CoolPlaces.getPlaces=function(callback){dwr.engine._execute(CoolPlaces._path,'CoolPlaces','getPlaces',callback);}
CoolPlaces.addPlace=function(p0,callback){dwr.engine._execute(CoolPlaces._path,'CoolPlaces','addPlace',p0,callback);}
CoolPlaces.incViews=function(p0,callback){dwr.engine._execute(CoolPlaces._path,'CoolPlaces','incViews',p0,callback);}
CoolPlaces.getViews=function(p0,callback){dwr.engine._execute(CoolPlaces._path,'CoolPlaces','getViews',p0,callback);}
CoolPlaces.init=function(callback){dwr.engine._execute(CoolPlaces._path,'CoolPlaces','init',callback);}
if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(TopUsers==null)var TopUsers={};TopUsers._path='/dwr';TopUsers.getTopUsers=function(p0,p1,p2,callback){dwr.engine._execute(TopUsers._path,'TopUsers','getTopUsers',p0,p1,p2,callback);}
if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(RSS==null)var RSS={};RSS._path='/dwr';RSS.getRSS=function(p0,p1,callback){dwr.engine._execute(RSS._path,'RSS','getRSS',p0,p1,callback);}
RSS.getRSS_Hash=function(p0,p1,callback){dwr.engine._execute(RSS._path,'RSS','getRSS_Hash',p0,p1,callback);}
RSS.getAllRSS_Hash=function(p0,p1,callback){dwr.engine._execute(RSS._path,'RSS','getAllRSS_Hash',p0,p1,callback);}
RSS.getAllRSS=function(p0,p1,callback){dwr.engine._execute(RSS._path,'RSS','getAllRSS',p0,p1,callback);}
if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(Search==null)var Search={};Search._path='/dwr';Search.findByName=function(p0,callback){dwr.engine._execute(Search._path,'Search','findByName',p0,callback);}
if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(Login==null)var Login={};Login._path='/dwr';Login.isAuthenticated=function(callback){dwr.engine._execute(Login._path,'Login','isAuthenticated',callback);}
Login.isAdmin=function(callback){dwr.engine._execute(Login._path,'Login','isAdmin',callback);}
Login.getUser=function(callback){dwr.engine._execute(Login._path,'Login','getUser',callback);}
Login.getUserId=function(callback){dwr.engine._execute(Login._path,'Login','getUserId',callback);}
Login.getUsername=function(callback){dwr.engine._execute(Login._path,'Login','getUsername',callback);}
Login.login=function(p0,p1,callback){dwr.engine._execute(Login._path,'Login','login',p0,p1,callback);}
Login.register=function(p0,callback){dwr.engine._execute(Login._path,'Login','register',p0,callback);}
function RGBColor(color_string)
{this.src=color_string;this.ok=false;if(color_string.charAt(0)=='#'){color_string=color_string.substr(1,6);}
color_string=color_string.replace(/ /g,'');color_string=color_string.toLowerCase();var simple_colors={aliceblue:'f0f8ff',antiquewhite:'faebd7',aqua:'00ffff',aquamarine:'7fffd4',azure:'f0ffff',beige:'f5f5dc',bisque:'ffe4c4',black:'000000',blanchedalmond:'ffebcd',blue:'0000ff',blueviolet:'8a2be2',brown:'a52a2a',burlywood:'deb887',cadetblue:'5f9ea0',chartreuse:'7fff00',chocolate:'d2691e',coral:'ff7f50',cornflowerblue:'6495ed',cornsilk:'fff8dc',crimson:'dc143c',cyan:'00ffff',darkblue:'00008b',darkcyan:'008b8b',darkgoldenrod:'b8860b',darkgray:'a9a9a9',darkgreen:'006400',darkkhaki:'bdb76b',darkmagenta:'8b008b',darkolivegreen:'556b2f',darkorange:'ff8c00',darkorchid:'9932cc',darkred:'8b0000',darksalmon:'e9967a',darkseagreen:'8fbc8f',darkslateblue:'483d8b',darkslategray:'2f4f4f',darkturquoise:'00ced1',darkviolet:'9400d3',deeppink:'ff1493',deepskyblue:'00bfff',dimgray:'696969',dodgerblue:'1e90ff',feldspar:'d19275',firebrick:'b22222',floralwhite:'fffaf0',forestgreen:'228b22',fuchsia:'ff00ff',gainsboro:'dcdcdc',ghostwhite:'f8f8ff',gold:'ffd700',goldenrod:'daa520',gray:'808080',green:'008000',greenyellow:'adff2f',honeydew:'f0fff0',hotpink:'ff69b4',indianred:'cd5c5c',indigo:'4b0082',ivory:'fffff0',khaki:'f0e68c',lavender:'e6e6fa',lavenderblush:'fff0f5',lawngreen:'7cfc00',lemonchiffon:'fffacd',lightblue:'add8e6',lightcoral:'f08080',lightcyan:'e0ffff',lightgoldenrodyellow:'fafad2',lightgrey:'d3d3d3',lightgreen:'90ee90',lightpink:'ffb6c1',lightsalmon:'ffa07a',lightseagreen:'20b2aa',lightskyblue:'87cefa',lightslateblue:'8470ff',lightslategray:'778899',lightsteelblue:'b0c4de',lightyellow:'ffffe0',lime:'00ff00',limegreen:'32cd32',linen:'faf0e6',magenta:'ff00ff',maroon:'800000',mediumaquamarine:'66cdaa',mediumblue:'0000cd',mediumorchid:'ba55d3',mediumpurple:'9370d8',mediumseagreen:'3cb371',mediumslateblue:'7b68ee',mediumspringgreen:'00fa9a',mediumturquoise:'48d1cc',mediumvioletred:'c71585',midnightblue:'191970',mintcream:'f5fffa',mistyrose:'ffe4e1',moccasin:'ffe4b5',navajowhite:'ffdead',navy:'000080',oldlace:'fdf5e6',olive:'808000',olivedrab:'6b8e23',orange:'ffa500',orangered:'ff4500',orchid:'da70d6',palegoldenrod:'eee8aa',palegreen:'98fb98',paleturquoise:'afeeee',palevioletred:'d87093',papayawhip:'ffefd5',peachpuff:'ffdab9',peru:'cd853f',pink:'ffc0cb',plum:'dda0dd',powderblue:'b0e0e6',purple:'800080',red:'ff0000',rosybrown:'bc8f8f',royalblue:'4169e1',saddlebrown:'8b4513',salmon:'fa8072',sandybrown:'f4a460',seagreen:'2e8b57',seashell:'fff5ee',sienna:'a0522d',silver:'c0c0c0',skyblue:'87ceeb',slateblue:'6a5acd',slategray:'708090',snow:'fffafa',springgreen:'00ff7f',steelblue:'4682b4',tan:'d2b48c',teal:'008080',thistle:'d8bfd8',tomato:'ff6347',turquoise:'40e0d0',violet:'ee82ee',violetred:'d02090',wheat:'f5deb3',white:'ffffff',whitesmoke:'f5f5f5',yellow:'ffff00',yellowgreen:'9acd32'};for(var key in simple_colors){if(color_string==key){color_string=simple_colors[key];}}
var color_defs=[{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,example:['rgb(123, 234, 45)','rgb(255,234,245)'],process:function(bits){return[parseInt(bits[1]),parseInt(bits[2]),parseInt(bits[3])];}},{re:/^(\w{2})(\w{2})(\w{2})$/,example:['#00ff00','336699'],process:function(bits){return[parseInt(bits[1],16),parseInt(bits[2],16),parseInt(bits[3],16)];}},{re:/^(\w{1})(\w{1})(\w{1})$/,example:['#fb0','f0f'],process:function(bits){return[parseInt(bits[1]+bits[1],16),parseInt(bits[2]+bits[2],16),parseInt(bits[3]+bits[3],16)];}}];for(var i=0;i<color_defs.length;i++){var re=color_defs[i].re;var processor=color_defs[i].process;var bits=re.exec(color_string);if(bits){channels=processor(bits);this.r=channels[0];this.g=channels[1];this.b=channels[2];this.ok=true;}}
this.r=(this.r<0||isNaN(this.r))?0:((this.r>255)?255:this.r);this.g=(this.g<0||isNaN(this.g))?0:((this.g>255)?255:this.g);this.b=(this.b<0||isNaN(this.b))?0:((this.b>255)?255:this.b);this.toRGB=function(){return'rgb('+this.r+', '+this.g+', '+this.b+')';}
this.toHex=function(){var r=this.r.toString(16);var g=this.g.toString(16);var b=this.b.toString(16);if(r.length==1)r='0'+r;if(g.length==1)g='0'+g;if(b.length==1)b='0'+b;return'#'+r+g+b;}
this.getHelpXML=function(){var examples=new Array();for(var i=0;i<color_defs.length;i++){var example=color_defs[i].example;for(var j=0;j<example.length;j++){examples[examples.length]=example[j];}}
for(var sc in simple_colors){examples[examples.length]=sc;}
var xml=document.createElement('ul');xml.setAttribute('id','rgbcolor-examples');for(var i=0;i<examples.length;i++){try{var list_item=document.createElement('li');var list_color=new RGBColor(examples[i]);var example_div=document.createElement('div');example_div.style.cssText='margin: 3px; '
+'border: 1px solid black; '
+'background:'+list_color.toHex()+'; '
+'color:'+list_color.toHex();example_div.appendChild(document.createTextNode('test'));var list_item_value=document.createTextNode(' '+examples[i]+' -> '+list_color.toRGB()+' -> '+list_color.toHex());list_item.appendChild(example_div);list_item.appendChild(list_item_value);xml.appendChild(list_item);}catch(e){}}
return xml;}}
function RoundedCorners()
{this.targets=new Array();this.addTarget=function(div,xRadius,yRadius,color,bgColor,padding,heightOfContent,whichCorners,options){var index=this.targets.length;if(typeof options!='object')options={};this.targets[index]={div:div,xRadius:xRadius,yRadius:yRadius,color:color,bgColor:bgColor,padding:padding,heightOfContent:heightOfContent,whichCorners:whichCorners,options:options};};this.init=function(){for(var targetCounter=0 in this.targets){var trgt=this.targets[targetCounter];var xRadius=trgt.xRadius;var yRadius=trgt.yRadius;var rgbColor=new RGBColor(trgt.color);if(!rgbColor.ok)rgbColor=new RGBColor("gray");var rgbBGColor=new RGBColor(trgt.bgColor);if(!rgbBGColor.ok)rgbBGColor=new RGBColor("white");var rgbHeaderColor=(trgt.options.headColor)?new RGBColor(trgt.options.headColor):rgbColor;var heightOfContent=trgt.heightOfContent;var corners=trgt.whichCorners;if(!corners)corners={tl:1,tr:1,bl:1,br:1};var factorX=xRadius/yRadius;var obj=typeof trgt.div=='object'?trgt.div:document.getElementById(trgt.div);obj.style.backgroundColor='transparent';var objW=obj.offsetWidth;var objH=obj.offsetHeight;var content=obj.innerHTML;obj.innerHTML='';var objOrig=obj;var drawStem=(trgt.options.stemWidth&&trgt.options.stemHeight&&trgt.options.stemY);if(drawStem){obj=document.createElement('DIV');obj.style.width=objW+"px";objOrig.appendChild(obj);objOrig.style.width=(objOrig.offsetWidth+trgt.options.stemWidth)+"px";}
if(corners.tl||corners.tr){var topBar_container=document.createElement('DIV');topBar_container.style.height=yRadius+'px';obj.appendChild(topBar_container);var currentAntialiasSize=0;var savedRestValue=0;for(no=1;no<=yRadius;no++){var marginSize=(xRadius-(this.getY((yRadius-no),yRadius,factorX)));var marginSize_decimals=(xRadius-(this.getY_withDecimals((yRadius-no),yRadius,factorX)));var restValue=xRadius-marginSize_decimals;var antialiasSize=xRadius-marginSize-Math.floor(savedRestValue)
var foregroundSize=xRadius-(marginSize+antialiasSize);var el=document.createElement('DIV');el.style.height='1px';if(corners.tl)el.style.marginLeft=marginSize+'px';if(corners.tr)el.style.marginRight=marginSize+'px';topBar_container.appendChild(el);var y=topBar_container;for(var no2=1;no2<=antialiasSize;no2++){var blendMode;switch(no2){case 1:if(no2==antialiasSize)
blendMode=((restValue+savedRestValue)/2)-foregroundSize;else{var t=this.getY_withDecimals((xRadius-marginSize-no2),xRadius,1/factorX);blendMode=(restValue-foregroundSize-antialiasSize+1)*(t-(yRadius-no))/2;}
break;case antialiasSize:var t=this.getY_withDecimals((xRadius-marginSize-no2+1),xRadius,1/factorX);blendMode=1-(1-(t-(yRadius-no)))*(1-(savedRestValue-foregroundSize))/2;break;default:var t2=this.getY_withDecimals((xRadius-marginSize-no2),xRadius,1/factorX);var t=this.getY_withDecimals((xRadius-marginSize-no2+1),xRadius,1/factorX);blendMode=((t+t2)/2)-(yRadius-no);}
el.style.backgroundColor=this.__blendColors(rgbBGColor,rgbHeaderColor,blendMode);y.appendChild(el);y=el;var el=document.createElement('DIV');el.style.height='1px';el.style.overflow='hidden';if(corners.tl)el.style.marginLeft='1px';if(corners.tr)el.style.marginRight='1px';el.style.backgroundColor=rgbHeaderColor.src;}
y.appendChild(el);savedRestValue=restValue;}
if(trgt.options.title){var e=document.createElement('DIV');e.style.position="absolute";e.style.top="0px";e.style.left=xRadius+"px";e.style.width=(obj.offsetWidth-xRadius*2)+"px";e.style.height=yRadius+"px";e.style.textAlign="center";e.innerHTML=trgt.options.title;obj.appendChild(e);}}
var contentDiv=document.createElement('DIV');contentDiv.className=obj.className;contentDiv.style.border='1px solid '+trgt.color;if(trgt.options.borderColor){contentDiv.style.borderLeft='1px solid '+trgt.options.borderColor;contentDiv.style.borderRight='1px solid '+trgt.options.borderColor;}
contentDiv.innerHTML=content;contentDiv.style.backgroundColor=trgt.color;contentDiv.style.paddingLeft=trgt.padding+'px';contentDiv.style.paddingRight=trgt.padding+'px';if(!heightOfContent)heightOfContent='';heightOfContent=heightOfContent+'';if(heightOfContent.length>0&&heightOfContent.indexOf('%')==-1)heightOfContent=heightOfContent+'px';if(heightOfContent.length>0)contentDiv.style.height=heightOfContent;obj.appendChild(contentDiv);if(corners.bl||corners.br){var bottomBar_container=document.createElement('DIV');bottomBar_container.style.height=yRadius+'px';bottomBar_container.style.overflow='hidden';obj.appendChild(bottomBar_container);var currentAntialiasSize=0;var savedRestValue=0;var errorOccured=false;var arrayOfDivs=new Array();for(no=1;no<=yRadius;no++){var marginSize=(xRadius-(this.getY((yRadius-no),yRadius,factorX)));var marginSize_decimals=(xRadius-(this.getY_withDecimals((yRadius-no),yRadius,factorX)));var restValue=(xRadius-marginSize_decimals);var antialiasSize=xRadius-marginSize-Math.floor(savedRestValue)
var foregroundSize=xRadius-(marginSize+antialiasSize);var el=document.createElement('DIV');el.style.overflow='hidden';el.style.height='1px';if(corners.bl)el.style.marginLeft=marginSize+'px';if(corners.br)el.style.marginRight=marginSize+'px';bottomBar_container.insertBefore(el,bottomBar_container.firstChild);var y=bottomBar_container;for(var no2=1;no2<=antialiasSize;no2++){switch(no2){case 1:if(no2==antialiasSize)
blendMode=((restValue+savedRestValue)/2)-foregroundSize;else{var t=this.getY_withDecimals((xRadius-marginSize-no2),xRadius,1/factorX);blendMode=(restValue-foregroundSize-antialiasSize+1)*(t-(yRadius-no))/2;}
break;case antialiasSize:var t=this.getY_withDecimals((xRadius-marginSize-no2+1),xRadius,1/factorX);blendMode=1-(1-(t-(yRadius-no)))*(1-(savedRestValue-foregroundSize))/2;break;default:var t2=this.getY_withDecimals((xRadius-marginSize-no2),xRadius,1/factorX);var t=this.getY_withDecimals((xRadius-marginSize-no2+1),xRadius,1/factorX);blendMode=((t+t2)/2)-(yRadius-no);}
el.style.backgroundColor=this.__blendColors(rgbBGColor,rgbColor,blendMode);if(y==bottomBar_container)arrayOfDivs[arrayOfDivs.length]=el;try{var firstChild=y.getElementsByTagName('DIV')[0];y.insertBefore(el,y.firstChild);}catch(e){y.appendChild(el);errorOccured=true;}
y=el;var el=document.createElement('DIV');el.style.height='1px';el.style.overflow='hidden';if(corners.bl)el.style.marginLeft='1px';if(corners.br)el.style.marginRight='1px';}
if(errorOccured){for(var divCounter=arrayOfDivs.length-1;divCounter>=0;divCounter--){bottomBar_container.appendChild(arrayOfDivs[divCounter]);}}
el.style.backgroundColor=trgt.color;y.appendChild(el);savedRestValue=restValue;}}
if(drawStem){for(var i=1;i<trgt.options.stemHeight;i++){var e=document.createElement('DIV');e.style.position="absolute";e.style.top=(trgt.options.stemY+i)+"px";e.style.left=obj.offsetWidth+"px";e.style.overflow="hidden";e.style.height="1px";e.style.width=Math.round(0.5+(1-Math.abs(i/trgt.options.stemHeight*2-1))*trgt.options.stemWidth)+'px';e.style.backgroundColor=trgt.color;objOrig.appendChild(e);}}
if(trgt.options.ok){var e=document.createElement('input');e.type="button";e.value="OK";e.style.position="relative";e.style.left=Math.round(obj.offsetWidth/2-15)+"px";e.style.top="-30px";e.onclick=trgt.options.okAction;obj.appendChild(e);}}};this.getY=function(x,maxX,factorX){return Math.ceil(this.getY_withDecimals(x,maxX,factorX));};this.getY_withDecimals=function(x,maxX,factorX){return Math.max(0,factorX*Math.sqrt((maxX*maxX)-(x*x)));};this.__blendColors=function(colorA,colorB,blendMode){var red=Math.round(colorA.r+(colorB.r-colorA.r)*blendMode).toString(16);var green=Math.round(colorA.g+(colorB.g-colorA.g)*blendMode).toString(16);var blue=Math.round(colorA.b+(colorB.b-colorA.b)*blendMode).toString(16);if(red.length==1)red='0'+red;if(green.length==1)green='0'+green;if(blue.length==1)blue='0'+blue;return'#'+red+green+blue;};}
function PromptWindow(name,title,body,left,top,width,height,sync,actionName,action,cancelName,cancel){if(document["prompt_"+name])document["prompt_"+name].onCancel(4);document["prompt_"+name]=this;this.name=name;this.title=title;this.lef=left;this.top=top;this.width=width;this.height=height;if(!actionName&&actionName!=false)actionName="OK";if(!cancelName&&cancelName!=false)cancelName="Cancel";this.actionName=actionName;this.promptAction=action;this.cancelName=cancelName;this.promptCancel=cancel;if(width>windowWidth())width=windowWidth();if(height>windowHeight())height=windowHeight();if(left=="CENTER")left=Math.round((windowWidth()-width)/2);if(top=="CENTER")top=Math.round((windowHeight()-height)/2);if(left<0)left=0;else if(left>windowWidth()-20-width)left=windowWidth()-20-width;if(top<0)top=0;else if(top>windowHeight()-20-height)top=windowHeight()-20-height;var w=document.createElement("DIV");this.mainWnd=w;w.onmousemove=function(evnt){if(!evnt)evnt=event;var g=$("prompt_wnd_"+name);if(g.moving){var mp=new getAbsMousePos(evnt);g.style.left=(g.initPos.x+mp.x-g.pX)+"px";g.style.top=(g.initPos.y+mp.y-g.pY)+"px"}};w.onmouseup=function(evnt){var g=$("prompt_wnd_"+name);g.moving=false;};var s=w.style;s.zIndex="101";if(sync){w.id="PromptTopWnd_"+name;s.width="100%";s.height="100%";s.border="0";s.padding="0";s.margin="0";s.position="absolute";s.top="0px";s.left="0px";var wFade=document.createElement("DIV");s=wFade.style;s.width="100%";s.height="100%";s.position="absolute";s.top="0px";s.left="0px";s.backgroundColor="#202020";s.opacity="0.7";s.filter="alpha(opacity=70)";w.appendChild(wFade);var w2=w;w=document.createElement("DIV");w2.appendChild(w);s=w.style;}
this.dialogWnd=w;this.style=s;w.promptClass=this;w.id="prompt_wnd_"+name;s.position="absolute";s.top=top+"px";s.left=left+"px";s.width=width+"px";s.height=height+"px";s.border="1px solid gray";s.color="white";s.backgroundColor="black";this.onmousedown=function(evnt){var p=this.parentNode;p.moving=true;p.initPos={x:p.offsetLeft,y:p.offsetTop};var mp=new getAbsMousePos(evnt);p.pX=mp.x;p.pY=mp.y};this.onmouseup=function(evnt){this.parentNode.moving=false;};this.setBody=function(body){this.dialogWnd.innerHTML="<div id='prompt_wnd_header_"+this.name+"' "+"style='width:100%;height:18px;color:white;font-size:10pt;font-weight:bold;background-color:#000080;text-align:center;white-space:nowrap;overflow:hide;border-bottom:1px solid #404040;cursor:move' "+"onselectstart='return false' "+">"+this.title+"</div>"+"<img src='http://sky-map.org/img/icon_close.gif' style='position:absolute;top:1px;left:"+(this.width-16)+"px;cursor:pointer' onclick='document[\"prompt_"+this.name+"\"].onCancel(2)'>"+
body+"<div style='position:absolute;top:"+(this.height-28)+"px;left:0px;width:100%;text-align:right'>"+
(this.actionName!=false?"<input id='prompt_wnd_action_"+this.name+"' type=submit value='"+this.actionName+"' onclick='document[\"prompt_"+this.name+"\"].onAction()'> &nbsp; ":"")+
(this.cancelName!=false?"<input id='prompt_wnd_cancel_"+this.name+"' type=submit value='"+this.cancelName+"' onclick='document[\"prompt_"+this.name+"\"].onCancel(1)'> &nbsp;":"")+"</div>";};this.setBody(body);w.onAction=function(){this.promptClass.onAction();};w.onCancel=function(m){this.promptClass.onCancel(m);};this.show=function(){if(this.mainWnd){document.body.appendChild(this.mainWnd);var e=$("prompt_wnd_header_"+this.name);e.onmousedown=this.onmousedown;e.onmouseup=this.onmouseup;}
return this;};this.setBackgroundColor=function(c){this.style.backgroundColor=c;return this;};this.setColor=function(c){this.style.color=c;return this;};this.setTimeout=function(seconds,showTimer){if(this.timer)clearTimeout(this.timer);if(seconds>0){if(showTimer==1&&$("prompt_wnd_action_"+this.name))$("prompt_wnd_action_"+this.name).value=this.actionName+" ("+seconds+")";else if(showTimer==2&&$("prompt_wnd_cancel_"+this.name))$("prompt_wnd_cancel_"+this.name).value=this.cancelName+" ("+seconds+")";this.timer=setTimeout("document[\"prompt_"+name+"\"].setTimeout("+(seconds-1)+","+showTimer+")",1000);}else{this.onCancel(3);}
return this;}
this.onAction=function(){if(this.timer)clearTimeout(this.timer);if(this.promptAction){var b=this.promptAction(this);if(b==false)return;}
this.mainWnd.style.visibility="hidden";this.clear();};this.onCancel=function(method){if(this.timer)clearTimeout(this.timer);if(this.promptCancel){var b=this.promptCancel(this,method);if(b==false)return;}
this.mainWnd.style.visibility="hidden";this.clear();};this.clear=function(){if(this.timer)clearTimeout(this.timer);if(this.mainWnd)document.body.removeChild(this.mainWnd);this.mainWnd=null;if(document["prompt_"+this.name])document["prompt_"+this.name]=null;};}
function MessageWindow(name,body,left,top,width,height,timeoutSec,timeoutCallback,options){if(document["msgWnd_"+name])document["msgWnd_"+name].clear();document["msgWnd_"+name]=this;this.name=name;this.timeoutSec=timeoutSec;this.timeoutCallback=timeoutCallback;if(!options)options={};this.options=options;if(width>windowWidth())width=windowWidth();if(height>windowHeight())height=windowHeight();if(left=="CENTER")left=Math.round((windowWidth()-width)/2);if(top=="CENTER")top=Math.round((windowHeight()-height)/2);if(left<0)left=0;else if(left>windowWidth()-20-width)left=windowWidth()-20-width;if(top<0)top=0;else if(top>windowHeight()-20-height)top=windowHeight()-20-height;var w=document.createElement("DIV");this.mainWnd=w;w.onmousemove=function(evnt){this.promptClass.restartTimer();};var s=w.style;s.zIndex="102";this.style=s;w.promptClass=this;w.id="msgWnd_wnd_"+name;s.position="absolute";s.top=top+"px";s.left=left+"px";s.width=width+"px";s.height=height+"px";s.color=(options.color)?options.color:"white";s.fontSize=(options.fontSize)?options.fontSize:"10pt";s.fontWeight=(options.fontWeight)?options.fontWeight:"normal";s.fontStyle=(options.fontStyle)?options.fontStyle:"";s.fontFamily=(options.fontFamily)?options.fontFamily:"";s.backgroundColor=(options.bgColor)?options.bgColor:"black";s.overflow="visible";s.visibility="hidden";document.body.appendChild(w);if(options.rounded){w.innerHTML=body+"<br><br>";this.rC=new RoundedCorners();var cornerX=options.cornerX?options.cornerX:20;var cornerY=options.cornerY?options.cornerY:20;var stemWidth=options.stem?options.stemWidth?options.stemWidth:cornerX:0;var stemHeight=options.stem?options.stemHeight?options.stemHeight:cornerY:0;var stemY=options.stem?options.stemY?options.stemY:25:0;var hc=options.headColor?options.headColor:options.title?'darkgray':null;var okAction=function(){if(this.parentNode.promptClass)this.parentNode.promptClass.clear();else if(this.parentNode.parentNode.promptClass)this.parentNode.parentNode.promptClass.clear();};this.rC.addTarget(w,cornerX,cornerY,s.backgroundColor,options.bgbgColor?options.bgbgColor:"black",0,height,null,{stemWidth:stemWidth,stemHeight:stemHeight,stemY:stemY,headColor:hc,title:options.title,ok:1,okAction:okAction});this.rC.init();}else{s.border=(options.border)?options.border:"1px solid gray";w.innerHTML="<img src='http://sky-map.org/img/icon_close.gif' style='position:absolute;top:1px;left:"+(width-16)+"px;cursor:pointer' onclick='this.parentNode.promptClass.clear()'>"+body;}
this.show=function(){if(this.mainWnd){this.mainWnd.style.visibility="";}
return this;};this.setBackgroundColor=function(c){this.style.backgroundColor=c;return this;};this.setColor=function(c,bg){this.style.color=c;if(bg)this.style.backgroundColor=bg;return this;};this.setTimeout=function(seconds){if(this.timer)clearTimeout(this.timer);if(seconds>0){this.timer=setTimeout("document[\"msgWnd_"+name+"\"].setTimeout("+(seconds-1)+")",1000);}else if(seconds>-this.secondsToFade){var op=1+seconds/this.secondsToFade;this.style.opacity=op;this.style.filter="alpha(opacity="+Math.round(op*100)+")";this.timer=setTimeout("document[\"msgWnd_"+name+"\"].setTimeout("+(seconds-0.1)+")",100);}else{this.clear();if(this.timeoutCallback)this.timeoutCallback(this);}
return this;}
this.secondsToFade=3.5;this.restartTimer=function(){this.setTimeout(this.timeoutSec);this.style.opacity="1.0";this.style.filter="alpha(opacity=100)";};this.clear=function(){if(this.timer)clearTimeout(this.timer);if(this.mainWnd)document.body.removeChild(this.mainWnd);this.mainWnd=null;if(document["msgWnd_"+this.name])document["msgWnd_"+this.name]=null;};this.restartTimer();}
function UserLogin(){this.user=null;this.getUserId=function(){return this.user?this.user.userId:0;};this.getUsername=function(){return this.user?this.user.username:null;};this.checkAndShowLoginDialog=function(actionOK,actionCancel){this.loginActionOK=actionOK;this.loginActionCancel=actionCancel;Login.getUser(function(u){if(u&&u.userId&&u.isAuthenticated){userLogin.user=u;userLogin.loginActionOK();}else userLogin.showLoginDialog(userLogin.loginActionOK,userLogin.loginActionCancel);});};this.showLoginDialog=function(actionOK,actionCancel){this.loginActionOK=actionOK;this.loginActionCancel=actionCancel;var title="Login";var body="<table style='font-family:verdana;font-size:10pt'>"+"<tr><td colspan=2 align=right style='font-size:9pt;font-weight:bold'><a href='#' onclick='userLogin.showRegistrationDialog();return false;'><u>New User</u></a></td></tr>"+"<tr><td align=right>Username:</td><td><input type=text id='login_username' size=15></td></tr>"+"<tr><td align=right>Password:</td><td><input type=password id='login_password' size=15></td></tr>"+"</table>";var width=200,height=150,left="CENTER",top="CENTER";this.addPlaceDlg=new PromptWindow("loginDlg",title,body,left,top,width,height,true,"Login",function(dlg){userLogin.login($('login_username').value,$('login_password').value);},"Cancel",function(dlg,method){if(userLogin.loginActionCancel)userLogin.loginActionCancel();}).show();};this.showRegistrationDialog=function(){var title="Registration";var body="<table>"+"<tr><td align=right>First Name:</td><td><input type=text id='login_firstName' size=25></td></tr>"+"<tr><td align=right>Last Name:</td><td><input type=text id='login_lastName' size=25></td></tr>"+"<tr><td align=right>E-mail:</td><td><input type=text id='login_email' size=25></td></tr>"+"<tr><td align=right>Nickname:</td><td><input type=text id='login_nickname' size=25></td></tr>"+"<tr><td align=right>Username:</td><td><input type=text id='login_username' size=25></td></tr>"+"<tr><td align=right>Password:</td><td><input type=password id='login_password' size=25></td></tr>"+"<tr><td align=right>Repeat Password:</td><td><input type=password id='login_password2' size=25></td></tr>"+"</table>";var width=320,height=250,left="CENTER",top="CENTER";this.addPlaceDlg=new PromptWindow("loginDlg",title,body,left,top,width,height,true,"Register",function(dlg){var username=$('login_username').value;var password=$('login_password').value;var email=$('login_email').value;if(email.length<5){userLogin.showNote("useLoginReg","Error","E-mail address is missing or incorrect",200);return false;}else if(username.length<4||username.length>20){userLogin.showNote("useLoginReg","Error","Username is missing or incorrect. Username cannot be shorter than 4 or longer than 20 characters.",200);return false;}else if(password.length<5||password.length>20){userLogin.showNote("useLoginReg","Error","Password is missing or incorrect. Please type a new password (minimum 5 characters, maximum - 20)",300);return false;}else if(password!=$('login_password2').value){userLogin.showNote("useLoginReg","Error","Passwords do not match. Please retype your password in both fileds.",200);return false;}else{var user={firstName:$('login_firstName').value,lastName:$('login_lastName').value,email:email,nickname:$('login_nickname').value,username:username,password:password};this.regDialogData=user;userLogin.register(user);}},"Cancel",function(dlg,method){}).show();if(this.regDialogData){$('login_firstName').value=this.regDialogData.firstName;$('login_lastName').value=this.regDialogData.lastName;$('login_email').value=this.regDialogData.email;$('login_nickname').value=this.regDialogData.nickname;$('login_username').value=this.regDialogData.username;$('login_password').value=this.regDialogData.password;$('login_password2').value=this.regDialogData.password;}};this.login=function(username,password){Login.login(username,password,function(u){userLogin.user=u;if(u&&u.isAuthenticated){userLogin.showNote("useLoginLogin","Login","You successfully logged in as "+u.username,200);if(userLogin.loginActionOK)userLogin.loginActionOK();}else{userLogin.showNote("useLoginLogin","Login","Login failed",200);}});return this.user?this.user.username:null;};this.register=function(user){Login.register(user,function(u){if(u&&u=="OK"){userLogin.showNote("useLoginReg","Registration","You successfully registered",200);Login.getUser(function(u){if(u){userLogin.user=u;}});}else{userLogin.showNote("useLoginReg","Registration","Registration failed<br>Reason:<br>"+u,200);}});return this.user?this.user.username:null;};this.showNote=function(name,title,body,width){var ttitle="<span style='position:relative;top:3px;color:white;font-size:9pt;font-weight:bold;font-family:verdana;white-space:nowrap'>"+title+"</span>";var cornerRadius=20;new MessageWindow(name,body,"CENTER","CENTER",width,0,3,null,{color:'black',bgColor:'yellow',fontSize:'9pt',fontFamily:'verdana',rounded:1,headColor:'blue',title:ttitle}).show();};}
var userLogin=new UserLogin();
var chatDWR;function ChatDWR(panel,mapWnd){chatDWR=this;this.mapWnd=mapWnd;this.username='default';this.userDetails='';this.userId=0;this.panelItem=panel.addItem('Chat',{canClose:false,canCollapse:true});this.users=false;this.publicMsgs=false;this.showUsersMap=true;this.showUsersList=true;this.moveSteps=20;this.moveTimer=100;this.timeToSendLocalPos=1000;this.timeToFlushLastLocalPos=2000;this.alertLevel=1;this.onlineMode=1;this.stickAlertLevel=2;this.panelItem.setBody("<table border=0 cellSpacing=0 cellPadding=0 style='width:100%'>"+"<tr><td id='chat_body_users' style='border-bottom:1px solid gray'></td></tr>"+"<tr id='chat_body_pub_title'><td style='color:white;font-size:9pt;font-weight:bold' align=center>&nbsp;PUBLIC CHAT<!-- &nbsp; &nbsp; <a href='#' onclick='chatDWR.setPosition(Math.random()*24,Math.random()*180-90,1,\"SDSS\");return false;'>(move_test)</a--></td></tr>"+"<tr id='chat_body_pub_msgs'><td id='chat_body_input'><table border=0 cellspacing=0 cellpadding=0 width='100%'>"+"<tr><td><input type=text id=chat_msg_field maxlen=200"+" style='width:100%;background-color:black;border-color:#336699;border-style:solid;border-width:1;font-size:8pt;font-family:verdana;color:gray'"+" onfocus=\"this.style.color='white';if (this.value==this.defaultText) this.value='';\""+" onblur=\"if (this.value==''){this.style.color='gray';this.value=this.defaultText;}\""+" onkeypress=\"onReturn(event, function(fld){chatDWR.sendPublicMessage(fld.value);fld.style.color='gray';fld.value=''})\"></td>"+"<td width=1><img src='img/button_send.gif' border=0 style='cursor:pointer' onclick='var t=$(\"chat_msg_field\");chatDWR.sendPublicMessage(t.value);t.style.color=\"gray\";t.value=t.defaultText;return false;'></td></tr></table></td></tr>"+"<tr><td id='chat_body_msgs' style='color:white;font-family:verdana;font-size:8pt;font-weight:normal'></td></tr></table>");this.panelItem.onExpand=function(){createCookie("chat_panel_expanded","1");var b=readCookie("chat_setUsername_prompt");if(!b){setTimeout('chatDWR.initNote()',3000);createCookie("chat_setUsername_prompt","1",365);};};this.panelItem.onCollapse=function(){createCookie("chat_panel_expanded","0");};if($("chat_msg_field"))$("chat_msg_field").defaultText=$("chat_msg_field").value="Type your message here...";this.panelPrivDialogs=new Array();this.privateMessages=new Array();this.userIcons=new Array();this.stickUserId=0;setInterval("chatDWR.requestUpdateUsersList()",120000);this.initNote=function(){this.showNote("ChatSetUsername","Chat","Click on [<a href='#' onclick='chatDWR.showUserOptions(this);return false'><u><font color=black>settings</font></u></a>] to change your username and other preference",250,0);};this.setUserId=function(userId){if(Number(this.userId)!=Number(userId)){this.userId=Number(userId);if(Number(userId)!=0)createCookie("chat_userId",userId,365);}};this.setUsername=function(username){if(username&&this.username!=username){this.username=username;if(username!=null&&username!="null")createCookie("chat_username",encodeURIComponent(username),365);if(this.onlineMode!=0)ChatService.setUsername(this.username);this.updateBodyUsers();}};this.setUserDetails=function(d){if(d&&this.userDetails!=d){this.userDetails=d;if(d!=null&&d!="null")createCookie("chat_userDetails",encodeURIComponent(d),365);if(this.onlineMode!=0)ChatService.setUserDetails(this.userDetails);}};this.setShowUsersMap=function(b){if(b!=this.showUsersMap){this.showUsersMap=b;createCookie("chat_showUsersMap",b,365);}};this.setShowUsersList=function(b){if(b!=this.showUsersList){this.showUsersList=b;createCookie("chat_showUsersList",b,365);this.updateBodyUsers();}};this.setOnlineMode=function(b){if(b!=this.onlineMode){var bOld=this.onlineMode;this.onlineMode=b;createCookie("chat_onlineMode",b,365);if(b==0){this.users=false;this.publicMsgs=false;$("chat_body_pub_title").style.visibility="hidden";$("chat_body_pub_msgs").style.visibility="hidden";this.updateTitle();this.updateBody();}else{$("chat_body_pub_title").style.visibility="";$("chat_body_pub_msgs").style.visibility="";}
if(bOld==0){if(this.mapWnd.getPosition){var pd=this.mapWnd.getPosition();ChatService.setUserInfo(this.userId,this.username,this.userDetails,pd.ra,pd.de,pd.zoom,pd.view);}
ChatService.getActiveUsers(updateUsersList);ChatService.getPublicMessages(onReceiveMessages);}}};this.setAlertLevel=function(b){this.alertLevel=Number(b);createCookie("chat_alert_level",b,365);};this.setStickAlertLevel=function(b){this.stickAlertLevel=Number(b);createCookie("chat_stick_alert_level",b,365);};this.setPublicMessages=function(msgs){if(this.onlineMode!=0){this.publicMsgs=msgs;this.updateBodyMsgs();if(this.alertLevel==2){this.panelItem.expand();window.focus();}}};this.showNote=function(name,title,body,width,userId){var ttitle="<span style='position:relative;top:3px;color:white;font-size:9pt;font-weight:bold;font-family:verdana;white-space:nowrap'>"+title+"</span>";var cornerRadius=20;var stemY=25;var p=userId?this.panelPrivDialogs[userId]:null;if(!p)p=this.panelItem;var posX=p.getLeft()-width-cornerRadius;var posY=p.getTop()-stemY-4;new MessageWindow(name,body,posX,posY,width,0,3,null,{color:'black',bgColor:'yellow',fontSize:'9pt',fontFamily:'verdana',rounded:1,headColor:'blue',title:ttitle,stem:1,stemY:stemY}).show();};this.addPrivateMessage=function(msg){if(this.onlineMode!=0){this.addMessageToLog(msg.message,msg.authorId,msg.authorName,true);if(this.alertLevel!=0){this.showNote("incomingMsg","Personal message from "+escapeHtml(msg.authorName),escapeHtml(msg.message),300,msg.authorId);}}};this.addMessageToLog=function(msg,userId,username,isIncoming){var ml=this.getMessageLog(userId);ml.push(new this.Message(msg,userId,username,isIncoming));while(ml.length>30)ml.shift();var d=this.getPrivChatPanel(userId,username);if(d){$("chat_body_msgs_"+userId).innerHTML=this.getMessageLogHtml(userId);d.expand();d.parentObj.onresize();}};this.getMessageLog=function(userId){var a=this.privateMessages[userId];if(!a){a=new Array();this.privateMessages[userId]=a;}
return a;};this.getMessageLogHtml=function(userId){var s="";var ml=this.getMessageLog(userId);for(var i=ml.length-1;i>=0;i--){s+="<span style='width:100%;color:"+(ml[i].isIncoming?"white":"gray")+"'>"+escapeHtml(ml[i].msg)+"</span><br>";}
return s;};this.Message=function(msg,userId,username,isIncoming){this.msg=msg;this.userId=Number(userId);this.username=username;this.isIncoming=isIncoming;};this.dropUser=function(userId){if(userId)ChatService.dropUser(userId);};this.getPrivChatPanel=function(userId,username){var d=this.panelPrivDialogs[userId];if(!d){d=panel.addItem("Chat with: <b>"+username+"</b>",{canClose:true,canCollapse:true});d.baseTitle=d.title;d.userId=userId;d.username=username;d.setBody("<table border=0 cellSpacing=0 cellPadding=0 style='width:100%'><tr><td id='chat_body_input_"+userId+"'>"+"<table border=0 cellspacing=0 cellpadding=0 width='100%'><tr><td>"+"<input type=text id=chat_msg_field_"+userId+" maxlen=200 style='width:100%;background-color:black;border-color:#336699;border-style:solid;border-width:1;font-size:8pt;font-family:verdana;color:gray'"+" onfocus=\"if (this.value==this.defaultText){this.style.color='white';this.value='';}\""+" onblur=\"if (this.value==''){this.style.color='gray';this.value=this.defaultText;}\""+" onkeypress=\"onReturn(event, function(t){chatDWR.sendPrivateMessage(t.value,t.userId);t.style.color='gray';t.value=''})\">"+"</td><td width=1><img id='chat_msg_btn_"+userId+"' src='img/button_send.gif' border=0 style='cursor:pointer'"+" onclick=\"var t=$('chat_msg_field_"+userId+"');chatDWR.sendPrivateMessage(t.value,t.userId);t.style.color='gray';t.value=t.defaultText;return false;\">"+"</td></tr></table></td></tr><tr><td id='chat_body_msgs_"+userId+"' style='color:white;font-size:8pt'></td></tr></table>");if($("chat_msg_field_"+userId))$("chat_msg_field_"+userId).defaultText=$("chat_msg_field_"+userId).value="Type your message here...";d.isEnabled=true;d.setEnabled=function(b){this.isEnabled=b;this.setTitle(this.baseTitle+(b?"":" (offline)"));$("chat_msg_field_"+this.userId).disabled=!b;$("chat_msg_field_"+this.userId).style.backgroundColor=b?"black":"#404040";$("chat_msg_btn_"+this.userId).disabled=!b;};d.onClose=function(){chatDWR.panelPrivDialogs[this.userId]=false;};this.panelPrivDialogs[userId]=d;d.show(true);$("chat_msg_field_"+userId).userId=userId;}
return d;};this.updateTitle=function(){if(this.onlineMode==0){this.panelItem.setTitle("Chat: OFFLINE");}else{this.panelItem.setTitle(this.countUsers()+" visitors online");this.panelItem.d_title.style.color='yellow';setTimeout("chatDWR.panelItem.d_title.style.color='white'",500);}};this.countUsers=function(){var n=0;if(this.users){for(var i in this.users)if(this.users[i])n++;}
return n;};this.updateBody=function(){this.updateBodyUsers();this.updateBodyMsgs();};this.updateBodyUsers=function(){if(this.stickUserId!=0&&!this.users[this.stickUserId])this.stickToUser(0);var uu="<tr><td>You:&nbsp;<span style='cursor:pointer' "+"onmouseover='this.style.color=\"red\";chatDWR.onUserMouseover(chatDWR.userId)' "+"onmouseout='this.style.color=\"white\";chatDWR.onUserMouseout(chatDWR.userId)' "+"onclick='this.style.color=\"white\";chatDWR.showUserOptions(this);' "+"><img src='img/userIcon.gif' border='0'/><u>"+escapeHtml(this.username)+"</u>&nbsp;&nbsp;[<u>settings</u>]</span>"+
(this.stickUserId!=0&&this.users[this.stickUserId]?("</td></tr><tr><td>"+"Synced with <b>"+escapeHtml(this.users[this.stickUserId].username)+"</b><br> &nbsp; [<a href='#' onclick='chatDWR.stickUserId=0;ChatService.stickToUser(0);chatDWR.updateBodyUsers()'><u>unsync</u></a>]"):"")+"</td></tr><tr><td style='border-bottom:1px solid gray;font-size:1px'>&nbsp;</td></tr>";var ul="";if(this.showUsersList&&this.users){var users=new Array();var n=0;for(var i in this.users){var u=this.users[i];if(u&&u.userId&&u.username&&Number(u.userId)!=Number(this.userId))users[n++]=u;}
var rows=10;var cols=Math.ceil(n/rows);for(var row=0;row<rows;row++){var s1="";for(var col=0;col<cols;col++){var i=col*rows+row;if(i<n){var u=users[i];s1+="<td"+(col>0?" style='border-left:1px solid gray'":"")+"><img src='img/"+(Number(u.stickUserId)==Number(this.userId)?"attachIcon":"userIcon")+".gif' style='float:left' border='0'/></td><td nowrap><a id='chat_userlist_"+u.userId+"' style='cursor:pointer;' onmouseover='this.style.color=\"red\";chatDWR.onUserMouseover(this);' onmouseout='this.style.color=\"white\";chatDWR.onUserMouseout(this);' onclick='this.style.color=\"white\";chatDWR.onUserClick(this,event);'><u>"+escapeHtml(u.username)+"</u></a>&nbsp;</td>";}else{s1+="<td"+(col>0?" style='border-left:1px solid gray'":"")+">&nbsp;</td><td></td>";}}
ul+="<tr>"+s1+"</tr>";}
ul="<tr><td><div id='chat_users_div' style='width:"+(document.all?"233px":"233px")+";overflow-x:scroll;padding-top:1px;padding-bottom:3px;border-right:1px solid gray'><table cellspacing=0 cellpadding=0 style='color:white;font-size:8pt;font-weight:normal;font-family:verdana'>"+ul+"</table></div></td></tr>";}
var scrollLeft;if($("chat_users_div")){scrollLeft=$("chat_users_div").scrollLeft;}
$("chat_body_users").innerHTML="<table border=0 cellspacing=0 cellpadding=0 style='width:100%;color:white;font-family:verdana;font-size:8pt;font-weight:normal'>"+uu+ul+"</table>";if(scrollLeft&&$("chat_users_div")){$("chat_users_div").scrollLeft=scrollLeft;}
if(this.showUsersList&&this.users){for(var i in this.users){var u=this.users[i];var e=$("chat_userlist_"+i);if(u&&e){e.userId=u.userId;e.username=u.username;}}}
if(this.panelItem.isExpanded)this.panelItem.parentObj.onresize();};this.updateBodyMsgs=function(){var chatlog="";if(this.publicMsgs){for(var i=0;i<this.publicMsgs.length;i++){var m=this.publicMsgs[i];chatlog+="<div style='padding-bottom:2px'><a href='#' id='chat_msgUser_"+i+"' onmouseover='chatDWR.onUserMouseover(this);' onmouseout='chatDWR.onUserMouseout(this);' onclick='chatDWR.onUserClick(this,event);'><u>"+escapeHtml(m.authorName)+"</u></a>: "+escapeHtml(m.message)+"</div>";}}
$("chat_body_msgs").innerHTML=chatlog;if(this.publicMsgs){for(var i=0;i<this.publicMsgs.length;i++){var m=this.publicMsgs[i];var e=$("chat_msgUser_"+i);if(m&&e){e.userId=m.authorId;e.username=m.authorName;}}}
if(this.panelItem.isExpanded)this.panelItem.parentObj.onresize();};this.showUserInfoWindow=function(u){if(typeof u=="number"||typeof u=="string")if(Number(u)==Number(this.userId))u=this;else u=this.users[Number(u)];if(u){var b=u.userDetails&&u.userDetails.length>0;ddrivetip("<table cellspacing=0 cellpadding=0 borders=0 style='color:white;font-size:9pt;width:100%'><tr style='background-color:gray'><td align=center nowrap style='font-weight:bold'>"+escapeHtml(u.username)+"</td></tr></table>"+(b?"<br>"+escapeHtml(u.userDetails)+"":"")+"","black",0,0,{maxWidth:200,backgroundColor:'black',color:'white',border:'1px solid gray',fontSize:'9pt'});this.popupUser(u.userId,true);}};this.hideUserInfoWindow=function(u){var userId=u;if(typeof u=="object")userId=u.userId;hideddrivetip();if(userId)this.popupUser(userId,false);};this.currentPopupUserId=false;this.popupUser=function(userId,activate){if(activate&&userId==this.currentPopupUserId)return;if(!activate&&!this.currentPopupUserId)return;if(this.currentPopupUserId){var cui=this.userIcons[this.currentPopupUserId];if(cui&&cui.origWidth){cui.style.width=cui.origWidth;cui.style.height=cui.origHeight;this.updateUserIconMapPosition(cui);}}
if(this.popupUserLoopId)clearInterval(this.popupUserLoopId);if(!activate){this.currentPopupUserId=false;}else{this.currentPopupUserId=userId;this.popupUserLoopId=setInterval("chatDWR.popupUserLoop("+userId+")",400);}};this.popupUserLoopId=false;this.popupUserLoop=function(u){if(!this.currentPopupUserId||u!=this.currentPopupUserId){if(this.popupUserLoopId)clearInterval(this.popupUserLoopId);return;}
var ui=this.userIcons[this.currentPopupUserId];if(ui){if(ui.origWidth){this.updateUserIconMapPosition(ui);ui.style.width=ui.origWidth;ui.style.height=ui.origHeight;ui.origWidth=ui.origHeight=null;}else{ui.origWidth=ui.style.width;ui.origHeight=ui.style.height;ui.style.left=(ui.offsetLeft-2)+"px";ui.style.top=(ui.offsetTop-2)+"px";ui.style.width=(ui.offsetWidth+4)+"px";ui.style.height=(ui.offsetHeight+4)+"px";}}};this.onUserMouseover=function(g){var userId=g;if(typeof g=="object"){while(g&&!g.userId)g=g.parentNode;if(g)userId=g.userId;}
if(typeof userId=="number"||typeof userId=="string"){this.showUserInfoWindow(userId);}};this.onUserMouseout=function(g){delayhidemenu();var userId=g;if(typeof g=="object"){while(g&&!g.userId)g=g.parentNode;if(g)userId=g.userId;}
if(typeof userId=="number"||typeof userId=="string")this.hideUserInfoWindow(userId);};this.onUserClick=function(g,evnt){hideddrivetip();var userId=g;if(typeof g=="object"){while(g&&!g.userId)g=g.parentNode;if(g)userId=g.userId;}
if(typeof userId=="string")userId=Number(userId);if(typeof userId!="number")return;if(!this.users[userId])return;this.onUserClickCurrentElement=g;if(!evnt)evnt=event;var menu=["<div style='position:relative;left:0;top:0;width:100%;height:15px;text-align:center;background-color:green;color:white;font-family:Sans-Serif;font-size:8pt;font-weight:bold;padding:0'>"+g.username+"</div>","<a href='#' onclick='chatDWR.showSendMessageDialog(chatDWR.onUserClickCurrentElement);return false;'>Send message</a>"];if(Number(this.stickUserId)!=userId)menu.push("<a href='#' onclick='chatDWR.stickToUser("+userId+");return false;' onmouseover='ddrivetip(\"Synchronize (sync) with the user.<br>All sky browsing operations performed by this user will be exactly duplicated on your computer.\", \"yellow\", 0, 0, {maxWidth:200,color:\"black\",fontSize:\"9pt\"});'>Sync with the user</a>");else menu.push("<a href='#' onclick='chatDWR.stickUserId=0;ChatService.stickToUser(0);chatDWR.updateBodyUsers();return false;'>Unsync from the user</a>");if(Number(this.userId)==Number(this.users[userId].stickUserId))menu.push("<a href='#' onclick='chatDWR.dropUser("+userId+");return false;'>Unsync the user</a>");dropdownmenu(g,evnt,menu,'150px');};this.showUserOptions=function(e){var width=300;var height=300;var top=getAbsoluteTop(e)+e.offsetHeight;var left=getAbsoluteLeft(e)+e.offsetWidth-width;var title="User Options";var body="<table style='color:white;font-size:10pt;'>"+"<tr><td>Your nickname:&nbsp;</td><td><input type=text id='chat_user_nick' size=20 maxLength=20 style='background-color:black;border-color:#336699;border-style:solid;border-width:1;font-size:8pt;font-family:verdana;color:white'></td></tr>"+"<tr><td>Details:&nbsp;</td><td><textarea id='chat_user_details' rows=4 style='width:100%;background-color:black;border-color:#336699;border-style:solid;border-width:1;font-size:8pt;font-family:verdana;color:white'></textarea></td></tr>"+"<tr><td>Show users on the map:&nbsp;</td><td><input type=checkbox id='chat_user_showUsersMap'></td></tr>"+"<tr><td>Show users list:&nbsp;</td><td><input type=checkbox id='chat_user_showUsersList'></td></tr>"+"<tr><td>Notifications:&nbsp;</td><td><select id='chat_user_alertLevel' style='background-color:black;border-color:#336699;border-style:solid;border-width:1;font-size:8pt;font-family:verdana;color:white'><option value=0>None<option value=1>On private message<option value=2>On any message</select></td></tr>"+"<tr><td>Online mode:&nbsp;</td><td><select id='chat_user_onlineMode' style='background-color:black;border-color:#336699;border-style:solid;border-width:1;font-size:8pt;font-family:verdana;color:white'><option value=0>Offline<option value=1>Online<option value=2>Hide from map<option value=3>Hide from map/list</select></td></tr>"+"<tr><td>Sync permission:&nbsp;</td><td><select id='chat_user_stickAlertLevel' style='background-color:black;border-color:#336699;border-style:solid;border-width:1;font-size:8pt;font-family:verdana;color:white'><option value=0>Decline always<option value=1>Ask for permission<option value=2>Notify<option value=3>Silently accept</select></td></tr>"+"</table>";new PromptWindow("ChatUserOptions",title,body,left,top,width,height,true,"Save",function(dlg){chatDWR.setUsername($("chat_user_nick").value);chatDWR.setUserDetails($("chat_user_details").value);chatDWR.setShowUsersMap($("chat_user_showUsersMap").checked);chatDWR.setShowUsersList($("chat_user_showUsersList").checked);chatDWR.alertLevel=$("chat_user_alertLevel").value;chatDWR.setOnlineMode($("chat_user_onlineMode").value);chatDWR.setStickAlertLevel($("chat_user_stickAlertLevel").value);}).show();$("chat_user_details").value=escapeHtml(this.userDetails?this.userDetails:"");$("chat_user_showUsersMap").checked=this.showUsersMap;$("chat_user_showUsersList").checked=this.showUsersList;$("chat_user_alertLevel").value=this.alertLevel;$("chat_user_onlineMode").value=this.onlineMode;$("chat_user_stickAlertLevel").value=this.stickAlertLevel;var inp=$("chat_user_nick");inp.value=this.username;inp.focus();};this.showSendMessageDialog=function(e){var width=350;var height=90;var top=getAbsoluteTop(e)+e.offsetHeight;var left=getAbsoluteLeft(e)+e.offsetWidth-width;var title="Send message to <b>"+e.username+"</b>";var body="Message:<br><input type=text id='chat_priv_msg' maxLength=250 style='width:100%;background-color:black;border-color:#336699;border-style:solid;border-width:1;font-size:8pt;font-family:verdana;color:white' onkeypress='onReturn(event, function(fld){fld.parentNode.onAction();}, function(fld){fld.parentNode.onCancel(2)})'>";new PromptWindow("ChatSendMsg",title,body,left,top,width,height,true,"Send",function(dlg){chatDWR.sendPrivateMessage($("chat_priv_msg").value,$("chat_priv_msg").userId);}).show();$("chat_priv_msg").focus();$("chat_priv_msg").userId=e.userId;};this.setPosition=function(ra,de,zoom,view){if(this.onlineMode==1){ChatService.setPosition(ra,de,zoom,view);}};this.sendPublicMessage=function(text){if(this.onlineMode!=0&&text!=''&&text!='Type your message here...'){ChatService.sendPublicMessage(text);}};this.sendPrivateMessage=function(text,userId){if(this.onlineMode!=0){this.addMessageToLog(text,userId,this.getUsernameById(userId),false);ChatService.sendPrivateMessage(text,userId);}};this.getUsernameById=function(userId){if(this.users){for(var i in this.users){if(this.users[i]&&this.users[i].userId==userId)return this.users[i].username;}}
return false;};this.init=function(){if(readCookie("chat_showUsersMap")!=null)this.showUsersMap=readCookie("chat_showUsersMap")=="1";if(readCookie("chat_showUsersList")!=null)this.showUsersList=readCookie("chat_showUsersList")=="1";if(readCookie("chat_alert_level")!=null)this.alertLevel=Number(readCookie("chat_alert_level"));if(readCookie("chat_stick_alert_level")!=null)this.stickAlertLevel=Number(readCookie("chat_stick_alert_level"));var uid=readCookie("chat_userId");var unm=readCookie("chat_username")!=null?decodeURIComponent(readCookie("chat_username")):null;var ud=readCookie("chat_userDetails")!=null?decodeURIComponent(readCookie("chat_userDetails")):"";if(uid!=null&&unm!=null&&unm!="null"){this.userId=Number(uid);this.username=unm;this.userDetails=ud;if(this.onlineMode!=0&&this.mapWnd.getPosition){var pd=this.mapWnd.getPosition();ChatService.setUserInfo(this.userId,this.username,this.userDetails,pd.ra,pd.de,pd.zoom,pd.view);}}else{ChatService.getUserInfo(function(data){chatDWR.onGetUserInfo(data)});}
if(this.onlineMode!=0){ChatService.getActiveUsers(updateUsersList);ChatService.getPublicMessages(onReceiveMessages);}
this.timePositionUpdated=0;this.lastPositionUpdated=false;this.positionUpdatedTimerSet=false;if(!this.onSkymapPositionChangeSet){this.orig_onSkymapPositionChange=this.mapWnd.onSkymapPositionChange;this.mapWnd.onSkymapPositionChange=function(){if(chatDWR.orig_onSkymapPositionChange)chatDWR.orig_onSkymapPositionChange();chatDWR.onLocalPositionChange();};this.onSkymapPositionChangeSet=true;}};this.onGetUserInfo=function(data){this.setUserId(data.userId);this.setUsername(data.username);};this.updateUsersList=function(users){if(this.panelPrivDialogs){for(var userId in this.panelPrivDialogs){var p=this.panelPrivDialogs[userId];if(p&&p.setEnabled){var inList=false;for(var i=0;i<users.length&&!inList;i++)inList=users[i].userId==userId;if(inList!=p.isEnabled)p.setEnabled(inList);}}}
var u2=new Array();for(var i in users)u2[users[i].userId]=users[i];this.users=u2;this.updateTitle();this.updateBodyUsers();this.updateAllUsersMapPosition();};this.requestUpdateUsersList=function(){if(this.onlineMode==0)return;ChatService.getActiveUsers(updateUsersList);};this.createUserIcon=function(u){if(!this.showUsersMap)return;if(!this.mapWnd||this.userIcons[u.userId])return;var im=new Image;im.iWidth=11;im.iHeight=11;im.userId=u.userId;im.username=u.username;im.userDetails=u.userDetails;im.ra=u.ra;im.de=u.de;im.zoom=u.zoom;im.view=u.view;im.border=0;im.style.position='absolute';im.style.left='-100px';im.style.top='-100px';im.style.cursor='pointer';im.style.visibility='';im.id='userIcon_'+u.userId;im.style.width=im.iWidth+'px';im.style.height=im.iHeight+'px';im.src='img/userIcon.gif';im.GALLERYIMG='no';im.onmouseover=function(){chatDWR.onUserMouseover(this);};im.onmouseout=function(){chatDWR.onUserMouseout(this);};im.onclick=function(event){chatDWR.onUserClick(this,event);};im.stickToMap=true;this.mapWnd.appendChild(im);im.style.zindex=101;this.userIcons[u.userId]=im;this.updateUserIconMapPosition(im);return im;};this.createAllUserIcons=function(){if(!this.showUsersMap)return;if(this.users){for(var userId in this.users){if(Number(userId)!=Number(this.userId)&&this.users[userId])this.createUserIcon(this.users[userId]);}}};this.deleteUserIcon=function(userId){if(this.mapWnd&&this.userIcons[userId]){this.mapWnd.removeChild(this.userIcons[userId]);this.userIcons[userId]=false;}};this.deleteAllUserIcons=function(){for(var userId in this.userIcons){this.deleteUserIcon(userId);}}
this.updateUserIconMapPosition=function(ui){if(!this.showUsersMap)return;if(ui&&this.mapWnd&&this.mapWnd.updateElementPosition){this.mapWnd.updateElementPosition(ui);}};this.updateAllUsersMapPosition=function(){if(!this.showUsersMap&&this.userIcons){this.deleteAllUserIcons();}else if(this.mapWnd&&this.users){var uu=new Array();for(var userId in this.userIcons){uu[userId]=this.updateUserMapPosition(userId);}
for(var userId in this.users){if(Number(userId)!=Number(this.userId)&&!uu[userId]){this.updateUserMapPosition(userId);}}}};this.updateUserMapPosition=function(userId){if(!this.showUsersMap)return;if(Number(userId)==Number(this.userId))return;var ret=false;var ui=this.userIcons[userId];var u=this.users[userId];if(u&&this.stickUserId&&this.stickUserId==u.userId)this.onHostUserPositionChange(u);if(ui){if(u){if(ui.ra){ui.oldRa=ui.ra;ui.oldDe=ui.de;ui.moveCounter=1;this.activateIconMoveLoop();}else{ui.ra=u.ra;ui.de=u.de;this.updateUserIconMapPosition(ui);}
ret=true;}else{this.deleteUserIcon(userId);}}else{if(u){this.createUserIcon(u);ret=true;}
else{}}};this.onHostUserPositionChange=function(u){this.lastHostUserPosition=u;if(this.mapWnd&&this.mapWnd.setPosition){this.mapWnd.setPosition(u.ra,u.de,u.zoom,u.view);}};this.setUserMapPosition=function(u){if(!u||!u.userId||Number(u.userId)==Number(this.userId))return;this.users[u.userId]=u;if(!this.showUsersMap)return;var ui=this.userIcons[u.userId];if(!ui){ui=this.createUserIcon(u);}
if(!ui)return;if(ui.ra){ui.oldRa=ui.ra;ui.oldDe=ui.de;ui.moveCounter=1;this.activateIconMoveLoop();}else{ui.ra=u.ra;ui.de=u.de;this.updateUserIconMapPosition(ui);}
if(this.stickUserId&&this.stickUserId==u.userId&&this.mapWnd.setPosition){this.mapWnd.setPosition(u.ra,u.de,u.zoom,u.view);}};this.inIconMovingState=false;this.activateIconMoveLoop=function(){if(this.mapWnd){if(!this.inIconMovingState){this.inIconMovingState=true;this.moveUsersLoop();}}}
this.moveUsersLoop=function(){if(!this.users||!this.userIcons)return;var moving=false;for(var userId in this.userIcons){var ui=this.userIcons[userId];var u=this.users[userId];if(ui&&u&&ui.moveCounter){if(ui.moveCounter+1>=this.moveSteps){ui.moveCounter=false;ui.ra=u.ra;ui.de=u.de;this.updateUserIconMapPosition(ui);}else{var oldRa=ui.oldRa,newRA=u.ra;if(Math.abs(oldRa-newRA)>12){var r=Math.round(Math.abs(oldRa-newRA)/24)*24;if(oldRa<newRA)oldRa+=r;else newRA+=r;}
ui.ra=oldRa+(newRA-oldRa)*ui.moveCounter/this.moveSteps;ui.de=ui.oldDe+(u.de-ui.oldDe)*ui.moveCounter/this.moveSteps;this.updateUserIconMapPosition(ui);ui.moveCounter++;moving=true;}}}
this.inIconMovingState=moving;if(moving){setTimeout("chatDWR.moveUsersLoop()",this.moveTimer);}else{}};this.onLocalPositionChange=function(){if(this.mapWnd.getPosition){var t=new Date().getTime();if(t-this.timePositionUpdated>this.timeToSendLocalPos){var pd=this.mapWnd.getPosition();if(!this.lastPositionUpdated||this.lastPositionUpdated.ra!=pd.ra||this.lastPositionUpdated.de!=pd.de||this.lastPositionUpdated.zoom!=pd.zoom||this.lastPositionUpdated.view!=pd.view)
{this.timePositionUpdated=t;this.lastPositionUpdated=pd;this.setPosition(pd.ra,pd.de,pd.zoom,pd.view);}}else if(!this.positionUpdatedTimerSet){this.positionUpdatedTimerSet=true;setTimeout("chatDWR.positionUpdatedTimerSet=false;chatDWR.onLocalPositionChange()",this.timeToFlushLastLocalPos);}}};this.onReceiveMessages=function(msgs){this.setPublicMessages(msgs)};this.onUpdateUserId=function(uid){this.setUserId(uid);};this.onUpdateUsername=function(u){this.setUsername(u);};this.onUserConnected=function(u){if(!u||!u.userId||!u.username)return;if(this.onlineMode!=0&&Number(u.userId)!=Number(this.userId)){this.users[u.userId]=u;var p=this.panelPrivDialogs[u.userId];if(p&&p.setEnabled&&!p.isEnabled)p.setEnabled(true);this.updateTitle();this.updateBodyUsers();if(this.showUsersMap){var ui=this.userIcons[u.userId];if(this.stickUserId&&this.stickUserId==u.userId)this.onHostUserPositionChange(u);if(ui)this.updateUserIconMapPosition(ui);else this.createUserIcon(u);}}};this.onUserDisconnected=function(u){if(!u||!u.userId)return;if(this.onlineMode!=0&&Number(u.userId)!=Number(this.userId)){if(this.users[u.userId]){var p=this.panelPrivDialogs[u.userId];if(p&&p.setEnabled&&p.isEnabled)p.setEnabled(false);this.deleteUserIcon(u.userId);this.users[u.userId]=null;this.updateTitle();this.updateBodyUsers();}}};this.onUserDetailsChanged=function(uOld,uNew){if(uNew&&uNew.userId){this.users[uNew.userId]=uNew;if(!uOld||uOld.userId!=uNew.userId||uOld.username!=uNew.username||uOld.stickUserId!=uNew.stickUserId)
this.updateBodyUsers();}
if(Number(uNew.userId)!=Number(this.userId)&&(uOld.ra!=uNew.ra||uOld.de!=uNew.de||uOld.zoom!=uNew.zoom||uOld.view!=uNew.view)){this.setUserMapPosition(uNew);}};this.askUserStick=function(u){if(!this.users[u.userId])this.users[u.userId]=u;this.askUserStickDialog(u.userId);;};this.askUserStickDialog=function(userId){var u=this.users[userId];if(u){var title="User Sync Request";var body="User <u>"+u.username+"</u> is trying to sync with you. Your sky browsing will be duplicated exectly on the user <u>"+u.username+"</u>'s computer.";var width=300,height=200,left=document.body.clientWidth-width-200,top=200;this.askUserStickDlg=new PromptWindow("AskUserStick"+u.userId,title,body,left,top,width,height,false,"To Accept",function(dlg){ChatService.stickToUserResponse(u.userId,1);chatDWR.askUserStickDlg=null;},"To Decline",function(dlg,method){ChatService.stickToUserResponse(u.userId,method==3?0:2);chatDWR.askUserStickDlg=null;}).show().setTimeout(30,2);}}
this.stickToUser=function(userId){if(!userId){var u=this.users[this.stickUserId];var username=u?u.username:"";var msg="The synchronization (sync) with the user <b>"+escapeHtml(username)+"</b> is lost.";this.showNote("stickReset","Sync reset",msg,250,u?u.userId:this.stickUserId);this.stickUserId=0;}else{ChatService.stickToUserRequest(userId);var title="User Sync Request";var body="<img src='img/wait_spinner.gif'><br><br>Initiating connection...";var width=300,height=150,left=document.body.clientWidth-width-200,top=200;this.userStickProgress=new PromptWindow("UserStickProgress",title,body,left,top,width,height,false,false,false,"Cancel",function(dlg,method){if(method==3){var u=chatDWR.users[userId];var username=u?u.username:"";var msg="The synchronization with the user <b>"+escapeHtml(username)+"</b> cannot be established. No response from the remote browser.";chatDWR.showNote("stickTimeout","Timeout",msg,300,userId);}
ChatService.stickToUserRequestCancel(userId);}).show().setTimeout(40,2);}};this.stickToUserComplete=function(u){if(this.userStickProgress){this.userStickProgress.clear();this.userStickProgress=null;}
if(u&&Number(u.userId)!=Number(this.userId)){var msg="You've successfully synced with the user <b>"+escapeHtml(u?u.username:"")+"</b>.<br>To cancel the \"sync\" operation you should click on [<u>unsync</u>] in the visitors list";this.showNote("stickSuccess","Sync estabished",msg,300,u?u.userId:0);this.stickUserId=u.userId;ChatService.stickToUser(Number(u.userId));this.updateBodyUsers();this.onHostUserPositionChange(u);}};this.onUserStickRequest=function(u){if(!u)return;switch(this.stickAlertLevel){case 0:{ChatService.stickToUserResponse(u.userId,2);break;}
case 1:{ChatService.stickToUserResponse(u.userId,3);this.askUserStick(u);break;}
case 2:case 3:{ChatService.stickToUserResponse(u.userId,1);break;}}};this.onUserStickRequestCancel=function(u){if(this.askUserStickDlg){this.askUserStickDlg.clear();this.showNote("stickCancel","Request cancelled","User cancelled sync request",250,u?u.userId:0);}};this.onUserStickResponse=function(u,response){if(!u)return;switch(response){case 0:{if(this.userStickProgress){this.userStickProgress.clear();this.userStickProgress=null;}
this.showNote("stickNoResponse","Request timeout","No response from the user",250,u?u.userId:0);break;}
case 1:{this.stickToUserComplete(u);break;}
case 2:{if(this.userStickProgress){this.userStickProgress.clear();this.userStickProgress=null;}
this.showNote("stickDeny","Decline","User <b>"+u.username+"</b> declined your sync request",250,u?u.userId:0);break;}
case 3:{if(this.userStickProgress)this.userStickProgress.setBody("<br><br>Sync connection established.<br>Waiting for the user's acceptance...");break;}}};this.onUserStick=function(u){if(!u)return;if(Number(u.stickUserId)==Number(this.userId)){var msg="The user <b>"+escapeHtml(u.username)+"</b> has just synced with you.<br>From now on all your sky browsing is being exactly duplicated on the user "+u.username+" computer.<br>To cancel the \"sync\" operation for the user you should click on \"unsync\" from the drop-down menu linked to the user's icon (<img src='img/attachIcon.gif'>)";this.showNote("stickNew","User "+escapeHtml(u.username)+" synced with you",msg,300,u?u.userId:0);}else if(u.stickUserId==0){var msg="The user <b>"+escapeHtml(u.username)+"</b> unsynced";this.showNote("stickOut","User "+escapeHtml(u.username)+" unsynced",msg,250,u?u.userId:0);}
ChatService.getActiveUsers(updateUsersList);};this.onUserDrop=function(u){var msg="The synchronization with the user <b>"+escapeHtml(u?u.username:"")+"</b> is lost.";this.showNote("stickReset","Sync reset",msg,250,u?u.userId:0);this.stickUserId=0;ChatService.getActiveUsers(updateUsersList);};}
function onUpdateUserId(uid){chatDWR.onUpdateUserId(uid);}
function onUpdateUsername(u){chatDWR.onUpdateUsername(u);}
function onReceiveMessages(msgs){chatDWR.onReceiveMessages(msgs)}
function onNewPrivateMsg(msg){chatDWR.addPrivateMessage(msg);}
function updateUsersList(data){chatDWR.updateUsersList(data);}
function onUserConnected(u){chatDWR.onUserConnected(u);}
function onUserDisconnected(u){chatDWR.onUserDisconnected(u);}
function onUserDetailsChanged(uOld,uNew){chatDWR.onUserDetailsChanged(uOld,uNew);}
function onUserStickRequest(u){chatDWR.onUserStickRequest(u);}
function onUserStickRequestCancel(u){chatDWR.onUserStickRequestCancel(u);}
function onUserStickResponse(u,response){chatDWR.onUserStickResponse(u,response);}
function onUserStick(u){chatDWR.onUserStick(u);}
function onUserDrop(u){chatDWR.onUserDrop(u);}
var rightPanelRSS;function RSSPanel(panel,mapWnd){rightPanelRSS=this;this.mapWnd=mapWnd;this.panelItem=panel.addItem("Latest News",{canClose:false,canCollapse:true});this.panelItem.titleExpanded=this.panelItem.title;this.panelItem.titleCollapsed=this.panelItem.title;this.titleLoading='Loading latest news...';this.debug=true;this.RSSfeeds=new Array();this.maxAllRSS=100;this.RSS_update_sec=120;this.orss=null;this.panelItem.onExpand=function(){createCookie("RSSPanel_expanded","1");rightPanelRSS.refreshNews();};this.panelItem.onCollapse=function(){createCookie("RSSPanel_expanded","0");};this.init=function(){this.refreshNews();};this.refreshNews=function(){this.panelItem.setTitle(this.titleLoading);this.getRSSnews(0);};this.show=function(b){this.panelItem.show(b);if(b)this.refreshNews();};this.getGroup=function(){return 0;};this.updateBody=function(tuData){var s="";for(var i=0;this.orss&&i<Math.min(this.maxAllRSS,this.orss.items.length);i++){var im=this.orss.items[i];var simg="<img src='img/user_star_point.gif' border=0>&nbsp;";if(tuData!=null){var n=tuData.length;var pmatch=0;for(var p=0;p<n;p++){if(tuData[p].starId==im.id){pmatch=p;if(tuData[p].showLabel){simg="<img src='http://images.sky-map.org/user_image/label/"+tuData[p].starId+".gif' border=0>&nbsp;";}
break;}}}
var sItem="<a href='"+im.link+"' target=_blank onmouseover='ddrivetip(\"<span style={color:black;font-size:9pt}><b>\"+rightPanelRSS.RSSfeeds[-rightPanelRSS.getGroup()].items["+i+"].title+\"</b><br>\"+rightPanelRSS.RSSfeeds[-rightPanelRSS.getGroup()].items["+i+"].desc.substring(0,1000)+\"</span>\", \"yellow\",0,0,{maxWidth:400})'>"+simg+"<b>"+(im.date==""?"*":im.date.substring(0,16))+"</b> "+im.title+"</a>";s+=sItem+"<br>";}
s+=sItem+'<br><div style="width:100%;text-align:center;background-color:#404040;font-weight:bold;cursor:pointer" onclick="rightPanelRSS.maxAllRSS+=200;rightPanelRSS.getRSSnews(0)">(more)</span>';this.panelItem.setBody(s);};this.itemRSS=function(obj_id,a_date,a_link,a_title,a_desc){this.id=obj_id;this.date=a_date;this.link=a_link;this.title=a_title;this.desc=a_desc;};this.objectRSS=function(obj_id){this.id=obj_id;this.items=new Array();this.dateUpdated=new Date();this.toHtmlString=rightPanelRSS.objectRSS_toHtmlString;};this.objectRSS_toHtmlString=function(maxItems){var s='';for(var i=0;i<Math.min(maxItems,this.items.length);i++){var im=this.items[i];s+='<b>'+(!im.date||im.date==''?'*':im.date.substring(0,16))+'</b> '+im.title+'<br>';}
return s;};this.getRSSnews=function(objId){var rss=this.titleLoading;var rf=this.RSSfeeds[objId==0?-this.getGroup():objId];var doLoad=true;if(rf){rss=rf.toHtmlString(15);if(rf.dateUpdated+10.0/24.0/60.0>new Date())doLoad=false;}
if(doLoad){if(objId==0){if(this.panelItem.isExpanded){this.panelItem.setTitle(this.titleLoading);if(this.RSSfeeds[-this.getGroup()]&&(!this.orss||this.orss.groupId!=this.getGroup()))this.showAllRSS(this.RSSfeeds[-this.getGroup()],false);RSS.getAllRSS_Hash(this.getGroup(),this.maxAllRSS,function(data){rightPanelRSS.onGetAllRSSHash(data);});}}else{RSS.getRSS_Hash(objId,15,function(data){rightPanelRSS.onGetRSSHash(data);});}}else{this.showRSS(rf,true);}
return rss;};this.onGetAllRSSHash=function(data){if(data!=null&&(!this.RSSfeeds[-data.groupId]||!this.RSSfeeds[-data.groupId].hash||this.RSSfeeds[-data.groupId].hash!=data.hash)){RSS.getAllRSS(data.groupId,this.maxAllRSS,function(data){rightPanelRSS.onGetAllRSS(data);});}else{this.panelItem.updateTitle();setTimeout('rightPanelRSS.getRSSnews(0)',this.RSS_update_sec*1000);}};this.onGetAllRSS=function(data){this.panelItem.updateTitle();if(data!=null){data.id=0;data.dateUpdated=new Date();data.toHtmlString=this.objectRSS_toHtmlString;this.RSSfeeds[-data.groupId]=data;this.showAllRSS(data,true);}};this.onGetRSSHash=function(data){if(data!=null&&(!this.RSSfeeds[data.objectId]||!this.RSSfeeds[data.objectId].hash||this.RSSfeeds[data.objectId].hash!=data.hash)){RSS.getRSS(data.objectId,15,function(data){rightPanelRSS.onGetRSS(data);});}};this.onGetRSS=function(data){if(data!=null){data.id=data.objectId;data.dateUpdated=new Date();this.RSSfeeds[data.objectId]=data;data.toHtmlString=this.objectRSS_toHtmlString;this.showRSS(data,true);}};this.onRSSUpdated=function(data){}
this.showRSS=function(orss,isScheduled){if(orss.id==0){this.showAllRSS(orss,isScheduled);}else{if(this.onRSSUpdated)this.onRSSUpdated(orss);}};this.showAllRSS=function(orss,isScheduled){if(this.panelItem.isExpanded){if(orss&&orss.id==0)this.orss=orss;var tuData=topUsersData;this.updateBody(tuData);if(tuData==null){setTimeout('rightPanelRSS.showAllRSS(false,'+isScheduled+')',1000);}else{if(isScheduled)setTimeout('rightPanelRSS.getRSSnews(0)',this.RSS_update_sec*1000);}}
this.panelItem.show(true);if(this.onRSSUpdated)this.onRSSUpdated(orss);};}
var coolPlacesPanel;function CoolPlacesPanel(panel,mapWnd){coolPlacesPanel=this;this.mapWnd=mapWnd;this.showInactive=true;this.showDeleted=false;this.panelItem=panel.addItem("The Attractive Spots of the Universe",{canClose:false,canCollapse:true});this.panelItem.titleExpanded=this.panelItem.title;this.panelItem.titleCollapsed="The Attractive Spots";this.panelItem.onExpand=function(){createCookie("cool_places_panel_expanded","1");coolPlacesPanel.update();};this.panelItem.onCollapse=function(){createCookie("cool_places_panel_expanded","0");};this.places=null;this.init=function(){if(!this.places)this.update();};this.update=function(){if(this.panelItem.isExpanded){CoolPlaces.getPlaces(function(data){if(data){coolPlacesPanel.places=data;coolPlacesPanel.updateBody();}});}};this.updateBody=function(){var s="<table width=100% border=0 cellpadding=1 cellspacing=0 style='font-size:7pt;font-family:verdana;color:white'>";for(var i in this.places){var p=this.places[i];if(p.status==2&&!this.showInactive)continue;if(p.status==3&&!this.showDeleted)continue;s+="<tr><td nowrap><a href='#' onclick='coolPlacesPanel.showPlace("+i+");return false;' "+"onmouseover='coolPlacesPanel.showLabel("+i+")' onmouseout='hideddrivetip();' "+"style='white-space:nowrap"+(p.status==0?";color:green":p.status==2?";color:gray":p.status==3?";color:darkgray":"")+"'><img src='img/"+(p.hot?"icon_hot2a.gif' width=21 height=9":p.sale?"icon_gift.gif' width=21 height=9":"user_star_point.gif' width=7 height=7")+" border=0>&nbsp;"+
escapeHtml(p.name)+"</a>"+(userLogin.user&&(p.userId==userLogin.user.userId||userLogin.user.isAdmin)?"&nbsp;<img src='img/edit_button.gif' border=0 width=11 height=11 title='Edit' style='cursor:pointer' onclick='coolPlacesPanel.showPlace("+i+",true);coolPlacesPanel.editPlaceDialog("+i+")'>":"")+"</td></tr>";}
s+="<tr><td align=right><a href='#' onclick='coolPlacesPanel.addPlaceDialog();return false;' style='white-space:nowrap;'>+Add New Spot</a></td></tr>";s+="</table>";this.panelItem.setBody(s);};this.showLabel=function(i){var p=typeof i=="object"?i:this.places[i];var content="";if(p.hasImage){var imgURL=p.imgURL?p.imgURL:"http://images.sky-map.org/cool_places/"+p.id+".jpeg";content+="<img src='"+imgURL+"' style='float:left;border:1px solid gray;margin-right:5px;margin-bottom:5px'>";}
content+=p.description+"<p style='font-size:8pt;font-family:verdana;color:gray;font-style:italic;width:100%'>Added "+p.date+" by "+p.username+" <span style='white-space:nowrap;float:right'>Views: "+p.views+", rating: "+"<font style='font-size:6pt'>not implemented yet</font>"+"</span></p>";ddrivetip("<div style='background-color:gray;text-align:center;white-space:nowrap;font-weight:bold;margin-left:0;margin-right:0;width:100%'>"+escapeHtml(p.name)+"</div><div style='padding:5px'>"+content+"</div>","black",0,0,{maxWidth:500,color:'white',border:'1px solid gray',fontSize:'9pt'});};this.showPlace=function(i,dontOpenURL){var p=this.places[i];if(p.url&&!dontOpenURL){window.open(p.url,"_blank");}else{this.mapWnd.setPosition(p.ra,p.de,p.zoom,p.view);}
CoolPlaces.incViews(p.id);if(typeof _gat=="undefined"){var a=document.createElement('script');a.src='https://www.google-analytics.com/ga.js';a.onload=function(){try{wikiskyGATracker=_gat._getTracker("UA-1162068-1");wikiskyGATracker._trackEvent('coolPlaces','click');}catch(e){}};document.body.appendChild(a);}else if(typeof wikiskyGATracker!="undefined"){try{wikiskyGATracker._trackEvent('coolPlaces','click');}catch(e){}}};this.addPlaceDialog=function(){if(userLogin.getUserId()==0){userLogin.checkAndShowLoginDialog(function(){coolPlacesPanel.update();coolPlacesPanel.addPlaceDialog();},null);return;}
var pd=this.mapWnd.getPosition();var p={id:0,ra:pd.ra,de:pd.de,zoom:pd.zoom,view:pd.view,name:'',description:'',status:0,order:0,hasImage:true,hot:false};this.editPlaceDialog(p);};this.editPlaceDialog=function(p){if(typeof p=="string")p=Number(p);if(typeof p=="number")p=this.places[p];this.editingPlace=p;var title=p.id==0?"Add New Spot":"Edit Spot";var body="<table style='width:100%'>"+"<tr><td align=right nowrap>Name:</td><td width=100% colspan=2><input type=text id='cplace_name' maxlen=40 style='width:100%'></td></tr>"+"<tr><td align=right nowrap>Description:<br><font size=-2><i>(in HTML format)</i></font></td><td colspan=2><textarea id='cplace_desc' rows=6 style='width:100%'></textarea></td></tr>"+"<tr><td align=right nowrap>RA:</td><td><input type=text id='cplace_ra' size=10 value='"+p.ra+"'></td>"+"<td rowspan=4 style='border-left:1px solid gray;font-size:9pt;font-style:italic;padding:4px'>When you browsing the sky these parameters change automatically.</td></tr>"+"<tr><td align=right nowrap>Dec:</td><td><input type=text id='cplace_de' size=10 value='"+p.de+"'></td></tr>"+"<tr><td align=right nowrap>Zoom:</td><td><input type=text id='cplace_zoom' size=3 value='"+p.zoom+"'></td></tr>"+"<tr><td align=right nowrap>View:</td><td nowrap><input type=text id='cplace_view' size=10 value='"+p.view+"'>&nbsp;</td></tr>"+
(userLogin.user&&userLogin.user.isAdmin?"<tr><td align=right nowrap>Status:</td><td colspan=2><select id='cplace_status'>"+(p.status==0?"<option value=0 style='color:green'>NEW</option>":"")+"<option value=1>Active</option><option value=2"+(p.status==2?" SELECTED":"")+">Inactive</option><option value=3"+(p.status==3?" SELECTED":"")+">Deleted</option></select></td></tr>":"")+
(userLogin.user&&userLogin.user.isAdmin?"<tr><td align=right nowrap>Order:</td><td colspan=2><input type=text id='cplace_order' size=6 value='"+p.order+"'></td></tr>":"")+"<tr><td align=right nowrap>Image:</td><td colspan=2><input type=checkbox id='cplace_hasImg'"+(p.hasImage?" checked":"")+" onchange='$(\"cplace_img\").disabled=!this.checked;coolPlacesPanel.onImageSourceOptionChange(this)'><select id='cplace_img'"+(p.hasImage?"":" DISABLED")+" onchange='coolPlacesPanel.onImageSourceOptionChange(this)'>"+
(p.id?"<option value=0>Do not change</option>":"")+"<option value=1>From SKY-MAP</option>"+"<option value=2>From other web site</option><option value=3>Upload from your local hard drive</option></select></td></tr>"+"<tr id='cplace_img_tr' style='visibility:hidden'><td id='cplace_img_label' align=right nowrap></td><td id='cplace_img_data' colspan=2></td></tr>"+
(userLogin.user&&userLogin.user.isAdmin?"<tr><td align=right nowrap>Options:</td><td colspan=2>Hot:<input type=checkbox id='cplace_hot'"+(p.hot?" checked":"")+"> &nbsp; Sale:<input type=checkbox id='cplace_sale'"+(p.sale?" checked":"")+"></td></tr>":"")+
(userLogin.user&&userLogin.user.isAdmin?"<tr><td align=right nowrap>URL:</td><td colspan=2><input type=text id='cplace_url' maxlen=250 value='"+(p.url?p.url:"")+"' style='width:100%'></td></tr>":"")+"<tr><td colspan=3 nowrap><a href='#' onclick='return false;' onmouseover='coolPlacesPanel.preview()'><u><b>Preview</b></u></a></td></tr>"+"</table>";var width=400,height=450,left=document.body.clientWidth-width-100,top=200;this.addPlaceDlg=new PromptWindow("addPlace",title,body,left,top,width,height,false,"Save",function(dlg){var name=$('cplace_name').value;var desc=$('cplace_desc').value;if(name.length<1){coolPlacesPanel.showNote("newPlaceAdd","Error","Name field is empty",200);return false;}else if(desc.length<1){coolPlacesPanel.showNote("newPlaceAdd","Error","Description field is empty",200);return false;}else{var id=coolPlacesPanel.editingPlace?coolPlacesPanel.editingPlace.id:0;var ra=$('cplace_ra')?$('cplace_ra').value:0;var de=$('cplace_de')?$('cplace_de').value:0;var zoom=$('cplace_zoom')?$('cplace_zoom').value:4;var view=$('cplace_view')?$('cplace_view').value:"";var status=$('cplace_status')?$('cplace_status').value:0;var order=$('cplace_order')?$('cplace_status').value:0;var hasImage=$('cplace_hasImg')?$('cplace_hasImg').checked:false;var hot=$('cplace_hot')?($('cplace_hot').checked?1:0):0;var sale=$('cplace_sale')?($('cplace_sale').checked?1:0):0;var userId=userLogin.user?userLogin.user.userId:0;var username=userLogin.user?userLogin.user.nickname:"";var uurl=$('cplace_url')?$('cplace_url').value:"";var imgURL=null;var p={id:id,name:name,description:desc,ra:ra,de:de,zoom:zoom,view:view,status:status,order:order,hasImage:hasImage,hot:hot,sale:sale,userId:userId,username:username,voteRate:0,votes:0,views:0,url:uurl};if(hasImage){var imgSrc=$('cplace_img')?$('cplace_img').value:"";if(imgSrc=="0"){}else if(imgSrc=="2"){p.imgURL=$("cplace_img_url")?$("cplace_img_url").value:null;}else if(imgSrc=="3"){p.imgURL=coolPlacesPanel.uploadedPath;}else{p.imgURL=coolPlacesPanel.generateImageUrl(ra,de,zoom,view);}}
CoolPlaces.addPlace(p,function(placeId){coolPlacesPanel.showNote("newPlaceAdded","Add New Spot",placeId?"New spot added/updated successfully."+(!userLogin.user.isAdmin?"<br>This spot will remain invisible to everyone except you, until it is approved by the moderator.":""):"Cannot add new spot at this time. Internal error",200);coolPlacesPanel.update();});coolPlacesPanel.addPlaceDlg=null;}},"Cancel",function(dlg,method){}).show();$("cplace_name").value=p.name;$("cplace_desc").value=p.description;if(!this.onSkymapPositionChangeSet){this.orig_onSkymapPositionChange=this.mapWnd.onSkymapPositionChange;this.mapWnd.onSkymapPositionChange=function(){if(coolPlacesPanel.orig_onSkymapPositionChange)coolPlacesPanel.orig_onSkymapPositionChange();coolPlacesPanel.onLocalPositionChange();};this.onSkymapPositionChangeSet=true;}};this.onImageSourceOptionChange=function(e){var hasImage=$("cplace_hasImg").checked;var v=$("cplace_img").value;if(hasImage&&v=="2"){$("cplace_img_tr").style.visibility="";$("cplace_img_label").innerHTML="URL:";$("cplace_img_data").innerHTML="<input type=text id='cplace_img_url' style='width:100%'>";}else if(hasImage&&v=="3"){$("cplace_img_tr").style.visibility="";$("cplace_img_label").innerHTML="Upload file:";var url=window.location.href;var t=url.lastIndexOf('/');if(t>0)url=url.substring(0,t+1);$("cplace_img_data").innerHTML="<form target='upload_frame' method='POST' enctype='multipart/form-data' action='http://images.sky-map.org/imgUpload.php' id='img_upload_form' onsubmit='$(\"cplace_img_upload\").readonly=true;$(\"cplace_img_upload_submit\").disabled=true;return true;'>"+"<table border=0 cellpadding=0 cellspacing=0 style='width:100%'><tr><td nowrap>"+"<input type=file id='cplace_img_upload' name='upfile' width=100% style='width:100%'></td>"+"<td width=1 nowrap><input type='submit' id='cplace_img_upload_submit' value='Go'><input type=hidden name='img_id' value='"+(new Date().getTime())+"'><input type=hidden name='return' value='"+url+"/cool_places_fileUploaded.jsp"+"'></td></tr></table></form>"+"<iframe id='upload_frame' name='upload_frame' style='display: none'></iframe>";}else{$("cplace_img_label").innerHTML="";$("cplace_img_data").innerHTML="";$("cplace_img_tr").style.visibility="hidden";}};this.onFileUploaded=function(path){this.uploadedPath="http://images.sky-map.org/"+path;$("cplace_img_data").innerHTML="<font color=green><b>File uploaded</b></font>";};this.preview=function(i){if(!$('cplace_name'))return false;var id=this.editingPlace?this.editingPlace.id:0;var name=$('cplace_name')?$('cplace_name').value:"";var desc=$('cplace_desc')?$('cplace_desc').value:"";var hasImage=$('cplace_hasImg')?$('cplace_hasImg').checked:false;var p={id:id,name:name,description:desc,hasImage:hasImage,username:userLogin.user.nickname,date:new Date().format("isoDate"),views:0,votes:0,voteRate:0};if(hasImage){var s=$('cplace_img').value;if(s=="0"){p.imgURL=null;}else if(s=="1"){var ra=$('cplace_ra')?$('cplace_ra').value:0;var de=$('cplace_de')?$('cplace_de').value:0;var zoom=$('cplace_zoom')?$('cplace_zoom').value:4;var view=$('cplace_view')?$('cplace_view').value:"";p.imgURL=this.generateImageUrl(ra,de,zoom,view);}else if(s=="2"){p.imgURL=$("cplace_img_url")?$("cplace_img_url").value:null;}else if(s=="3"){p.imgURL=this.uploadedPath;}}
this.showLabel(p);};this.generateImageUrl=function(ra,de,zoom,view){var a=angle/img_height*this.mapWnd.offsetHeight;var maxImgSize=300;var koef=2;if(this.mapWnd.offsetWidth/koef>maxImgSize)koef=this.mapWnd.offsetWidth/maxImgSize;if(this.mapWnd.offsetHeight/koef>maxImgSize)koef=this.mapWnd.offsetHeight/maxImgSize;return this.getMapUrl(ra,de,zoom,view,a,Math.round(this.mapWnd.offsetWidth/koef),Math.round(this.mapWnd.offsetHeight/koef),koef);};this.getMapUrl=function(ra,de,zoom,view,angle,imgWidth,imgHeight,koef){var xShift=0;var yShift=0;var ret;if(angle<3&&view&&view=="SDSS"){var ra1=ra*15;var de1=de;ret="http://casjobs.sdss.org/ImgCutoutDR5/getjpeg.aspx?width="+imgWidth+"&height="+imgHeight+"&ra="+(Math.round(ra1*1e14)/1e14)+"&dec="+(Math.round(de1*1e14)/1e14)+"&scale="+(Math.round(angle*14.0625*1e14)/1e14)}else if(view=="IRAS"||view=="HALPHA"||view=="RASS"||view=="DSS2"||view=="astrophoto"||view=="ASTROPHOTO"){imgWidth=Math.round(imgWidth/8)*8;imgHeight=Math.round(imgHeight/8)*8;ret=getActiveImgServer()+"imgcut?survey="+view+"&img_id=all&width="+imgWidth+"&height="+imgHeight+"&angle="+angle+"&ra="+(Math.round(ra*1e14)/1e14)+"&de="+(Math.round(de*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+(img_borders==1?"&img_borders="+img_borders:"");}else if(view.substr(0,4)=="IMG_"){imgWidth=Math.round(imgWidth/8)*8;imgHeight=Math.round(imgHeight/8)*8;ret=getActiveImgServer()+"imgcut?survey=astrophoto&img_id="+view.substr(4)+"&width="+imgWidth+"&height="+imgHeight+"&angle="+angle+"&ra="+(Math.round(ra*1e14)/1e14)+"&de="+(Math.round(de*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+(img_borders==1?"&img_borders="+img_borders:"");}else{ret=getActiveServer()+img_base_url+"map?w="+imgWidth+"&h="+imgHeight+"&ra="+(Math.round(ra*1e14)/1e14)+"&de="+(Math.round(de*1e14)/1e14)+"&angle="+(Math.round(angle*1e14)/1e14)+"&mag="+(Math.round((vmag-1)*1e14)/1e14)+"&grid_ra_step="+(grid_ra_step*koef)+"&grid_de_step="+(grid_de_step*koef)+"&x_shift="+xShift+"&y_shift="+yShift+"&locale="+language_id+"&show_grid="+show_grid+"&show_const_lines="+show_const_lines+"&show_const_boundaries="+show_const_boundaries+"&borders="+show_borders+"&show_const_names="+show_const_names+"&show_galaxies="+show_galaxies+"&language="+language_id+"&zoom="+(Math.round(zoom*1e14)/1e14);}
return ret;}
this.onLocalPositionChange=function(){if(this.mapWnd.getPosition){var pd=this.mapWnd.getPosition();if($('cplace_ra'))$('cplace_ra').value=pd.ra;if($('cplace_de'))$('cplace_de').value=pd.de;if($('cplace_zoom'))$('cplace_zoom').value=pd.zoom;if($('cplace_view'))$('cplace_view').value=pd.view;}};this.showNote=function(name,title,body,width){var ttitle="<span style='position:relative;top:3px;color:white;font-size:9pt;font-weight:bold;font-family:verdana;white-space:nowrap'>"+title+"</span>";var cornerRadius=20,stemY=25;var posX=this.panelItem.getLeft()-width-cornerRadius;var posY=this.panelItem.getTop()-stemY-4;new MessageWindow(name,body,posX,posY,width,0,3,null,{color:'black',bgColor:'yellow',fontSize:'9pt',fontFamily:'verdana',rounded:1,headColor:'blue',title:ttitle,stem:1,stemY:stemY}).show();};}
var angle=0;var ii_a=new Array();var ii_g=new Array();var ii_n=new Array();var ii_m=new Array();var ii_u=new Array();var ii_na=new Array();var ii_ver=new Array();var ii_astroPhoto=new Array();var ii_left=0,ii_top=0;var boxStickObject="";var topUsers=null;var topUsersData=null;var lastActiveTime=new Date();var ii_toRedraw=null;var xmlreqs=new Array();var xmlhttpLocation;var m_AstroImgs=new Array();var xmlhttpAstroImgList;var onSkymapPositionChange;var g_d1=document.getElementById("d_main");var g_width,g_height;if(g_d1){g_width=g_d1.clientWidth;g_height=g_d1.clientHeight;}
g_d1.getPosition=function(){var p=getCenterPosition();p.zoom=i_max_value-cur_value;p.view=typeof img_source=="undefined"?"":img_source;return p;};g_d1.setPosition=function(ra,de,zoom,view){var forceRedraw=cur_value!=i_max_value-zoom||img_source!=view;cur_value=i_max_value-zoom;if(cur_value<i_min_value+1)cur_value=i_min_value+1;else if(cur_value>i_max_value)cur_value=i_max_value;vslider.f_setValue(cur_value,1);img_source=view;setNewPosition(ra,de,forceRedraw);};g_d1.getProjection=function(ra,de){var p;if(cur_value==i_max_value&&init_image){p=new getAitoffProjection(init_image.offsetWidth,init_image.offsetHeight,ra,de);p.x+=init_image.offsetLeft;p.y+=init_image.offsetTop;}else{p=new getProjection(ra,de);p.x+=Math.floor(g_width/2)-az_shift_x*img_width+ii_left-getOverlapX();p.y+=Math.floor(g_height/2)-az_shift_y*img_height+ii_top-getOverlapY();}
return p;};g_d1.getRevProjection=function(x,y){var pd;if(cur_value==i_max_value&&init_image){pd=new getRevAitoffProjection(900.0,450.0,x,y);}else{pd=new getRevProjection(x,y);}
return pd;};g_d1.updateElementPosition=function(e){if(!e||!e.ra||!e.de||!e.style)return
var p=g_d1.getProjection(e.ra,e.de);if(p){var w=(e.iWidth?e.iWidth:e.offsetWidth),h=(e.iHeight?e.iHeight:e.offsetHeight);e.style.left=Math.round(p.x-w/2)+"px";e.style.top=Math.round(p.y-h/2)+"px";}};function setAngle(new_angle){if(angle!=new_angle){angle=new_angle;setResolution(new_angle/img_width);return true;}
return false;}
function reloadAll(cv){updateImages();}
function scheduler(){updatePlanetsPositions();setTimeout("scheduler()",1000);}
function URLencode(sStr){return encodeURIComponent(sStr);}
function positionChanged(){updateBoxPosition();updatePlanetsPositions();updateTopUsersPositions();for(var i in g_d1.childNodes){var e=g_d1.childNodes[i];if(e&&e.stickToMap&&e.style&&e.style.visibility!="hidden"){g_d1.updateElementPosition(e);}}
if(onSkymapPositionChange)onSkymapPositionChange();if(g_d1.onSkymapPositionChange)g_d1.onSkymapPositionChange();}
function changeUsgr(ug){usgr=ug;updateLogo(ug==2||ug==5?"NEWS":ug==3?"BLOGS":"INHABITED",ug==1?"Personal Stars":ug==2?"Science&nbsp;Space":ug==4?"WWW Stars":ug==5?"World Media":false);hideTopUsers();loadTopUsers();if(typeof document.m_RSSPanel=="object"){if(isGroupHasRSS(usgr)){document.m_RSSPanel.show(true);document.m_RSSPanel.refreshNews();}else{document.m_RSSPanel.show(false);}}}
function isGroupHasRSS(g){if(typeof g=="undefined")g=usgr;return g==2||g==3||g==5;}
function simpleSearch(searchString)
{if(searchPlanet(searchString))return;var g_loading=document.getElementById("d_loading");if(g_loading){g_loading.innerHTML="Searching...";g_loading.style.visibility='';}
Search.findByName(searchString,function(data){var g_loading=document.getElementById("d_loading");if(g_loading){g_loading.innerHTML='';g_loading.style.visibility='hidden';}
if(data.result&&data.result.length>0){if(data.result.length==1){onSearchFound(data.result[0].ra,data.result[0].de,data.result[0].radius*2,data.result[0].VMag);}else{var menu1=new Array();var n=0;menu1[n++]='<div style="font-weight:bold;background-color:green;color:white;width:250px;height:19px;">&nbsp;Search Results:</div>';for(var i=0;i<data.result.length;i++){menu1[n++]='<a href="#" onclick="onSearchFound('+data.result[i].ra+','+data.result[i].de+','+(data.result[i].radius*2)+','+data.result[i].VMag+');return false;" style="font-family:Sans-Serif;font-size:8pt;font-weight:normal;font-style:italic;white-space:nowrap;overflow:hidden">'+data.result[i].name+'</a>';}
menuWidth='250px';var x=200,y=110;var s=document.getElementById("search");if(s){x=getAbsoluteLeft(s);y=getAbsoluteTop(s)+s.offsetHeight+1;}
dropdownmenu({offsetLeft:x,offsetTop:y,offsetHeight:0,offsetParent:null},{type:"click"},menu1,menuWidth);}}else{window.alert("Search: \""+data.searchString+"\" not found");}});try{pageTracker._trackEvent('search','submit',searchString);}catch(e){}}
function onSearchFound(newRA,newDE,size,VMag){boxStickObject="";show_box=true;box_var_size=false;box_width=50;box_height=50;var curValuesSet=false;if(size&&size>0){cur_value=i_min_value+Math.round(12+Math.log(size)/Math.log(2));box_width=(img_width*size);box_height=(img_height*size);box_var_size=true;curValuesSet=true;}
if(!curValuesSet&&VMag&&VMag!=0){cur_value=i_min_value+Math.round(15-VMag);curValuesSet=true;}
if(cur_value<i_min_value+1)cur_value=i_min_value+1;else if(cur_value>i_max_value-5)cur_value=i_max_value-5;vslider.f_setValue(cur_value,1);setNewPosition(newRA,newDE);}
function searchPlanet(searchString)
{var ppos,ppName;if("sol"==searchString.toLowerCase())searchString="Sun";for(var p=0;p<PlanetNames.length;p++){var planetName=PlanetNames[p];if(planetName.toLowerCase()==searchString.toLowerCase()){ppos=new PlanetPos(new Date())[planetName];ppName=planetName;break;}}
if(ppos){boxStickObject=ppName;show_box=true;box_width=50;box_height=50;box_var_size=false;if(cur_value==i_max_value){cur_value=i_max_value-1;vslider.f_setValue(cur_value,1);}
setNewPosition(ppos.ra/15,ppos.de);return true;}
return false;}
function setNewPosition(newRA,newDE,forceRedraw){var redraw=setAngle(init_angle/Math.pow(2,(i_max_value-cur_value-1)));if(forceRedraw)redraw=true;if(cur_value==i_max_value)redraw=true;if(!redraw){var p=new getProjection(newRA,newDE);if(Math.abs(p.x)>g_width/2||Math.abs(p.y)>g_height/2)redraw=true;else{var xs=-p.x-ii_left+getOverlapX()+az_shift_x*img_width;var ys=-p.y-ii_top+getOverlapY()+az_shift_y*img_height;var params=getParamsString();var pver=getPverString();var px_shift,py_shift,p_name;while(!redraw&&ii_left-getOverlapX()+xs>img_width*2/3){var iii=ii[n_imgs_x-1];for(var xx=n_imgs_x-1;xx>0;xx--)ii[xx]=ii[xx-1];ii[0]=iii;xs-=img_width;az_shift_x--;if(az_shift_x*angle>-50){for(var yy=0;yy<n_imgs_y;yy++)iii[yy].src="img/Loading.gif";for(var yy2=0;yy2<n_imgs_y;yy2++){var yy=(yy2%2)==0?(n_imgs_y+yy2)/2:(n_imgs_y-yy2-1)/2;iii[yy].src=getMapUrl(0+az_shift_x,yy+az_shift_y);var nm=iii[yy].name;ii_a[nm]=[];ii_g[nm]=[];ii_n[nm]=[];ii_m[nm]=[];ii_u[nm]=[];ii_na[nm]=[];var xShift=(n_imgs_x/2-(0+az_shift_x))*img_width-Math.ceil(img_width/2);var yShift=(n_imgs_y/2-(yy+az_shift_y))*img_height-Math.ceil(img_height/2);if(p_name)p_name+=","+nm;else p_name=nm;if(px_shift)px_shift+=","+xShift;else px_shift=""+xShift;if(py_shift)py_shift+=","+yShift;else py_shift=""+yShift;ii_ver[nm]=pver+","+xShift+","+yShift;}}else{redraw=true;}}
while(!redraw&&ii_left-getOverlapX()+xs<-img_width*2/3){var iii=ii[0];for(xx=1;xx<n_imgs_x;xx++)ii[xx-1]=ii[xx];ii[n_imgs_x-1]=iii;xs+=img_width;az_shift_x++;if(az_shift_x*angle<50){for(var yy=0;yy<n_imgs_y;yy++)iii[yy].src="img/Loading.gif";for(var yy2=0;yy2<n_imgs_y;yy2++){var yy=(yy2%2)==0?(n_imgs_y+yy2)/2:(n_imgs_y-yy2-1)/2;iii[yy].src=getMapUrl(n_imgs_x-1+az_shift_x,yy+az_shift_y);var nm=iii[yy].name;ii_a[nm]=[];ii_g[nm]=[];ii_n[nm]=[];ii_u[nm]=[];ii_na[nm]=[];var xShift=(n_imgs_x/2-(n_imgs_x-1+az_shift_x))*img_width-Math.ceil(img_width/2);var yShift=(n_imgs_y/2-(yy+az_shift_y))*img_height-Math.ceil(img_height/2);if(p_name)p_name+=","+nm;else p_name=nm;if(px_shift)px_shift+=","+xShift;else px_shift=""+xShift;if(py_shift)py_shift+=","+yShift;else py_shift=""+yShift;ii_ver[nm]=pver+","+xShift+","+yShift;}}else{redraw=true;}}
while(!redraw&&ii_top-getOverlapY()+ys>img_height*2/3){ys-=img_height;az_shift_y--;for(var xx=0;xx<n_imgs_x;xx++){var iii=ii[xx][n_imgs_y-1];for(var yy=n_imgs_y-1;yy>0;yy--)ii[xx][yy]=ii[xx][yy-1];ii[xx][0]=iii;}
if(az_shift_y*angle>-40){for(xx=0;xx<n_imgs_x;xx++)ii[xx][0].src="img/Loading.gif";for(var xx2=0;xx2<n_imgs_x;xx2++){var xx=(xx2%2)==0?(n_imgs_x+xx2)/2:(n_imgs_x-xx2-1)/2;ii[xx][0].src=getMapUrl(xx+az_shift_x,0+az_shift_y);var nm=ii[xx][0].name;ii_a[nm]=[];ii_g[nm]=[];ii_n[nm]=[];ii_u[nm]=[];ii_na[nm]=[];var xShift=(n_imgs_x/2-(xx+az_shift_x))*img_width-Math.ceil(img_width/2);var yShift=(n_imgs_y/2-(0+az_shift_y))*img_height-Math.ceil(img_height/2);if(p_name)p_name+=","+nm;else p_name=nm;if(px_shift)px_shift+=","+xShift;else px_shift=""+xShift;if(py_shift)py_shift+=","+yShift;else py_shift=""+yShift;ii_ver[nm]=pver+","+xShift+","+yShift;}}else{redraw=true;}}
while(!redraw&&ii_top-getOverlapY()+ys<-img_height*2/3){ys+=img_height;az_shift_y++;for(var xx=0;xx<n_imgs_x;xx++){var iii=ii[xx][0];for(var yy=1;yy<n_imgs_y;yy++)ii[xx][yy-1]=ii[xx][yy];ii[xx][n_imgs_y-1]=iii;}
if(az_shift_y*angle<40){for(xx=0;xx<n_imgs_x;xx++){ii[xx][n_imgs_y-1].src="img/Loading.gif";}
for(xx2=0;xx2<n_imgs_x;xx2++){var xx=(xx2%2)==0?(n_imgs_x+xx2)/2:(n_imgs_x-xx2-1)/2;ii[xx][n_imgs_y-1].src=getMapUrl(xx+az_shift_x,n_imgs_y-1+az_shift_y);var nm=ii[xx][n_imgs_y-1].name;var i=parseInt(nm.substring(1,2));var j=parseInt(nm.substring(2,3));ii_a[nm]=[];ii_g[nm]=[];ii_n[nm]=[];ii_u[nm]=[];ii_na[nm]=[];var xShift=(n_imgs_x/2-(xx+az_shift_x))*img_width-Math.ceil(img_width/2);var yShift=(n_imgs_y/2-(n_imgs_y-1+az_shift_y))*img_height-Math.ceil(img_height/2);if(p_name)p_name+=","+nm;else p_name=nm;if(px_shift)px_shift+=","+xShift;else px_shift=""+xShift;if(py_shift)py_shift+=","+yShift;else py_shift=""+yShift;ii_ver[nm]=pver+","+xShift+","+yShift;}}else{redraw=true;}}
if(!redraw){ii_left+=xs;ii_top+=ys;for(var xx=0;xx<n_imgs_x;xx++){for(var yy=0;yy<n_imgs_y;yy++){ii[xx][yy].style.left=(ii_left+img_width*xx)+"px";ii[xx][yy].style.top=(ii_top+img_height*yy)+"px";}}
positionChanged();params+="&name="+p_name+"&users="+show_users+"&na="+show_na+"&x_shift="+px_shift+"&y_shift="+py_shift+"&max_stars=60";setTimeout("loadAreasXMLDoc('"+area_base_url+"areas', '"+params+"')",100);}}}
if(redraw){i_down_x=0;i_down_y=0;az_shift_x=0;az_shift_y=0;ii_left=getOverlapX();ii_top=getOverlapY();initRA=boxRA=newRA;initDE=boxDE=newDE;setCenter(newRA,newDE);updateImages();}}
function CXMLReq(type,xmlhttp){this.type=type;this.xmlhttp=xmlhttp;}
function loadAreasXMLDoc(url,params){if(params.indexOf("type=FULL")==-1){if(cur_value==i_max_value)return;var nNotLoaded=0;for(var yy=0;yy<n_imgs_y;yy++){for(var xx=0;xx<n_imgs_x;xx++){if(!ii[xx][yy].urlLoaded||ii[xx][yy].urlLoaded!=ii[xx][yy].src){var g_loading=document.getElementById("d_loading");if(g_loading){g_loading.innerHTML="Loading images...";g_loading.style.visibility='';}}}}}
var xmlhttp=false;if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest()
if(xmlhttp)
{xmlhttp.onreadystatechange=onAreasXMLDocLoaded
xmlhttp.open("GET",url+'?'+params,true)
xmlhttp.setRequestHeader("Content-Type","text/xml;charset=UTF-8");var xmlreq=new CXMLReq('',xmlhttp);xmlreqs.push(xmlreq);var g_loading=document.getElementById("d_loading");if(g_loading&&cur_value!=i_max_value){g_loading.innerHTML="Loading data...";g_loading.style.visibility='';}
xmlhttp.send(null)}}else if(window.ActiveXObject){xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
if(xmlhttp)
{xmlhttp.onreadystatechange=onAreasXMLDocLoaded
xmlhttp.open("GET",url+'?'+params,true)
xmlhttp.setRequestHeader("Content-Type","text/xml;charset=UTF-8");var xmlreq=new CXMLReq('',xmlhttp);xmlreqs.push(xmlreq);var g_loading=document.getElementById("d_loading");if(g_loading&&cur_value!=i_max_value){g_loading.innerHTML="Loading data...";g_loading.style.visibility='';}
xmlhttp.send()}}}
function onAreasXMLDocLoaded(){if(typeof window['xmlreqs']=="undefined")return;for(var j=0;j<xmlreqs.length;j++){if(xmlreqs[j].xmlhttp.readyState==4){if(xmlreqs[j].xmlhttp.status==200)
{var xmlDocument=xmlreqs[j].xmlhttp.responseXML;xmlreqs.splice(j,1);j--;var areas=xmlDocument.getElementsByTagName('area');var na=areas.length;for(var i=0;i<na;i++){var a_name=areas[i].getAttribute("id");var a_query="",a_a="",a_g="",a_n="",a_m="",a_u="",a_na="";var t=areas[i].getElementsByTagName('query')[0];if(t&&(t.firstChild||t.textContent))
a_query=(t.textContent)?t.textContent:t.firstChild.data;t=areas[i].getElementsByTagName('a')[0];if(t&&(t.firstChild||t.textContent))
a_a=(t.textContent)?t.textContent.split("|"):t.firstChild.data.split("|");t=areas[i].getElementsByTagName('galaxies')[0];if(t&&(t.firstChild||t.textContent))
a_g=(t.textContent)?t.textContent.split("|"):t.firstChild.data.split("|");t=areas[i].getElementsByTagName('nebulae')[0];if(t&&(t.firstChild||t.textContent))
a_n=(t.textContent)?t.textContent.split("|"):t.firstChild.data.split("|");t=areas[i].getElementsByTagName('multiples')[0];if(t&&(t.firstChild||t.textContent))
a_m=(t.textContent)?t.textContent.split("|"):t.firstChild.data.split("|");t=areas[i].getElementsByTagName('u')[0];if(t&&(t.firstChild||t.textContent))
a_u=(t.textContent)?t.textContent.split("|"):t.firstChild.data.split("|");t=areas[i].getElementsByTagName('na')[0];if(t&&(t.firstChild||t.textContent))
a_na=(t.textContent)?t.textContent.split("|"):t.firstChild.data.split("|");updateMap(a_name,a_query,a_a,a_g,a_n,a_m,a_u,a_na);}
if(xmlreqs.length==0){var g_loading=document.getElementById("d_loading");if(g_loading){g_loading.innerHTML="";g_loading.style.visibility='hidden';}}}else{xmlreqs.splice(j,1);j--;alert("Problem retrieving XML data:"+g.status+" ("+g.statusText+")");if(xmlreqs.length==0){var g_loading=document.getElementById("d_loading");if(g_loading){g_loading.innerHTML="";g_loading.style.visibility='hidden';}}}}}}
function loadAstroImgListXMLDoc(url,params){if(params.indexOf("type=FULL")==-1){if(cur_value==i_max_value)return;var nNotLoaded=0;for(var yy=0;yy<n_imgs_y;yy++){for(var xx=0;xx<n_imgs_x;xx++){if(!ii[xx][yy].urlLoaded||ii[xx][yy].urlLoaded!=ii[xx][yy].src){var g_loading=document.getElementById("d_loading");if(g_loading){g_loading.innerHTML="Loading images...";g_loading.style.visibility='';}}}}}
var xmlhttp=false;if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest()
if(xmlhttp)
{xmlhttpAstroImgList=xmlhttp;xmlhttp.onreadystatechange=onAstroImgListXMLDocLoaded
xmlhttp.open("GET",url+'?'+params,true)
xmlhttp.setRequestHeader("Content-Type","text/xml;charset=UTF-8");xmlhttp.send(null)}}else if(window.ActiveXObject){xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
if(xmlhttp)
{xmlhttpAstroImgList=xmlhttp;xmlhttp.onreadystatechange=onAstroImgListXMLDocLoaded
xmlhttp.open("GET",url+'?'+params,true)
xmlhttp.setRequestHeader("Content-Type","text/xml;charset=UTF-8");xmlhttp.send()}}}
function onAstroImgListXMLDocLoaded(){if(xmlhttpAstroImgList.readyState==4){if(xmlhttpAstroImgList.status==200)
{var xmlDocument=xmlhttpAstroImgList.responseXML;var items=xmlDocument.getElementsByTagName('item');var na=items.length;var sIds=new Array();for(var i=0;i<na;i++){var i_name=items[i].getAttribute("id");var imgs=items[i].getElementsByTagName('img');var iImgIds=new Array();for(var j=0;j<imgs.length;j++){var a_id=imgs[j].getAttribute("id");if(typeof m_AstroImgs[a_id]=='undefined'){var a_name=a_id;var t=imgs[j].getElementsByTagName('name')[0];if(t&&(t.firstChild||t.textContent))
a_name=(t.textContent)?t.textContent:t.firstChild.data;var a_width=1,a_height=1,a_ra=0,a_de=0,a_resolution=1,a_rotation=0,a_reverse=false;t=imgs[j].getElementsByTagName('width')[0];if(t&&(t.firstChild||t.textContent))
a_width=(t.textContent)?t.textContent:t.firstChild.data;t=imgs[j].getElementsByTagName('height')[0];if(t&&(t.firstChild||t.textContent))
a_height=(t.textContent)?t.textContent:t.firstChild.data;t=imgs[j].getElementsByTagName('ra')[0];if(t&&(t.firstChild||t.textContent))
a_ra=(t.textContent)?t.textContent:t.firstChild.data;t=imgs[j].getElementsByTagName('de')[0];if(t&&(t.firstChild||t.textContent))
a_de=(t.textContent)?t.textContent:t.firstChild.data;t=imgs[j].getElementsByTagName('resolution')[0];if(t&&(t.firstChild||t.textContent))
a_resolution=(t.textContent)?t.textContent:t.firstChild.data;t=imgs[j].getElementsByTagName('rotation')[0];if(t&&(t.firstChild||t.textContent))
a_rotation=(t.textContent)?t.textContent:t.firstChild.data;t=imgs[j].getElementsByTagName('reverse')[0];if(t&&(t.firstChild||t.textContent))
a_reverse=(t.textContent)?t.textContent:t.firstChild.data;var ci=new CAstroImg(a_id,a_name,a_width,a_height,a_ra,a_de,a_resolution,a_rotation,a_reverse);m_AstroImgs[a_id]=ci;}
iImgIds.push(a_id);if(sIds.indexOf(a_id)<0)sIds.push(a_id);}
ii_astroPhoto[i_name]=iImgIds;}
var s='<table id=t_aimgs border=0 cellspacing=0 cellpadding=0 style="font-size:8pt;"><tr><td>Available Astro Images:</td></tr>';for(var i=0;i<sIds.length;i++){var a_id=sIds[i];var ci=m_AstroImgs[a_id];s+='<tr><td nowrap><input type=checkbox id="ai_'+a_id+'"'+(m_AstroImgs[a_id].checked?' checked':'')+' onchange="AstroPhotoStateChanged(this);"><a href="#">'+ci.name+'</a></td></tr>';}
s+='</table>'
d_rightPanelImages.setBody(s);d_rightPanelImages.show(true);}}}
function CAstroImg(id,name,width,height,ra,de,resolution,rotation,reverse){this.id=id;this.name=name;this.width=width;this.height=height;this.ra=ra;this.de=de;this.resolution=resolution;this.rotation=rotation;this.reverse=reverse;this.checked=true;}
function AstroPhotoStateChanged(ipt){var a_id=ipt.id.substring(3);m_AstroImgs[a_id].checked=ipt.checked;ii_toRedraw=new Array();for(var item in ii_astroPhoto){if(ii_astroPhoto[item].indexOf(a_id)!=-1){ii_toRedraw.push(item);}}
img_source="IMG_";for(var item in m_AstroImgs){if(m_AstroImgs[item].checked){img_source+=item+":";}}
redrawImages();ii_toRedraw=null;}
function loadTopUsers()
{TopUsers.getTopUsers(usgr,1000,language_id,function(data){topUsersData=data;updateTopUsersPositions();});}
function updateMap(name,ver,a,g,n,m,u,na){if(name=="FULL"){init_a=a;init_g=g;init_n=n;init_m=m;init_u=u;init_na=na;}else{if((ii_ver[name])==ver){ii_a[name]=a;ii_g[name]=g;ii_n[name]=n;ii_m[name]=m;ii_u[name]=u;ii_na[name]=na;}else{}}}
function imgMousePos(evnt){var ns6=(document.getElementById&&!document.all)?1:0;if(document.all)evnt=event;this.evnt=evnt;var g=(document.all)?em=event.srcElement:evnt.currentTarget;this.g=g;if(ns6==1)this.x=evnt.layerX-1;else this.x=evnt.offsetX;if(ns6==1)this.y=evnt.layerY-1;else this.y=evnt.offsetY;}
function checkInitImageArray(){var toInit=true;var n_imgs_x_new=n_imgs_x,n_imgs_y_new=n_imgs_y;var overlapX=n_imgs_x*img_width-g_width;var overlapY=n_imgs_y*img_height-g_height;if(overlapX<img_width||overlapY<img_height||overlapX>img_width*4||overlapY>img_height*4){n_imgs_x_new=Math.floor((g_width+img_width*3-5)/img_width/2)*2;n_imgs_y_new=Math.floor((g_height+img_height*3-5)/img_height/2)*2;}
if(ii&&n_imgs_x_new==n_imgs_x&&n_imgs_y_new==n_imgs_y){toInit=false;}
if(toInit){if(ii)imageArrayReset();imageArrayInit(n_imgs_x_new,n_imgs_y_new);}}
function imageArrayInit(nx,ny){if(ii)imageArrayReset();n_imgs_x=nx;n_imgs_y=ny;ii_left=getOverlapX();ii_top=getOverlapY();ii=new Array(n_imgs_x);for(var i=0;i<n_imgs_x;i++)
{ii[i]=new Array(n_imgs_y);for(var j=0;j<n_imgs_y;j++)
{var im=new Image;im.border=0;im.style.position='absolute';im.style.left=(i*img_width+ii_left)+'px';im.style.top=(j*img_height+ii_top)+'px';im.style.visibility='hidden';im.style.zindex=0;im.name='i'+i+''+j;im.id='i'+i+''+j;im.style.height=img_height+'px';im.style.width=img_width+'px';im.src="img/Loading.gif";im.GALLERYIMG='no';im.onmousemove=imgMouseMove;im.onmouseout=imgMouseOut;im.onmousedown=imgMouseDown;im.onmouseup=imgMouseUp;im.onload=imgLoaded;im.onerror=imgError;ii[i][j]=im;g_d1.appendChild(im);}}}
function imageArrayReset(){if(!ii)return;for(var i=0;i<n_imgs_x;i++)
for(var j=0;j<n_imgs_y;j++)
if(g_d1&&ii[i][j])g_d1.removeChild(ii[i][j]);ii=null;}
function initImgMouseMove(evnt){lastActiveTime=new Date();if(typeof imgMousePos=="undefined")return;var p=new imgMousePos(evnt);var d=document.getElementById("dpos");if(d!=null){var pd=new getRevAitoffProjection(900.0,450.0,p.x,p.y);if(pd.ra<0||pd.ra>24)
d.innerHTML="<font size=+0>(&infin;, &infin;)</font>";else
d.innerHTML="("+formatRA(pd.ra)+", "+formatDE(pd.de)+")";}
showObjectInfoLabel(p,init_a,init_g,init_n,init_m,init_u,init_na);}
function initImgClick(evnt){var p=new imgMousePos(evnt);openObjectInfoPage(p,init_a,init_g,init_n,init_m,init_u,init_na);try{pageTracker._trackEvent('skymap','initImgClick');}catch(e){}}
function getParamsString(){return"width="+img_width+"&height="+img_height+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&angle="+(Math.round(angle*1e14)/1e14)+"&vmag="+(Math.round(vmag*1e14)/1e14)+"&zoom="+(Math.round(zoom*1e14)/1e14)+"&locale="+language_id;}
function getPverString(){return""+img_width+","+img_height+","+Math.round(centerRA*1e6)+","+Math.round(centerDE*1e6)+","+Math.round(angle*1e2)+","+Math.round(vmag*1e2)+","+Math.round(zoom);}
function imgMouseMove(evnt){lastActiveTime=new Date();if(typeof imgMousePos=="undefined")return;var p=new imgMousePos(evnt);var d=document.getElementById("dpos");if(d!=null){var x1=az_shift_x*img_width+p.x+p.g.offsetLeft-Math.floor(g_width/2)-ii_left+getOverlapX();var y1=az_shift_y*img_height+p.y+p.g.offsetTop-Math.floor(g_height/2)-ii_top+getOverlapY();var pd=new getRevProjection(x1,y1);d.innerHTML="("+formatRA(pd.ra)+", "+formatDE(pd.de)+")";}
showObjectInfoLabel(p,ii_a[p.g.name],ii_g[p.g.name],ii_n[p.g.name],ii_m[p.g.name],ii_u[p.g.name],ii_na[p.g.name]);if(dontmove==1)return;if(ie&&(p.evnt.button&1)==0)return;if(!ie&&is_moving==0)return;if(inMove!=0)return;inMove=1;var xs=p.x-imgMouseDownPosX+p.g.offsetLeft;var ys=p.y-imgMouseDownPosY+p.g.offsetTop;var redraw=0;var params=getParamsString();var pver=getPverString();var px_shift,py_shift,p_name;if(i_down_x-getOverlapX()+xs>img_width*2/3){var iii=ii[n_imgs_x-1];for(var xx=n_imgs_x-1;xx>0;xx--)ii[xx]=ii[xx-1];ii[0]=iii;i_down_x-=img_width;az_shift_x--;if(az_shift_x*angle>-50){for(var yy=0;yy<n_imgs_y;yy++)iii[yy].src="img/Loading.gif";for(var yy2=0;yy2<n_imgs_y;yy2++){var yy=(yy2%2)==0?(n_imgs_y+yy2)/2:(n_imgs_y-yy2-1)/2;iii[yy].src=getMapUrl(0+az_shift_x,yy+az_shift_y);var nm=iii[yy].name;ii_a[nm]=[];ii_g[nm]=[];ii_n[nm]=[];ii_m[nm]=[];ii_u[nm]=[];ii_na[nm]=[];var xShift=(n_imgs_x/2-(0+az_shift_x))*img_width-Math.ceil(img_width/2);var yShift=(n_imgs_y/2-(yy+az_shift_y))*img_height-Math.ceil(img_height/2);if(p_name)p_name+=","+nm;else p_name=nm;if(px_shift)px_shift+=","+xShift;else px_shift=""+xShift;if(py_shift)py_shift+=","+yShift;else py_shift=""+yShift;ii_ver[nm]=pver+","+xShift+","+yShift;}}else{redraw=1;}}else if(i_down_x-getOverlapX()+xs<-img_width*2/3){var iii=ii[0];for(xx=1;xx<n_imgs_x;xx++)ii[xx-1]=ii[xx];ii[n_imgs_x-1]=iii;i_down_x+=img_width;az_shift_x++;if(az_shift_x*angle<50){for(var yy=0;yy<n_imgs_y;yy++)iii[yy].src="img/Loading.gif";for(var yy2=0;yy2<n_imgs_y;yy2++){var yy=(yy2%2)==0?(n_imgs_y+yy2)/2:(n_imgs_y-yy2-1)/2;iii[yy].src=getMapUrl(n_imgs_x-1+az_shift_x,yy+az_shift_y);var nm=iii[yy].name;ii_a[nm]=[];ii_g[nm]=[];ii_n[nm]=[];ii_u[nm]=[];ii_na[nm]=[];var xShift=(n_imgs_x/2-(n_imgs_x-1+az_shift_x))*img_width-Math.ceil(img_width/2);var yShift=(n_imgs_y/2-(yy+az_shift_y))*img_height-Math.ceil(img_height/2);if(p_name)p_name+=","+nm;else p_name=nm;if(px_shift)px_shift+=","+xShift;else px_shift=""+xShift;if(py_shift)py_shift+=","+yShift;else py_shift=""+yShift;ii_ver[nm]=pver+","+xShift+","+yShift;}}else{redraw=1;}}
if(i_down_y-getOverlapY()+ys>img_height*2/3){i_down_y-=img_height;az_shift_y--;for(var xx=0;xx<n_imgs_x;xx++){var iii=ii[xx][n_imgs_y-1];for(var yy=n_imgs_y-1;yy>0;yy--)ii[xx][yy]=ii[xx][yy-1];ii[xx][0]=iii;}
if(az_shift_y*angle>-40){for(xx=0;xx<n_imgs_x;xx++)ii[xx][0].src="img/Loading.gif";for(var xx2=0;xx2<n_imgs_x;xx2++){var xx=(xx2%2)==0?(n_imgs_x+xx2)/2:(n_imgs_x-xx2-1)/2;ii[xx][0].src=getMapUrl(xx+az_shift_x,0+az_shift_y);var nm=ii[xx][0].name;ii_a[nm]=[];ii_g[nm]=[];ii_n[nm]=[];ii_u[nm]=[];ii_na[nm]=[];var xShift=(n_imgs_x/2-(xx+az_shift_x))*img_width-Math.ceil(img_width/2);var yShift=(n_imgs_y/2-(0+az_shift_y))*img_height-Math.ceil(img_height/2);if(p_name)p_name+=","+nm;else p_name=nm;if(px_shift)px_shift+=","+xShift;else px_shift=""+xShift;if(py_shift)py_shift+=","+yShift;else py_shift=""+yShift;ii_ver[nm]=pver+","+xShift+","+yShift;}}else{redraw=1;}}else if(i_down_y-getOverlapY()+ys<-img_height*2/3){i_down_y+=img_height;az_shift_y++;for(var xx=0;xx<n_imgs_x;xx++){var iii=ii[xx][0];for(var yy=1;yy<n_imgs_y;yy++)ii[xx][yy-1]=ii[xx][yy];ii[xx][n_imgs_y-1]=iii;}
if(az_shift_y*angle<40){for(xx=0;xx<n_imgs_x;xx++){ii[xx][n_imgs_y-1].src="img/Loading.gif";}
for(xx2=0;xx2<n_imgs_x;xx2++){var xx=(xx2%2)==0?(n_imgs_x+xx2)/2:(n_imgs_x-xx2-1)/2;ii[xx][n_imgs_y-1].src=getMapUrl(xx+az_shift_x,n_imgs_y-1+az_shift_y);var nm=ii[xx][n_imgs_y-1].name;var i=parseInt(nm.substring(1,2));var j=parseInt(nm.substring(2,3));ii_a[nm]=[];ii_g[nm]=[];ii_n[nm]=[];ii_u[nm]=[];ii_na[nm]=[];var xShift=(n_imgs_x/2-(xx+az_shift_x))*img_width-Math.ceil(img_width/2);var yShift=(n_imgs_y/2-(n_imgs_y-1+az_shift_y))*img_height-Math.ceil(img_height/2);if(p_name)p_name+=","+nm;else p_name=nm;if(px_shift)px_shift+=","+xShift;else px_shift=""+xShift;if(py_shift)py_shift+=","+yShift;else py_shift=""+yShift;ii_ver[nm]=pver+","+xShift+","+yShift;}}else{redraw=1;}}
ii_left=i_down_x+xs;ii_top=i_down_y+ys;for(var xx=0;xx<n_imgs_x;xx++){for(var yy=0;yy<n_imgs_y;yy++){ii[xx][yy].style.left=(ii_left+img_width*xx)+"px";ii[xx][yy].style.top=(ii_top+img_height*yy)+"px";}}
positionChanged();if(redraw==1){updateImages();}else if(p_name){params+="&name="+p_name+"&users="+show_users+"&na="+show_na+"&x_shift="+px_shift+"&y_shift="+py_shift+"&max_stars=60";setTimeout("loadAreasXMLDoc('"+area_base_url+"areas', '"+params+"')",100);}
inMove=0;}
function imgMouseOut(evnt){if(typeof hideddrivetip!="undefined")hideddrivetip();}
function imgMouseDown(evnt){var p=new imgMousePos(evnt);imgMouseDownPosX=p.x+p.g.offsetLeft;imgMouseDownPosY=p.y+p.g.offsetTop;i_down_x=ii_left;i_down_y=ii_top;is_moving=1;}
function imgMouseUp(evnt){var p=new imgMousePos(evnt);is_moving=0;if(Math.abs(p.x+p.g.offsetLeft-imgMouseDownPosX)<=3&&Math.abs(p.y+p.g.offsetTop-imgMouseDownPosY)<=3){openObjectInfoPage(p,ii_a[p.g.name],ii_g[p.g.name],ii_n[p.g.name],ii_m[p.g.name],ii_u[p.g.name],ii_na[p.g.name]);}
try{pageTracker._trackEvent('skymap','imgMouseUp');}catch(e){}}
function imgLoaded(evnt){var g=(document.all)?em=event.srcElement:evnt.currentTarget;g.retryCount=0;g.urlLoaded=g.src;}
function imgError(evnt){var g=(document.all)?em=event.srcElement:evnt.currentTarget;if(g.retryCount)g.retryCount++;else g.retryCount=1;if(g.retryCount<5){var s=g.src;if(s.substring(0,13).toLowerCase()=='http://server'){var t=s.indexOf('/',14);if(t>0){s=getActiveServer()+s.substring(t+1);}}
g.src=s+'';}}
function getMapUrl(x,y){var xShift=(n_imgs_x/2-x)*img_width-Math.ceil(img_width/2);var yShift=(n_imgs_y/2-y)*img_height-Math.ceil(img_height/2);var ret;var iid=(typeof img_id!='undefined')?img_id:"all";var imgbrd=(typeof sImgBorders!='undefined'&&sImgBorders!="")?"&img_borders="+sImgBorders:(img_borders==1?"&img_borders="+img_borders:"")
if(img_source=="SDSS_FULL"){ret=getActiveImgServer()+"imgcut?survey="+img_source+"&img_id="+img_id+"&angle="+angle+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+imgbrd;}else if(img_source=="SDSS_Z4"){ret=getActiveImgServer()+"imgcut?survey="+img_source+"&img_id="+img_id+"&angle="+angle+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+imgbrd;}else if(img_source&&(img_source=="SDSS"||img_source=="SDSS7")){ret=getActiveImgServer()+"imgcut?survey="+img_source+"&img_id="+img_id+"&angle="+angle+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+imgbrd;}else if(img_source&&img_source.substr(0,4)=="SDSS"){if(angle<0.54){var p=new getRevProjection(-xShift,-yShift);var ra1=p.ra*15;var de1=p.de;if(img_source=="SDSS3"){ret="http://casjobs.sdss.org/ImgCutoutDR3/getjpeg.aspx?width="+img_width+"&height="+img_height+"&ra="+(Math.round(ra1*1e14)/1e14)+"&dec="+(Math.round(de1*1e14)/1e14)+"&scale="+(Math.round(angle*14.0625*1e14)/1e14)}else if(img_source=="SDSS4"){ret="http://casjobs.sdss.org/ImgCutoutDR4/getjpeg.aspx?width="+img_width+"&height="+img_height+"&ra="+(Math.round(ra1*1e14)/1e14)+"&dec="+(Math.round(de1*1e14)/1e14)+"&scale="+(Math.round(angle*14.0625*1e14)/1e14)}else if(img_source=="SDSS5"){ret="http://casjobs.sdss.org/ImgCutoutDR5/getjpeg.aspx?width="+img_width+"&height="+img_height+"&ra="+(Math.round(ra1*1e14)/1e14)+"&dec="+(Math.round(de1*1e14)/1e14)+"&scale="+(Math.round(angle*14.0625*1e14)/1e14)}else if(img_source=="SDSS6"){ret="http://casjobs.sdss.org/ImgCutoutDR6/getjpeg.aspx?width="+img_width+"&height="+img_height+"&ra="+(Math.round(ra1*1e14)/1e14)+"&dec="+(Math.round(de1*1e14)/1e14)+"&scale="+(Math.round(angle*14.0625*1e14)/1e14)}else{ret="http://casjobs.sdss.org/ImgCutoutDR7/getjpeg.aspx?width="+img_width+"&height="+img_height+"&ra="+(Math.round(ra1*1e14)/1e14)+"&dec="+(Math.round(de1*1e14)/1e14)+"&scale="+(Math.round(angle*14.0625*1e14)/1e14)}}else{ret=getActiveImgServer()+"imgcut?survey="+img_source+"&img_id="+img_id+"&angle="+angle+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+imgbrd;}}else if(img_source&&(img_source=="IRAS"||img_source=="HALPHA"||img_source=="RASS"||img_source=="GALEX")){ret=getActiveImgServer()+"imgcut?survey="+img_source+"&img_id="+img_id+"&angle="+angle+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+imgbrd;}else if(img_source.substr(0,4)=="IMG_"){ret=getActiveImgServer()+"imgcut?img_id="+(img_source.substr(4)!="all"?img_source.substr(4):img_id)+"&angle="+angle+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+imgbrd;}else if(img_source.substr(0,7)=="DSS2_32"){ret=getActiveImgServer()+"imgcut?survey=16&img_id="+img_id+"&angle="+angle+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+imgbrd;}else if(img_source.substr(0,7)=="DSS2_16"){ret=getActiveImgServer()+"imgcut?survey=15&img_id="+img_id+"&angle="+angle+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+imgbrd;}else if(img_source.substr(0,6)=="DSS2_8"){ret=getActiveImgServer()+"imgcut?survey=14&img_id="+img_id+"&angle="+angle+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+imgbrd;}else if(img_source.substr(0,6)=="DSS2_4"){ret=getActiveImgServer()+"imgcut?survey=13&img_id="+img_id+"&angle="+angle+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+imgbrd;}else if(img_source.substr(0,6)=="DSS2_2"){ret=getActiveImgServer()+"imgcut?survey=12&img_id="+img_id+"&angle="+angle+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+imgbrd;}else if(img_source.substr(0,6)=="DSS2_1"){ret=getActiveImgServer()+"imgcut?survey=11&img_id="+img_id+"&angle="+angle+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+imgbrd;}else if(img_source.substr(0,4)=="DSS2"){ret=getActiveImgServer()+"imgcut?survey=DSS2&img_id="+img_id+"&angle="+angle+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+imgbrd;}else if(img_source.substr(0,7)=="SURVEY_"){ret=getActiveImgServer()+"imgcut?survey="+img_source.substr(7)+"&img_id="+img_id+"&angle="+angle+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&x_shift="+xShift+"&y_shift="+yShift+(show_borders==1?"&borders="+show_borders:"")+imgbrd;}else{ret=getActiveServer()+img_base_url+"map?w="+img_width+"&h="+img_height+"&ra="+(Math.round(centerRA*1e14)/1e14)+"&de="+(Math.round(centerDE*1e14)/1e14)+"&angle="+(Math.round(angle*1e14)/1e14)+"&mag="+(Math.round(vmag*1e14)/1e14)+"&grid_ra_step="+grid_ra_step+"&grid_de_step="+grid_de_step+"&x_shift="+xShift+"&y_shift="+yShift+"&locale="+language_id+"&show_grid="+show_grid+"&show_const_lines="+show_const_lines+"&show_const_boundaries="+show_const_boundaries+"&borders="+show_borders+"&show_const_names="+show_const_names+"&show_galaxies="+show_galaxies+"&language="+language_id+"&zoom="+(Math.round(zoom*1e14)/1e14);}
return ret;}
function getActiveServer(){if(typeof activeImgServers!='undefined'&&activeImgServers.length!=0){var n=Math.floor(Math.random()*activeImgServers.length);if(n<0)n=0;else if(n>=activeImgServers.length)n=activeImgServers.length-1;if(typeof activeImgServers[n]!='undefined'){return activeImgServers[n]+'/';}}
return'';}
function getActiveImgServer(){if(typeof activeImgServers!='undefined'&&activeImgServers.length!=0){var n=Math.floor(Math.random()*activeImgServers.length);if(n<0)n=0;else if(n>=activeImgServers.length)n=activeImgServers.length-1;if(typeof activeImgServers[n]!='undefined'){return activeImgServers[n]+'/';}}else{return'';}}
function set_RA_DE(newRA,newDE){var t_p=new round_RA_DE(newRA,newDE);setCenter(t_p.ra,t_p.de);}
function round_RA_DE(newRA,newDE){var a=angle;if(a<20&&img_source!=""&&!((img_source=="SDSS3"||img_source=="SDSS4"||img_source=="SDSS5"||img_source=="SDSS6")&&a<0.53))a=20;var t_ra=Math.round(newRA*15.0/a)/15.0*a;if(t_ra>=24)t_ra-=24;else if(t_ra<0)t_ra+=24;var t_de=Math.round(newDE/a)*a;if(t_de<-90)t_de=-90;else if(t_de>90)t_de=90;this.ra=t_ra;this.de=t_de;}
function getLinkToThisPage(wndName,page){var u=main_url+getCurrentViewHTTPParams(page);if(wndName)
window.open(u,wndName);else
top.location.href=u;}
function openSnapshotPage(){var wndName='_blank';var u=getCurrentViewHTTPParams('snapshot');window.open(u,wndName);}
function getCurrentViewHTTPParams(page){var pd=getCenterPosition();if(!page)page='';var u=page+'?ra='+pd.ra+'&de='+pd.de+'&zoom='+(18-cur_value)+'&show_grid='+show_grid+'&show_constellation_lines='+show_const_lines+'&show_constellation_boundaries='+show_const_boundaries+'&show_const_names='+show_const_names+'&show_galaxies='+show_galaxies;if(show_users&&usgr>=0)u+='&usgr='+usgr;if(show_box){u+='&show_box=1&box_ra='+boxRA+'&box_de='+boxDE+'&box_width='+box_width+'&box_height='+box_height;if(box_var_size)u+='&box_var_size=1';}
if(img_source!='')u+='&img_source='+img_source;return u;}
function openSkyWindow2Page(){var wndName='_blank';var u=getCurrentViewHTTPParams('v2');window.open(u,wndName);}
function getStringLinkToThisPage(){var prop_url=(main_url.indexOf('localhost'))?'http://server1.sky-map.org/':main_url+'/';return prop_url+getCurrentViewHTTPParams('skywindow');}
function getCenterPosition(){var x1=az_shift_x*img_width-ii_left+getOverlapX();var y1=az_shift_y*img_height-ii_top+getOverlapY();return new getRevProjection(x1,y1);}
function getInitImgSrc(){return"images/sky-map"+(img_source=="IRAS"?"_iras":img_source=="HALPHA"?"_halpha":img_source=="RASS"?"_rass":img_source=="DSS2"?"_dss2":img_source=="SDSS7"?"_sdss":img_source=="SDSS"?"_sdss":img_source=="GALEX"?"_galex":img_source=="IMG_all"?"_IMG_all":((show_grid==1?"-grid":"")+(show_const_lines==1?"-const":"")))+".gif";}
function updateImages(){if(cur_value==i_max_value&&init_image){dontmove=1;init_image.src=getInitImgSrc();init_image.style.visibility='';if(d_main_ext)d_main_ext.style.visibility='hidden';g_d1.style.backgroundColor='';for(var xx=0;xx<n_imgs_x;xx++){for(var yy=0;yy<n_imgs_y;yy++){ii[xx][yy].style.visibility='hidden';}}
var g_loading=document.getElementById("d_loading");if(g_loading){}
hidePointBox();positionChanged();var g_aimg=document.getElementById("t_aimgs");if(g_aimg){g_aimg.style.visibility='hidden';}}else{dontmove=1;if(init_image)init_image.style.visibility='hidden';if(d_main_ext)d_main_ext.style.visibility='visible';g_d1.style.backgroundColor='black';var new_angle=init_angle/Math.pow(2,(i_max_value-cur_value-1));var pd=getCenterPosition();setAngle(new_angle);grid_ra_step=init_grid_ra_step/Math.pow(2,(i_max_value-cur_value-1));grid_de_step=init_grid_de_step/Math.pow(2,(i_max_value-cur_value-1));vmag=init_vmag+(i_max_value-cur_value-1)*mag_mult;zoom=init_zoom+(i_max_value-cur_value-1)*zoom_mult;az_shift_x=0;az_shift_y=0;set_RA_DE(pd.ra,pd.de);var pp=new getProjection(pd.ra,pd.de);while(pp.x>img_width*2/3){pp.x-=img_width;az_shift_x++;}
while(pp.x<-img_width*2/3){pp.x+=img_width;az_shift_x--;}
while(pp.y>img_height*2/3){pp.y-=img_height;az_shift_y++;}
while(pp.y<-img_height*2/3){pp.y+=img_height;az_shift_y--;}
ii_left=getOverlapX()-pp.x;ii_top=getOverlapY()-pp.y;for(var xx=0;xx<n_imgs_x;xx++){for(var yy=0;yy<n_imgs_y;yy++){ii[xx][yy].src="img/Loading.gif";ii[xx][yy].style.visibility='visible';ii[xx][yy].style.left=Math.round(xx*img_width+ii_left)+"px";ii[xx][yy].style.top=Math.round(yy*img_height+ii_top)+"px";}}
positionChanged();setTimeout("updateImages_complete()",50);if(img_source.substr(0,4)=="IMG_"){setTimeout("updateAstroImagesList()",50);}else{var g_aimg=document.getElementById("t_aimgs");if(g_aimg){g_aimg.style.visibility='hidden';}}}}
function updateImages_complete(){var params=getParamsString();var pver=getPverString();var px_shift,py_shift,p_name;var cntrX=Math.floor(n_imgs_x/2),cntrY=Math.floor(n_imgs_y/2);for(var yy2=0;yy2<n_imgs_y;yy2+=2){for(var xx2=0;xx2<=n_imgs_x;xx2++){for(var yys=0;yys<=1;yys++){var xx=(xx2%2)==0?(cntrX+xx2/2):(cntrX-(xx2+1)/2);var yy=yys==0?(cntrY+yy2/2):(cntrY-yy2/2-1);if(xx>=0&&xx<n_imgs_x&&yy>=0&&yy<n_imgs_y){var x=az_shift_x+xx;var y=az_shift_y+yy;var nm=ii[xx][yy].name;var xShift=Math.ceil(((n_imgs_x/2)-x)*img_width-(img_width/2));var yShift=Math.ceil(((n_imgs_y/2)-y)*img_height-(img_height/2));if(p_name)p_name+=","+nm;else p_name=nm;if(px_shift)px_shift+=","+xShift;else px_shift=""+xShift;if(py_shift)py_shift+=","+yShift;else py_shift=""+yShift;ii[xx][yy].src=getMapUrl(x,y);ii_a[nm]=[];ii_g[nm]=[];ii_n[nm]=[];ii_m[nm]=[];ii_u[nm]=[];ii_na[nm]=[];ii_ver[nm]=pver+","+xShift+","+yShift;}}}}
params+="&name="+p_name+"&users="+show_users+"&na="+show_na+"&x_shift="+px_shift+"&y_shift="+py_shift+"&max_stars=100";setTimeout("loadAreasXMLDoc('"+area_base_url+"areas', '"+params+"')",100);dontmove=0;}
function updateAstroImagesList(){var params=getParamsString();var px_shift,py_shift,p_name;var cntrX=Math.floor(n_imgs_x/2),cntrY=Math.floor(n_imgs_y/2);for(var yy2=0;yy2<n_imgs_y;yy2+=2){for(var xx2=0;xx2<=n_imgs_x;xx2++){for(var yys=0;yys<=1;yys++){var xx=(xx2%2)==0?(cntrX+xx2/2):(cntrX-(xx2+1)/2);var yy=yys==0?(cntrY+yy2/2):(cntrY-yy2/2-1);if(xx>=0&&xx<n_imgs_x&&yy>=0&&yy<n_imgs_y){var x=az_shift_x+xx;var y=az_shift_y+yy;var nm=ii[xx][yy].name;if(p_name)p_name+=","+nm;else p_name=nm;var xShift=Math.ceil(((n_imgs_x/2)-x)*img_width-(img_width/2));var yShift=Math.ceil(((n_imgs_y/2)-y)*img_height-(img_height/2));if(px_shift)px_shift+=","+xShift;else px_shift=""+xShift;if(py_shift)py_shift+=","+yShift;else py_shift=""+yShift;}}}}
params+="&name="+p_name+"&x_shift="+px_shift+"&y_shift="+py_shift;dontmove=0;}
function redrawImages(){if(cur_value==i_max_value&&init_image){if(init_image)init_image.src=getInitImgSrc();}else{var cntrX=Math.floor(n_imgs_x/2),cntrY=Math.floor(n_imgs_y/2);for(var yy2=0;yy2<n_imgs_y;yy2+=2){for(var xx2=0;xx2<=n_imgs_x;xx2++){for(var yys=0;yys<=1;yys++){var xx=(xx2%2)==0?(cntrX+xx2/2):(cntrX-(xx2+1)/2);var yy=yys==0?(cntrY+yy2/2):(cntrY-yy2/2-1);if(xx>=0&&xx<n_imgs_x&&yy>=0&&yy<n_imgs_y){if(ii_toRedraw!=null&&ii_toRedraw.indexOf(ii[xx][yy].name)==-1)continue;var x=az_shift_x+xx;var y=az_shift_y+yy;ii[xx][yy].src=getMapUrl(x,y);}}}}}}
function resetImgShift(){ii_left=getOverlapX();ii_top=getOverlapY();for(var i=0;i<n_imgs_x;i++){for(var j=0;j<n_imgs_y;j++){ii[i][j].style.top=(j*img_height+ii_left)+"px";ii[i][j].style.left=(i*img_width+ii_top)+"px";}}
positionChanged();}
function getOverlapX(){return Math.floor((g_width-img_width*n_imgs_x)/2);}
function getOverlapY(){return Math.floor((g_height-img_height*n_imgs_y)/2);}
function prepareParameters(all_params){var the_param='';for(i=0;i<par_names.length;i++){the_param+=(extractParameter(par_names[i],all_params)+(i==par_names.length-1?')':','));}
return the_param;}
function extractParameter(par_name,all_params){all_params=all_params.substring(all_params.indexOf('?')+1);var bb=all_params.indexOf(par_name)+par_name.length+1;var right_=all_params.substring(bb);var indx=Number(right_.indexOf('&'));if(indx>=0){var resp=right_.substring(0,indx);return resp;}
else{return right_;}}
function toggleGrid(){show_grid=1-show_grid;redrawImages();}
function toggleConstellations(){show_const_lines=1-show_const_lines;show_const_boundaries=show_const_lines;redrawImages();}
function toggleSDSS(){var zoomin=false,askZoom=true;var pd=getCenterPosition();var isCov=isCoveredSDSS(pd.ra,pd.de);if(!isCov){if(!confirm("This area is not covered by Sloan Digital Sky Survey. See FAQ for details. Do you want move to area covered by SDSS ?"))return;cur_value=i_min_value+11;vslider.f_setValue(cur_value,1);askZoom=false;show_box=false;setNewPosition(12.5,13);}
img_source="SDSS";if(zoomin){cur_value=i_min_value+12;vslider.f_setValue(cur_value,1);}
updateImages();}
function updateBoxPosition(){if(!show_box){hidePointBox();return;}
var bw=box_width,bh=box_height;if(box_var_size&&angle>0){bw/=angle;bh/=angle;}
if(bw<10)bw=10;if(bh<10)bh=10;if(bw>2000||bh>2000){hidePointBox();return;}
var p_box=new getProjection(boxRA,boxDE);p_box.x+=Math.floor(g_width/2)-az_shift_x*img_width+ii_left-getOverlapX();p_box.y+=Math.floor(g_height/2)-az_shift_y*img_height+ii_top-getOverlapY();var g_box=document.getElementById("point_box_left");if(g_box){g_box.style.left=(p_box.x-Math.floor(bw/2))+"px";g_box.style.top=(p_box.y-Math.floor(bh/2))+"px";g_box.style.height=(bh)+"px";g_box.style.visibility="visible";g_box=document.getElementById("point_box_right");g_box.style.left=(p_box.x+Math.floor(bw/2))+"px";g_box.style.top=(p_box.y-Math.floor(bh/2))+"px";g_box.style.height=(bh)+"px";g_box.style.visibility="visible";g_box=document.getElementById("point_box_top");g_box.style.left=(p_box.x-Math.floor(bw/2))+"px";g_box.style.top=(p_box.y-Math.floor(bh/2))+"px";g_box.style.width=(bw)+"px";g_box.style.visibility="visible";g_box=document.getElementById("point_box_bottom");g_box.style.left=(p_box.x-Math.floor(bw/2))+"px";g_box.style.top=(p_box.y+Math.floor(bh/2))+"px";g_box.style.width=(bw)+"px";g_box.style.visibility="visible";g_box=document.getElementById("point_box_close");g_box.style.left=(p_box.x+Math.floor(bw/2)-11)+"px";g_box.style.top=(p_box.y-Math.floor(bh/2)+1)+"px";g_box.style.visibility="visible";}}
function hidePointBox(){var g_box=document.getElementById("point_box_left");if(g_box){g_box.style.visibility="hidden";g_box=document.getElementById("point_box_right");g_box.style.visibility="hidden";g_box=document.getElementById("point_box_top");g_box.style.visibility="hidden";g_box=document.getElementById("point_box_bottom");g_box.style.visibility="hidden";g_box=document.getElementById("point_box_close");g_box.style.visibility="hidden";}}
var planets=null;function updatePlanetsPositions(){var dbg="";if(!show_planets&&planets!=null){hidePlanets();return;}
if(planets==null){showPlanets();}
var pnt;var pp=new PlanetPos(new Date());for(var p=0;p<9;p++){var planetName=PlanetNames[p];if(cur_value==i_max_value&&init_image){pnt=new getAitoffProjection(init_image.offsetWidth,init_image.offsetHeight,pp[planetName].ra/15,pp[planetName].de);pnt.x+=init_image.offsetLeft-Math.round(planets[p].offsetWidth/2);pnt.y+=init_image.offsetTop-Math.round(planets[p].offsetHeight/2);}else{pnt=new getProjection(pp[planetName].ra/15,pp[planetName].de);pnt.x+=Math.floor(g_width/2)-az_shift_x*img_width+ii_left-getOverlapX()-Math.round(planets[p].offsetWidth/2);pnt.y+=Math.floor(g_height/2)-az_shift_y*img_height+ii_top-getOverlapY()-Math.round(planets[p].offsetHeight/2);if(show_box&&boxStickObject==planetName){boxRA=pp[planetName].ra/15;boxDE=pp[planetName].de;updateBoxPosition();}}
planets[p].style.left=pnt.x+'px';planets[p].style.top=pnt.y+'px';dbg+=", "+planetName+": ("+pnt.x+","+pnt.y+")";}}
function showPlanets(){planets=new Array();for(var p=0;p<9;p++){var planetName=PlanetNames[p];var im=new Image;im.border=0;im.style.position='absolute';im.style.left='-100px';im.style.top='-100px';im.style.visibility='visible';im.name='planet_'+planetName;im.id='planet_'+planetName;im.style.height='15px';im.style.width='15px';im.src='img/sign'+planetName+'.gif';im.GALLERYIMG='no';im.title=planetName;g_d1.appendChild(im);im.style.zindex=100;planets[p]=im;}}
function hidePlanets(){if(planets!=null){for(var p=0;p<9;p++){g_d1.removeChild(planets[p]);}
planets=null;}}
function updateTopUsersPositions(){var dbg="";if(topUsersData==null){hideTopUsers();return;}
if(topUsers==null){showTopUsers();}
var pnt;for(var p=0;p<topUsersData.length;p++){if(!topUsers[p])continue;if(cur_value==i_max_value&&init_image){pnt=new getAitoffProjection(init_image.offsetWidth,init_image.offsetHeight,topUsersData[p].ra,topUsersData[p].de);pnt.x+=init_image.offsetLeft-Math.round(topUsers[p].offsetWidth/2);pnt.y+=init_image.offsetTop-Math.round(topUsers[p].offsetHeight/2);}else{pnt=new getProjection(topUsersData[p].ra,topUsersData[p].de);pnt.x+=Math.floor(g_width/2)-az_shift_x*img_width+ii_left-getOverlapX()-Math.round(topUsers[p].offsetWidth/2);pnt.y+=Math.floor(g_height/2)-az_shift_y*img_height+ii_top-getOverlapY()-Math.round(topUsers[p].offsetHeight/2);}
topUsers[p].style.left=pnt.x+'px';topUsers[p].style.top=pnt.y+'px';}}
function showTopUsers(){if(!topUsersData)return;topUsers=new Array();var n=topUsersData.length;for(var p=n-1;p>=0;p--){var im=new Image;im.border=0;im.style.position='absolute';im.style.left='-100px';im.style.top='-100px';im.style.visibility='visible';im.name='topUser_'+p;im.id='topUser_'+p;if(usgr!=-1&&topUsersData[p].showLabel){im.src='http://images.sky-map.org/user_image/label/'+topUsersData[p].starId+'.gif';}else{im.style.height='14px';im.style.width='14px';im.src='img/user_star_point.gif';}
im.GALLERYIMG='no';im.title='';im.style.cursor='pointer';im.uIndex=p;im.starId=topUsersData[p].starId;im.onmouseover=function(){var pimg=topUsersData[this.uIndex].imgTail;pimg=(pimg==''||pimg=='null')?'nopicture.gif':extendNumber(topUsersData[this.uIndex].starId,10)+pimg;var b=fillTemplate(isGroupHasRSS(topUsersData[this.uIndex].groupId)?templateUM:templateU,topUsersData[this.uIndex].title,topUsersData[this.uIndex].starId,pimg,topUsersData[this.uIndex].frontText);if(b.indexOf("<<RSS>>")>=0){var rss="";if(document.m_RSSPanel){document.m_RSSPanel.onRSSUpdated=function(data){if(data.id>0){var d=document.getElementById('t_label_um_'+data.id);if(d){if($("dhtmltooltip"))$("dhtmltooltip").style.visibility="hidden";d.innerHTML=data.toHtmlString(15);positiontip();}}};rss=document.m_RSSPanel.getRSSnews(topUsersData[this.uIndex].starId);}
b=replaceString(b,"<<RSS>>",rss);}
ddrivetip(b,'yellow',400);};im.onmouseout=function(){delayhidemenu();};im.onclick=function(evnt){if(document.all)evnt=event;hideddrivetip();var menu1=new Array();var objId=topUsersData[this.uIndex].starId;var n=0;menu1[n++]='<a href="starview?object_type=1&object_id='+objId+(typeof adam!='undefined'?('&amount='+adam):'')+(typeof gid!='undefined'?('&gid='+gid):'')+'" target=_blank><font color=white>Open Star Page</font></a>';if(topUsersData[this.uIndex].url!='')
menu1[n++]='<a href="'+topUsersData[this.uIndex].url+'" target=_blank><font color=white>Open Web Site</font></a>';menu1[n++]='<a href="#" target=_blank onclick="onUserStarSendMsgClick(event,'+this.uIndex+');return false;"><font color=white>Send Message</font></a>';var rf=document.m_RSSPanel?document.m_RSSPanel.RSSfeeds[objId]:null;var menuWidth='150px';if(rf&&rf.items&&rf.items.length>0){menu1[n++]='<div style="position:relative;left:0;top:0;width:100%;height:15px;text-align:center;color:white;font-family:Sans-Serif;font-size:8pt;font-weight:bold;padding:0"><div style="position:relative;left:0;top:0;width:100%;height:11px;background-color:green;font-size:1px;"></div><div style="position:absolute;left:0;top:-4;width:100%">L&nbsp;A&nbsp;T&nbsp;E&nbsp;S&nbsp;T&nbsp;&nbsp;&nbsp;N&nbsp;E&nbsp;W&nbsp;S</div></div>';var nItems=rf.items.length;if(nItems>15)nItems=15;for(var i=0;i<nItems;i++){menu1[n++]='<a href="'+rf.items[i].link+'" target=_blank style="font-family:Sans-Serif;font-size:8pt;font-weight:normal;font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis" onmouseover="ddrivetip(\'<style type={text/css}>A{color:black;}</style><table><tr><td style={color:black;background-color:yellow;font-size:9pt}><b>\'+document.m_RSSPanel.RSSfeeds['+objId+'].items['+i+'].title+\'</b><br>\'+document.m_RSSPanel.RSSfeeds['+objId+'].items['+i+'].desc.substring(0,1000)+\'</td></tr></table>\', \'\', 400, 20)" onmouseout="hideddrivetip();"><b>'+(rf.items[i].date?rf.items[i].date.substring(0,16):'*')+'</b> '+rf.items[i].title+'</a>';}
menuWidth='350px';}
dropdownmenu(this,evnt,menu1,menuWidth);};g_d1.appendChild(im);im.style.zindex=100;topUsers[p]=im;}}
function onUserStarSendMsgClick(evnt,p){var g=(document.all)?event.srcElement:evnt.currentTarget;showSendMsgDialogStarUser(topUsersData[p].starId,topUsersData[p].title,getXpos(g),getYpos(g)+20);}
function showSendMsgDialogStarUser(userId,userName,x,y){var d=document.getElementById("chat_star_user_wnd");var dto=document.getElementById("chat_star_user_to");if(d&&dto){document.getElementById("chat_star_user_title").innerHTML="Send message to <b>Star "+userName+"</b>";dto.value=userId;d.style.left=x+'px';d.style.top=y+'px';d.style.visibility='visible';document.getElementById("chat_star_user_input_text").focus();}}
function chatSendStarUserMessage(toUserId,msg){sendChatUserStarRequest("action=sendMsg&star_id="+toUserId+"&msg="+encodeURIComponent(msg));}
var chatStarUserXmlhttp;function sendChatUserStarRequest(params)
{var url="myStarMsg.jsp?"+params;if(window.XMLHttpRequest){chatStarUserXmlhttp=new XMLHttpRequest();if(chatStarUserXmlhttp)
{chatStarUserXmlhttp.onreadystatechange=onChatUserStarXMLDocLoaded;chatStarUserXmlhttp.open("GET",url,true);chatStarUserXmlhttp.setRequestHeader("Content-Type","text/xml;charset=UTF-8");chatStarUserXmlhttp.send(null);}}else if(window.ActiveXObject){chatStarUserXmlhttp=new ActiveXObject("Microsoft.XMLHTTP");if(chatStarUserXmlhttp)
{chatStarUserXmlhttp.onreadystatechange=onChatUserStarXMLDocLoaded;chatStarUserXmlhttp.open("GET",url,true);chatStarUserXmlhttp.setRequestHeader("Content-Type","text/xml;charset=UTF-8");chatStarUserXmlhttp.send();}}}
function onChatUserStarXMLDocLoaded()
{if(chatStarUserXmlhttp.readyState==4){if(chatStarUserXmlhttp.status==200)
{var xmlDocument=chatStarUserXmlhttp.responseXML;var status=readXMLValue(xmlDocument,"status");if(status=="OK"){alert("The message has been sent successfully");}else{var reason=readXMLValue(xmlDocument,"reason");alert("Cannot send message. Reason: "+reason);}}else{alert("Send Message: Problem retrieving XML data:"+chatStarUserXmlhttp.status+" ("+chatStarUserXmlhttp.statusText+")");}}}
function showUserLabel(p){var b=fillTemplate(templateU,topUsersData[p].title,0,topUsersData[p].imgTail,topUsersData[p].frontText);ddrivetip(b,'',400,20);}
function hideTopUsers(){if(topUsers!=null){for(var p=0;p<topUsers.length;p++){g_d1.removeChild(topUsers[p]);var lbl=document.getElementById('topUserLabel_'+p);if(lbl)g_d1.removeChild(lbl);}
topUsers=null;}
topUsersData=null;}
function onWindowResize(){var w,h;if(typeof window.innerWidth=='number'){w=window.innerWidth;h=window.innerHeight;}else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){w=document.documentElement.clientWidth;h=document.documentElement.clientHeight;}else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){w=document.body.clientWidth;h=document.body.clientHeight;}
var dloading=document.getElementById("d_loading");var dpos=document.getElementById("dpos");var maxi=document.getElementById("img_button_max");var dmainext=document.getElementById("d_main_ext");var dmainext2=document.getElementById("d_main_ext_2");var dmain=g_d1;var dbottommenu=document.getElementById("d_bottom_menu");var dmain_width_old=0,dmain_height_old=0;var dmain_width=w-12;var dmain_height=h-122;if(cur_value==i_max_value){if(dmain_height<550)dmain_height=550;}
if(dmainext){dmainext.style.width=(w-2)+'px';dmainext.style.height=(h-112)+'px';}
if(dmainext2){dmainext2.style.width=(w-12)+'px';dmainext2.style.height=(h-122)+'px';}
if(dmain){dmain_width_old=g_width;dmain_height_old=g_height;if(dmain.tagName!="BODY"&&dmain.toResize!=false){dmain.style.width=dmain_width+'px';dmain.style.height=dmain_height+'px';g_width=dmain_width;g_height=dmain_height;}else{dmain_width=dmain_width_old;dmain_height=dmain_height_old;}}
if(dpos){dpos.style.left=(dmain_width-dpos.offsetWidth-25)+'px';}
if(maxi){maxi.style.left=(dmain_width-maxi.offsetWidth-1)+'px';}
if(dbottommenu){dbottommenu.style.top=Math.max(cur_value==i_max_value?630:160,(h-40))+'px';}
if(dloading){dloading.style.left=(dmain_width-dloading.offsetWidth)+'px';dloading.style.top=(dmain_height-dloading.offsetHeight)+'px';}
if(typeof m_rightPanel!='undefined'){m_rightPanel.setRight(w-6);m_rightPanel.setBottom(h-69);m_rightPanel.onresize();}
if(readyToDraw){if(ii){var old_img_offset_x=ii_left,old_img_offset_y=ii_top;var n_imgs_x_old=n_imgs_x,n_imgs_y_old=n_imgs_y;checkInitImageArray();ii_left=Math.floor((old_img_offset_x+(dmain_width-dmain_width_old)/2+(n_imgs_x_old-n_imgs_x)*img_width/2));ii_top=Math.floor((old_img_offset_y+(dmain_height-dmain_height_old)/2+(n_imgs_y_old-n_imgs_y)*img_height/2));}
updateImages();}}
function showSkyAboveDialog(){var skyDlg=document.getElementById("skyAboveDialog");if(!skyDlg||skyDlg==null)return;skyDlg.style.visibility='visible';}
function skyAboveGetCoord(){var skyLocation=document.getElementById("skyAbove_location");if(!skyLocation||skyLocation.value==''){alert('Please enter your location in format "City, State, Country"');}else{addressSearch(skyLocation.value);}}
function addressSearch(locationString)
{var url="location.jsp?location="+URLencode(locationString);if(window.XMLHttpRequest){xmlhttpLocation=new XMLHttpRequest()
if(xmlhttpLocation)
{xmlhttpLocation.onreadystatechange=onLocationXMLDocLoaded;xmlhttpLocation.open("GET",url,true);xmlhttpLocation.setRequestHeader("Content-Type","text/xml;charset=UTF-8");xmlhttpLocation.send(null);}}else if(window.ActiveXObject){xmlhttpLocation=new ActiveXObject("Microsoft.XMLHTTP")
if(xmlhttpLocation)
{xmlhttpLocation.onreadystatechange=onLocationXMLDocLoaded;xmlhttpLocation.open("GET",url,true);xmlhttpLocation.setRequestHeader("Content-Type","text/xml;charset=UTF-8");xmlhttpLocation.send();}}
try{pageTracker._trackEvent('address','search',locationString);}catch(e){}}
function onLocationXMLDocLoaded()
{if(xmlhttpLocation.readyState==4){if(xmlhttpLocation.status==200)
{var xmlDocument=xmlhttpLocation.responseXML;var resultSet=xmlDocument.getElementsByTagName('ResultSet')[0];var results=resultSet.getElementsByTagName('result');if(results.length>0){var location=results[0].getElementsByTagName('geometry')[0].getElementsByTagName('location')[0];var lat=location.getElementsByTagName('lat')[0].firstChild.data;var lon=location.getElementsByTagName('lng')[0].firstChild.data;var skyLat=document.getElementById("skyAbove_lat");if(skyLat){skyLat.value=lat;}
var skyLon=document.getElementById("skyAbove_lon");if(skyLon){skyLon.value=lon;}
var newLocation=results[0].getElementsByTagName('formatted_address')[0].firstChild.data;var skyLocation=document.getElementById("skyAbove_location");skyLocation.value=newLocation;var dSkyCancel=document.getElementById("d_skyAbove_cancel");if(dSkyCancel){dSkyCancel.style.visibility='hidden';}
var dSkyPos=document.getElementById("d_skyAbove_pos");if(dSkyPos){dSkyPos.style.visibility='';}
var dSkyTimeNow=document.getElementById("d_skyAbove_timeNow");if(dSkyTimeNow){dSkyTimeNow.style.visibility='';}
var dSkyTimeZone=document.getElementById("d_skyAbove_timeZone");if(dSkyTimeZone){dSkyTimeZone.style.visibility='';}
var skyTime=document.getElementById("skyAbove_time");if(skyTime){skyTime.value=new Date().toLocaleString();}
var dSkyTime=document.getElementById("d_skyAbove_time");if(dSkyTime){dSkyTime.style.visibility='';}
var dSkyBtns=document.getElementById("d_skyAbove_buttons");if(dSkyBtns){dSkyBtns.style.visibility='';}
var skyAboveDialog=document.getElementById("skyAboveDialog");if(skyAboveDialog){skyAboveDialog.style.height='190px';}
var skyAboveDialogBG=document.getElementById("skyAboveDialogBG");if(skyAboveDialogBG){skyAboveDialogBG.style.height='190px';}}else{window.alert("Location: Not Found");}}else{alert("Location: Problem retrieving XML data:"+xmlhttpLocation.status+" ("+xmlhttpLocation.statusText+")");}}}
function locateSkyAbove(){var skyLat=document.getElementById("skyAbove_lat");var skyLon=document.getElementById("skyAbove_lon");var time=document.getElementById("skyAbove_time");var timeZone=document.getElementById("skyAbove_timeZone");if(skyLat&&skyLon&&time&&timeZone){var lat=parseFloat(skyLat.value);var lon=parseFloat(skyLon.value);var time=new Date();var timeZone=parseFloat(timeZone.value);var newRA=sidereal_time(time.getYear(),time.getMonth(),time.getDate(),time.getHours(),time.getMinutes(),time.getSeconds(),SIDEREAL_LAST,lon);newRA+=timeZone;if(newRA<0)newRA+=24;else if(newRA>=24)newRA-=24;document.getElementById("skyAboveDialog").style.visibility="hidden";if(cur_value==18){cur_value=16;vslider.f_setValue(cur_value,1);}
setCenter(newRA,lat);updateImages();}}
var timer_colon=false;function skyAboveTimer_show(){var skyAboveTimer=document.getElementById('skyAboveTimer');if(skyAboveTimer){var d=new Date();var h=d.getHours();var m=d.getMinutes();if(h<10)h='0'+h;if(m<10)m='0'+m;timer_colon=!timer_colon;skyAboveTimer.innerHTML=''+h+(timer_colon?':':'&nbsp;')+m;updatePlanetsPositions();setTimeout("skyAboveTimer_show()",1000);}}
function createCookie(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}
else var expires="";document.cookie=name+"="+value+expires+"; path=/";}
function readCookie(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0)return c.substring(nameEQ.length,c.length);}
return null;}
function eraseCookie(name){createCookie(name,"",-1);}
function readXMLValue(xmlElement,xname){var r;var t=xmlElement.getElementsByTagName(xname)[0];if(t&&(t.firstChild||t.textContent))
r=(t.textContent)?t.textContent:t.firstChild.data;return r;}
function escapeHtml(s){if(!s)return s;var div=document.createElement('div');var text=document.createTextNode(s);div.appendChild(text);return div.innerHTML;}
function unescapeHtml(s){if(!s)return s;var div=document.createElement('div');div.innerHTML=s.replace(/<\/?[^>]+>/gi,'');return div.childNodes[0]?div.childNodes[0].nodeValue:'';}
function onReturn(ev,actionEnter,actionEsc){if(!ev)ev=window.event;if(ev&&ev.keyCode){if(actionEnter&&ev.keyCode==13)actionEnter(ev.srcElement?ev.srcElement:ev.currentTarget);if(actionEsc&&ev.keyCode==27)actionEsc(ev.srcElement?ev.srcElement:ev.currentTarget);}}
function createCookie(name,value,days){var expires="";if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));expires="; expires="+date.toGMTString();}
document.cookie=name+"="+value+expires+"; path=/";}
function readCookie(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0)return c.substring(nameEQ.length,c.length);}
return null;}
function eraseCookie(name){createCookie(name,"",-1);}
function getAbsoluteTop(e){return e?e.offsetTop+getAbsoluteTop(e.offsetParent):0;}
function getAbsoluteLeft(e){return e?e.offsetLeft+getAbsoluteLeft(e.offsetParent):0;}
function getMousePos(evnt){if(document.all)evnt=event;this.evnt=evnt;var g=(document.all)?event.srcElement:evnt.currentTarget;this.g=g;if(document.all)this.x=evnt.offsetX;else this.x=evnt.layerX-1;if(document.all)this.y=evnt.offsetY;else this.y=evnt.layerY-1;}
function getAbsMousePos(e){if(!e)e=window.event;if(e.pageX||e.pageY){this.x=e.pageX;this.y=e.pageY;}
else if(e.clientX||e.clientY){this.x=e.clientX+document.body.scrollLeft
+document.documentElement.scrollLeft;this.y=e.clientY+document.body.scrollTop
+document.documentElement.scrollTop;}}
function ietruebody(){return(document.compatMode&&document.compatMode!="BackCompat")?document.documentElement:document.body}
function windowWidth(){var w=0;if(typeof window.innerWidth=='number'){w=window.innerWidth;}else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){w=document.documentElement.clientWidth;}else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){w=document.body.clientWidth;}
return w;}
function windowHeight(){var h=0;if(typeof window.innerWidth=='number'){h=window.innerHeight;}else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){h=document.documentElement.clientHeight;}else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){h=document.body.clientHeight;}
return h;}
function formatTxtPos(ra,de){if(typeof ra=="object"){de=ra.de;ra=ra.ra;}
return formatTxtRA(ra)+" "+formatTxtDE(de);}
function formatTxtRA(ra){if(ra<0){ra+=24;}else if(ra>=24){ra-=24;}
var hh=Math.floor(ra).toFixed(0);if(hh.length==1){hh="0"+hh;}
var mm=Math.floor(((ra-Math.floor(ra))*60)).toFixed(0);if(mm.length==1){mm="0"+mm;}
var ss=((ra*60-Math.floor(ra*60))*60).toFixed(2);if(ss.length==4){ss="0"+ss;}
return hh+" "+mm+" "+ss+"";}
function formatTxtDE(de){var deg=Math.floor(Math.abs(de)).toFixed(0);if(deg.length==1){deg="0"+deg;}
if(de<0){deg="-"+deg;}else{deg="+"+deg;}
var mm=Math.floor(Math.abs((Math.abs(de)-Math.floor(Math.abs(de)))*60)).toFixed(0);if(mm.length==1){mm="0"+mm;}
var ss=((Math.abs(de)*60-Math.floor(Math.abs(de*60)))*60).toFixed(1);if(ss.length==3){ss="0"+ss;}
return deg+" "+mm+" "+ss+"";}
function addLoadEvent(func){var oldonload=window.onload;if(typeof window.onload!='function'){window.onload=func;}else{window.onload=function(){if(oldonload)oldonload();func();}}}
var $;if(!$){$=function(s){return document.getElementById(s)};}
function rightPanel(parent,width){this.parent=parent;this.left=0;this.top=0;this.maxWidth=width?width:250;this.minWidth=this.width;this.imgURL="http://sky-map.org/img/";this.width=0;this.height=0;this.bottom=0;this.right=0;this.toShow=false;this.d_main=document.createElement("DIV");this.d_main.id="RightPanel_div";var s=this.style=this.d_main.style;s.visibility='hidden';s.border="0px";s.margin="0px";s.padding="0px";s.position="absolute";s.overflow="hidden";this.parent.appendChild(this.d_main);this.spaceBetweenItems=5;this.setRight=function(r){this.right=r;};this.setBottom=function(r){this.bottom=r;};this.onresize=function(){if(!this.toShow){this.d_main.style.visibility='hidden';return;}
var h=this.bottom-this.top;this.updatePosX();var exp=new Array();var pos_y=0,i,item,a;var nc=this.d_main&&this.d_main.childNodes?this.d_main.childNodes.length:0;for(i=0;i<nc;i++){item=this.d_main.childNodes.item(i).ownerItem;if(item&&item.visible()){item.onresize();if(item.isExpanded){exp.push(item);}else{item.setY(pos_y);item.resetHeight();pos_y+=item.getHeight()+this.spaceBetweenItems;}}}
if(exp.length>0){this.updateWidth(this.maxWidth);var rm=h-pos_y-2;var hItem=Math.round((rm-this.spaceBetweenItems*(exp.length-1))/exp.length);var rm2=rm,n2=0;for(i=0;i<exp.length;i++){item=exp[i];item.setY(pos_y);item.resetHeight();if(item.getHeight()>hItem)n2++;else rm2-=item.getHeight()+this.spaceBetweenItems;}
hItem=Math.round((rm2-this.spaceBetweenItems*(n2-1))/n2);var itemToApplyRem=-1;var t_rm=rm;for(i=0;i<exp.length;i++){item=exp[i];a=item.getHeight();if(a>hItem){itemToApplyRem=i;a=hItem;}
t_rm-=a+(i+1<exp.length?this.spaceBetweenItems:0);}
for(i=0;i<exp.length;i++){item=exp[i];item.setY(pos_y);item.resetHeight();a=item.getHeight();if(a>hItem)a=hItem+(i==itemToApplyRem?t_rm:0);pos_y+=a;rm-=a;item.setHeight(a);if(i+1<exp.length){pos_y+=this.spaceBetweenItems;rm-=this.spaceBetweenItems;}}}else if(pos_y!=0){this.updateWidth(Math.min(this.maxWidth,Math.max(this.minWidth,this.getMinHeaderWidth())));}
if(pos_y==0){this.d_main.style.visibility='hidden';}else{this.d_main.style.visibility='visible';this.height=Math.min(h,pos_y+2);}
this.draw();};this.updateWidth=function(w){this.width=w;this.left=this.right-this.width;var nc=this.d_main&&this.d_main.childNodes?this.d_main.childNodes.length:0;for(var i=0;i<nc;i++){var item=this.d_main.childNodes.item(i).ownerItem;if(item)item.updateWidth(w);}};this.getMinHeaderWidth=function(){var minWidth=0;var nc=this.d_main&&this.d_main.childNodes?this.d_main.childNodes.length:0;for(var i=0;i<nc;i++){var item=this.d_main.childNodes.item(i).ownerItem;if(item&&item.visible()){var t=item.getMinHeaderWidth();if(minWidth<t)minWidth=t;}}
return minWidth;};this.addItem=function(title,options){var t=new rightPanelItem(this,title,options);this.d_main.appendChild(t.d_main);return t;};this.removeItem=function(item){this.d_main.removeChild(item.d_main);this.onresize();};this.show=function(b){this.toShow=b;this.onresize();};this.updatePosX=function(){var left=this.right-this.width;this.left=left;this.draw();};this.draw=function(){this.d_main.style.left=this.left+"px";this.d_main.style.top=this.top+"px";this.d_main.style.width=this.width+"px";this.d_main.style.height=this.height+"px";var nc=this.d_main&&this.d_main.childNodes?this.d_main.childNodes.length:0;for(var i=0;i<nc;i++)this.d_main.childNodes.item(i).ownerItem.draw();};}
function rightPanelItem(parentObj,title,options){this.parentObj=parentObj;this.title=title;if(options)this.options=options;else this.options={canCollapse:true,canClose:false};if(typeof this.options.canCollapse=='undefined')this.options.canCollapse=true;if(typeof this.options.canClose=='undefined')this.options.canClose=false;this.isExpanded=!this.options.canCollapse||this.options.expanded==true;this.left=0;this.top=0;this.width=parentObj.width;this.height=0;this.d_main=document.createElement("SPAN");this.d_main.ownerItem=this;var s=this.style=this.d_main.style;s.visibility='hidden';s.border="1px solid gray";s.position="absolute";s.left="0px";this.d_bg=document.createElement("DIV");this.d_bg.id="panelItem_d_bg";s=this.d_bg.style;s.position="absolute";s.left="0px";s.top="0px";s.width="100%";s.height="100%";s.margin="0px";s.backgroundColor='black';s.opacity=0.5;s.filter='alpha (opacity=50)';this.d_main.appendChild(this.d_bg);this.d_header=document.createElement("TABLE");this.d_header.id="panelItem_d_header";this.d_header.parentItem=this;this.d_header.cellSpacing=0;this.d_header.cellPadding=0;this.d_header.border=0;s=this.d_header.style;s.position="absolute";s.left="0px";s.top="0px";s.width="100%";s.height="18px";s.overflow="hidden";s.backgroundColor="#404040";s.color="white";s.fontSize="8pt";s.border="0px";this.d_headerRow=this.d_header.insertRow(-1);this.d_main.appendChild(this.d_header);if(this.options.canCollapse){this.btn_collapse=new Image;this.btn_collapse.parentItem=this;s=this.btn_collapse.style;s.border=0;s.width='15px';s.height='15px';s.cursor='pointer';this.btn_collapse.onclick=function(){this.title=='Collapse'?this.parentItem.collapse():this.parentItem.expand();}
this.btn_collapse.srcCollapse=this.parentObj.imgURL+'collapse.gif';this.btn_collapse.srcExpand=this.parentObj.imgURL+'expand.gif';this.btn_collapse.GALLERYIMG='no';this.btn_collapse.title='Collapse';var td=this.d_headerRow.insertCell(-1);td.style.width='15px';td.style.padding="1px";td.appendChild(this.btn_collapse);}
this.d_title=document.createElement("SPAN");this.d_title.id="panelItem_d_title";this.d_title.parentItem=this;s=this.d_title.style;s.overflow="hidden";s.color="white";s.fontSize="8pt";s.whiteSpace='nowrap';this.d_title.innerHTML='&nbsp;'+this.title;if(this.options.canCollapse){s.cursor='pointer';this.d_title.onclick=function(){this.title=='Collapse'?this.parentItem.collapse():this.parentItem.expand();}}
var td1=this.d_headerRow.insertCell(-1);td1.style.paddingLeft="1px";td1.appendChild(this.d_title);if(this.options.canClose){this.btn_close=new Image;this.btn_close.parentItem=this;s=this.btn_close.style;s.border=0;s.width='15px';s.height='15px';s.cursor='pointer';this.btn_close.onclick=function(){this.parentItem.close();}
this.btn_close.src=this.parentObj.imgURL+'icon_close.gif';this.btn_close.GALLERYIMG='no';this.btn_close.title='Close';var td2=this.d_headerRow.insertCell(-1);td2.style.width='16px';td2.style.textAlign='right';td2.appendChild(this.btn_close);}
this.d_body=document.createElement("SPAN");this.d_body.id="panelItem_d_body";this.d_body.parentItem=this;s=this.d_body.style;s.position="absolute";s.left="0px";s.top="18px";s.width="100%";s.overflowX="hidden";s.overflowY="auto";s.color="white";s.fontSize="8pt";this.d_main.appendChild(this.d_body);this.show=function(b){if(b!=this.visible()){this.d_main.style.visibility=b?'':'hidden';this.parentObj.onresize();}};this.visible=function(){return this.d_main.style.visibility!='hidden';};this.setY=function(y){this.top=y;};this.setHeight=function(h){this.d_body.style.height=(h-this.d_body.offsetTop)+'px';this.onresize();};this.getHeight=function(){return this.d_header.offsetHeight+(this.isExpanded?this.d_body.offsetHeight:0);};this.resetHeight=function(){this.d_body.style.height=null;};this.onresize=function(){var w=this.parentObj.width;var h=this.getHeight()+(document.all?2:0);if(w>0)this.width=w;if(h>0)this.height=h;if(this.btn_collapse){this.btn_collapse.src=this.isExpanded?this.btn_collapse.srcCollapse:this.btn_collapse.srcExpand;this.btn_collapse.title=this.isExpanded?'Collapse':'Expand';this.d_title.title=this.isExpanded?'Collapse':'Expand';this.d_body.style.visibility=this.isExpanded?'':'hidden';}};this.getLeft=function(){return getAbsoluteLeft(this.d_main);};this.getTop=function(){return getAbsoluteTop(this.d_main);};this.updateWidth=function(w){this.width=w;};this.getMinHeaderWidth=function(){var t=this.d_title.style.width;this.d_title.style.width='';this.d_title.innerHTML=this.d_title.innerHTML;var r=this.d_title.offsetWidth+(this.btn_close?this.btn_close.offsetWidth:0)+(this.btn_collapse?this.btn_collapse.offsetWidth:0)+6;this.d_title.style.width=t;return r;};this.collapse=function(){this.isExpanded=false;this.updateTitle();this.parentObj.onresize();if(this.onCollapse)this.onCollapse();};this.expand=function(){this.isExpanded=true;this.updateTitle();this.parentObj.onresize();if(this.onExpand)this.onExpand();};this.close=function(){if(this.onClose)this.onClose();this.parentObj.removeItem(this);};this.updateTitle=function(){if(this.isExpanded)
this.setTitle(this.titleExpanded?this.titleExpanded:this.title);else
this.setTitle(this.titleCollapsed?this.titleCollapsed:this.title);};this.setTitle=function(t){this.d_title.style.fontWeight=this.isExpanded?"bold":"normal";this.d_title.innerHTML=this.title=t;};this.setBody=function(t){var scrollTop=this.d_body.scrollTop;this.d_body.innerHTML=t;if(scrollTop>0)this.d_body.scrollTop=scrollTop;if(this.isExpanded)this.parentObj.onresize();};this.draw=function(){this.d_main.style.left=this.left+"px";this.d_main.style.top=this.top+"px";this.d_main.style.width=(this.width-(document.all?0:2))+"px";this.d_main.style.height=this.height+"px";};this.reset=function(){if(this.parentObj)this.parentObj.removeItem(this);};this.onresize();}
var dateFormat=function(){var token=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloZ]|"[^"]*"|'[^']*'/g,timezone=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,timezoneClip=/[^-+\dA-Z]/g,pad=function(value,length){value=String(value);length=parseInt(length)||2;while(value.length<length)
value="0"+value;return value;};return function(date,mask){if(arguments.length==1&&(typeof date=="string"||date instanceof String)&&!/\d/.test(date)){mask=date;date=undefined;}
date=date?new Date(date):new Date();if(isNaN(date))
throw"invalid date";var dF=dateFormat;mask=String(dF.masks[mask]||mask||dF.masks["default"]);var d=date.getDate(),D=date.getDay(),m=date.getMonth(),y=date.getFullYear(),H=date.getHours(),M=date.getMinutes(),s=date.getSeconds(),L=date.getMilliseconds(),o=date.getTimezoneOffset(),flags={d:d,dd:pad(d),ddd:dF.i18n.dayNames[D],dddd:dF.i18n.dayNames[D+7],m:m+1,mm:pad(m+1),mmm:dF.i18n.monthNames[m],mmmm:dF.i18n.monthNames[m+12],yy:String(y).slice(2),yyyy:y,h:H%12||12,hh:pad(H%12||12),H:H,HH:pad(H),M:M,MM:pad(M),s:s,ss:pad(s),l:pad(L,3),L:pad(L>99?Math.round(L/10):L),t:H<12?"a":"p",tt:H<12?"am":"pm",T:H<12?"A":"P",TT:H<12?"AM":"PM",Z:(String(date).match(timezone)||[""]).pop().replace(timezoneClip,""),o:(o>0?"-":"+")+pad(Math.floor(Math.abs(o)/60)*100+Math.abs(o)%60,4)};return mask.replace(token,function($0){return($0 in flags)?flags[$0]:$0.slice(1,$0.length-1);});};}();dateFormat.masks={"default":"ddd mmm d yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoFullDateTime:"yyyy-mm-dd'T'HH:MM:ss.lo"};dateFormat.i18n={dayNames:["Sun","Mon","Tue","Wed","Thr","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"]};Date.prototype.format=function(mask){return dateFormat(this,mask);};