var RecoverScroll= { timer:null, x:0, y:0, actOnHash:false, cookieId:"RecoverScroll", expiry : "", dataCode:0, logged:0, start : function( pageIdent, days ) { this.installHandler=function(obj,evt,func) { window.attachEvent ? obj.attachEvent(evt,func) : obj.addEventListener(evt.replace(/^on/i,""),func,false); return func; } this.installHandler( window, 'onload', function(){ RecoverScroll.init( pageIdent, days ); } ); }, init : function( pageName, days ) { var dt, duration; if( typeof window.pageXOffset != 'undefined' ) this.dataCode = 1; else if( document.documentElement ) this.dataCode = 3; else if( document.body && typeof document.body.scrollTop != 'undefined' ) this.dataCode = 2; if( pageName ) this.cookieId = pageName.replace( /[\s\=\;\,]/g, '_' ); if( days && ( duration = parseInt( days ) ) != NaN ) { dt = new Date(); dt.setDate( dt.getDate() + duration ); this.expiry = ";expires=" + dt.toUTCString(); } this.installHandler( window, 'onscroll', function(){ RecoverScroll.reset() } ); this.go(); }, go : function( ) { var sx, sy, offsetData; if( ( window.location.hash == "" || this.actOnHash ) // && location.search.length == 0 && ( offsetData = this.readCookie( this.cookieId )) != "" && ( offsetData = offsetData.split('|') ).length == 4 && !isNaN( sx = Number( offsetData[ 1 ] ) ) && !isNaN( sy = Number( offsetData[3] ) ) ) { if(!!window.SoftScroll && SoftScroll.scrollTo) { SoftScroll.init(); SoftScroll.scrollTo(sx, sy); } else window.scrollTo(sx, sy); } this.record(); }, sf : function( str ) { return unescape(str).replace(/(.)(.*)/, function(a,b,c){return c+b;}); }, reset : function() { clearTimeout( this.timer ); this.timer = setTimeout( function(){ RecoverScroll.record(); }, 50 ); }, record : function() { var cStr; this.getScrollData(); this.setTempCookie( this.cookieId, cStr='x|'+this.x+'|y|'+this.y ); }, setTempCookie : function(cName, cValue) { document.cookie = cName + "=" + cValue + this.expiry; }, readCookie : function(cookieName) { var cValue=""; if(typeof document.cookie!='undefined') cValue=(cValue=document.cookie.match(new RegExp("(^|;|\\s)"+cookieName+'=([^;]+);?'))) ? cValue[2] : ""; return cValue; }, hash : function() { this.actOnHash = true; }, getScrollData : function() { switch( this.dataCode ) { case 3 : this.x = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft); this.y = Math.max(document.documentElement.scrollTop, document.body.scrollTop); break; case 2 : this.x = document.body.scrollLeft; this.y = document.body.scrollTop; break; case 1 : this.x = window.pageXOffset; this.y = window.pageYOffset; break; } }, installHandler : function(){}, }