1 function show_message(text, timeout)
3 if (typeof timeout == 'undefined') timeout = 3;
5 var div = $('#message_div');
8 div.attr('id', 'message_div').css('z-index','1000');
10 $(document.body).append(div);
17 window.setTimeout(hide_message,timeout*1000);
20 function hide_message(text)
22 $('#message_div').hide();
25 var errorwindow = false;
26 function show_error(text, timeout)
29 errorwindow = new Popup('Fehler', '500px', false, '<div id="errorbody"></div>');
30 errorwindow.setId('errorwindow');
31 $('#errorwindow').css('z-index','1000');
32 errorwindow.centerPopup();
34 errorwindow.openPopup();
37 $('#errorbody').html(text);
39 if (typeof timeout != 'undefined')
40 window.setTimeout(function(){errorwindow.closePopup()},timeout*1000);
43 function editable_callback(data)
46 var elem = $(data.$el);
47 var route = elem.attr('route');
48 var item_id = elem.attr('item_id');
49 if (typeof(route) == 'string' && typeof(item_id) == 'string')
52 name: elem.attr('name'),
53 content: data.content});
59 function make_editable(selector)
61 var list = $(selector);
66 callback: editable_callback
70 function site_url(path)
72 return SERVICE_ROOT + path;
77 return navigator.userAgent.indexOf('Android') > -1
78 || navigator.userAgent.indexOf('iPhone') > -1
79 || navigator.userAgent.indexOf('iPad') > -1;
83 $.fn.ltag = function() {
84 return this.prop("tagName").toLowerCase();
87 $.fn.center = function () {
88 this.css("position","absolute");
89 this.css("top", Math.max(0, ((window.innerHeight - $(this).outerHeight()) / 2) +
90 $(window).scrollTop()) + "px");
91 this.css("left", Math.max(0, (($(window).width() - $(this).outerWidth()) / 2) +
92 $(window).scrollLeft()) + "px");
96 $.fn.positionOn = function(element, align) {
97 return this.each(function() {
99 var position = element.offset();
101 var x = position.left;
102 var y = position.top;
104 if(align == 'right') {
105 x -= (target.outerWidth() - element.outerWidth());
106 } else if(align == 'center') {
107 x -= target.outerWidth() / 2 - element.outerWidth() / 2;
111 position: 'absolute',
119 $.invoke = function(name, parms, callback) {
120 if (typeof(parms) == 'string' && parms.length)
121 parms = 'route='+name+'&'+parms;
122 else if (typeof(parms) == 'object')
123 parms['route'] = name;
125 parms = 'route='+name;
132 if (data.redirect_login) {
133 show_message(data.error, 5);
134 setTimeout(function(){window.location.href = '/';}, 5000);
137 return show_error(data.error);
139 return show_error('Fehler im Backend zu "'+name+'" aufgetreten');
141 if (typeof(data.html) == 'object')
142 for (id in data.html) {
143 var elem = $('#'+id);
145 elem.html(data.html[id]);
148 if (typeof(data.values) == 'object')
149 for (id in data.values) {
150 var elem = $('#'+id);
152 elem.val(data.values[id]);
155 if (typeof(callback) == 'function')
156 return callback(data);
161 function Popup(title, width, height, body) {
162 return this.initialize(title, width, height, body);
166 initialize: function(title, width, height, body)
168 this.createPopup(width, height);
169 if (title) this.setTitle(title);
170 if (body) this.setBody(body);
174 createPopup: function(width, height)
176 this.popup = $('<div class="popup">');
177 this.popup.css('width', width ? width : 'auto');
178 this.popup.css('height', height ? height : 'auto');
179 this.popup.hide().css('z-index', '1000');
180 var titlediv = $('<div class="popup_title" style="position:relative;">');
181 titlediv.append($('<p class="popup_title"></p>'));
183 var closeimg = $('<img src="/pix/close.gif" title="Close">');
184 titlediv.append(closeimg);
186 this.popup.append(titlediv);
188 this.popup.append($('<div class="popup_body" style="clear:both;">'));
189 $('body').append(this.popup);
191 this.popup.udraggable({'handle': 'div.popup_title'});
192 this.popup.find('div.popup_title img').bind('click', this.closePopup.bind(this));
195 openPopup: function()
200 centerPopup: function()
202 this.popup.center().show();
205 closePopup: function()
210 setId: function(name)
212 this.popup.attr('id', name);
215 setTitle: function(title)
217 this.popup.find('div.popup_title p.popup_title').html(title);
220 setBody: function(body)
222 this.popup.find('div.popup_body').html(body);