
Array.prototype.copy = function() {
  return this.slice(0, this.length);
}


var cats = [
    {
        name: 'Bezirksvertretungen',
        contents : [
            { 
              a: 'b 0',
              name: 'Aachen-Mitte'
            },
            { 
              a: 'b 2',
              name: 'Aachen-Eilendorf'
            },
            { 
              a: 'b 3',
              name: 'Aachen-Haaren'
            },
            { 
              a: 'b 4',
              name: 'Aachen-Kornelim&uuml;nster/Walheim'
            },
            { 
              a: 'b 5',
              name: 'Aachen-Laurensberg'
            },
            { 
              a: 'b 6',
              name: 'Aachen-Richterich'
            },
            { 
              a: 'b-1',
              name: 'Aachen-Brand'
            },
        ],
    },
    {
        name: "Betriebsaussch&uuml;sse",
        contents: [
            { 
              a: 'baast',
              name: 'Aachener Stadtbetrieb'
            },
            { 
              a: 'bae',
              name: 'Eurogress'
            },
            { 
              a: 'bagbm',
              name: 'Geb&auml;udemanagement'
            },
            { 
              a: 'baku',
              name: 'Kultur'
            },
            { 
              a: 'bstvh',
              name: 'Theater / VHS'
            },
        ],
    },
    {
        name: 'Aussch&uuml;sse',
        contents : [
            { 
              a: 'awwea',
              name: 'Arbeitsausschuss'
            },
            { 
              a: 'fa',
              name: 'Finanzausschuss'
            },
            { 
              a: 'ha',
              name: 'Hauptausschuss'
            },
            { 
              a: 'kja',
              name: 'Kinder- Jugend- und Schulausschuss'
            },
            { 
              a: 'ma',
              name: 'Mobilit&auml;tsausschuss'
            },
            { 
              a: 'pla',
              name: 'Planungsausschuss'
            },
            { 
              a: 'pva',
              name: 'Personal- und Verwaltungsausschuss'
            },
            { 
              a: 'rpau',
              name: 'Rechnungspr&uuml;fungsausschuss'
            },
            { 
              a: 'scha',
              name: 'Schulausschuss (Sondersitzung)'
            },
            { 
              a: 'sga',
              name: 'Sozialausschuss'
            },
            { 
              a: 'spa',
              name: 'Sportausschuss'
            },
            { 
              a: 'uma',
              name: 'Klimaschutz- und Umweltausschuss'
            },
            { 
              a: 'wla',
              name: 'Wohnungs- und Liegenschaftsausschuss'
            },
        ]
    },
    {
        name: 'Sonstiges',
        contents : [
            { 
              a: 'büfo',
              name: 'B&uuml;rgerforum'
            },
            { 
              a: 'int',
              name: 'Integrationsrat'
            },
            { 
              a: 'lbr',
              name: 'Landschaftsbeirat'
            },
            { 
              a: 'rat',
              name: 'Rat der Stadt Aachen'
            },
            { 
              a: 'sb',
              name: 'Seniorenbeirat'
            },
        ]
    }
]

var calendar = function() {
    
    var user_cats = [];

    var cat_ids = [];
    
    // retrieve only the category shortcuts from the category structure
    $(document).ready(function() {
        
        function update_cats() {
            $(".c-ausschuss").each(function() {
               if (user_cats.indexOf(this.value)>-1) {
                   this.checked = true;
               } else {
                   this.checked = false;
               }
            });
        }

        for (var i=0; i<cats.length; i++) {
            var cat = cats[i];
            var html = "<h2>"+cat.name+"</h2>";
            $(html).appendTo("#catsi");
            for (var j=0; j<cat.contents.length; j++) {
                // store the shortcut
                cat_ids.push(cat.contents[j].a);
                user_cats.push(cat.contents[j].a);
            
                var el = cat.contents[j];
                var html='<input type="checkbox" checked="1" id="'+el.a+'" value="'+el.a+'" class="c-ausschuss" name="a"> \
                <label for="'+el.a+'">'+el.name+'</label><br />';
                $(html).appendTo("#catsi");
            }  
        };

        $(".c-ausschuss").change(function() {
            if (this.checked) {
                user_cats.push(this.value);
            } else {
                var idx = user_cats.indexOf(this.value);
                if (idx!=-1) {
                    user_cats.splice(idx,1);
                }                
            }
            load();
        })
        $("#togglecats").click(function() {
            if (user_cats.length==0) {
                user_cats = cat_ids.copy();
            } else {
                user_cats = [];
            }
            update_cats();
            load();
            return false;
        });
        load();
    })
    
    function on_load(data) {
        var actual_date = null;
        $("#calendar").empty();

        for (var i=0; i<data.length; i++) {
            var ev = data[i];
            if (ev.date!=actual_date) {
                $("<h2>").text(ev.date)
                .appendTo("#calendar");
                actual_date = ev.date;
            }
            var el = $("<div class='title'>"+ev.titel+"</div>")
            .append("<span class='action'>Info</span>");
            var adr = $("<span class='address'></span>");
            el.append(adr);
            $("<div>").attr({"class": 'status'})
            .append("<div class='time'>"+ev.time+"</div>")
            .append(el)
            .appendTo("#calendar");
        }
	set_ical_link();
    }
   
    function set_ical_link() {
        var url = "/api/events?f=ical&a="+user_cats.join(",");
	$("#ical").attr({href: url});
    }
    
    function load() {
        if (user_cats.length==0) {
            $("#calendar").empty();
	    set_ical_link();
            return;
        }
        var url = "/api/events?a="+user_cats.join(",");
        $.ajax({
            url:url,
            success: on_load,
            dataType:"json"
        })
    }
    return {};

}();


