Initial dev repository
[kcls-web.git] / opac / skin / login1 / js / sidebar.js
diff --git a/opac/skin/login1/js/sidebar.js b/opac/skin/login1/js/sidebar.js
new file mode 100644 (file)
index 0000000..08a3701
--- /dev/null
@@ -0,0 +1,227 @@
+/* set up the colors in the sidebar \r
+       Disables/Enables certain components based on various state data */\r
+\r
+attachEvt("common", "init", initSideBar);\r
+//attachEvt("common", "init", setSidebarLinks);\r
+//attachEvt("common", "unload", sidebarTreesFree );\r
+\r
+function prevRResults() {\r
+       return buildOPACLink({ page : RRESULT });\r
+}\r
+\r
+function prevMResults() {\r
+       return buildOPACLink({ page : MRESULT });\r
+}\r
+\r
+function initSideBar() {\r
+       var page = findCurrentPage();\r
+\r
+       if( page == MRESULT ) \r
+               unHideMe($("sidebar_results_wrapper"));\r
+\r
+       if( page == RRESULT ) {\r
+               unHideMe($("sidebar_results_wrapper"));\r
+               unHideMe(G.ui.sidebar[MRESULT]);\r
+               if( getRtype() == RTYPE_MRID )\r
+                       $("sidebar_title_group_results").setAttribute("href", prevMResults());\r
+               else hideMe($("sidebar_title_group_results").parentNode);\r
+       }\r
+\r
+       /* if( page == RDETAIL ) {\r
+               unHideMe($("sidebar_results_wrapper"));\r
+               unHideMe(G.ui.sidebar[MRESULT]);\r
+               if(getRtype())\r
+                       $("sidebar_title_results").setAttribute("href", prevRResults());\r
+               unHideMe(G.ui.sidebar[RRESULT]);\r
+\r
+               if( getRtype() == RTYPE_MRID )\r
+                       $("sidebar_title_group_results").setAttribute("href", prevMResults());\r
+               else hideMe($("sidebar_title_group_results").parentNode);\r
+       } */\r
+\r
+       unHideMe(G.ui.sidebar[page]);\r
+       addCSSClass(G.ui.sidebar[page], "sidebar_item_active");\r
+\r
+       /* if we're logged in, show it and replace the Login link with the Logout link */\r
+       if(grabUser()) {\r
+               //G.ui.sidebar.username_dest.appendChild(text(G.user.usrname()));\r
+               //unHideMe(G.ui.sidebar.logoutbox);\r
+               unHideMe(G.ui.sidebar.logged_in_as);\r
+               hideMe(G.ui.sidebar.loginbox);\r
+       }\r
+\r
+       if(G.ui.sidebar.login) G.ui.sidebar.login.onclick = initLogin;\r
+       //if(G.ui.sidebar.logout) G.ui.sidebar.logout.onclick = doLogout; \r
+\r
+       if(isXUL()) hideMe( G.ui.sidebar.logoutbox );\r
+}\r
+\r
+/* sets up the login ui components */\r
+var loginBoxVisible = false;\r
+function loginDance() {\r
+       var rem = $('remember_me');\r
+       if(rem) rem = rem.checked; else rem = false;\r
+       rem = rem?"persist":"opac";\r
+       \r
+       if(doLogin(true, rem)) {\r
+\r
+               if(!strongPassword( G.ui.login.password.value ) ) {\r
+\r
+                       cookieManager.write(COOKIE_SES, "");\r
+                       hideMe($('login_box'));\r
+                       unHideMe($('change_pw_table'));\r
+                       $('change_pw_current').focus();\r
+                       $('change_pw_button').onclick = changePassword;\r
+                       setEnterFunc($('change_pw_2'), changePassword);\r
+\r
+               } else {\r
+                       loggedInOK();\r
+               }\r
+       }\r
+}\r
+\r
+function loggedInOK() {\r
+       showCanvas();\r
+       //G.ui.sidebar.username_dest.appendChild(text(G.user.usrname()));\r
+       //unHideMe(G.ui.sidebar.logoutbox);\r
+       unHideMe(G.ui.sidebar.logged_in_as);\r
+       hideMe(G.ui.sidebar.loginbox);\r
+       runEvt( 'common', 'loggedIn');\r
+       \r
+       var org = G.user.prefs[PREF_DEF_LOCATION];\r
+       if(!org) org = G.user.home_ou();\r
+\r
+       var depth = G.user.prefs[PREF_DEF_DEPTH];\r
+       if(! ( depth && depth <= findOrgDepth(org)) ) \r
+               depth = findOrgDepth(org);\r
+\r
+       runEvt( "common", "locationChanged", org, depth);\r
+}\r
+\r
+\r
+function changePassword() {\r
+\r
+       var pc = $('change_pw_current').value;\r
+       var p1 = $('change_pw_1').value;\r
+       var p2 = $('change_pw_2').value;\r
+\r
+       if( p1 != p2 ) {\r
+               alert($('pw_no_match').innerHTML);\r
+               return;\r
+       }\r
+\r
+       if(!strongPassword(p2, true) ) return;\r
+\r
+       var req = new Request(UPDATE_PASSWORD, G.user.session, p2, pc );\r
+       req.send(true);\r
+       if(req.result()) {\r
+               alert($('pw_update_successful').innerHTML);\r
+               loggedInOK();\r
+       }\r
+}\r
+\r
+var pwRegexSetting;\r
+function strongPassword(pass, alrt) {\r
+\r
+    /* first, let's see if there is a configured regex */\r
+    if(!pwRegexSetting) {\r
+        var regex = fetchOrgSettingDefault(G.user.home_ou(), 'global.password_regex');\r
+        if(regex) {\r
+            if(pass.match(new RegExp(regex))) {\r
+                return true;\r
+            } else {\r
+                if(alrt)\r
+                      alert($('pw_not_strong').innerHTML);\r
+                return false;\r
+            }\r
+        }\r
+    }\r
+\r
+    /* no regex configured, use the default */\r
+\r
+       var good = false;\r
+\r
+       do {\r
+\r
+               if(pass.length < 7) break;\r
+               if(!pass.match(/.*\d+.*/)) break;\r
+               if(!pass.match(/.*[A-Za-z]+.*/)) break;\r
+               good = true;\r
+\r
+       } while(0);\r
+\r
+       if(!good && alrt) alert($('pw_not_strong').innerHTML);\r
+       return good;\r
+}\r
+\r
+function initLogin() {\r
+\r
+    if(G.ui.login.button) G.ui.login.button.onclick = function(){$('login_form_submit').click();};\r
+    if(dojo.isIE) {\r
+        if(G.ui.login.username) G.ui.login.username.onkeydown = function(evt) {if(userPressedEnter(evt)) $('login_form_submit').click();};\r
+        if(G.ui.login.password) G.ui.login.password.onkeydown = function(evt) {if(userPressedEnter(evt)) $('login_form_submit').click();};\r
+    }\r
+\r
+    //if(findCurrentPage()==MYOPAC) {\r
+        swapCanvas(G.ui.login.box);\r
+        try{G.ui.login.username.focus();}catch(e){}\r
+    //}\r
+\r
+    G.ui.login.cancel.onclick = function(evt) { \r
+        showCanvas();\r
+        runEvt("common", "loginCanceled");\r
+    };\r
+\r
+       if(findCurrentPage() == MYOPAC) \r
+               G.ui.login.cancel.onclick = goHome;\r
+}\r
+\r
+function setSidebarLinks() {\r
+       G.ui.sidebar.home_link.setAttribute("href", buildOPACLink({page:HOME}));\r
+       G.ui.sidebar.advanced_link.setAttribute("href", buildOPACLink({page:ADVANCED}));\r
+       G.ui.sidebar.myopac_link.setAttribute("href", buildOPACLink({page:MYOPAC}, false, true));\r
+}\r
+\r
+function sidebarTreesFree() {\r
+       return;\r
+       removeChildren($(subjectSidebarTree.rootid));\r
+       removeChildren($(authorSidebarTree.rootid));\r
+       removeChildren($(seriesSidebarTree.rootid));\r
+       subjectSidebarTree = null;\r
+       authorSidebarTree = null;\r
+       seriesSidebarTree = null;\r
+}\r
+\r
+\r
+\r
+\r
+/* --------------------------------------------------------------------------------- */\r
+/* Code to support GALILEO links for PINES.  Fails gracefully\r
+/* --------------------------------------------------------------------------------- */\r
+attachEvt('common', 'init', buildEGGalLink);\r
+function buildEGGalLink() {\r
+\r
+       /* we're in a lib, nothing to do here */\r
+       if( getOrigLocation() ) return;\r
+       if(!$('eg_gal_link')) return;\r
+\r
+       //var link = 'http://demo.galib.uga.edu/express?pinesid=';\r
+       var link = 'http://www.galileo.usg.edu/express?pinesid=';\r
+       if(grabUser()) {\r
+               $('eg_gal_link').setAttribute('href', link + G.user.session);\r
+               return;\r
+       }\r
+\r
+       $('eg_gal_link').setAttribute('href', 'javascript:void(0);');\r
+       $('eg_gal_link').setAttribute('target', '');\r
+       $('eg_gal_link').onclick = function() {\r
+               /* we're not logged in.  go ahead and login */\r
+               detachAllEvt('common','locationChanged');\r
+               detachAllEvt('common','loggedIn');\r
+               attachEvt('common','loggedIn', function() { goTo(link + G.user.session); })\r
+               initLogin();\r
+       };\r
+}\r
+/* --------------------------------------------------------------------------------- */\r
+\r
+\r