// JavaScript Document
	var doc = null;
	var keepOpenFlag = false;
	var tempX = 0;
	var tempY = 0;
		
		if(self == parent){
			doc = document;	
		}else{
			doc = parent.document;	
		}    
	
	
function getTipHttp(){

var xmlHttp;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
	{
	xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	}
  catch (e)
	{
	try
	  {
	  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	  }
	catch (e)
	  {
	  alert("Your browser does not support AJAX!");
	  return false;
	  }
	}
  }

	return xmlHttp;

}

function toggleProfileVisibility(userTT, url)
{
	
	var doc = document;
		
		/*
		if(self == parent){
			doc = document;	
		}else{
			doc = parent.document;	
		} */


	   
	var xmlHttp = getTipHttp();

		xmlHttp.open("GET", url, true);
		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		xmlHttp.send(null);

		  xmlHttp.onreadystatechange=function()
			{
				if(xmlHttp.readyState==4)
				{
				 doc.getElementById(userTT).innerHTML = xmlHttp.responseText;
				}
			}

  
}

function keepProfileOpen(){
	
		keepOpenFlag = true;
		
		var posX = (tempX)+'px';
		var posY = (tempY)+'px';
		
		var doc = null;
		
		if(self == parent){
			doc = document;	
		}else{
			doc = parent.document;	
		}
	
		//document.getElementById('zeusportalTT-note-user').style.top = posY;
		//document.getElementById('zeusportalTT-note-user').style.left = posX;
		doc.getElementById('zeusportalTT-note-user').style.position = 'absolute';	
		doc.getElementById('zeusportalTT-note-user').style.visibility = 'visible';
	
}



function getMouseXY(e) {
	
	var IE = document.all?true:false;
	
	
	/**
	
	if (IE) { // grab the x-y pos.s if browser is IE
			tempX = event.clientX  + document.documentElement.scrollLeft;
			tempY = event.clientY  + document.documentElement.scrollTop;
			//tempX = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
			//tempY = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}
	else {  // grab the x-y pos.s if browser is NS
	tempX = e.pageX;
	tempY = e.pageY;
	}  
	if (tempX < 0){tempX = 0;}
	if (tempY < 0){tempY = 0;} 
	
	**/
		
	 if (IE) { // grab the x-y pos.s if browser is IE
		tempX = event.clientX + document.body.scrollLeft
		tempY = event.clientY + document.body.scrollTop
	  } else {  // grab the x-y pos.s if browser is NS
		tempX = e.pageX
		tempY = e.pageY
	  }  
	  // catch possible negative values in NS4
	  if (tempX < 0){tempX = 0}
	  if (tempY < 0){tempY = 0}  
	


}

function closeProfile(userTT){
	

	var doc = null;
		
		if(self == parent){
			doc = document;	
		}else{
			doc = parent.document;	
		}
	
	if(!keepOpenFlag){
	
		doc.getElementById('zeusportalTT-note-user').style.top =0;
		doc.getElementById('zeusportalTT-note-user').style.right = 0;
		doc.getElementById('zeusportalTT-note-user').style.position = 'absolute';	
		doc.getElementById('zeusportalTT-note-user').style.visibility = 'hidden';
	
	}else{
		keepOpenFlag = false;	
	}
	
}

addEvent(doc, 'mouseover', function(evt) { getMouseXY(evt) } );

addEvent(doc, 'click', function(evt) { getMouseXY(evt) } );

addEvent(doc, 'mousemove', function(evt) { getMouseXY(evt) } );

addEvent(doc, 'mouseout', function(evt) { getMouseXY(evt) } );	




