1 /* Some really basic utils copied mostly from old opac js:
2 * opac_utils.js, utils.js, misc.js (kcls). */
3 function _stub() { alert("XXX disconnected"); } /* for in progress work */
5 function $(id) { return document.getElementById(id); }
6 function $n(root, nodeName, attr) {
7 return findNodeByName(root, nodeName, attr);
10 function findNodeByName(root, nodeName, /* defaults to "name" */attr) {
11 if (!root || !nodeName) return null;
12 if (root.nodeType != 1) return null;
13 if (!attr) attr = "name";
14 if (root.getAttribute(attr) == nodeName || root[attr] == nodeName)
17 for (var i = 0; i != root.childNodes.length; i++) {
18 var n = findNodeByName(root.childNodes[i], nodeName);
25 function swapCSSClass(obj, old, newc) {
26 removeCSSClass(obj, old);
27 addCSSClass(obj, newc);
30 function addCSSClass(e,c) {
31 /* XXX I've seen much simpler implementation of this idea that just
32 * do a regexp replace on e.className. Any reason why we're making
33 * it so hard here? I could see the justification if there's a certain
34 * browser that doesn't cooperate. */
37 var css_class_string = e.className;
41 css_class_array = css_class_string.split(/\s+/);
43 var string_ip = ""; /*strip out nulls*/
44 for (var css_class in css_class_array) {
45 if (css_class_array[css_class] == c) { return; }
46 if(css_class_array[css_class] !=null)
47 string_ip += css_class_array[css_class] + " ";
50 e.className = string_ip;
53 function removeCSSClass(e, c) {
56 var css_class_string = '';
58 var css_class_array = e.className;
60 css_class_array = css_class_array.split(/\s+/);
63 for (var css_class in css_class_array) {
64 if (css_class_array[css_class] != c) {
66 css_class_string = css_class_array[css_class];
69 css_class_string = css_class_string + ' ' +
70 css_class_array[css_class];
74 e.className = css_class_string;
77 function hideMe(obj) { addCSSClass(obj, "hide_me"); }
78 function unHideMe(obj) { removeCSSClass(obj, "hide_me"); }
80 function swapTabs(el) {
84 for (var i = 0; i < el.parentNode.childNodes.length; i++) {
85 var node = el.parentNode.childNodes[i];
86 if (node.nodeType == 1 && node.nodeName.toLowerCase() == "a")
90 for (var n = 0; n < tabs.length; n++) {
94 i.style.background = "url('/opac/skin/kcls/graphics/" +
95 i.id + "_on.gif') no-repeat bottom";
98 i.style.background = "url('/opac/skin/kcls/graphics/" +
99 i.id + "_off.gif') no-repeat bottom";
105 /* Returns the character code pressed that caused the event. */
106 function grabCharCode(evt) {
107 // OLD CODE: evt = (evt) ? evt : ((window.event) ? event : null);
108 evt = evt || window.event || event || null;
110 // OLD CODE: return (evt.charCode ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode));
111 return evt.which || evt.charCode || evt.keyCode;
117 /* returns true if the user pressed enter */
118 function userPressedEnter(evt) {
119 var code = grabCharCode(evt);
120 return (code == 13 || code == 3);
123 function setEnterFunc(node, func) {
124 if (!(node && func)) return;
125 node.onkeydown = function(evt) {
126 if (userPressedEnter(evt)) func();
130 function advAddGblRow() {
131 var tbody = $("adv_global_tbody");
132 var newrow = $("adv_global_trow").cloneNode(true);
133 tbody.insertBefore(newrow, $("adv_global_addrow"));
134 var input = $n(newrow, "term");
136 setEnterFunc(input, _stub); /* XXX TODO make a real form and get rid of this? */
137 $n(newrow, 'type').focus();
140 var rdetailShowExtra = _stub; /* XXX TODO reimplement without JS? */
141 var cnBrowsePrev = _stub;
142 var cnBrowseNext = _stub;
143 var rdetailNewBookbag = _stub; /* XXX TODO reimplement without JS? */
144 var addMyList = _stub; /* XXX TODO we probably still need this one */
145 var listSaveAction = _stub; /* XXX TODO we probably still need this one */
146 var expandBoxes = _stub; /* XXX TODO possibly reimplement or replace */
147 var iForgotMyPassword = _stub; /* XXX TODO possibly reimplement or replace */
148 var switchSubPage = _stub;
149 var myOPACRenewSelected = _stub;
150 var myOPACCreateBookbag = _stub;
151 var myOPACSavePrefs = _stub;
152 var myOPACUpdatePhone = _stub; /* XXX TODOD myOPACUpdate*() and the buttons where
153 the handlers are used should probably go
155 var myOPACUpdateUsername = _stub;
156 var myOPACUpdatePassword = _stub;
157 var myOPACUpdateEmail = _stub;
158 var myOPACUpdateHomeOU = _stub;
159 var myopacDoHoldAction = _stub;
160 var myopacApplyThawDate = _stub;
161 var showCachedList = _stub;
162 var searchBarSubmit = _stub;
163 var sortHolds = _stub; /* XXX TODO There was a method for sorting loaded holds
164 in the DOM without reloading the page, but it was
165 reliant on fieldmapper and some stock dojo
166 libraries. Could be reimplemented without deps
167 if deemed worthwhile. */
168 var showDetailedResults = _stub; /* XXX TODO for an old onchange handler that
169 toggled between simple and detailed results
170 in the rresults page. */
171 var checkAll = _stub;
172 var sortChecked = _stub;
173 var sortCheckedHist = _stub;
174 var showPaymentForm = _stub;
175 var showFinesDiv = _stub;
176 var fadeOut = _stub; /* XXX TODO what the heck? not seen anywhere */