(function() {
	window.Background = {};
	var cookieEnabled = navigator.cookieEnabled != 0;
	function Request() {
		this.ajax = false;
		this.run = this.error = function() { };
		
		if ( window.XMLHttpRequest ) {
	       	this.ajax = new XMLHttpRequest();
	   	} 
		else if ( window.ActiveXObject ) {
	   		try {
	   			this.ajax = new ActiveXObject("Microsoft.XMLHTTP");
	   		}
	   		catch(e) {
	   			try {
	   				this.ajax = new ActiveXObject("Msxml2.XMLHTTP");
	   			}
	   			catch(e) { this.ajax =false; }
	   		}
	   	}
	   	
	   	this.process = function() {
	   		var method = arguments[0].toUpperCase();
	   		var url = arguments[1];
	   		var urlTrail = '';
	   		var me = this;
	   		for( var i=2; i < arguments.length-1; ) {
	   			urlTrail += encodeURIComponent(arguments[i++]);
	   			urlTrail +='=';	
	   			urlTrail += encodeURIComponent(arguments[i++]);	
	   			urlTrail += "&";
	   		}
	   		//urlTrail += "ms=" + new Date().getTime(); 
	   		if( method == 'GET') {
	   			url +=  urlTrail ? '?' + urlTrail  : '';
	   			urlTrail = null;
	   		}
	   		me.ajax.open( method, url, true );
	   		me.ajax.setRequestHeader("ajax", "true");
	   		me.ajax.setRequestHeader("cache-control", "no");
	   		me.ajax.setRequestHeader("pragma", "no-cache");
	   		me.ajax.onreadystatechange = function() {
	 			if( 4 == me.ajax.readyState ) {
	 				var status = -1;
	 				try {
	 					status = me.ajax.status;
	 				}catch(e) { }
	 				if( 200 == status ) {
	 					me.run();
	 				}
	 				else {
	 					me.error();
	 				}
	 			}
	   		};  		
	   		try {
	   			this.ajax.send(urlTrail);
	   		} catch(e) { }
	   	};  	
	}
	
	function createCookie(name,value,seconds) {
		if (seconds) {
			var date = new Date();
			date.setTime(date.getTime()+(seconds*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);
	}
	
	Background.setCookieTime = function(name, seconds) {
		var value = readCookie(name);
		if(value)
			createCookie(name, value, seconds);
	}
	
	Background.handShake = function(url) {
		if(!cookieEnabled)
			return;
		try {
			var req = new Request();
			req.run = function() {
				Background.setCookieTime("JSESSIONID", dynamic["session_timeout"] );
			};
			req.process( "GET", url	);
		}catch(e) { }
	};
	
	/*
	Background.assignUnload = function() {
		var tempPointer = function() {
			setCookieTime("JSESSIONID",  dynamic["session_timeout"] );
		};
		if( window.addEventListener ) {
			window.addEventListener("unload", tempPointer, false);
		}
		else {
			window.attachEvent("onunload", tempPointer);
		}
	};
	*/
	
	Background.checkCookie = function(msg) {
		if ( !cookieEnabled ) {
			document.write("<span style='font: bold 8pt Verdana; color: red;padding: 4px 10px; position: fixed; left: 2px; top:2px; background-color: #000;'>");
			document.write(msg); 
			document.write("</span>");
		}
	};
})();