var fYear:Number;
var fMonth:Number;
var fDay:Number;
var fHours:Number;
var fMinutes:Number;
var fSeconds:Number;
var future

ate;
var utc:Number;
var dif:Number;
var sSrc:String;
var sVolume:Number;
//xml parsing
var xml:XML = new XML();
xml.load("config.xml");
xml.ignoreWhite = true;
xml.onLoad = function(success:Boolean)
{
if(success)
{
parse(xml);
}
}
function parse(xml:XML)
{
fYear = Number(xml.firstChild.firstChild.childNodes[0].childNodes[0].toString());
fMonth = Number(xml.firstChild.firstChild.childNodes[1].childNodes[0].toString()) -1;
fDay = Number(xml.firstChild.firstChild.childNodes[2].childNodes[0].toString());
fHours = Number(xml.firstChild.firstChild.childNodes[3].childNodes[0].toString());
fMinutes = Number(xml.firstChild.firstChild.childNodes[4].childNodes[0].toString());
fSeconds = Number(xml.firstChild.firstChild.childNodes[5].childNodes[0].toString());
utc = Number(xml.firstChild.firstChild.childNodes[6].childNodes[0].toString());
future = new Date(Date.UTC(fYear, fMonth, fDay, fHours, fMinutes, fSeconds));
sSrc = xml.firstChild.childNodes[1].childNodes[0].childNodes[0].toString();
sVolume = Number(xml.firstChild.childNodes[1].childNodes[1].childNodes[0].toString());
startUp();
}
//digits init
var nrs1:Array = new Array("zero","one","two","three","four","five","six","seven","eight","nine");
var nrs2:Array = new Array("zero","one","two","three","four","five");
var nrs3:Array = new Array("zero","one","two");
//seconds init
var prevS1:Number;
var prevS2:Number;
var idxS1:Number;
var idxS2:Number;
//minutes init
var prevM1:Number;
var prevM2:Number;
var idxM1:Number;
var idxM2:Number;
//hours init
var prevH1:Number;
var prevH2:Number;
var idxH1:Number;
var idxH2:Number;
//days init
var prevD1:Number;
var prevD2:Number;
var prevD3:Number;
var idxD1:Number;
var idxD2:Number;
var idxD3:Number;
//sound init
var tick:Sound = new Sound();
function playS()
{
tick.stop();
tick.start();
tick.setVolume(sVolume);
}
//booting up
function initialize()
{
tick.loadSound(sSrc, false);
var countDownTimer:Number = setInterval(countDown, 1000);
}
//setting start digits
function startUp()
{
var present

ate = new Date();
var distance:Number = future.getTime() - present.getTime();
var seconds :Number = Math.floor(distance/1000);
var minutes :Number = Math.floor(seconds/60);
var hours :Number = Math.floor(minutes/60);
var days :Number = Math.floor(hours/24);
seconds %= 60;
minutes %= 60;
hours %= 24;
if(distance <= 0)
{
return;
}
else
{
initialize();
}
var sDays:String = days.toString();
if(sDays.length == 1) sDays = "00" + sDays; else if(sDays.length == 2) sDays = "0" + sDays;
prevD1 = idxD1;
prevD2 = idxD2;
prevD3 = idxD3;
idxD1 = Number(sDays.charAt(0)) + 1;
idxD2 = Number(sDays.charAt(1)) + 1;
idxD3 = Number(sDays.charAt(2)) + 1;
if(idxD1 > 10) idxD1 = 10;
if(idxD2 > 10) idxD2 = 10;
if(idxD3 > 10) idxD3 = 10;
days1.gotoAndStop(nrs1[idxD1-1]);
days2.gotoAndStop(nrs1[idxD2-1]);
days3.gotoAndStop(nrs1[idxD3-1]);
//hours
var sHours:String = hours.toString();
if(sHours.length == 1) sHours = "0" + sHours;
idxH1 = Number(sHours.charAt(0));
idxH2 = Number(sHours.charAt(1));
if(idxH1 > 2) idxH1 = 0;
if(idxH2 > 9) idxH2 = 0;
hours1.gotoAndStop(nrs3[idxH1]);
hours2.gotoAndStop(nrs1[idxH2]);
idxH1++;
idxH2++;
if(idxH1 > 2) idxH1 = 0;
if(idxH2 > 9) idxH2 = 0;
prevH1 = idxH1;
prevH2 = idxH2;
//minutes
var sMinutes:String = minutes.toString();
if(sMinutes.length == 1) sMinutes = "0" + sMinutes;
prevM1 = idxM1;
prevM2 = idxM2;
idxM1 = Number(sMinutes.charAt(0)) + 1;
idxM2 = Number(sMinutes.charAt(1)) + 1;
minutes1.gotoAndStop(nrs2[idxM1-1]);
minutes2.gotoAndStop(nrs1[idxM2-1]);
if(idxM2 > 9) idxM2 = 0;
if(idxM1 > 5) idxM1 = 0;
//seconds
var sSeconds:String = seconds.toString();
if(sSeconds.length == 1) sSeconds = "0" + sSeconds;
prevS1 = idxS1;
prevS2 = idxS2;
idxS1 = Number(sSeconds.charAt(0)) + 1;
idxS2 = Number(sSeconds.charAt(1)) + 1;
seconds1.gotoAndStop(nrs2[idxS1-1]);
seconds2.gotoAndStop(nrs1[idxS2-1]);
if(idxS2 > 9) idxS2 = 0;
if(idxS1 > 5) idxS1 = 0;
}
//repeating countdown function
function countDown()
{
var present

ate = new Date();
var distance:Number = future.getTime() - present.getTime();
var seconds :Number = Math.floor(distance/1000);
var minutes :Number = Math.floor(seconds/60);
var hours :Number = Math.floor(minutes/60);
var days :Number = Math.floor(hours/24);
seconds %= 60;
minutes %= 60;
hours %= 24;
if(distance <= 0)
{
clearInterval(countDownTimer);
return;
}
var sDays:String = days.toString();
if(sDays.length == 1) sDays = "00" + sDays; else if(sDays.length == 2) sDays = "0" + sDays;
prevD1 = idxD1;
prevD2 = idxD2;
prevD3 = idxD3;
idxD1 = Number(sDays.charAt(0)) + 1;
idxD2 = Number(sDays.charAt(1)) + 1;
idxD3 = Number(sDays.charAt(2)) + 1;
if(idxD1 >= 10) idxD1 = 0;
if(idxD2 >= 10) idxD2 = 0;
if(idxD3 >= 10) idxD3 = 10;
if(prevD1 == idxD1) days1.stop(); else days1.gotoAndPlay(nrs1[idxD1]);
if(prevD2 == idxD2) days2.stop(); else days2.gotoAndPlay(nrs1[idxD2]);
if(prevD3 == idxD3) days3.stop(); else days3.gotoAndPlay(nrs1[idxD3]);
//hours
var sHours:String = hours.toString();
if(sHours.length == 1) sHours = "0" + sHours;
prevH1 = idxH1;
prevH2 = idxH2;
idxH1 = Number(sHours.charAt(0)) + 1;
idxH2 = Number(sHours.charAt(1)) + 1;
if(idxH1 > 2) idxH1 = 0;
if(idxH2 > 9) idxH2 = 0;
if(prevH1 != idxH1 && prevH1 == 1 && idxH1 == 0)
{
hours1.gotoAndPlay(nrs3[idxH1]);
hours2.gotoAndPlay("ZeroThree");
}
else if(prevH1 != idxH1) hours1.gotoAndPlay(nrs3[idxH1]);
if(prevH2 != idxH2 && prevH1 == idxH1) hours2.gotoAndPlay(nrs1[idxH2]);
else if(prevH2 != idxH2 && prevH1 != idxH1 && (idxH1 == 2 || idxH1 == 1)) hours2.gotoAndPlay(nrs1[idxH2]);
//minutes
var sMinutes:String = minutes.toString();
if(sMinutes.length == 1) sMinutes = "0" + sMinutes;
prevM1 = idxM1;
prevM2 = idxM2;
idxM1 = Number(sMinutes.charAt(0)) + 1;
idxM2 = Number(sMinutes.charAt(1)) + 1;
if(idxM1 > 5) idxM1 = 0;
if(idxM2 > 9) idxM2 = 0;
if(prevM1 != idxM1) minutes1.gotoAndPlay(nrs2[idxM1]);
if(prevM2 != idxM2) minutes2.gotoAndPlay(nrs1[idxM2]);
//seconds
var sSeconds:String = seconds.toString();
if(sSeconds.length == 1) sSeconds = "0" + sSeconds;
prevS1 = idxS1;
prevS2 = idxS2;
idxS1 = Number(sSeconds.charAt(0)) + 1;
idxS2 = Number(sSeconds.charAt(1)) + 1;
if(idxS1 > 5) idxS1 = 0;
if(idxS2 > 9) idxS2 = 0;
if(prevS1 != idxS1) seconds1.gotoAndPlay(nrs2[idxS1]);
if(prevS2 != idxS2)
{
playS();
seconds2.gotoAndPlay(nrs1[idxS2]);
}
}