﻿function maintainScrollbackPosition(name, retrieve){

	this.savePosition = savePosition;
	this.retrievePosition = retrievePosition;
	if((typeof(name) != "undefined") && (name != null))
		name = '_' + name;
	else
		name = '';
	nameX = name + '_maintainScrollbackPositionX';
	nameY = name + '_maintainScrollbackPositionY';

	if(window.onload)
		var onload = window.onload;
	if(window.onunload)
		var onunload = window.onunload;
		
	window.onunload = this.savePosition;
	if(retrieve)
		window.onload = this.retrievePosition;
		
	function savePosition(){
		setCookie(nameX, getScrollX());
		setCookie(nameY, getScrollY());
		if((typeof(onunload) != "undefined") && (onunload != null))
			onunload();
	}
	
	function retrievePosition(){
		if((typeof(onload) != "undefined") && (onload != null))
			onload();
		x = getCookie(nameX);
		y = getCookie(nameY);
		if(x != '' && y != '')
			window.scrollTo(x, y);
	}
	
	function setCookie(name, value){
		document.cookie = name + '=' + escape(value);
	}

	function getCookie(name){
		var labelName = name + '=';
		var labelLen = labelName.length;
		var cookieData = document.cookie;
		var cookieLen = cookieData.length;
		var i = 0;
		var cookieEnd;
		while(i < cookieLen){
			var j = i + labelLen;
			if(cookieData.substring(i, j) == labelName){
				cookieEnd = cookieData.indexOf(';', j);
				if(cookieEnd == -1)
					cookieEnd = cookieLen;
				return unescape(cookieData.substring(j, cookieEnd));
			}
			i++;
		}
		return '';
	}

	function getScrollX() {
		if(typeof(window.pageXOffset) == 'number')
			return window.pageXOffset; //Netscape compliant
		else if(document.body && document.body.scrollLeft)
			return document.body.scrollLeft; //DOM compliant
		else if(document.documentElement && document.documentElement.scrollLeft)
			return document.documentElement.scrollLeft; //IE6 standards compliant mode
		else
			return 0;
	}

	function getScrollY() {
		if(typeof(window.pageYOffset) == 'number')
			return window.pageYOffset; //Netscape compliant
		else if(document.body && document.body.scrollTop)
			return document.body.scrollTop; //DOM compliant
		else if(document.documentElement && document.documentElement.scrollTop)
			return document.documentElement.scrollTop; //IE6 standards compliant mode
		else
			return 0;
	}
}

