Added license header
[ajatus.git] / js / ajatus.extensions.js
blob9036011e48e11caa70927541f70deba648b57608
1 /*
2  * This file is part of
3  *
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
12  * 
13  */
15 (function($){
16     $.ajatus = $.ajatus || {};
17     $.ajatus.extension = $.ajatus.extension || {};
18     
19     $.ajatus.extensions = {
20         loaded: [],
21         lock: false
22     };
23     $.extend($.ajatus.extensions, {
24         init: function(options){
25             options = $.extend({
26                 on_ready: function(){return;}
27             }, options || {});
28             
29             $.ajatus.events.named_lock_pool.increase('init_extensions');
30             $.ajatus.extensions.lock = new $.ajatus.events.lock({
31                 watch: {
32                     validate: function(){return $.ajatus.events.named_lock_pool.count('init_extensions') == 0;},
33                     interval: 200,
34                     safety_runs: 0
35                 },
36                 on_release: options.on_ready
37             });
38             
39             if ($.ajatus.preferences.client.extensions.length > 0) {
40                 $.each($.ajatus.preferences.client.extensions, function(i,ext){
41                     $.ajatus.extensions.load(ext);
42                 });
43             }
44             
45             $.ajatus.events.named_lock_pool.decrease('init_extensions');
46         },
47         load: function(extension) {
48             $.ajatus.events.named_lock_pool.increase('init_extensions');
49             
50             var ext_url = $.ajatus.preferences.client.application_url + 'js/extensions/' + extension + '.js';            
51             $.ajatus.utils.load_script(ext_url, "$.ajatus.extensions.extension_loaded", [extension]);
52         },
53         extension_loaded: function(extension) {
54             $.ajatus.extensions.loaded[extension] = $.ajatus.extension[extension];
55             $.ajatus.extensions.init_extension(extension);            
56         },
57         init_extension: function(extension){
58             $.ajatus.events.named_lock_pool.decrease('init_extensions');
59             
60             return true;            
61         }
62     });
63     
64 })(jQuery);