Advertisement
Guest User

Untitled

a guest
May 11th, 2011
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.20 KB | None | 0 0
  1. var Stimeout, Itimeout; // таймеры для обновления времени и изображения
  2. var Rtimeout; // таймер запросов
  3. const Stimeout_rate = 1000, Itimeout_rate = 30000, Rtimeout_rate = 1500;
  4. var ImageSrc=""; // адрес изображения
  5. var oldDate = 0; // дата/время на момент последнего обновления (в мс)
  6. var MskTime, SidTime; // московское и звездное время
  7. var PanelType;
  8.  
  9. const paramsURL = "http://tb.sao.ru/cgi-bin/eddy/bta_print.cgi";
  10. const MeteoURL = "http://tb.sao.ru/cgi-bin/eddy/tempmon";
  11. const windURL = "http://ztcs.sao.ru/meteo/wind.png";
  12. const BTAURL = "http://tb.sao.ru/tcs/ctrl/bta_img.cgi?size=200&mode=";
  13.  
  14.  
  15. function $(Id){
  16. return document.getElementById(Id);
  17. }
  18.  
  19. function _(Name){
  20. return document.getElementsByTagName(Name);
  21. }
  22.  
  23. function init(panelName){
  24. MskTime = new Date();
  25. SidTime = new Date();
  26. PanelType = panelName;
  27. if(panelName == "BTA")
  28. ImageSrc = "http://tb.sao.ru/webcam/webcam_sky_1_maxi.jpeg";
  29. else if(panelName == "meteo")
  30. ImageSrc = "http://zserv.sao.ru/webcam/webcam_zserv_2_maxi.jpeg";
  31. sendR();
  32. startTimers();
  33. }
  34.  
  35. function refreshTimer(){
  36. var d = new Date();
  37. var diff = d.getTime() - oldDate;
  38. //oldDate = d.getTime();
  39. clearTimeout(Stimeout);
  40. $('Date').innerHTML = formatDate(MskTime);
  41. if(typeof(M_time) != "undefined"){
  42. //MskTime.setTime(MskTime.getTime() + diff);
  43. //$('Mtime').innerHTML = formatTime(MskTime);
  44. d.setTime(MskTime.getTime() + diff);
  45. $('Mtime').innerHTML = formatTime(d);
  46. }
  47. if(typeof(S_time) != "undefined"){
  48. //SidTime.setTime(SidTime.getTime() + diff);
  49. //$('Stime').innerHTML = formatTime(SidTime);
  50. d.setTime(SidTime.getTime() + diff);
  51. $('Stime').innerHTML = formatTime(d);
  52. }
  53. Stimeout = setTimeout(refreshTimer, Stimeout_rate);
  54. delete(d);
  55. }
  56.  
  57. function sendR(){
  58. var request;
  59. sendRequest(request, paramsURL, "", parceReqStr);
  60. }
  61.  
  62. function refreshImage(){
  63. var yesterday = oldDate/1000 - 86400;
  64. var imH = (window.innerHeight-$('header').offsetHeight-20)/4-20;
  65. if(imH < 100) imH = 100;
  66. function refreshIMG(id, URL){
  67. /*var oldIMG = $(id);
  68. var newIMG = document.createElement("img");
  69. var parent = oldIMG.parentNode;
  70. newIMG.style.width = "100%";
  71. newIMG.src = URL;
  72. parent.insertBefore(newIMG, oldIMG);
  73. oldIMG.src = null;
  74. parent.removeChild(oldIMG);
  75. delete(oldIMG);
  76. newIMG.id = id;*/
  77. $(id).src = URL;
  78. }
  79. var params = MeteoURL + "?Tstart=" + yesterday + "&Stat=31&height="+imH + "&Gtype=0&Graph=";
  80. clearTimeout(Itimeout);
  81. refreshIMG('BigIMG', ImageSrc + "?" + Math.random());
  82. if(PanelType == "meteo"){
  83. // временно вместо облаков и качества изображения пишем давление и влажность
  84. refreshIMG('clouds', params + "16");
  85. refreshIMG('temp', params + "7");
  86. refreshIMG('wind', params + "8");
  87. refreshIMG('seeing', params + "32");
  88. refreshIMG('winddir',windURL+ "?" + Math.random());
  89. }
  90. else if(PanelType == "BTA"){
  91. refreshIMG('A', BTAURL + "1&" + Math.random());
  92. refreshIMG('Z', BTAURL + "2&" + Math.random());
  93. refreshIMG('P2', BTAURL + "3&" + Math.random());
  94. }
  95. Itimeout = setTimeout(refreshImage, Itimeout_rate);
  96. }
  97.  
  98. function handleError(msg) {
  99. $('reqmsgs').innerHTML = "<b>Ошибка xmlhttprequest:<b>" + msg;
  100. var tmo = setTimeout(function(){$('reqmsgs').innerHTML = "";}, 5000);
  101. }
  102.  
  103. function sendRequest(request, CGI_PATH, req_STR, fn_OK){
  104. var timeout_id, str;
  105. if(window.XMLHttpRequest){
  106. request = new XMLHttpRequest();
  107. if(request.overrideMimeType)
  108. request.overrideMimeType("text/plain;");
  109. }else{
  110. if(window.ActiveXObject){
  111. var sign_a = ['MSXML2.XMLHTTP.6.0',
  112. 'MSXML2.XMLHTTP.5.0',
  113. 'MSXML2.XMLHTTP.4.0',
  114. 'MSXML2.XMLHTTP.3.0',
  115. 'MSXML2.XMLHTTP',
  116. 'Microsoft.XMLHTTP'];
  117. for(var i=0, l=sign_a.length; i<l; i++)
  118. try{
  119. request = new ActiveXObject(sign_a[i]);
  120. i = l;
  121. }catch(e){}
  122. }
  123. }
  124. if(!request){
  125. handleError("Браузер не поддерживает WEB-запросы!");
  126. return;
  127. }
  128. request.onreadystatechange=function(){
  129. if(request.readyState == 4){
  130. if(request.status == 200){
  131. clearTimeout(timeout_id);
  132. fn_OK(request);
  133. }
  134. else{
  135. clearTimeout(timeout_id);
  136. if(request.status)
  137. handleError(request.statusText);
  138. else handleError("Ошибка передачи данных");
  139. }
  140. }
  141. }
  142. request.open("POST", CGI_PATH, true);
  143. request.send(req_STR);
  144. timeout_id = setTimeout(function(){
  145. request.onreadystatechange = null;request.abort();handleError("Time over");}, 5000);
  146. }
  147.  
  148. function setDate(date, dateStr){
  149. var tm = dateStr.split(':');
  150. if(tm.length != 3) return false;
  151. date.setSeconds(tm[2]);
  152. date.setMinutes(tm[1]);
  153. date.setHours(tm[0]);
  154. return true
  155. }
  156.  
  157. function _2(num){
  158. var A = num.toString();
  159. if(A.length > 1) return A;
  160. else return ("00" + A).slice(-2);
  161. }
  162.  
  163. function formatDate(date){
  164. if(date.toLocaleFormat) return date.toLocaleFormat("%d.%m.%Y");
  165. else
  166. return _2(date.getDate())+"."+_2(1+date.getMonth())+"."+date.getFullYear();
  167. }
  168.  
  169. function formatTime(date){
  170. if(date.toLocaleFormat) return date.toLocaleFormat("%H:%M:%S");
  171. else
  172. return _2(date.getHours())+":"+_2(date.getMinutes())+":"+_2(date.getSeconds());
  173. }
  174.  
  175. function parceReqStr(request){
  176. var i, l, lines, pair, parms, el;
  177. clearTimeout(Stimeout);
  178. clearTimeout(Rtimeout);
  179. lines = request.responseText.split('\n');
  180. for(i=0, l=lines.length; i<l; i++)
  181. if(lines[i].search('=') != -1){
  182. eval(lines[i]);
  183. parms = lines[i].split('=');
  184. if(el = $(parms[0])) el.innerHTML = eval(parms[0]);
  185. }
  186. var d = new Date();
  187. oldDate = d.getTime();
  188. delete(d);
  189. $('Date').innerHTML = formatDate(MskTime);
  190. if(typeof(M_time) != "undefined"){
  191. if(setDate(MskTime, M_time))
  192. $('Mtime').innerHTML = formatTime(MskTime);
  193. }
  194. if(typeof(S_time) != "undefined"){
  195. if(setDate(SidTime, S_time))
  196. $('Stime').innerHTML = formatTime(SidTime);
  197. }
  198. Stimeout = setTimeout(refreshTimer, Stimeout_rate);
  199. Rtimeout = setTimeout(sendR, Rtimeout_rate);
  200. function showVal(elId, val, bad, good){
  201. $(elId).innerHTML = Number(val).toFixed(1);
  202. var classname, absval = Math.abs(val);
  203. if(absval >= bad) classname = "Red";
  204. else if(absval < good) classname = "Green";
  205. else classname = "Yellow";
  206. $(elId).className = classname + " border";
  207. }
  208. if(PanelType == "meteo"){
  209. showVal("tempdiff", ValTout - ValTmir, 10, 5);
  210. showVal("windspeed", ValWind, 15, 10);
  211. if(Blast10 == " ") $('Blast10').innerHTML = "нет";
  212. if(Blast15 == " ") $('Blast15').innerHTML = "нет";
  213. }
  214. else if(PanelType == "BTA"){
  215. $('ACS_BTA').className = "border "+((ACS_BTA!="On")?"Yellow":"Green");
  216. $('P2_Mode').className = "border "+((P2_Mode=="Stop")?"Yellow":"Green");
  217. }
  218. }
  219.  
  220.  
  221.  
  222.  
  223. function stopTimers(){
  224. clearTimeout(Stimeout);
  225. clearTimeout(Itimeout);
  226. clearTimeout(Rtimeout);
  227. $('stop').innerHTML="Запустить обновление";
  228. $('stop').onclick=startTimers;
  229. }
  230.  
  231. function startTimers(){
  232. $('stop').innerHTML="Остановить обновление";
  233. $('stop').onclick=stopTimers;
  234. var d = new Date();
  235. oldDate = d.getTime();
  236. delete(d);
  237. refreshImage();
  238. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement