/** * Gibt einen als MySQL-Datum formatierten String des Datums zurück. * @returns {String} Als MySQL-Datum formatierter String. */ Date.prototype.toMySQLDate = function() { s = this.getFullYear() + "-"; s += (this.getMonth()+1) + "-"; s += this.getDate() + " "; s += this.getHours() + ":"; s += this.getMinutes() + ":"; s += this.getSeconds(); return s; }; /** * Setzt das Datum nach einem MySQL-formatierten Datumsstring. */ Date.prototype.setMySQLDate = function(date) { var year = /^(\d{4})/i var r = year.exec(date); this.setFullYear(r[1]); var parts = /(\d{1,2}).(\d{1,2}).(\d{1,2}).(\d{1,2}).(\d{1,2})$/; r = parts.exec(date); this.setMonth(parseInt(r[1])-1); this.setDate(r[2]); this.setHours(r[3]); this.setMinutes(r[4]); this.setSeconds(r[5]); }; /** * @namespace Diese Klasse liefert Veranstaltungen. * @author Jan Kossick, jankossick@online.de * @version 2.0 */ var Events = { /** * Speichert das Start-Datum. */ DateStart : new Date(), /** * Speichert das End-Datum. */ DateEnd : new Date(), /** * Kategorien für die Events, die geladen werden. * cinema * theatre * museum * art * other * yourbash */ EventCategories : { "cinema" : true, "theatre" : true, "museum" : true, "art" : true, "other" : true }, /** * Kategorien für die Yourbashs, die geladen werden. * concert * exhibition * theatre * sport * party * other */ YourbashCategories : { "concert" : true, "exhibition" : true, "theatre" : true, "sport" : true, "party" : true, "other" : true }, /** * Wählt eine Kategorie der Events aus oder ab. * @param {String} type Angabe, welche Kategorie aus- oder abgewählt werden * soll. {@see Events#EventCategories} * @returns {Boolean} Ob die Kategorie aus- oder abgewählt wurde. */ toggleEventCategories : function(type) { Events.EventCategories[type] = !Events.EventCategories[type]; Map.reload(); return Events.EventCategories[type]; }, /** * Wählt eine Kategorie der Yourbashs aus oder ab. * @param {String} type Angabe, welche Kategorie aus- oder abgewählt werden * soll. {@see Events#YourbashCategories} * @returns {Boolean} Ob die Kategorie aus- oder abgewählt wurde. */ toggleYourbashCategories : function(type) { Events.YourbashCategories[type] = !Events.YourbashCategories[type]; Map.reload(); return Events.YourbashCategories[type]; }, /** * Setzt das Startdatum neu. * @param {Number} [hour] Stunde * @param {Number} [minute] Minuten * @param {Number} [day] Tag des Monats * @param {Number} [month] Monat * @param {Number} [year] vierstellige Jahreszahl */ setDateStart : function(hour, minute, day, month, year) { if(typeof year != "undefined") this.DateStart.setFullYear(year); if(typeof month != "undefined") this.DateStart.setMonth(month-1); if(typeof day != "undefined") this.DateStart.setDate(day); if(typeof hour != "undefined") this.DateStart.setHours(hour); if(typeof minute != "undefined") this.DateStart.setMinutes(minute); this.DateStart.setSeconds(0); }, /** * Setzt das Enddatum neu. * @param {Number} [hour] Stunde * @param {Number} [minute] Minuten * @param {Number} [day] Tag des Monats * @param {Number} [month] Monat * @param {Number} [year] vierstellige Jahreszahl */ setDateEnd : function(hour, minute, day, month, year) { if(typeof year != "undefined") this.DateEnd.setFullYear(year); if(typeof month != "undefined") this.DateEnd.setMonth(month-1); if(typeof day != "undefined") this.DateEnd.setDate(day); if(typeof hour != "undefined") this.DateEnd.setHours(hour); if(typeof minute != "undefined") this.DateEnd.setMinutes(minute); this.DateEnd.setSeconds(0); }, /** * Liefert Orte in einer durch ein Rechteck begrenzten Region in denen zu * einem Datum Veranstaltungen stattfinden. * @param {google.maps.LatLngBounds} latlngBounds Ein geografisches * Rechteck. * @param {Function} callback Callback-Funktion, die bei Erhalt der Daten * aufgerufen wird. Übergibt ein Array aus Orten mit * folgenden Eigenschaften: * loc_id, lat, lng, name, category * @param {Number} [max=100] Maximale Anzahl an zurückzugebenden * Veranstaltungen. * @example * Events.getLocations(rect, function(orte) { * alert(orte[0].name); * }); */ getEvents : function(latlngBounds, callback, max) { if(typeof max == "undefined") var max=100; jQuery.post("ajax", { "action": "get_events", "latlng_bounds": latlngBounds.toString(), "start": this.DateStart.toMySQLDate(), "end": this.DateEnd.toMySQLDate(), "categories": jQuery.toJSON(Events.EventCategories), "max": max }, callback, "json" ); }, /** * Liefert Yourbashs in einer durch ein Rechteck begrenzten Region in denen * zu einem Datum Veranstaltungen stattfinden. * @param {google.maps.LatLngBounds} latlngBounds Ein geografisches * Rechteck. * @param {Function} callback Callback-Funktion, die bei Erhalt der Daten * aufgerufen wird. * @param {Number} [max=100] Maximale Anzahl an zurückzugebenden * Veranstaltungen. */ getYourbashs : function(latlngBounds, callback, max) { if(typeof max == "undefined") var max=100; jQuery.post("ajax", { "action": "get_yourbashs", "latlng_bounds": latlngBounds.toString(), "start": this.DateStart.toMySQLDate(), "end": this.DateEnd.toMySQLDate(), "categories": jQuery.toJSON(Events.YourbashCategories), "max": max }, callback, "json" ); }, /** * Liefert Orte in einer durch ein Rechteck begrenzten Region in denen zu * einem Datum von Nutzern erstellte Doodles stattfinden. * @param {String} vkeys Ein JSON-Array mit den Doodleschlüsseln. * @param {google.maps.LatLngBounds} latlngBounds Ein geografisches * Rechteck. * @param {Function} callback Callback-Funktion, die bei Erhalt der Daten * aufgerufen wird. Übergibt ein Array von Doodles mit * folgenden Eigenschaften: * doodle_id, lat, lng, name * @param {Number} [max=100] Maximale Anzahl an zurückzugebenden * Doodles. * @example * Events.getDoodles(vkeys, rect, dt, function(doodles) { * alert(doodles[0].name); * }); */ getDoodles : function(latlngBounds, callback, max) { if(typeof max == "undefined") var max=100; jQuery.post("ajax", { "action": "get_doodles", "start": Events.DateStart.toMySQLDate(), "end": Events.DateEnd.toMySQLDate(), "latlng_bounds": latlngBounds.toString(), "max": max, "vkeys": jQuery.toJSON(Events.getVisitkeys())}, callback, "json" ); }, /** * Liefert Schlüssel von in Cookies gespeicherten Doodles zurück. * @return Schlüssel */ getVisitkeys : function() { var cookies = document.cookie.split(';'); var vkeys = new Array(); for(var i = 0; i