]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/opac/skin/default/js/holds.js
5ff95d19b337dd92dd341d18903438d12511d09f
[Evergreen.git] / Open-ILS / web / opac / skin / default / js / holds.js
1
2 var currentHoldRecord;
3 var currentHoldRecordObj;
4 var holdsOrgSelectorBuilt = false;
5
6 function holdsDrawWindow(recid, type) {
7
8         if(recid == null) {
9                 recid = currentHoldRecord;
10                 if(recid == null) return;
11         }
12         currentHoldRecord = recid;
13
14         if(!(G.user && G.user.session)) {
15
16                 detachAllEvt('common','locationChanged');
17                 attachEvt('common','loggedIn', holdsDrawWindow)
18                 initLogin();
19                 return;
20         }
21         swapCanvas($('holds_box'));
22
23         var rec = findRecord( recid, type );
24         currentHoldsRecordObj = rec;
25
26         if(!holdsOrgSelectorBuilt) {
27                 holdsBuildOrgSelector(null,0);
28                 holdsOrgSelectorBuilt = true;
29         }
30
31         removeChildren($('holds_title'));
32         removeChildren($('holds_author'));
33         removeChildren($('holds_format'));
34         removeChildren($('holds_email'));
35         removeChildren($('holds_email'));
36
37         $('holds_title').appendChild(text(rec.title()));
38         $('holds_author').appendChild(text(rec.author()));
39
40         for( var i in rec.types_of_resource() ) {
41                 var res = rec.types_of_resource()[i];
42                 var img = elem("img");
43                 setResourcePic(img, res);
44                 $('holds_format').appendChild(text(' '+res+' '));
45                 $('holds_format').appendChild(img);
46                 $('holds_format').appendChild(text(' '));
47         }
48
49         $('holds_phone').appendChild(text(G.user.day_phone()));
50         $('holds_email').appendChild(text(G.user.email()));
51         $('holds_cancel').onclick = showCanvas;
52         $('holds_submit').onclick = holdsPlaceHold; 
53 }
54
55
56 function holdsBuildOrgSelector(node, depth) {
57
58         if(!node) {
59                 node = globalOrgTree;
60                 depth = 0;
61         }
62
63         var selector = $('holds_org_selector');
64         var index = selector.options.length;
65
66         if(IE) {
67                 var pre = elem("pre");
68                 for(var x=2; x <= findOrgType(node.ou_type()).depth(); x++) {
69                         pre.appendChild(text("    "));
70                 }
71                 pre.appendChild(text(node.name()));
72                 var select = new Option("", node.id());
73                 selector.options[index] = select;
74                 select.appendChild(pre);
75         
76         } else {
77                 var pad = (findOrgType(node.ou_type()).depth() - 1) * 12;
78                 if(pad < 0) pad = 0;
79                 var select = new Option(node.name(), node.id());
80                 select.setAttribute("style", "padding-left: "+pad+'px;');
81                 selector.options[index] = select;
82         }       
83
84         if( node.id() == G.user.home_ou() ) {
85                 selector.selectedIndex = index;
86                 selector.options[index].selected = true;        
87         }
88
89         for( var i in node.children() ) {
90                 var child = node.children()[i];
91                 if(child) {
92                         holdsBuildOrgSelector(child, depth+1);
93                 }
94         }
95 }
96
97 function holdsPlaceHold() {
98         //alert("placing hold for " + currentHoldRecord );
99
100         var org = $('holds_org_selector').options[$('holds_org_selector').selectedIndex].value;
101
102         var hold = new ahr();
103         hold.pickup_lib(org); 
104         hold.request_lib(org); 
105         hold.requestor(G.user.id());
106         hold.usr(G.user.id());
107         hold.hold_type('T');
108         hold.email_notify(G.user.email());
109         hold.phone_notify(G.user.day_phone());
110         hold.target(currentHoldRecord);
111         
112         var req = new Request( CREATE_HOLD, G.user.session, hold );
113         req.send(true);
114         var res = req.result();
115
116         /* XMLize me  XXX */
117         if( res == '1' ) alert($('holds_success').innerHTML);
118         else alert($('holds_failure').innerHTML);
119         
120         showCanvas();
121 }
122
123 function holdsCancel(holdid) {
124         var req = new Request(CANCEL_HOLD, G.user.session, holdid);
125         req.send(true);
126         return req.result();
127 }
128
129