var TimeoutExecutor = Class.create();
TimeoutExecutor.prototype = {
    initialize: function(callback, timeout) {
        this.callback = callback;
        this.timeout = timeout;
        this.currentlyExecuting = false;
        this.registerCallback();
    },
    registerCallback: function() {
        this.timeoutID = setTimeout(this.onTimerEvent.bind(this), this.timeout);
    },
    onTimerEvent: function() {
        try {
            this.currentlyExecuting = true;
            if (this.callback && this.callback instanceof Function) {
                this.callback();
            }
        }
        finally {
            this.currentlyExecuting = false;
            delete this.timeoutID;
        }
    },
    cancel: function() {
        if (!this.currentlyExecuting && this.timeoutID) {
            clearTimeout(this.timeoutID);
            delete this.timeoutID;
        }
    },
    reset: function() {
        if (!this.currentlyExecuting && this.timeoutID) {
            clearTimeout(this.timeoutID);
            delete this.timeoutID;
            this.registerCallback();
        }
    }
}

var QuickUserProfile = Class.create();
QuickUserProfile.prototype = {

/*
* Initialize the QuickUserProfile object.
*/
    initialize: function(userTT, userTTURL, textTTLoading, textTTError)
    {
        this.loadingContent = '<strong class="zeusportal-tooltip2-loading">' + textTTLoading + '</strong>';
        this.userTT = userTT;
        this.userTTURL = userTTURL;
        this.textErrorTT = textTTError;
        //this.zeusportalUserTips = new SuperNote('zeusportalTT', {showDelay: 700, hideDelay: 30, cssProp: 'visibility', cssVis: 'visible', cssHid: 'hidden'});
    },


    getUserProfileTooltipHelper: function(userID, timeout) {
       
	   
	   this.cancelTooltip();
	   
		keepOpenFlag = true;	   
		
		var posX = (tempX)+'px';
		var posY = (tempY)+'px';
		
		var doc = null;
		
		if(self == parent){
			doc = document;	
		}else{
			doc = parent.document;	
		}
	
	
		doc.getElementById('zeusportalTT-note-user').style.top = posY;
		doc.getElementById('zeusportalTT-note-user').style.left = posX;
		doc.getElementById('zeusportalTT-note-user').style.position = 'absolute';	
		doc.getElementById('zeusportalTT-note-user').style.visibility = 'visible';
		
        doc.getElementById(this.userTT).innerHTML = "...";
		
		doc.getElementById('zeusportalTT-note-user').style.visibility = 'hidden';
        //this.timeoutExecutor = new TimeoutExecutor(this.getUserProfile.bind(this, userID), timeout);  
		
	
    },
    getUserProfileTooltip: function(userID) {
       
	   
	   this.cancelTooltip();
	   
		keepOpenFlag = true;	   
		
		var posX = (tempX)+'px';
		var posY = (tempY)+'px';
		
		var doc = null;
		
		if(self == parent){
			doc = document;	
		}else{
			doc = parent.document;	
		}
	
	
		doc.getElementById('zeusportalTT-note-user').style.top = posY;
		doc.getElementById('zeusportalTT-note-user').style.left = posX;
		doc.getElementById('zeusportalTT-note-user').style.position = 'absolute';	
		doc.getElementById('zeusportalTT-note-user').style.visibility = 'visible';
				
		if ( FB.XFBML.Host.parseDomTree )
		  setTimeout( FB.XFBML.Host.parseDomTree, 0 );		
		
		
        doc.getElementById(this.userTT).innerHTML = this.loadingContent;
        this.timeoutExecutor = new TimeoutExecutor(this.getUserProfile.bind(this, userID), 700);  
	   
	   
		
		
	
    },

    getUserProfile: function(userID) {
        var instance = this;

	
		toggleProfileVisibility(this.userTT, this.userTTURL+'?targetUser='+userID);
		//$(this.userTT).innerHTML = tempX +', '+tempY;
		keepOpenFlag = false;

    },

    cancelTooltip: function() {

	
			if (this.timeoutExecutor) {
				this.timeoutExecutor.cancel();
			}
			
			setTimeout ("closeProfile();", 6000 );
		
	
		
    }
}