testing commit, please ignore
[kcls-web.git] / opac / skin / condense_js / js / sidebar.js
1 /* set up the colors in the sidebar \r
2         Disables/Enables certain components based on various state data */\r
3 \r
4 attachEvt("common", "init", initSideBar);\r
5 //attachEvt("common", "init", setSidebarLinks);\r
6 //attachEvt("common", "unload", sidebarTreesFree );\r
7 \r
8 function prevRResults() {\r
9         return buildOPACLink({ page : RRESULT });\r
10 }\r
11 \r
12 function prevMResults() {\r
13         return buildOPACLink({ page : MRESULT });\r
14 }\r
15 \r
16 function initSideBar() {\r
17         var page = findCurrentPage();\r
18 \r
19         if( page == MRESULT ) \r
20                 unHideMe($("sidebar_results_wrapper"));\r
21 \r
22         if( page == RRESULT ) {\r
23                 unHideMe($("sidebar_results_wrapper"));\r
24                 unHideMe(G.ui.sidebar[MRESULT]);\r
25                 if( getRtype() == RTYPE_MRID )\r
26                         $("sidebar_title_group_results").setAttribute("href", prevMResults());\r
27                 else hideMe($("sidebar_title_group_results").parentNode);\r
28         }\r
29 \r
30         /* if( page == RDETAIL ) {\r
31                 unHideMe($("sidebar_results_wrapper"));\r
32                 unHideMe(G.ui.sidebar[MRESULT]);\r
33                 if(getRtype())\r
34                         $("sidebar_title_results").setAttribute("href", prevRResults());\r
35                 unHideMe(G.ui.sidebar[RRESULT]);\r
36 \r
37                 if( getRtype() == RTYPE_MRID )\r
38                         $("sidebar_title_group_results").setAttribute("href", prevMResults());\r
39                 else hideMe($("sidebar_title_group_results").parentNode);\r
40         } */\r
41 \r
42         unHideMe(G.ui.sidebar[page]);\r
43         addCSSClass(G.ui.sidebar[page], "sidebar_item_active");\r
44 \r
45         /* if we're logged in, show it and replace the Login link with the Logout link */\r
46         if(grabUser()) {\r
47                 //G.ui.sidebar.username_dest.appendChild(text(G.user.usrname()));\r
48                 //unHideMe(G.ui.sidebar.logoutbox);\r
49                 unHideMe(G.ui.sidebar.logged_in_as);\r
50                 hideMe(G.ui.sidebar.loginbox);\r
51         }\r
52 \r
53         if(G.ui.sidebar.login) G.ui.sidebar.login.onclick = initLogin;\r
54         //if(G.ui.sidebar.logout) G.ui.sidebar.logout.onclick = doLogout; \r
55 \r
56         if(isXUL()) hideMe( G.ui.sidebar.logoutbox );\r
57 }\r
58 \r
59 /* sets up the login ui components */\r
60 var loginBoxVisible = false;\r
61 function loginDance() {\r
62         var rem = $('remember_me');\r
63         if(rem) rem = rem.checked; else rem = false;\r
64         rem = rem?"persist":"opac";\r
65         \r
66         if(doLogin(true, rem)) {\r
67 \r
68                 if(!strongPassword( G.ui.login.password.value ) ) {\r
69 \r
70                         cookieManager.write(COOKIE_SES, "");\r
71                         hideMe($('login_box'));\r
72                         unHideMe($('change_pw_table'));\r
73                         $('change_pw_current').focus();\r
74                         $('change_pw_button').onclick = changePassword;\r
75                         setEnterFunc($('change_pw_2'), changePassword);\r
76 \r
77                 } else {\r
78                         loggedInOK();\r
79                 }\r
80         }\r
81 }\r
82 \r
83 function loggedInOK() {\r
84         showCanvas();\r
85         //G.ui.sidebar.username_dest.appendChild(text(G.user.usrname()));\r
86         //unHideMe(G.ui.sidebar.logoutbox);\r
87         unHideMe(G.ui.sidebar.logged_in_as);\r
88         hideMe(G.ui.sidebar.loginbox);\r
89         runEvt( 'common', 'loggedIn');\r
90         \r
91         var org = G.user.prefs[PREF_DEF_LOCATION];\r
92         if(!org) org = G.user.home_ou();\r
93 \r
94         var depth = G.user.prefs[PREF_DEF_DEPTH];\r
95         if(! ( depth && depth <= findOrgDepth(org)) ) \r
96                 depth = findOrgDepth(org);\r
97 \r
98         runEvt( "common", "locationChanged", org, depth);\r
99 }\r
100 \r
101 \r
102 function changePassword() {\r
103 \r
104         var pc = $('change_pw_current').value;\r
105         var p1 = $('change_pw_1').value;\r
106         var p2 = $('change_pw_2').value;\r
107 \r
108         if( p1 != p2 ) {\r
109                 alert($('pw_no_match').innerHTML);\r
110                 return;\r
111         }\r
112 \r
113         if(!strongPassword(p2, true) ) return;\r
114 \r
115         var req = new Request(UPDATE_PASSWORD, G.user.session, p2, pc );\r
116         req.send(true);\r
117         if(req.result()) {\r
118                 alert($('pw_update_successful').innerHTML);\r
119                 loggedInOK();\r
120         }\r
121 }\r
122 \r
123 var pwRegexSetting;\r
124 function strongPassword(pass, alrt) {\r
125 \r
126     /* first, let's see if there is a configured regex */\r
127     if(!pwRegexSetting) {\r
128         var regex = fetchOrgSettingDefault(G.user.home_ou(), 'global.password_regex');\r
129         if(regex) {\r
130             if(pass.match(new RegExp(regex))) {\r
131                 return true;\r
132             } else {\r
133                 if(alrt)\r
134                        alert($('pw_not_strong').innerHTML);\r
135                 return false;\r
136             }\r
137         }\r
138     }\r
139 \r
140     /* no regex configured, use the default */\r
141 \r
142         var good = false;\r
143 \r
144         do {\r
145 \r
146                 if(pass.length < 7) break;\r
147                 if(!pass.match(/.*\d+.*/)) break;\r
148                 if(!pass.match(/.*[A-Za-z]+.*/)) break;\r
149                 good = true;\r
150 \r
151         } while(0);\r
152 \r
153         if(!good && alrt) alert($('pw_not_strong').innerHTML);\r
154         return good;\r
155 }\r
156 \r
157 function initLogin() {\r
158 \r
159   if(G.ui.login.button) G.ui.login.button.onclick = function(){$('login_form_submit').click();};\r
160   if(dojo.isIE) {\r
161         if(G.ui.login.username) G.ui.login.username.onkeydown = function(evt) {if(userPressedEnter(evt)) $('login_form_submit').click();};\r
162         if(G.ui.login.password) G.ui.login.password.onkeydown = function(evt) {if(userPressedEnter(evt)) $('login_form_submit').click();};\r
163   }\r
164 \r
165 //      if(loginBoxVisible) {\r
166 //              showCanvas();\r
167 //      } else {\r
168           if(findCurrentPage()==MYOPAC) {\r
169                 swapCanvas(G.ui.login.box);\r
170                 try{G.ui.login.username.focus();}catch(e){}\r
171           }\r
172 //      }\r
173 \r
174 //      loginBoxVisible = !loginBoxVisible;\r
175         G.ui.login.cancel.onclick = showCanvas;\r
176         if(findCurrentPage() == MYOPAC) \r
177                 G.ui.login.cancel.onclick = goHome;\r
178 }\r
179 \r
180 function setSidebarLinks() {\r
181         G.ui.sidebar.home_link.setAttribute("href", buildOPACLink({page:HOME}));\r
182         G.ui.sidebar.advanced_link.setAttribute("href", buildOPACLink({page:ADVANCED}));\r
183         G.ui.sidebar.myopac_link.setAttribute("href", buildOPACLink({page:MYOPAC}, false, true));\r
184 }\r
185 \r
186 function sidebarTreesFree() {\r
187         return;\r
188         removeChildren($(subjectSidebarTree.rootid));\r
189         removeChildren($(authorSidebarTree.rootid));\r
190         removeChildren($(seriesSidebarTree.rootid));\r
191         subjectSidebarTree = null;\r
192         authorSidebarTree = null;\r
193         seriesSidebarTree = null;\r
194 }\r
195 \r
196 \r
197 \r
198 \r
199 /* --------------------------------------------------------------------------------- */\r
200 /* Code to support GALILEO links for PINES.  Fails gracefully\r
201 /* --------------------------------------------------------------------------------- */\r
202 attachEvt('common', 'init', buildEGGalLink);\r
203 function buildEGGalLink() {\r
204 \r
205         /* we're in a lib, nothing to do here */\r
206         if( getOrigLocation() ) return;\r
207         if(!$('eg_gal_link')) return;\r
208 \r
209         //var link = 'http://demo.galib.uga.edu/express?pinesid=';\r
210         var link = 'http://www.galileo.usg.edu/express?pinesid=';\r
211         if(grabUser()) {\r
212                 $('eg_gal_link').setAttribute('href', link + G.user.session);\r
213                 return;\r
214         }\r
215 \r
216         $('eg_gal_link').setAttribute('href', 'javascript:void(0);');\r
217         $('eg_gal_link').setAttribute('target', '');\r
218         $('eg_gal_link').onclick = function() {\r
219                 /* we're not logged in.  go ahead and login */\r
220                 detachAllEvt('common','locationChanged');\r
221                 detachAllEvt('common','loggedIn');\r
222                 attachEvt('common','loggedIn', function() { goTo(link + G.user.session); })\r
223                 initLogin();\r
224         };\r
225 }\r
226 /* --------------------------------------------------------------------------------- */\r
227 \r
228 \r