/* www.gibney.org entry nr. 49: savescroll */ /* Savescroll by Gibney Enterprises This saves the position the document is currently scrolled to in a cookie if you visit the document again it restores the poition Currently only one value per domain is saved */ function getCookieValue(cookieName) { var value=null; if(document.cookie != "") { cookieName=cookieName+"="; var start=document.cookie.indexOf(cookieName); if(start>=0) { start=start+cookieName.length; var end=document.cookie.indexOf(";", start); if(end<0) end=document.cookie.length; value=document.cookie.substring(start,end); value=unescape(value); } } return value; } function setCookie(cookieName,cookieValue, expires, path, domain, secure) { var cookie=cookieName+"="+escape(cookieValue)+";"; if (expires) cookie+=" expires="+expires+";"; if (path) cookie+=" path="+path+";"; if (domain) cookie+=" domain="+domain+";"; if (secure) cookie+=" secure;"; document.cookie=cookie; } function getPage() { if ("undefined"!=typeof(mg_savescroll_forced_page)) return mg_savescroll_forced_page; var name=window.location.pathname; // var indexpos=name.indexOf('index.php'); // if (indexpos==name.length-9) name=name.substring(0,name.length-9); if (name.substring(name.length-9)=='index.php') name=name.substring(0,name.length-9); name=escape(name); return name; } function saveScrollPos() { var page=getPage(); var scrollPos=0; if(document.pageYOffset) scrollPos=document.pageYOffset; else scrollPos=document.body.scrollTop; setCookie('mg_savescroll',page+'|'+scrollPos,false,'/'); } function restoreScrollPos() { var page=getPage(); var scrollPos=null; // is there a cookie? var cookie=getCookieValue('mg_savescroll'); if (cookie==null) return; // is it for this page? var pos=cookie.indexOf(page); if (pos!=0) return; // get the saved position var pos=cookie.indexOf("|"); if (pos>0) scrollPos=cookie.substr(pos+1); // if we have a saved position scroll there... if (scrollPos!=null) window.scrollTo(0, scrollPos); } document.onmousedown=saveScrollPos; window.onload=restoreScrollPos;