/* CROSS-BROWSER EVENT HANDLER */
	function addEvent(obj, evType, fn){
		 if (obj.addEventListener){
			 obj.addEventListener(evType, fn, true);
			 return true;
		 } else if (obj.attachEvent){
			 var r = obj.attachEvent("on"+evType, fn);
			return r;
		 } else {
			return false;
		 }
	}
/* END EVENT HANDLER */


	function doGetPage(i) {
		if(i) {
		  loadXcontent(i);
		}
	}

/* PAGELOCATOR */
	function PageLocator(propertyToUse, dividingCharacter) {
		this.propertyToUse = propertyToUse;
		this.defaultQS = '';
		this.dividingCharacter = dividingCharacter;
	}
	PageLocator.prototype.getLocation = function() {
		return eval(this.propertyToUse);
	}
	PageLocator.prototype.getHash = function() {
		var url = this.getLocation();
		if(url.indexOf(this.dividingCharacter)>-1) {
			var url_elements = url.split(this.dividingCharacter);
			return url_elements[url_elements.length-1];
		} else {
			return this.defaultQS;
		}
	}
	PageLocator.prototype.getHref = function() {
		var url = this.getLocation();
		var url_elements = url.split(this.dividingCharacter)
		return url_elements[0];
	}
	PageLocator.prototype.makeNewLocation = function(new_qs) {
		return this.getHref() + this.dividingCharacter + new_qs;
	}
/* END PAGELOCATOR */


/* AjaxIframesFixer */
	function AjaxIframesFixer(iframeid) {
		this.iframeid = iframeid;
		if (document.getElementById('ajaxnav')) {
			//this.fixLinks();

			this.locator = new PageLocator("document.frames['"+this.iframeid+"'].getLocation()", "?hash=");
			this.windowlocator = new PageLocator("window.location.href", "#");
			this.timer = new Timer(this);

			this.delayInit(); // required or IE doesn't fire
		}
	}
	AjaxIframesFixer.prototype.delayInit = function(){
		this.timer.setTimeout("checkBookmark", 100, "");
	}
	AjaxIframesFixer.prototype.checkBookmark = function(){
		window.location = this.windowlocator.makeNewLocation(this.locator.getHash());
		this.checkWhetherChanged(0);
	}
	AjaxIframesFixer.prototype.checkWhetherChanged = function(location){
		if(this.locator.getHash() != location && this.locator.getHash() != 'Scene_1') {
			doGetPage(this.locator.getHash());
			window.location = this.windowlocator.makeNewLocation(this.locator.getHash());
		}
		this.timer.setTimeout("checkWhetherChanged", 200, this.locator.getHash());
	}
/* END AjaxIframesFixer */


/* AjaxUrlFixer */
	function AjaxUrlFixer() {
		//this.fixLinks();

		this.locator = new PageLocator("window.location.href", "#");
		this.timer = new Timer(this);
		this.checkWhetherChanged(0);
	}
	AjaxUrlFixer.prototype.checkWhetherChanged = function(location){
		if(this.locator.getHash() != location && this.locator.getHash() != 'Scene_1') {
			doGetPage(this.locator.getHash());
		}
		this.timer.setTimeout("checkWhetherChanged", 200, this.locator.getHash());
	}
/* END AjaxUrlFixer */

function setContent(new_content) {
	if(!document.getElementById || !document.getElementsByTagName) return;
	var container = document.getElementById("jax__mainArea");
	container.innerHTML = new_content;
}
function FixBackAndBookmarking() {
  /*
	if(!document.getElementById || !document.getElementsByTagName) return;
	if(document.iframesfix) {
		fix = new AjaxIframesFixer('ajaxnav');
	} else {
	  */
		fix = new AjaxUrlFixer();
	//}
}

/*
var detect = navigator.userAgent.toLowerCase();
if(detect.indexOf("msie")>-1) document.iframesfix = true;
*/
addEvent(window, "load", FixBackAndBookmarking);
