//AJAX FUNCTION
function TP_CreateXMLRequest(url, stateChange)
{
    var objXML;
    
    if(window.XMLHttpRequest)
    {
        objXML = new XMLHttpRequest();
    }
    else if(window.ActiveXObject)    //IE 6-
    {
        objXML = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    if (objXML != null)
    {        
        objXML.onreadystatechange = stateChange;
        objXML.open("GET", url, true);
        objXML.send(null);
    }
    else
    {
        window.alert("Your browser does not support XMLHTTP.")
    }
    
    return objXML;
}  

//FIND THE X POSITION OF THE PASSED IN OBJECT
function TP_findPosX(obj) 
{ 
    var iPos = 0;  
    var iScrollX = (window.opera ? 0 : TP_findScrollX(obj));  //OPERA DOESN'T LIKE THE SCROLL POSITION
    
    do
    {
        iPos += obj.offsetLeft;
    } while (obj = obj.offsetParent);
		
    return iPos - iScrollX;
} 

function TP_findScrollX(obj)
{
    var iPos = 0;

    do
    {
        if (obj.scrollLeft != null) iPos += obj.scrollLeft;
    } while (obj = obj.parentNode);
		
    return iPos;
}

//FIND THE Y POSITION OF THE PASSED IN OBJECT 
function TP_findPosY(obj) 
{  
    var iPos = 0;  
    var iScrollY = (window.opera ? 0 : TP_findScrollY(obj));  //OPERA DOESN'T LIKE THE SCROLL POSITION
    
    do
    {
        iPos += obj.offsetTop;
    } while (obj = obj.offsetParent);
		
    return iPos - iScrollY;
}   

function TP_findScrollY(obj)
{
    var iPos = 0;

    do
    {
        if (obj.scrollTop != null) iPos += obj.scrollTop;
    } while (obj = obj.parentNode);
		
    return iPos;
}
   
function TP_PositionDiv(DivObject, PositionObject, ShowOffset)
{
    var iBodyWidth = 0, iBodyHeight = 0; 
    var iLef = 0, iTop = 0, iTotalWidth = 0, iTotalHeight = 0, iScrollOffsetX = 0, iScrollOffsetY = 0; 
    var iPositionObjHeight = 0, iPositionObjWidth = 0, iPositionObjX = 0, iPositionObjY = 0;

    iBodyHeight = 30; 
    
    iTotalWidth = document.documentElement.clientWidth;  
    iTotalHeight = document.documentElement.clientHeight;    
    iScrollOffsetX = (window.opera ? 0 : (window.pageXOffset ? window.pageXOffset : document.documentElement.scrollLeft));
    iScrollOffsetY = (window.opera ? 0 : (window.pageYOffset ? window.pageYOffset : document.documentElement.scrollTop)); 
    
    iPositionObjHeight = (PositionObject.clientHeight ? PositionObject.clientHeight : PositionObject.height);
    iPositionObjWidth = (PositionObject.clientWidth ? PositionObject.clientWidth : PositionObject.width);    
    iPositionObjX = findPosX(PositionObject);
    iPositionObjY = findPosY(PositionObject);    
   
    //MOVE THE DIV OFF THE SCREEN AND SHOW IT SO WE CAN GET ITS DIMENSIONS
    DivObject.style.left = "-10000px"; 
    DivObject.style.top = "-10000px";    
    DivObject.style.display = "block";   
    iBodyWidth = DivObject.clientWidth;
    iBodyHeight = DivObject.clientHeight;     
   
    if ((iTotalWidth - ((iPositionObjX - iScrollOffsetX) + iPositionObjWidth)) < iBodyWidth) 
    {           
        iLeft = iPositionObjX - iBodyWidth;	//POSITION IS ON RIGHT EDGE, SHOW DIV TO THE LEFT         
    } 
    else 
    { 
        iLeft = iPositionObjX + iPositionObjWidth;	//SHOW DIV TO THE RIGHT 
    } 
    
    if (iLeft + iBodyWidth + 20 > iTotalWidth)
    {        
        iLeft = iTotalWidth - iBodyWidth - 20 + iScrollOffsetX;        
    } 
           
    var bIsDownOK = ((iPositionObjY + iPositionObjHeight + iBodyHeight) < (iTotalHeight));
    var bIsUpOK = ((iPositionObjY - iBodyHeight) > 0);

    if (!bIsDownOK && !bIsUpOK) 
    {   
        iTop = iPositionObjY - (iBodyHeight / 2);	//SHOW IN THE MIDDLE, DOWN AND UP WOULD CUT IMAGE 
    } 
    else if (bIsDownOK || !bIsUpOK) 
    {
        iTop = iPositionObjY + iPositionObjHeight;	//SHOW DIV DOWN 
    } 
    else 
    {               
        iTop = iPositionObjY - iBodyHeight;	//POSITION IS TOO FAR DOWN, SHOW DIV UP 
    }    
    
    iTop += iScrollOffsetY;  
   
    if(!document.all)   
    {
        iLeft += "px";
        iTop += "px";
        iBodyWidth += "px";
    }
            
    //NEED TO SHOW THE DIV BEFORE WE GET THE CLIENT HEIGHT
    DivObject.style.left = iLeft; 
    DivObject.style.top = iTop; 
    DivObject.style.width = iBodyWidth; 
} 
