1 | /** |
---|
2 | * Ein bisschen Dynamik-Funktionalitaet fuer die Startseite |
---|
3 | * |
---|
4 | **/ |
---|
5 | |
---|
6 | $(function() { |
---|
7 | // Archiv-Button |
---|
8 | $("a.archiv-btn").toggle(function(){ |
---|
9 | $('#termine .archiv').slideDown(); |
---|
10 | //$(this).slideUp(); |
---|
11 | $(this).text("Vergangene Termine ausblenden"); |
---|
12 | }, function() { |
---|
13 | $('#termine .archiv').slideUp(); |
---|
14 | $(this).text("Vergangene Termine einblenden"); |
---|
15 | }); |
---|
16 | |
---|
17 | // Anmelde-Button |
---|
18 | anmeldung_zeigen = function() { |
---|
19 | $anmeldebox = $('<div class="anmelde-maske dynamisch"><h2>Anmelden</h2><p>Hier können Sie sich für eine Veranstaltung anmelden</p></div>'); |
---|
20 | $.get('/de/anmeldung.php?ajax', function(data) { |
---|
21 | form = $(data).find(".anmelde-maske").html(); |
---|
22 | $anmeldebox.append(form); |
---|
23 | |
---|
24 | // Termine aus Startseite extrahieren |
---|
25 | veranstaltungen = $("#termine .box.termin").not(".archiv .termin"); |
---|
26 | |
---|
27 | if(veranstaltungen.length > 1) { |
---|
28 | // Input-Box durch Chooser ersetzen |
---|
29 | $anmeldebox.find("input[name='veranstaltung']").replaceWith('<select name="veranstaltung"></select>'); |
---|
30 | $ver_select = $anmeldebox.find("select[name='veranstaltung']"); |
---|
31 | |
---|
32 | $.each(veranstaltungen, function() { |
---|
33 | name = $(this).find('h4').text(); |
---|
34 | datum = $(this).find('dd.termin').text(); |
---|
35 | |
---|
36 | $('<option/>').text(name).data({ |
---|
37 | 'ver_element': this, |
---|
38 | 'ver_datum': datum |
---|
39 | }).appendTo($ver_select); |
---|
40 | }); |
---|
41 | |
---|
42 | $terminbox = $anmeldebox.find("dd.termin"); |
---|
43 | $terminbox.find("input").replaceWith('<input type="hidden" name="termin">'); |
---|
44 | $terminbox.append("<span>leer</span>"); |
---|
45 | |
---|
46 | $ver_select.change(function() { |
---|
47 | if(d = $(this).find(':selected').data('ver_datum')) { |
---|
48 | $terminbox.find("input").val(d); |
---|
49 | $terminbox.find('span').text(d); |
---|
50 | } |
---|
51 | }).change(); |
---|
52 | } else if(veranstaltungen.length == 1) { |
---|
53 | // nur ein Termin angeboten: |
---|
54 | // statt chooser einfach fixe Vorgabe machen (keine Auswahlmoeglichkeit) |
---|
55 | $anmeldebox.find("input[name='veranstaltung']").val(veranstaltungen.find('h4').text()); |
---|
56 | $anmeldebox.find("input[name='termin']").val(veranstaltungen.find('dd.termin').text()); |
---|
57 | } |
---|
58 | |
---|
59 | // Abbrechen-Button mit Funktion befüllen |
---|
60 | anmeldung_abbrechen = function(){ |
---|
61 | a = confirm("Soll die Anmeldung verworfen werden?"); |
---|
62 | if(a) { |
---|
63 | $anmeldebox.slideUp(function(){ |
---|
64 | $anmeldebox.remove(); |
---|
65 | }); |
---|
66 | $("a.anmeldung-btn").text("Zu Führung anmelden").off().click(anmeldung_zeigen); |
---|
67 | return false; // ist eh egal da formular geloescht wird |
---|
68 | } else return false |
---|
69 | }; |
---|
70 | |
---|
71 | $("a.anmeldung-btn").text("Anmeldung abbrechen").off().click(anmeldung_abbrechen); |
---|
72 | $anmeldebox.find("input[type=reset]").click(anmeldung_abbrechen); |
---|
73 | |
---|
74 | // Submit-Button mit lightweight form checking client side befaehigen |
---|
75 | $anmeldebox.find("form").submit(function(){ |
---|
76 | i = ['veranstaltung', 'termin', 'anmelder_name', 'email_adresse']; |
---|
77 | $.each(i, function(){ |
---|
78 | ie = $anmeldebox.find("input[name='"+this+"']"); |
---|
79 | if(/^\s*$/.test(ie.val())) { |
---|
80 | alert("Bitte füllen Sie die Anmeldung vollständig aus"); |
---|
81 | ie.focus(); |
---|
82 | return false; |
---|
83 | } |
---|
84 | }); |
---|
85 | }); |
---|
86 | |
---|
87 | $anmeldebox.hide().insertBefore('.archiv').slideDown(); |
---|
88 | |
---|
89 | // Bugfix: Recaptcha kann nicht per JavaScript inserted werden, muss also |
---|
90 | // per AJAX nachgeladen werden |
---|
91 | t29_recaptcha_insert_id = "t29-recaptcha-insert"; |
---|
92 | $captcha_box = $anmeldebox.find(".t29-recaptcha").attr("id", t29_recaptcha_insert_id); |
---|
93 | publickey = $anmeldebox.find(".t29-recaptcha").data("publickey"); |
---|
94 | if($captcha_box.length) // only load if captchas enabled |
---|
95 | t29.load.js("http://www.google.com/recaptcha/api/js/recaptcha_ajax.js", function() { |
---|
96 | Recaptcha.create(publickey, t29_recaptcha_insert_id, { |
---|
97 | theme: "clean", |
---|
98 | callback: Recaptcha.focus_response_field |
---|
99 | }); |
---|
100 | }); |
---|
101 | }); |
---|
102 | |
---|
103 | // + load css |
---|
104 | t29.load.pagestyle("anmeldung"); |
---|
105 | |
---|
106 | return false; |
---|
107 | }; |
---|
108 | $("a.anmeldung-btn").click(anmeldung_zeigen); |
---|
109 | }); |
---|