/*
** $Id: UserAccess.js 11432 2007-10-29 07:14:00Z Yudi $
*/

/*--------------------------------------------------------------------------------------

var Element = {

	find   : function(_sElementId) {

		    this.id = _sElementId;
		this.object = document.getElementById ? document.getElementById(_sElementId) :
			          document.all ? document.all[_sElementId] : null;
			     
		return this;
	
	},
	
	value  : function(_sValue) {
	
		return _sValue ? this.object.value = _sValue : this.object.value;
	
	}	

}

----------------------------------------------------------------------------- 

var Browser = {
info   : null
	,
	
	init   : function() {

		
		   this.agent = navigator.userAgent.toLowerCase();
		   this.ver = navigator.appVersion.toLowerCase();
		   this.dom = document.getElementById ? true : false;
		 this.opera = this.agent.indexOf("opera") > -1;
		this.opera5 = this.agent.indexOf("opera 5") > -1;
		this.opera9 = this.ver.indexOf("9.") > -1;
		   this.ie5 = (this.ver.indexOf("msie 5") > -1 && this.dom && !this.opera5) ? true : false; 
		   this.ie6 = (this.ver.indexOf("msie 6") > -1 && this.dom && !this.opera5) ? true : false;
		   this.ie4 = (document.all && !this.dom && !this.opera5) ? true : false;
		    this.ie = this.ie4 || this.ie5 || this.ie6;
		   this.mac = this.agent.indexOf("mac") > -1;
	   this.firefox = this.agent.indexOf("firefox") > -1;
		   this.ns6 = (this.dom && parseInt(this.ver) >= 5) ? true : false; 
		   this.ns4 = (document.layers && !this.dom) ? true : false;
		    this.bw = this.ie  || this.opera || this.mac || this.firefox ||
					  this.ns4 || this.ns6;



	Browser.info = this;
		
		return Browser;
	
	},
	
	doPostBack  : function(_sFormName, _sAction) {
	
		if (_sAction!=null)
			document.forms[_sFormName].action = _sAction;
			
		document.forms[_sFormName].submit();
	
	},
	
	getElement  : function(_sElementId) {

		return Element.find(_sElementId);
	
	}

}

----------------------------------------------------------------------------------

Browser.init();

------------------------------------------------------------------------------

function $() {

	var oElements = [];

	if (arguments.length==1)
		return Browser.getElement(arguments[0]).object;

	for (var i=0; i < arguments.length; i++)
		oElements.push(Browser.getElement(arguments[i]).object);
		
	return oElements;

}

--------------------------------------------------------------------------------------

var Ajax = {

	HttpState : {
				
		Ok   : 200
				
	},

	CallState : {
				
		Uninitialized : 0,
		Loading       : 1,
		Loaded        : 2,
		Interactive   : 3,
		Complete      : 4

	},

	CallType : {
	
		Get  : 'GET',
		Head : 'HEAD',
		Post : 'POST'
	
	},

	host  : null,
	
	init  : function(_oHost) {
	
		Ajax.host = _oHost;
		
		Ajax.onError = new Function();
	
	},
	
	createXmlHttp : function() {
	
		var oObject = null;
		
		if (Ajax.host.info.ie) {
		
			try {
			
				oObject = new ActiveXObject(
							Ajax.host.info.ie6 ? 'Msxml2.XMLHTTP' : 'Microsoft.XMLHTTP'
						  );
			
			}
			catch (exception) {
			
				Ajax.onError(
					{ text : 'Unable to create XMLHTTP object.' }
				);
			
			}
		
		} else {
		
			try {
			
				oObject = new XMLHttpRequest();
			
			}
			catch (exception) {
			
				Ajax.onError(
					{ text : 'Unable to create XMLHttpRequest object.' }
				);
			
			}
		
		}
		
		return oObject;
	
	},
	
	createCall : function(_oObject) {
	
		return new AjaxCall.create(_oObject);
	
	}
	
};

----------------------------------------------------------------------------------------

Ajax.init(Browser);

---------------------------------------------------------------------------------------

var TimerControl = {

	id        : null,
	timeout   : null,
	observer  : null,
	enabled   : null,
	
	init      : function(_iTimeout) {
	
		TimerControl.id = -1;
		TimerControl.observer = [];
		TimerControl.enabled  = true;
		TimerControl.timeout  = _iTimeout ? _iTimeout : 100;
	
	},
	
	proc      : function() {

		TimerControl.notify();
		
		if (TimerControl.id != -1)
			self.clearTimeout(TimerControl.id);
		
		if (TimerControl.enabled)
			TimerControl.id = self.setTimeout("TimerControl.proc()", TimerControl.timeout);
	
	},
	
	start     : function() {
	
		TimerControl.enabled = true;
		TimerControl.proc();
		
	},
	
	stop      : function() {
	
		TimerControl.enabled = false;
	
	},
	
	notify    : function() {
	
		for (var iIndex=0; iIndex < TimerControl.observer.length; iIndex++)
			TimerControl.observer[iIndex].onTimeout(TimerControl.observer[iIndex]);
	
	},
	
	subscribe : function(_oObserver) {
	
		TimerControl.observer.push(_oObserver);
	
	}

};

----------------------------------------------------------------------------------------
/*
TimerControl.init();

----------------------------------------------------------------------------------------

var AjaxCall = {

	create : function (_oObject) {
	
		this.id   = _oObject.id;
		this.url  = _oObject.url;
		this.type = _oObject.type;
		this.http = null;
		this.onError    = _oObject.onError    ? _oObject.onError    : new Function();
		this.onComplete = _oObject.onComplete ? _oObject.onComplete : new Function();
		this.onLoading  = _oObject.onLoading  ? _oObject.onLoading  : new Function();
		
		this.submit = function() {
		
			var oObject = this;
		
			oObject.http = Ajax.createXmlHttp();
			
			if (oObject.http) {
			
				oObject.http.onreadystatechange = function() {
				
					var AjaxState = Ajax.CallState;
					var HttpState = Ajax.HttpState;
					var CallType  = Ajax.CallType ;
					
					try {
					
						if (oObject.http.readyState == AjaxState.Complete) {

							if (oObject.type == CallType.Head) {

								if (oObject.http.status == HttpState.Ok) {

									oObject.onComplete(
										{
											all    : oObject.http.getAllResponseHeaders(),
											server : oObject.http.getResponseHeader('Server'),
											cache  : oObject.http.getResponseHeader('Cache-Control'),
											date   : oObject.http.getResponseHeader('Date'),
											type   : oObject.http.getResponseHeader('Content-Type'),
											length : oObject.http.getResponseHeader('Content-Length')
										}
									);
								
								}
								else {

									oObject.onError(
										{ text : oObject.http.status }
									);

								}								

							}
							else {

								if (oObject.http.status == HttpState.Ok) {
								
									oObject.onComplete(
										{
											text : oObject.http.responseText,
											xml  : oObject.http.responseXML
										}
									);
								}
								else {

									oObject.onError(
										{ text : oObject.http.status }
									);

								}
						
							}

						}
						else if (oObject.http.readyState == AjaxState.Loading) {
						
							oObject.onLoading();
						
						}
					
					}
					catch(exception) {
					
						oObject.onError(
							{ text : exception.toString() }
						);
					
					}
				
				};

				var sURL = oObject.url;

				sURL += (sURL.indexOf('?') > 0) ? '&webtrackerstamp=' + (new Date()).getTime() : '?webtrackerstamp=' + (new Date()).getTime();

				oObject.http.open(oObject.type, sURL, true);
				oObject.http.send(null);
			
			}
			else {
			
				oObject.onError(
					{ text : 'Unable to create XmlHttp object.' }
				);
			
			}
		
		},

		this.abort = function() {
		
			this.http.abort();
		
		}
		
		return this;
	
	}
	
};

*----------------------------------------------------------------------------------------*

var UserAccess = {

	timeout	: 60,
	
	tracking: 5000,

	handle	: null,
	
	routine	: null,
	
	page	: 'IdlePage.aspx',

	counter : 0,
	
	last	: null,
	
	request	: null,

	load	: function() {

		var sURL = window.location.toString();
		
		if (sURL.indexOf('?') > 0)
			sURL += '&trackme=1';
		else
			sURL += '?trackme=1';
			
		window.document.onclick = 
		window.document.onkeydown = 
		window.onscroll =
		window.onresize = UserAccess.init;
		
		UserAccess.routine = UserAccess.handler;
		UserAccess.init();
		
		UserAccess.request = Ajax.createCall(
			{
				id         : 'TrackMe',
				url        : sURL,
			
				onComplete : function(_oObject)   { 
				 },
				onError    : function(_oResponse) { 
				}
			}
		);
		
	},

	init	: function() {
		
		var oTime = new Date();
		oTime = oTime.getTime() - UserAccess.last;
		
		if (oTime > UserAccess.tracking) {
		
			if (UserAccess.request) {
			
				
				UserAccess.request.submit();
				
			}
				
			UserAccess.last = new Date();
			UserAccess.last = UserAccess.last.getTime();
			
		}

		UserAccess.counter = 0;
			
		clearInterval(UserAccess.handle);
	
		UserAccess.handle = setInterval("UserAccess.tick()", 1000);
	
	},
	
	tick	: function() {
	
		UserAccess.counter++;
		
		if (UserAccess.counter >= UserAccess.timeout)
			if (UserAccess.routine) {

				if (window.dialogArguments) {
					
					window.close();
					return;
					
				}

				if (oTracker.cycle==-1) {
					
					var sURL2 = window.location.toString();
					
					if (sURL2.indexOf('?') > 0)
						sURL2 += '&trackis=1';
					else
						sURL2 += '?trackis=1';

					var UserAccess2 = Ajax.createCall(
						{
							id         : 'TrackMe2',
							url        : sURL2,
							
							onComplete : function(_oObject)   { 
								if (_oObject.text==0) {
									UserAccess.init();
									UserAccess.routine();
								}
							},
							onError    : function(_oResponse) { }
						}
					);
					
					UserAccess2.submit();

					return;
					
				} else if (oTracker.cycle > 0) {
				
					if (UserAccess.counter >= oTracker.cycle) {
					
						UserAccess.init();
						UserAccess.routine();
					
					} else {
					
						UserAccess.init();
						
					}
				
				} else {
				
					UserAccess.init();
					UserAccess.routine();
					
				}

			}
			
	},
	
	handler	: function() {
	
		if (window.dialogArguments)
			window.close();
		else {
			if (window.location.toString().indexOf('/common/') < 0)
				window.open(UserAccess.page, '_parent');
			else
				window.open('../home/' + UserAccess.page, '_parent');
		}
	
	}

};

*---------------------------------------------------------------------------------------*

window.onload = function() {


	if (self.oTracker) {

		var oTime = new Date();

		UserAccess.last = oTime.getTime();
		UserAccess.timeout = oTracker.idle;
		UserAccess.page = oTracker.page;
		UserAccess.tracking = oTracker.track;
		
		if (oTracker.enabled) {
		
			if(window.dialogArguments)
				UserAccess.timeout = oTracker.timeout;

			UserAccess.load();
			
		}
		
	}
	
};

/*----------------------------------------------------------------------------------------*/
