Some more l10n strings
[ajatus.git] / js / ajatus.core.js
blobc9389b8ec09e2f3945fe2db07ac0e2e66f9f2ea3
1 /*
2 * This file is part of
4 * Ajatus - Distributed CRM
5 * @requires jQuery v1.2.1
6 *
7 * Copyright (c) 2007 Jerry Jalava <jerry.jalava@gmail.com>
8 * Copyright (c) 2007 Nemein Oy <http://nemein.com>
9 * Website: http://ajatus.info
10 * Licensed under the GPL license
11 * http://www.gnu.org/licenses/gpl.html
16 TODO Tags are links
17 TODO Additional fields [widget, support]
18 TODO Skype widget -bergie
19 TODO Formatter service
20 TODO XMMP & Email formatter
21 TODO Gravatar widget
22 TODO Implement arhive view and action
23 TODO Implement file attachments
24 TODO Documentation (API)
25 TODO Auto-saving to forms (after 5 mins)
26 TODO Context syntax tags (me:, attn:, by:, for:)
29 if (typeof console == 'undefined') {
30 var console = {};
31 console.log = function(str){return;};
34 (function($){
35 $.ajatus = {};
36 $.ajatus.application_content_area = null;
38 $.ajatus.version = [0, 0, 9];
40 $.ajatus.active_type = null;
42 $.ajatus.converter = {};
43 $.ajatus.converter.parseJSON = function (json_str) {
44 try
46 return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
47 json_str.replace(/"(\\.|[^"\\])*"/g, ''))) &&
48 eval('(' + json_str + ')');
50 catch (e)
52 return false;
55 $.ajatus.converter.toJSON = function (item,item_type) {
56 var m = {
57 '\b': '\\b',
58 '\t': '\\t',
59 '\n': '\\n',
60 '\f': '\\f',
61 '\r': '\\r',
62 '"' : '\\"',
63 '\\': '\\\\'
65 s = {
66 arr: function (x) {
67 var a = ['['], b, f, i, l = x.length, v;
68 for (i = 0; i < l; i += 1) {
69 v = x[i];
70 v = conv(v);
71 if (typeof v == 'string') {
72 if (b) {
73 a[a.length] = ',';
75 a[a.length] = v;
76 b = true;
79 a[a.length] = ']';
80 return a.join('');
82 bool: function (x) {
83 return String(x);
85 nul: function (x) {
86 return "null";
88 num: function (x) {
89 return isFinite(x) ? String(x) : 'null';
91 obj: function (x) {
92 if (x) {
93 if (x instanceof Array) {
94 return s.arr(x);
96 var a = ['{'], b, f, i, v;
97 for (i in x) {
98 v = x[i];
99 v = conv(v);
100 if (typeof v == 'string') {
101 if (b) {
102 a[a.length] = ',';
104 a.push(s.str(i), ':', v);
105 b = true;
108 a[a.length] = '}';
109 return a.join('');
111 return 'null';
113 str: function (x) {
114 if (/["\\\x00-\x1f]/.test(x)) {
115 x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) {
116 var c = m[b];
117 if (c) {
118 return c;
120 c = b.charCodeAt();
121 return '\\u00' +
122 Math.floor(c / 16).toString(16) +
123 (c % 16).toString(16);
126 return '"' + x + '"';
129 conv = function (x) {
130 var itemtype = typeof x;
131 switch(itemtype) {
132 case "array":
133 return s.arr(x);
134 break;
135 case "object":
136 return s.obj(x);
137 break;
138 case "string":
139 return s.str(x);
140 break;
141 case "number":
142 return s.num(x);
143 break;
144 case "null":
145 return s.nul(x);
146 break;
147 case "boolean":
148 return s.bool(x);
149 break;
153 var itemtype = item_type || typeof item;
154 switch(itemtype) {
155 case "array":
156 return s.arr(item);
157 break;
158 case "object":
159 return s.obj(item);
160 break;
161 case "string":
162 return s.str(item);
163 break;
164 case "number":
165 return s.num(item);
166 break;
167 case "null":
168 return s.nul(item);
169 break;
170 case "boolean":
171 return s.bool(item);
172 break;
173 default:
174 throw("Unknown type for $.ajatus.converter.toJSON");
178 $.ajatus.formatter = {};
179 $.ajatus.formatter.date = {};
180 $.ajatus.formatter.date.fix_length = function(number){
181 return ((number < 10) ? '0' : '') + number;
183 $.ajatus.formatter.date.is_iso8601 = function(value) {
184 if (typeof(value) != 'string')
186 return false;
188 var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
189 var isod = value.match(new RegExp(regexp));
190 if (isod[10])
192 return true;
194 return false;
196 $.ajatus.formatter.date.js_to_iso8601 = function(date) {
197 var str = "";
198 str += date.getFullYear();
199 str += "-" + $.ajatus.formatter.date.fix_length(date.getMonth() + 1);
200 str += "-" + $.ajatus.formatter.date.fix_length(date.getDate());
201 str += "T" + $.ajatus.formatter.date.fix_length(date.getHours());
202 str += ":" + $.ajatus.formatter.date.fix_length(date.getMinutes());
203 str += ":" + $.ajatus.formatter.date.fix_length(date.getSeconds());
204 //str += 'Z';
206 return str;
208 $.ajatus.formatter.date.iso8601_to_js = function(iso_date) {
209 var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
210 var isod = iso_date.match(new RegExp(regexp));
212 if ( !isod
213 || isod.length < 11)
215 return new Date();
218 var date = new Date(isod[1], 0, 1);
219 date.setMonth(isod[3] - 1);
220 date.setDate(isod[5]);
221 date.setHours(isod[7]);
222 date.setMinutes(isod[8]);
223 date.setSeconds(isod[10]);
225 return date;
227 $.ajatus.formatter.date.caldate_to_iso8601 = function(caldate, format, caltime, time_format) {
229 var format = format || "MDY/";
230 var time_format = time_format || "HMS:";
232 var cdparts = caldate.split(format.charAt(3));
233 var fparts = format.split("");
234 var date = new Date();
236 $.each(cdparts, function(i,v){
237 v = Number(v);
238 if (fparts[i] == 'M') {
239 date.setMonth(v-1);
241 if (fparts[i] == 'D') {
242 date.setDate(v);
244 if (fparts[i] == 'Y') {
245 date.setFullYear(v);
249 if (caltime)
251 var time_separator = time_format.charAt(time_format.length - 1);
252 var tfparts = time_format.split("");
253 var ctparts = caltime.split(time_separator);
255 $.each(ctparts, function(i,v){
256 v = Number(v);
257 if (tfparts[i] == 'H') {
258 date.setHours(v);
260 if (tfparts[i] == 'M') {
261 date.setMinutes(v);
263 if (tfparts[i] == 'S') {
264 date.setSeconds(v);
268 else
270 date.setHours(0);
271 date.setMinutes(0);
272 date.setSeconds(0);
275 return $.ajatus.formatter.date.js_to_iso8601(date);
277 $.ajatus.formatter.date.iso8601_to_caldate = function(iso_date, format) {
278 var format = format || "MDY/";
280 var date = $.ajatus.formatter.date.iso8601_to_js(iso_date);
281 var date_str = '';
283 var day = date.getDate();
284 var month = date.getMonth();
285 var year = date.getFullYear();
286 month++;
288 for (var i = 0; i < 3; i++) {
289 date_str += format.charAt(3) +
290 (format.charAt(i) == 'D' ? $.ajatus.formatter.date.fix_length(day) :
291 (format.charAt(i) == 'M' ? $.ajatus.formatter.date.fix_length(month) :
292 (format.charAt(i) == 'Y' ? year : '?')));
294 date_str = date_str.substring(format.charAt(3) ? 1 : 0);
296 return date_str;
298 $.ajatus.formatter.date.iso8601_to_caltime = function(iso_date, format) {
299 var format = format || "HMS:";
301 var date = $.ajatus.formatter.date.iso8601_to_js(iso_date);
302 var time_str = '';
304 var idparts = {
305 H: $.ajatus.formatter.date.fix_length(date.getHours()),
306 M: $.ajatus.formatter.date.fix_length(date.getMinutes()),
307 S: $.ajatus.formatter.date.fix_length(date.getSeconds())
309 var separator = format.charAt(format.length - 1);
310 var fparts = format.split("");
311 var utt1_parts = user_test_time1.split(utt1_seprt);
313 $.each(utt1_parts, function(i,v){
316 $.each(fparts, function(i,k){
317 time_str += fparts[k] + separator;
319 time_str = time_str.substring(1);
321 return time_str;
324 $.ajatus.tags = {
325 cache: [],
326 active: ''
328 $.extend($.ajatus.tags, {
329 init: function() {
330 $.ajatus.events.lock_pool.increase();
331 $.ajatus.tags.load();
332 $.ajatus.events.lock_pool.decrease();
333 $.ajatus.tags.update_app_tag_list();
335 load: function() {
336 var jqcouch = $.jqcouch.doc;
337 jqcouch.on_success = function(data, caller)
339 if (data.total_rows <= 0) {
340 return false;
343 $.each(data.rows, function(i,n){
344 $.ajatus.tags.cache.push(n.id);
348 jqcouch.get_all($.ajatus.preferences.client.tags_database);
350 update_cache: function() {
351 $.ajatus.tags.update_app_tag_list();
352 if ($.ajatus.tags.active != '') {
353 $.ajatus.tags.set_active($.ajatus.tags.active);
356 set_active: function(tag) {
357 var select = $('#application-tags select');
358 $('option', select).each(function(i,o){
359 if (o.value == tag) {
360 o.selected = 'selected';
363 $.ajatus.tags.active = tag;
365 update_app_tag_list: function() {
366 var select = $('#application-tags select');
367 select.html('');
368 $.each($.ajatus.tags.cache, function(i){
369 var opt = $('<option>'+this+'</option>').attr({
370 value: this
372 opt.appendTo(select);
374 var def = $('<option />').attr({
375 value: '',
376 selected: 'selected'
377 }).html($.ajatus.i10n.get('Global Tag') + '&nbsp;');
378 def.prependTo(select);
379 select.bind('change', function(e){
380 $.ajatus.tags.set_active(e.currentTarget.value);
383 search: function(query, max_res) {
384 // console.log("Search tags with: "+query);
385 var results = [];
387 if (typeof max_res != 'number') {
388 max_res = 20;
391 query = $.ajatus.tags._prepare_query(query);
393 var jqcv = $.jqcouch.view;
394 jqcv.on_success = function(data, caller) {
395 if (data.total_rows == 0) {
396 return [];
399 $.each(data.rows, function(i,n){
400 var doc = new $.ajatus.document(n);
401 results.push(doc);
405 var rel_view = 'if (doc.value.title.val.match(/\\\\b'+query+'(.*?)\\\\b/) ';
406 rel_view += '&& doc.value.metadata.archived.val == "" && doc.value.metadata.deleted.val != 1){';
407 rel_view += 'map( doc._id, doc.value );}';
408 jqcv.temp(
409 $.ajatus.preferences.client.tags_database, {
410 count: max_res
412 "$.ajatus.views.generate('"+rel_view+"')"
415 // console.log('results: ');
416 // console.log(results);
418 return results;
420 search_cache: function(query) {
421 // console.log("Search tags cache with: "+query);
422 var results = [];
423 query = $.ajatus.tags._prepare_query(query);
424 var re = new RegExp("\\b"+query+"(.*?)\\b");
426 $.each($.ajatus.tags.cache, function(i, tag){
427 if (tag.toString().match(re)) {
428 results.push(tag);
432 // console.log('results: ');
433 // console.log(results);
435 return results;
437 _prepare_query: function(query) {
438 query = query.replace(/[\(|\)|\.|\?|\;|\/]/, '');
439 query = query.replace('\\', '');
440 query = query.replace('*', '(.*?)');
442 return query;
444 get: function(tag, rev) {
445 var result = false;
447 var jqcouch = $.jqcouch.doc;
448 jqcouch.on_success = function(data, caller) {
449 var doc = new $.ajatus.document(data);
450 result = doc;
453 var args = {};
454 if (typeof rev != 'undefined') {
455 args['_rev'] = rev;
458 jqcouch.get($.ajatus.preferences.client.tags_database + '/' + tag, args);
460 return result;
462 exists: function(tag) {
463 var found = $.inArray(tag, $.ajatus.tags.cache);
464 if (found != -1) {
465 return true;
467 return false;
469 create: function(name, jqc) {
471 if ($.ajatus.tags.exists(name)) {
472 return false;
475 if (typeof jqc == 'undefined') {
476 var jqc = $.jqcouch.doc;
479 var tag = {
480 _id: name,
481 value: {
482 _type: 'tag',
483 title: {
484 val: name,
485 widget: {
486 name: 'text',
487 config: {}
492 tag = new $.ajatus.document(tag);
494 var now = $.ajatus.formatter.date.js_to_iso8601(new Date());
495 var new_metadata = {
496 created: now,
497 creator: $.ajatus.preferences.local.user.name,
498 revised: now,
499 revisor: $.ajatus.preferences.local.user.name
501 tag = $.ajatus.document.modify_metadata(tag, new_metadata);
502 jqc.save($.ajatus.preferences.client.tags_database, tag);
504 return true;
506 remove: function(tag, jqc) {
507 if (typeof jqc == 'undefined') {
508 var jqc = $.jqcouch.doc;
509 jqc.on_success = function(data, caller) {
510 var msg = $.ajatus.elements.messages.create(
511 $.ajatus.i10n.get('Object deleted'),
512 $.ajatus.i10n.get('Tag %s removed from Ajatus.', [tag])
517 jqc.del($.ajatus.preferences.client.tags_database + '/' + tag);
519 related: function(tags, skip_docs) {
520 var related = [];
521 var jqcv = $.jqcouch.view;
522 if (typeof skip_docs != 'object') {
523 var skip_docs = [];
525 jqcv.on_success = function(data, caller) {
526 if (data.total_rows == 0) {
527 return;
530 $.each(data.rows, function(i,n){
531 if ($.ajatus.utils.array.has_match(tags, n.value.tags.val)) {
532 if (skip_docs.length > 0) {
533 if ($.inArray(n.id, skip_docs) == -1) {
534 var doc = new $.ajatus.document(n);
535 related.push(doc);
537 } else {
538 var doc = new $.ajatus.document(n);
539 related.push(doc);
545 var rel_view = 'if (typeof(doc.value.tags) != "undefined" && doc.value.tags.val.length > 0 ';
546 rel_view += '&& doc.value.metadata.archived.val == "" && doc.value.metadata.deleted.val != 1){';
547 rel_view += 'map( doc.value._type, {"_id": doc._id, "_rev": doc._rev, "_type": doc.value._type,';
548 rel_view += '"title": doc.value.title,';
550 $.each($.ajatus.preferences.client.content_types, function(key,type){
551 if (type['title_item']) {
552 $.each(type['title_item'], function(i,part){
553 if (type.schema[part]) {
554 rel_view += '"'+part+'": doc.value.'+part+',';
560 rel_view += '"tags": doc.value.tags })}';
562 jqcv.temp(
563 $.ajatus.preferences.client.content_database, {},
564 "$.ajatus.views.generate('"+rel_view+"')"
567 return related;
571 $.ajatus.tabs = {};
572 $.ajatus.tabs.prepare = function(tab) {
573 tab.bind('mouseover', function(e){
574 tab.addClass('tabs-hover');
576 tab.bind('mouseout', function(e){
577 tab.removeClass('tabs-hover');
580 $.ajatus.tabs.set_active_by_hash = function(hash) {
581 //$.ajatus.debug('$.ajatus.tabs.set_active_by_hash('+hash+')');
583 $.ajatus.views.on_change(hash);
585 var views_tab_holder = $('#tabs-views ul');
586 var app_tab_holder = $('#tabs-application ul');
588 var selected_tab = jQuery('li a[@href$="' + hash + '"]', views_tab_holder).parent();
589 if (selected_tab[0] != undefined) {
590 // console.log('views selected_tab:');
591 // console.log(selected_tab);
592 jQuery('li', views_tab_holder).removeClass('tabs-selected').blur();
593 jQuery('li', app_tab_holder).removeClass('tabs-selected').blur();
594 selected_tab.addClass('tabs-selected').focus();
595 } else {
596 selected_tab = jQuery('li a[@href$="' + hash + '"]', app_tab_holder).parent();
597 // console.log('app selected_tab:');
598 // console.log(selected_tab);
599 if (selected_tab[0] != undefined) {
600 jQuery('li', views_tab_holder).removeClass('tabs-selected').blur();
601 jQuery('li', app_tab_holder).removeClass('tabs-selected').blur();
602 selected_tab.addClass('tabs-selected').focus();
603 } else {
604 jQuery('li', views_tab_holder).removeClass('tabs-selected').blur();
605 jQuery('li', app_tab_holder).removeClass('tabs-selected').blur();
609 $.ajatus.tabs.on_click = function(e) {
610 var trgt = target(e);
611 jQuery("li", parent(e)).removeClass("tabs-selected").index(trgt);
612 jQuery(trgt).addClass("tabs-selected");
614 var new_hash = jQuery('a', trgt)[0].hash;
615 location.hash = new_hash;
616 $.ajatus.history.update(new_hash);
617 $.ajatus.views.on_change(new_hash);
619 function parent(event) {
620 var element = event.target;
621 if (element)
623 if (element.tagName == "UL")
625 return element;
628 while(element.tagName != "UL")
630 element = element.parentNode;
633 return element;
636 function target(event) {
637 var element = event.target;
638 if (element)
640 if (element.tagName == "UL")
642 element = jQuery(element).find('li').eq(0);
643 return element;
646 while(element.tagName != "LI")
648 element = element.parentNode;
651 return element;
655 $.jqcouch.on_error = function(request,caller) {
656 $.ajatus.ajax_error(request, caller);
658 $.jqcouch.on_success = function(data,caller) {
659 $.ajatus.ajax_success(data, caller);
662 $.ajatus.security_pass = function() {
663 try {
664 netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead UniversalBrowserWrite UniversalFileRead");
665 } catch (e) {
666 alert("Permission UniversalBrowserRead denied. with error "+e);
670 $.ajatus.init = function(element, options) {
671 //$.ajatus.security_pass();
673 var application_element = $(element);
674 $.ajatus.application_element = application_element;
675 $.ajatus.application_content_area = $('#middle #content', $.ajatus.application_element);
676 $.ajatus.application_dynamic_elements = $('#dynamic-elements', $.ajatus.application_element);
678 $.ajatus.preferences.client.server_url = window.location.protocol + '//' + document.hostname + (window.location.port != '' ? ':'+window.location.port : '') + '/';
680 $.ajatus.preferences.client = $.extend({}, $.ajatus.preferences.client_defaults, options);
681 $.jqcouch.server_url = $.ajatus.preferences.client.server_url;
683 var a_db_suffix = $.ajatus.preferences.client.application_database_identifier != '' ? '_db' : 'db';
684 $.ajatus.preferences.client.application_database = 'ajatus_' + $.ajatus.preferences.client.application_database_identifier + a_db_suffix;
685 $.ajatus.preferences.client.content_database = $.ajatus.preferences.client.application_database + '_content';
686 $.ajatus.preferences.client.tags_database = $.ajatus.preferences.client.application_database + '_tags';
688 $.ajaxSetup({
689 type: "GET",
690 url: $.ajatus.preferences.client.server_url,
691 global: false,
692 cache: false,
693 dataType: "json"
696 $('#top #new-item-button', application_element).bind('click', function(e){
697 $.ajatus.views.system.create.render($.ajatus.active_type);
700 $.ajatus.installer.is_installed();
701 if ($.ajatus.installer.installed == false) {
702 var status = $.ajatus.installer.install();
703 $.ajatus.debug("Installer finished with status: "+status);
704 if (status) {
705 window.location = window.location + "#view.preferences";
707 } else {
708 $.ajatus.start();
710 // else
711 // {
712 // $.ajatus.installer.uninstall();
713 // }
716 $.ajatus.start = function() {
717 $.ajatus.events.lock_pool.increase();
718 $.ajatus.locker = new $.ajatus.events.lock({
719 watch: {
720 validate: function(){return $.ajatus.events.lock_pool.count == 0;},
721 interval: 200,
722 safety_runs: 0
724 on_release: function(){
725 $.ajatus.application_element.addClass('ajatus_initialized');
727 // var trs = $.ajatus.i10n.get('Test %s', ['one']);
728 // console.log("$.ajatus.i10n.get('Test %s', ['one']): "+trs);
729 // var pts = $.ajatus.i10n.get('%d comment', [2], 'comment');
730 // console.log("$.ajatus.i10n.get('%d comment', [2], 'comment'): "+pts);
731 // var pts = $.ajatus.i10n.get('%d comment in %d doc', [1, 3]);
732 // console.log("$.ajatus.i10n.get('%d comment in %d doc', [1, 3]): "+pts);
733 // var pts = $.ajatus.i10n.get('%d comment in %d doc', [2, 1]);
734 // console.log("$.ajatus.i10n.get('%d comment in %d doc', [2, 1]): "+pts);
736 // $.ajatus.toolbar.init();
737 // $.ajatus.toolbar.add_item('Test', function(){console.log('test item clicked');});
738 // $.ajatus.toolbar.add_item('Test 2', function(){console.log('test2 item clicked');});
739 // $.ajatus.toolbar.add_item('Preferences', 'images/icons/preferences.png', function(){console.log('preferences item clicked');});
740 // $.ajatus.toolbar.show();
742 var show_frontpage = true;
743 if ( $.ajatus.history
744 && $.ajatus.history.enabled)
746 show_frontpage = !$.ajatus.history.check();
749 if (show_frontpage) {
750 $.ajatus.views.system.frontpage.render();
755 var preference_loader = new $.ajatus.preferences.loader;
756 preference_loader.load();
758 if ($.ajatus.preferences.client.language == null) {
759 var lang = 'en_GB';
760 if (typeof($.ajatus.preferences.local.localization) != 'undefined') {
761 lang = $.ajatus.preferences.local.localization.language;
763 $.ajatus.preferences.client.language = lang;
765 $.ajatus.i10n.init($.ajatus.preferences.client.language);
767 $('#header .app_version', $.ajatus.application_element).html($.ajatus.version.join('.'));
768 $('#header .tagline', $.ajatus.application_element).html($.ajatus.i10n.get('Distributed CRM'));
769 $('#new-item-button').text($.ajatus.i10n.get('new'));
771 $.ajatus.extensions.init({
772 on_ready: function(){
773 $.ajatus.tags.init();
774 $.ajatus.widgets.init();
775 $.ajatus.views.init();
777 $.ajatus.active_type = $.ajatus.preferences.client.content_types['note'];
779 // Release the first lock
780 $.ajatus.events.lock_pool.decrease();
784 $.ajatus.elements.messages.set_holder();
786 window.onbeforeunload = function() {
787 if ($.ajatus.events.named_lock_pool.count('unsaved') > 0) {
788 return "Reason: You have unsaved changes.";
793 $.ajatus.ajax_error = function(request, caller) {
794 $.ajatus.debug("Ajax error request.status: "+request.status);
795 if (typeof caller != 'undefined') {
796 $.ajatus.debug("Caller method: "+caller.method);
797 $.ajatus.debug("Caller action:");
798 $.ajatus.debug(caller.action);
799 if (caller.args != undefined) {
800 $.ajatus.debug("Caller args:");
801 $.ajatus.debug(caller.args);
805 if (request.responseText != '') {
806 var response = eval("(" + request.responseText + ")");
807 $.ajatus.debug('response.error.reason: '+response.error.reason);
810 $.ajatus.ajax_success = function(data, caller) {
811 $.ajatus.debug("Ajax success");
812 if (typeof caller != 'undefined')
814 $.ajatus.debug("Caller method: "+caller.method);
815 $.ajatus.debug("Caller action: "+caller.action);
816 if (typeof caller.args != 'undefined') {
817 $.ajatus.debug("Caller args: "+caller.args);
820 $.ajatus.debug("data: "+data);
822 return false;
825 $.ajatus.debug = function(msg, title, type) {
826 if ($.ajatus.preferences.client.debug == true) {
827 if (typeof(console.log) != 'undefined') {
828 console.log(msg);
833 $.fn.initialize_ajatus = function(options) {
834 if (!$(this).is('.ajatus_initialized')) {
835 return new $.ajatus.init(this, options);
839 })(jQuery);
841 function initialize_ajatus() {
842 jQuery('#application').initialize_ajatus({
843 debug: true,
844 //language: 'fi_FI',
845 custom_views: [
846 //'test'
848 application_url: '/_utils/ajatus_dev/', // '/_utils/ajatus/'
849 application_database_identifier: 'dev' // 'stable'
853 jQuery(document).ready(function() {
854 try{
855 initialize_ajatus();
856 } catch(e) {
857 alert("could not initialize ajatus! Reason: "+e);