﻿function brpWeerWidget(container) {
    this.container = container;
    this.stations =[];
    this.markers = [];
    this.weervisible = false;
    this.getStations();
    this.buienmarker = null;
    this.BaseHour = 1400;
    this.BaseTime = 00;
    this.Timer1;    
    this.initBuien(true);
    this.showBuien = false;
}
brpWeerWidget.prototype.getStations = function() {
    var me = this;
    $.getJSON( frpgetStationsUrl + '&format=json&callback=?', {}, function(data, textStatus){
			me.afterGetStations(data, textStatus);
		});
}
brpWeerWidget.prototype.afterGetStations= function(data, textStatus){

    function GetFilename(url){    
        if (url)    {       
            var m = url.toString().match(/.*\/(.+?)\./);       
            if (m && m.length > 1) {
                 return m[1];       
            }    
        }    
        return ""; 
    } 


    if(data) {
        this.stations = data;
        var Base = frpBaseUrl.substring(0,frpBaseUrl.indexOf('.nl/')+4);
        for(var i=0; i < this.stations.length; i++){
            if (this.stations[i].icon.indexOf('0.png') == -1){
            
                var icn = new Andes.Icon(Base + this.stations[i].icon, new Andes.Dimensions(66, 66), new Andes.Coordinate(13, 13));
                var mrkr = new Andes.Marker(new Andes.Coordinate(this.stations[i].x,this.stations[i].y), icn, { "title": this.stations[i].name + " temp:" +this.stations[i].temp});
                this.markers.push(mrkr);
                var fName = this.stations[i].icon.substr(0,this.stations[i].icon.lastIndexOf("/")+1);
                var tmpiconstr = Base + fName+'/temp/';
                if (this.stations[i].temp <0)
                    tmpiconstr += 'min'
                tmpiconstr += Math.round(this.stations[i].temp) + '.png';
                icn = new Andes.Icon(tmpiconstr, new Andes.Dimensions(24, 24), new Andes.Coordinate(12, 12));
                mrkr = new Andes.Marker(new Andes.Coordinate(this.stations[i].x,this.stations[i].y), icn, { "title": this.stations[i].name + " temp:" +this.stations[i].temp});
                this.markers.push(mrkr);
            }                        
        } 
        this.setClosestStation();     
        if(this.weervisible)
            this.drawStations(); 
    }
}

brpWeerWidget.prototype.drawStations= function(){
    if(this.markers && (this.markers.length > 0)) {
        for(var i=0; i < this.markers.length; i++)
            mw.map.addOverlay(this.markers[i]);        
    }
    this.weervisible = true;
}

brpWeerWidget.prototype.hideStations= function(){
    if(this.markers) {
        for(var i=0; i < this.markers.length; i++)
            mw.map.removeOverlay(this.markers[i]);	    
        this.weervisible = false;
    }
}

brpWeerWidget.prototype.toggleWeer= function(){
    if(this.weervisible)
       this.hideStations();
	else
	    this.drawStations();            
}

brpWeerWidget.prototype.setClosestStation= function(){
    var MinDist = 9999999;
    var Idx =-1;
    var Base = frpBaseUrl.substring(0,frpBaseUrl.indexOf('.nl/')+4);
    if(this.markers && (this.markers.length > 0)) {
        for(var i=0; i < this.markers.length; i++)

            if (MinDist > this.markers[i].crdNat.distanceTo(mw.map.vpCenterRd)) {
                MinDist = this.markers[i].crdNat.distanceTo(mw.map.vpCenterRd);
                Idx = i;
            }
	   if (Idx >=0){ 
	    this.container.attr('src',this.markers[Idx].icn.img);
        this.container.attr('alt',this.markers[Idx].title);
       }
    }
}

brpWeerWidget.prototype.initBuien = function(full){
   
        if (this.Timer1)  
            window.clearTimeout(this.Timer1);
        
        if (!this.showBuien)
        {
         if(this.buienmarker)
            mw.map.removeOverlay(this.buienmarker); 
         this.buienmarker = null;   
         return;
        }
        this.BaseTime +=5; 
        if (this.BaseTime > 55)     
        {
            this.BaseTime = 0;
            this.BaseHour += 100;
            if (this.BaseHour > 2300)
            {
                this.BaseHour = 1400;
            }
        }
        
       var url = 'http://www2.buienradar.nl/gps/maps_00000_%0.png'.format(this.BaseHour+this.BaseTime);
       var me = this;

    
    if (full)
    {
        if(this.buienmarker)
            mw.map.removeOverlay(this.buienmarker); 
            
        var LO = new Andes.Coordinate(-240077,114631);
        var RB = new Andes.Coordinate(496533,901395);
        var SC =mw.map.getZoomScale();
        var W = (RB.x - LO.x) / SC;
        var H = (RB.y - LO.y) / SC;
	    var dim =  new Andes.Dimensions(W, H);
	    var hot = new Andes.Coordinate(13, 13);
	    var icn = new Andes.Icon(url, dim ,hot);
        this.buienmarker = new Andes.Marker(new Andes.Coordinate(LO.x,RB.y), icn, { "title": "buienradar"});
        $(this.buienmarker.img.children[0]).css( {width: W, height: H} );
        $(this.buienmarker.img.children[0]).css( 'visibility','visible');
        mw.map.addOverlay(this.buienmarker);
    }
    else
    {
        $(this.buienmarker.img.children[0]).attr('src',url);
        this.buienmarker.redraw(true);
    }
    this.Timer1 = window.setTimeout(function() {me.initBuien(true);}, 1000);
    
}
