diff options
Diffstat (limited to 'javascript')
-rw-r--r-- | javascript/treeview.js | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/javascript/treeview.js b/javascript/treeview.js index e9edbdd..5047966 100644 --- a/javascript/treeview.js +++ b/javascript/treeview.js @@ -72,12 +72,91 @@ function Toggle(node) if (imgChild != null) setImages(imgChild, "img/minus.png", "img/folder_open.png"); sibling.style.display = 'block'; + updateCookieOnExpand( sibling.id ); } // Collapse the branch if it IS visible else { + updateCookieOnCollapse( sibling.id ); if (imgChild != null) setImages(imgChild, "img/plus.png", "img/folder_closed.png"); sibling.style.display = 'none'; } } + +function updateCookieOnExpand( id ){ + var openNodes = readCookie( cookieNameRec ); + if (openNodes == null || openNodes == "") + openNodes = id; + else + openNodes += "," + id; + createCookie( cookieNameRec, openNodes, 14 ); +} + +function updateCookieOnCollapse( id ){ + var openNodes = readCookie( cookieNameRec ); + if (openNodes != null) + openNodes = openNodes.split(","); + else + openNodes = []; + for (var z=0; z<openNodes.length; z++){ + if (openNodes[z] === sibling.id){ + openNodes.splice(z,1); + break; + } + } + openNodes = openNodes.join(","); + createCookie( cookieNameRec, openNodes, 14 ); +} + +function openNodesOnPageLoad(){ + var openNodes = readCookie( cookieNameRec ); + if (openNodes != null && openNodes !== "") + openNodes = openNodes.split(",.,"); + else + openNodes = []; + for (var z=0; z<openNodes.length; z++){ + var ul = document.getElementById(openNodes[z]); + if (ul){ + ul.style.display = 'block'; + //var imgChild = findChildNode(ul.parentNode, "recording_imgs"); + var imgChild = ul.parentNode.children[0].children[0]; + if (imgChild != null) + setImages(imgChild, "img/minus.png", "img/folder_open.png"); + } + } +} + +var cookieNameRec = "VDR-Live-Recordings-Tree-Open-Nodes"; + +window.addEvent('domready', function(){ + openNodesOnPageLoad(); +}); + + +//The following cookie functions are taken from http://www.quirksmode.org/js/cookies.html + +function createCookie(name,value,days) { + if (days) { + var date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + var expires = "; expires="+date.toGMTString(); + } + else var expires = ""; + document.cookie = name+"="+value+expires+"; path=/"; +} + +function readCookie(name) { + var nameEQ = name + "="; + var ca = document.cookie.split(';'); + for(var i=0;i < ca.length;i++) { + var c = ca[i]; + while (c.charAt(0)==' ') c = c.substring(1,c.length); + if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); + } + return null; +} + +function eraseCookie(name) { + createCookie(name,"",-1); +} |