001.
002.
003.
004.
005.
006.
007.
008.
009.
010.
011.
012.
013.
014.
015.
016.
017.
018.
019.
020.
021.
022.
023.
024.
025.
026.
027.
028.
var
wind_dir:Array = [
'северный'
,
'северо-восточный'
,
'восточный'
,
'юго-восточный'
,
'южный'
,
'юго-западный'
,
'западный'
,
'северо-западный'
];
029.
030.
var
clouds:Array = [
'Ясно'
,
'Малооблачно'
,
'Облачно'
,
'Пасмурно'
];
031.
032.
var
precipitation:Array = [
''
,
''
,
''
,
''
,
'дождь'
,
'ливень'
,
'снег'
,
'снег'
,
'гроза'
,
''
,
'без осадков'
];
033.
034.
var
timeday:Array = [
'ночью'
,
'утром'
,
'днем'
,
'вечером'
];
035.
036.
var
weekday:Array = [
''
,
'Воскресение'
,
'Понедельник'
,
'Вторник'
,
'Среда'
,
'Четверг'
,
'Пятница'
,
'Суббота'
];
037.
038.
var
months:Array = [
''
,
'января'
,
'февраля'
,
'марта'
,
'апреля'
,
'мая'
,
'июня'
,
'июля'
,
'августа'
,
'сентября'
,
'октября'
,
'ноября'
,
'декабря'
];
039.
040.
var
current:Array;
041.
042.
var
lso:SharedObject;
043.
044.
var
id:Number;
045.
046.
var
delay:Number = 10000;
047.
048.
var
total:Number;
049.
050.
var
select:Number;
051.
052.
var
meteo:XML =
new
XML();
053.
meteo.ignoreWhite =
true
;
054.
056.
057.
058.
link.onRelease =
function
() {
060.
};
061.
062.
063.
function
renew() {
064.
lso = SharedObject.getLocal(
'meteo'
);
065.
lso.timesaved
=
new
Date().getTime();
066.
lso.flush();
067.
meteo.load(meteo_adress);
068.
069.
}
070.
071.
meteo.onLoad =
function
(success:Boolean) {
072.
success ? parse(
this
.firstChild.firstChild.firstChild) :
null
;
073.
return
;
074.
};
075.
076.
077.
function
parse(arg:XML) {
078.
079.
current = [];
080.
clearInterval(id);
081.
total = select=0;
082.
083.
var
na =
arg.attributes.sname.split(
'%'
);
084.
var
addr:String =
''
;
085.
var
lnum;
086.
for
(i=0; i<na.length;
i++) {
087.
lnum =
Number(
'0x'
+na[i])<128
? Number(
'0x'
+na[i])
: Number(
'0x'
+na[i])+848;
088.
addr +=
String.fromCharCode(lnum);
089.
}
090.
091.
sity.autoSize
=
'center'
;
092.
sity.text = addr;
093.
094.
095.
total = arg.childNodes.length;
096.
for
(
var
i = 0; i<total; i++) {
097.
098.
var
o:Object =
new
Object();
099.
var
curW:XML =
arg.childNodes[i];
100.
101.
var
str:String =
weekday[curW.attributes.weekday]+
' '
+curW.attributes.day+
' '
+months[curW.attributes.month];
102.
str +=
' - '
+timeday[curW.attributes.tod];
103.
o.today = str;
104.
o.daytime = Number(curW.attributes.tod);
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
var
aw:XML =
curW.childNodes[0];
115.
o.cloudsNum
= Number(aw.attributes.cloudiness);
116.
o.cloudsStr = clouds[aw.attributes.cloudiness];
117.
o.precipitationNum = Number(aw.attributes.precipitation);
118.
o.precipitationStr =
precipitation[aw.attributes.precipitation];
119.
120.
switch
(o.precipitationNum) {
121.
case
8 :
122.
o.power = aw.attributes.spower ==
'0'
?
'Возможна '
:
'Ожидается '
;
123.
break
;
124.
case
10 :
125.
o.power = aw.attributes.rpower ==
'0'
?
'Возможно '
:
'Ожидается '
;
126.
break
;
127.
default
:
128.
o.power = aw.attributes.rpower ==
'0'
?
'Возможен '
:
'Ожидается '
;
129.
}
130.
131.
aw =
curW.childNodes[1];
132.
o.pressureMin
= aw.attributes.min;
133.
o.pressureMax
= aw.attributes.max;
134.
135.
aw =
curW.childNodes[2];
136.
o.thermoMin
= Number(aw.attributes.min)>0?
'+'
+aw.attributes.min:aw.attributes.min;
137.
o.thermoMax = Number(aw.attributes.max)>0?
'+'
+aw.attributes.max:aw.attributes.max;
138.
139.
aw =
curW.childNodes[3];
140.
o.wind_dir
= Number(aw.attributes.direction);
141.
o.windMin = aw.attributes.min;
142.
o.windMax = aw.attributes.max;
143.
144.
aw = curW.childNodes[4];
145.
o.relwetMin = aw.attributes.min;
146.
o.relwetMax = aw.attributes.max;
147.
current.push(o);
148.
}
149.
150.
showInfo();
151.
}
152.
153.
154.
155.
156.
157.
158.
function
showInfo() {
159.
clearInterval(id);
160.
var
o:Object =
current[select];
161.
today.text =
o.today;
162.
phenomena.text
= o.cloudsStr+
'.\n'
+o.power+o.precipitationStr;
163.
termo.text = o.thermoMin+
'.. '
+o.thermoMax+
' C'
;
164.
pressure.text
=
'Давление '
+o.pressureMin+
'.. '
+o.pressureMax+
' мм. рт. ст.'
;
165.
relwet.text =
'Влажность '
+o.relwetMin+
'% - '
+o.relwetMax+
'%.'
;
166.
windspeed.text
= o.windMin+
' - '
+o.windMax+
' м/сек.'
;
167.
wind.arrow._rotation=o.wind_dir*45;
168.
weather.cloudiness.gotoAndStop(o.cloudsNum+1);
169.
weather.precipitation.gotoAndStop(o.precipitationNum);
170.
select++;
171.
select %= total;
172.
if
(!select) {
173.
var
timedif:Number =
Math.floor((
new
Date().getTime()-lso.timesaved)/1000);
174.
timedif>3600 ? renew()
:
null
;
175.
}
176.
id =
setInterval(showInfo, delay);
177.
}
178.