﻿

var resLoader = new Class({
    Implements: Options,
    options: {
        rooms: null,
        options: null,
        eventsOfDay: null

    },
    initialize: function(options) {
        this.setOptions(options);
        this.externalevents = null;
    },

    init: function() {

        this.loadRooms();

    },

    loadRooms: function() {

        var jsonRequest = new Request.JSON({ url: "../pluginReservation/ajax.aspx?action=getRooms&x=" + new Date().getMilliseconds(), onComplete: function(rooms) {

            this.options.rooms = rooms;

            $('myElement').fireEvent('click', $('anElement'), 1000);
        }
        }).get();
    },

    /* gibt alle unterräume eines raumes zurück */
    getSubrooms: function(parentid) {

        var subrooms = new Array();

        for (var i = 0; i < this.options.rooms.length; i++) {
            var r = this.options.rooms[i];

            if (r.ParentRoomID == parentid) {
                subrooms.push(r);
            }
        }

        return subrooms;
    },

    /* gibt events eines tages zurück (berücksichtigt auch Vor und Nachlaufzeit) */
    getEventsByDay: function(date) {

        var eventsByDay = new Array();

        for (var i = 0; i < this.options.events.length; i++) {

            var e = this.options.events[i];

            //alert(e.StartDate.getMonth() + "==" + date.getMonth());

            if (e.DateRealStart.getDate() == date.getDate() && e.DateRealStart.getMonth() == date.getMonth() && e.DateRealStart.getFullYear() == date.getFullYear()) {
                eventsByDay.push(e);
            } else if (e.DateRealEnd.getDate() == date.getDate() && e.DateRealEnd.getMonth() == date.getMonth() && e.DateRealEnd.getFullYear() == date.getFullYear()) {
                eventsByDay.push(e);
            } else if (e.DateRealStart < date && e.DateRealEnd > date) {
                eventsByDay.push(e);
            }
        }

        return eventsByDay;
    },

    /* gibt events eines tages zurück */
    getRunningEventsByDay: function(date) {

        var eventsByDay = new Array();

        for (var i = 0; i < this.options.events.length; i++) {

            var e = this.options.events[i];

            //alert(e.StartDate.getMonth() + "==" + date.getMonth());

            if (e.StartDate.getDate() == date.getDate() && e.StartDate.getMonth() == date.getMonth() && e.StartDate.getFullYear() == date.getFullYear()) {
                eventsByDay.push(e);
            } else if (e.EndDate.getDate() == date.getDate() && e.EndDate.getMonth() == date.getMonth() && e.EndDate.getFullYear() == date.getFullYear()) {
                eventsByDay.push(e);
            } else if (e.StartDate < date && e.EndDate > date) {
                eventsByDay.push(e);
            }
        }

        return eventsByDay;
    },

    loadPublicEvents: function(date) {

        var eventsByDay = this.getRunningEventsByDay(date);

        var datestr = date.getDate() + "." + (date.getMonth() + 1) + "." + date.getFullYear();

        var region_date = $('region_date');
        if (region_date != null) {
            var str = preZero(date.getDate()) + ". " + getMonthname(date.getMonth()) + " " + date.getFullYear();
            region_date.innerHTML = "am " + str;

        }


        var datestr2 = formatDate(date);

        var extcon = $('region_events');

        var html = "";
        for (var i = 0; i < eventsByDay.length; i++) {

            var ev = eventsByDay[i];
            if (ev.PublicityState == 1) {

                var roomname = "";
                for (var x = 0; x < this.options.rooms.length; x++)
                    if (this.options.rooms[x].ID == ev.RootRoomID)
                    roomname = this.options.rooms[x].Name;

                html += "<div id=\"exttitle" + ev.ID + "\"  class=\"regionevent\" style=\"display:block\" title='" + formatDate(ev.StartDate) + "'>";
                html += "<div class=\"title\">" + roomname + ", " + formatTime(ev.StartDate) + " Uhr </div>";
                html += "<div class=\"description\">" + ev.Name + "</div>";
                html += "<div class=\"spacer\">&nbsp;</div>";
                html += "</div>";
            }


        }

        if (html.length > 0)
            extcon.innerHTML = html;
        else
            extcon.innerHTML = "<div class=\"text\" style=\"padding:5px;text-align:center;font-size:11px;line-height:15px;\">Es finden keine öffentlichen Veranstaltungen an diesem Tag statt.</div>";



        return eventsByDay;

    },

    loadExternalEvents: function(date) {


        var datestr = date.getDate() + "." + (date.getMonth() + 1) + "." + date.getFullYear();

        var region_date = $('region_date');
        if (region_date != null) {
            var str = preZero(date.getDate()) + ". " + getMonthname(date.getMonth()) + " " + date.getFullYear();
            region_date.innerHTML = "am " + str;

        }


        var datestr2 = formatDate(date);

        var extcon = $('region_events');

        for (var i = 0; i < extcon.childNodes.length; i++) {
            var div = extcon.childNodes[i];

            if (div.title == datestr2) {
                div.style.display = 'block';

            } else { div.style.display = "none"; }
        }

        return;
        //var obj = JSON.decode('[{"DSN":"Events_DSN","ID":"19249","CategoryID":"237","CategoryName":"Vereine","ProjektID":"83","Auswahl":"0","Type":"0","HTML":"","XML":"","XSLPath":"","Title":"Törmleparty","Place":"Vaduzer Saal","Time":"ab 20 Uhr (Türöffnung 19.30 Uhr)","Organizer":"","TemplateName":"","Active":true,"isToday":true,"isTakingPlace":false,"CreationDate":new Date(-62135596800000),"From":new Date(1234479600000),"Until":new Date(1234479600000),"FromShort":"13.02.2009","UntilShort":"13.02.2009","FromNormal":"13. Februar 2009","UntilNormal":"13. Februar 2009","FromLong":"Freitag, 13. Februar 2009","UntilLong":"Freitag, 13. Februar 2009","Duration":"00:00:00","TextImages":[],"Documents":[]}]');
        //alert(obj[0].Title);


        var eventsByDay = new Array();

        // alert(this.externalevents);
        if (this.externalevents == null)
            return;

        for (var i = 0; i < this.externalevents.length; i++) {

            var e = this.options.events[i];

            //alert(e.StartDate.getMonth() + "==" + date.getMonth());

            if (e.StartDate.getDate() == date.getDate() && e.StartDate.getMonth() == date.getMonth() && e.StartDate.getFullYear() == date.getFullYear()) {
                eventsByDay.push(e);
            } else if (e.EndDate.getDate() == date.getDate() && e.EndDate.getMonth() == date.getMonth() && e.EndDate.getFullYear() == date.getFullYear()) {
                eventsByDay.push(e);
            } else if (e.StartDate < date && e.EndDate > date) {
                eventsByDay.push(e);
            }
        }

        return eventsByDay;

        return;


        $('debug').innerHTML = "http://192.168.0.7/Applications/Reservierungsverwaltung/ReservationOnline/pluginReservation/ajax.aspx?action=getExternalEventsByDay&pid=83&d=" + datestr + "&y=" + new Date().getMilliseconds();


        var jsonRequest6 = new Request.JSON({ url: "http://192.168.0.7/Applications/Reservierungsverwaltung/ReservationOnline/pluginReservation/ajax.aspx?action=getExternalEventsByDay&pid=83&d=" + datestr + "&y=" + new Date().getMilliseconds(), onComplete: function(res) {

            alert(res);

            //$('myElement').fireEvent('click', $('anElement'), 1000);
        }
        }).send();


    }



});
