    var jtagsPopBoxT = null;			// hold the timeout value for the popup
    var mouseOverBox = false;			// Used to delay the box off function when the mouse is over the box
    var jtagsHoldCaller = null;			// Holds the calling object for popups. Theoretically we can use this to give us enough time for the box to resize with the contents

	// Helper to make it easier to call the left function
	function jtagsSetPop()
	{
	    	set_top("jtagsPopBox",Math.min(get_obj_top(jtagsHoldCaller),document.body.scrollTop+page_bottom()-get_obj_height(jtagsHoldCaller)));
	    	set_left("jtagsPopBox",Math.min(get_obj_left(jtagsHoldCaller)+get_obj_width(jtagsHoldCaller),document.body.clientWidth-get_width("jtagsPopBox")));
	}
    // Send this function anything you want, it will adjust for size
    function jtagsPopOn(caller,info)
    {
        clearTimeout(jtagsPopBoxT);	// In case we had one about to disappear, force it to not
        // Note, we have a div inside a div so that we can customize the way the innerbox looks to a great degree
        document.getElementById("jtagsPopContent").innerHTML = info;
        block_on("jtagsPopBox");

    	jtagsHoldCaller = caller;
    	jtagsSetPop();

        // Text boxes were expanding to fill the screen for some reason. This fixes it.
//        if (get_width("jtagsPopBox")>300)
 //       	set_width("jtagsPopBox","300px");

//    	setTimeout("jtagsSetPop();",1000);        
    }

    // In this case, due to nested quotes or something, we shoved what we want into a div. Pass the ID of the contents to copy
    function jtagsPopOnId(caller,id)
    {
    	jtagsPopOn(caller,document.getElementById(id).innerHTML);
    }
    
    function jtagsCheckOff()
    {
    	if (!mouseOverBox)
    	{
		block_off('jtagsPopBox');
		set_width('jtagsPopBox','auto');
	}
	else	// Try again in a few seconds
	        jtagsPopBoxT = setTimeout("jtagsCheckOff()",150);
    }
    
    function jtagsPopOff(){
        jtagsPopBoxT = setTimeout("jtagsCheckOff()",150);
    }                