/** * @namespace Diese Klasse stellt Eingabemöglichkeiten zur Verfügung. * @author Jan Kossick, jankossick@online.de * @version 2.0 * @requires http://maps.google.com/maps/api/js * @requires Info * @requires Events * @requires Map */ var Input = { /** * Interval, dass Zeit in Stunden zwischen Start- und Enddatum angibt beim * automatischen Setzen. */ Interval : 8, /** * Ändert den Datepicker und die Uhrzeit für das Startdatum. * Achtung! Ändert auch das Enddatum mit um {@see Input.Interval} Stunden. * @param date {Date} Das zu setzende Datum. */ triggerStartDate : function(date) { jQuery('#input #hour').val(date.getHours()); jQuery('#input #date').datepick('setDate', [date]); }, /** * Ändert den Datepicker und die Uhrzeit für das Enddatum. * @param date {Date} Das zu setzende Datum. */ triggerEndDate : function(date) { jQuery('#input #hour_to').val(date.getHours()); jQuery('#input #date_to').datepick('setDate', [date]); }, /** * Gibt den Container des Inputbereiches als DOM-Element zurück. * @returns {Object} DOM-Element des Inputbereiches. */ getContainer : function() { return document.getElementById('input'); }, /** * Zeigt den Eingabebereich an. */ show : function() { jQuery('#input').show(); }, /** * Blendet den Eingabebereich aus. */ hide : function() { jQuery('#input').hide(); }, /** * Setzt den Eingabefokus auf das Adressfeld. */ focus : function() { jQuery('#input #address').focus(); }, /** * Gibt Eigenschaften des Inputbereiches zurück. * Mögliche Selektoren: * #nav Navigationsbereich * #search Suchbereich * #address Adressfeld * #date Datumsfeld * #hour Stundenauswahl * #find Findenbutton * #social Social Media-Bereich * @param {String} selektor CSS-Selektor. Ist der Selektor leer, wird die * Eigenschaft direkt vom Infowindow gelesen. * @param {String} Name der Eigenschaft * @returns {String} Wert der Eigenschaft */ getCSS : function(selektor, name) { return jQuery("#input " + selektor).css(name); }, /** * Kann die Eigenschaften des Inputbereiches anpassen. * Mögliche Selektoren: * #nav Navigationsbereich * #search Suchbereich * #address Adressfeld * #date Datumsfeld * #hour Stundenauswahl * #find Findenbutton * #social Social Media-Bereich * @param {String} selektor CSS-Selektor. Ist der Selektor leer, wird die * Eigenschaft direkt auf den Inputbereich angewendet. * @param {String} Name der Eigenschaft * @param {String} Wert der Eigenschaft */ setCSS : function(selektor, name, value) { jQuery("#input " + selektor).css(name, value); }, /** * Lädt die SocialButtons. */ loadSocials : function() { jQuery(window).load(function() { /* FLATTR */ (function() { var s = document.createElement('script'), t = document.getElementsByTagName('script')[0]; s.type = 'text/javascript'; s.async = true; s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto'; t.parentNode.insertBefore(s, t); })(); /* Facebook */ (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); /* Google+ */ window.___gcfg = {lang: 'de'}; (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })(); /* Twitter */ !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs"); }); } }; { /* jQuery Datepicker */ jQuery('#input #date').datepick({ onSelect: function(dates) { dates[0].setHours(jQuery('#input #hour').val()); Events.setDateStart( dates[0].getHours(), 0, dates[0].getDate(), dates[0].getMonth()+1, dates[0].getFullYear() ); // Enddatum auf 8 Stunden später stellen. // Dadurch entfällt auch das Map.reload(), da es sowieso ausgeführt wird. Input.triggerEndDate(new Date(Date.parse(dates[0])+(Input.Interval*60*60*1000))); } }); jQuery('#input #date_to').datepick({ onSelect: function(dates) { dates[0].setHours(jQuery('#input #hour_to').val()); Events.setDateEnd ( dates[0].getHours(), 0, dates[0].getDate(), dates[0].getMonth()+1, dates[0].getFullYear() ); Map.reload(); } }); /* Stunden */ jQuery('#input #hour').bind('change', function() { Events.setDateStart(jQuery('#input #hour').val()); Input.triggerEndDate(new Date(Date.parse(Events.DateStart)+(Input.Interval*60*60*1000))); Map.reload(); }); jQuery('#input #hour_to').bind('change', function() { Events.setDateEnd(jQuery('#input #hour_to').val()); Map.reload(); }); /* Adressfeld */ jQuery('#input #address').bind('keyup', function(e) { if(e.which==13) jQuery('#input #find').click(); }); jQuery('#input #find').bind('click', function() { Map.setAddress(jQuery('#input #address').val()); }); }