]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/OPEN_ILS_STAFF_CLIENT/util/deck.js
7de70b35ee24b8f4fa164870cabafceacc97063d
[Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / OPEN_ILS_STAFF_CLIENT / util / deck.js
1 dump('entering util/deck.js\n');
2
3 if (typeof util == 'undefined') util = {};
4 util.deck = function (id) {
5
6         this.node = document.getElementById(id);
7
8         JSAN.use('util.error'); this.error = new util.error();
9
10         if (!this.node) {
11                 var error = 'util.deck: Could not find element ' + id;
12                 this.error.sdump('D_ERROR',error);
13                 throw(error);
14         }
15         if (this.node.nodeName != 'deck') {
16                 var error = 'util.deck: ' + id + 'is not a deck' + "\nIt's a " + this.node.nodeName;
17                 this.error.sdump('D_ERROR',error);
18                 throw(error);
19         }
20
21         return this;
22 };
23
24 util.deck.prototype = {
25
26         'find_index' : function (url) {
27                 var idx = -1;
28                 var nodes = this.node.childNodes;
29                 for (var i = 0; i < nodes.length; i++) {
30                         if (nodes[i].getAttribute('src') == url) idx = i;
31                 }
32                 return idx;
33         },
34
35         'set_iframe' : function (url,params,content_params) {
36                 this.error.sdump('D_TRACE','util.deck.set_iframe: url = ' + url);
37                 var idx = this.find_index(url);
38                 if (idx>-1) {
39                         this.node.selectedIndex = idx;
40                         return this.node.childNodes[idx];
41                 } else {
42                         return this.new_iframe(url,params,content_params);
43                 }
44                 
45                 
46         },
47
48         'reset_iframe' : function (url,params,content_params) {
49                 this.remove_iframe(url);
50                 return this.new_iframe(url,params,content_params);
51         },
52
53         'new_iframe' : function (url,params,content_params) {
54                 var idx = this.find_index(url);
55                 if (idx>-1) throw('An iframe already exists in deck with url = ' + url);
56
57                 var iframe = document.createElement('iframe');
58                 iframe.setAttribute('src',url);
59                 //iframe.setAttribute('flex','1');
60                 //iframe.setAttribute('style','overflow: scroll');
61                 //iframe.setAttribute('style','border: solid thin red');
62                 this.node.appendChild( iframe );
63                 this.node.selectedIndex = this.node.childNodes.length - 1;
64                 if (content_params) {
65                         try {
66                                 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
67                                 this.error.sdump('D_DECK', 'frame.contentWindow = ' + iframe.contentWindow + '\n');
68                                 iframe.contentWindow.IAMXUL = true;
69                                 iframe.contentWindow.xulG = content_params;
70                         } catch(E) {
71                                 dump('E: ' + E + '\n');
72                         }
73                 }
74                 return iframe;
75         },
76
77         'remove_iframe' : function (url) {
78                 var idx = this.find_index(url);
79                 if (idx>-1) {
80                         this.node.removeChild( this.node.childNodes[ idx ] );
81                 }
82         }
83 }       
84
85 dump('exiting util/deck.js\n');