//window.onload = SetDefaultDates;
//document.body.onload = SetDefaultDates;
var ImgCount = 0;
var ErrorCount = 0;
var NrOfImages =0;
var RadarImages = new Array();
var ErrorImages = new Array();
var ServerURL = 'http://img.landimeteo.ch/meteodata/radar/';
var activeAnimation;


function SetDefaultDates()
{
    var today = new Date();
    var ticks = Date.parse(today);
    var earlier = new Date(ticks - 3600000 )
    //document.getElementById('bisDatum').value   =  formatDate(today);
    document.getElementById('bisZeit').value    =  formatTime(today);
    document.getElementById('vonDatum').value   =  formatDate(earlier);
    document.getElementById('vonZeit').value    =  formatTime(earlier);
}

function PrepareAnimation() 
{
    window.clearTimeout(activeAnimation );
  
    var vonDatum  =   document.getElementById('vonDatum').value;
    var vonZeit   =   checkTimeFormat(document.getElementById('vonZeit').value);
    var bisDatum  =   document.getElementById('vonDatum').value;
    var bisZeit   =   checkTimeFormat(document.getElementById('bisZeit').value); 
    
    document.getElementById('vonZeit').value = checkTimeFormat(vonZeit)  ;
    document.getElementById('bisZeit').value = checkTimeFormat(bisZeit) ;
    
    if (ValidateDate(document.getElementById('vonDatum'))
     && ValidateTime(document.getElementById('vonZeit'))
     && ValidateTime(document.getElementById('bisZeit'))
     )
    {
       var startDateTime = CreateDate(vonDatum,vonZeit);
       var endDateTime = CreateDate(bisDatum,bisZeit);
       if (startDateTime > new Date() )
       {
        //Datum liegt in der Zukunft
        startDateTime = new Date();
       }
       if (endDateTime > new Date())
       {
        //Datum liegt in der Zukunft
        endDateTime = new Date();
       }
       if (startDateTime > endDateTime)
       {
            startDateTime = endDateTime
        
       }
       // auf Zehn-Minuten runden
       startDateTime = RoundDate(startDateTime);
       endDateTime = RoundDate(endDateTime);
       
       //document.getElementById('bisDatum').value   =  formatDate(endDateTime);
       document.getElementById('bisZeit').value    =  formatTime(endDateTime);
       document.getElementById('vonDatum').value   =  formatDate(startDateTime);
       document.getElementById('vonZeit').value    =  formatTime(startDateTime);
       
       LoadImages(startDateTime, endDateTime)
    }
}
 

 
function LoadImages(fromTime, toTime)
{
   var startTicks = Date.parse(fromTime);
   var endTicks = Date.parse(toTime);
   NrOfImages = (endTicks - startTicks) / 600000

   ImgCount = 0
   ErrorCount = 0
   RadarImages = new Array();
   ErrorImages = new Array();
   y =0
   for (i=startTicks; i < endTicks + 1; i = i + 600000 )
   {
        var testDate = new Date(i);      
        var img  = new Image;
        img.onload = ImageLoaded;
        img.onerror = ImageError;
        img.src = CreateURLFromDate(testDate);
        RadarImages[y] = img;
        y++
   }   
}

function RoundDate(date)
{
     var min = date.getMinutes();
     min = min-(min%10);
     date.setMinutes(min);
    return date;

}

function CreateURLFromDate(date)
{
        var Url = ServerURL
        Url += 'radar'
        Url +=  date.getFullYear() 
        Url +=  formatNr(date.getMonth() + 1)
        Url +=  formatNr(date.getDate()) 
        Url +=  formatNr(date.getHours()) 
        Url +=  formatNr(date.getMinutes()) 
        Url += '.gif';
        return Url;
}

function CreateDateFromURL(url)
{
   var imagename = url.substring(url.lastIndexOf("/radar")+1,url.length)
   var year = imagename.substr(5,4);
   var month = imagename.substr(9,2);
   var date= imagename.substr(11,2);
   var hour = imagename.substr(13,2);
   var minutes = imagename.substr(15,2);
   return date + '.' + month + '.' + year + ' ' + hour + ':' + minutes;
}

function ValidateDate(fld) 
{
    var RegExPattern = /([0-3][0-9]|[1-9])\.([1][0-2]|[1-9]|[0][1-9])\.\d{2,4}/;
    if ((fld.value.match(RegExPattern)) && (fld.value!='')) {
        document.getElementById('DatumFehler').style.display = "none";
       return true;
    } else {
        document.getElementById('DatumFehler').style.display = "block";
       fld.focus();
       
       return false;
    } 
}

function ValidateTime(fld) 
{
    var RegExPattern = /([0-2][0-9]|[0-9])\:([0-5][0-9]|[1-9])/;
    if ((fld.value.match(RegExPattern)) && (fld.value!='')) {
       document.getElementById('ZeitFehler').style.display = "none";
       return true;
    } else {
       document.getElementById('ZeitFehler').style.display = "block";
       fld.focus();
       return false;
    } 
}

function CreateDate(dateString,timeString)
{    
    var dateArray =     dateString.split(".")
    var timeArray =     timeString.split(":")
    if (dateArray[2].length == 2)
    {
	dateArray[2] = '20' + dateArray[2];
    }         
    var dateTime = new Date(parseInt(dateArray[2]),parseInt(dateArray[1])-1,parseInt(dateArray[0]),timeArray[0],timeArray[1],0,0)
	
    return dateTime;

}



function ImageLoaded()
{
    ImgCount++; 
    if (ImgCount + ErrorCount   > NrOfImages)
    {
        RadarAnimation(0);
    }
}

function ImageError()
{
    ErrorImages[ErrorCount] = this.src;
    ErrorCount++; 
    if (ImgCount + ErrorCount  > NrOfImages)
    {
    
        RadarAnimation(0);
    }
}

function RadarAnimation(i)
{
   var dontShow = false;
   if (i < RadarImages.length )
   {
       for (n=0; n < ErrorImages.length; n++)
       { 
            if (RadarImages[i].src  == ErrorImages[n] )
            {
                dontShow = true
            }
       }
       if (!dontShow)
       {
        document.getElementById("datum").innerHTML = CreateDateFromURL(RadarImages[i].src)
        document.images["radar"].src = RadarImages[i].src;
       }
        i++
         activeAnimation = window.setTimeout("RadarAnimation(" + i + ")" , 700);
   }
}

function formatNr(nr)
{
    nr = '0' + nr;
    if (nr.length > 2 )
    {
        nr = nr.substring(1,3);
    }
    return nr;
}

function formatDate(date)
{
    return  date.getDate() +  "." + (date.getMonth() +1) + "." +  date.getFullYear();
}

function formatTime(date)
{
    return date.getHours() + ":" +  formatNr(date.getMinutes());
}


function checkTimeFormat(zeit)
{

	
	if (zeit.length == 3 && zeit.indexOf(":") < 0 )
	{		
		
		zeit = zeit.substr(0, 1) + ":" + zeit.substr(1, 2);
		
	}
	if (zeit.length == 4 && zeit.indexOf(":") < 0 )
	{
		zeit = zeit.substr(0, 2) + ":" + zeit.substr(2, 2);		
	}
	return zeit

}