function AEtext(pAEid, pAE_HTML_Node, pAE_ParamList, pAE_Parent)
{
    // Set this object up as a descendant of the activeElement class
    // The screen name is set to be the same as the global pageAE object instance

    D.debugStartFunction("AEtext", arguments);
    
    this.superclass = activeElement;
    this.superclass(pAEid, "AEtext", "", pAE_HTML_Node, pAE_ParamList, pAE_Parent);
    
    this.aeInitialise = function() // Overloads master aeInitialise function
    {
        /*
        Overrides aeInitialise from master activeElement class.
        
        Called after new AE has been created.  Populates HTML nodes with startup text and
        performs any other initialisation for this AE
        */
        
        D.debugStartFunction("AEtext:aeInitialise", arguments);

        // Propogate to any controlled AEs under this one
        
        for (var i=0; i<this.AE_controlledAE_Count; i++)
        {
            this.AE_controlledAE_List[i].aeInitialise();
        }
        
        D.debugEndFunction("aeInitialise");
    }

    this.aeScreenChange = function(pScreen)
    {
        D.debugStartFunction("AEtext.aeScreenChange", arguments);
        //this.aeUpdateHTML_Nodes("AEtext: Screen changed to " + pScreen);

        this.aeUpdateContent();

        // Cascade to all child AEs
        
        for (var i=0; i<this.AE_controlledAE_Count; i++)
        {
            D.debug("Cascading to AEid " + this.AE_controlledAE_List[i].AE_AEid);
            this.AE_controlledAE_List[i].aeScreenChange(pScreen);
        }
        D.debugEndFunction("AEtext: aeScreenChange");
    }
    
    this.aeCreateDataRequestXML = function(pRequestType, pFilename)
    {
        var dataPayload; // this will contain XML-tagged data, specific to this AEtype
        
        dataPayload = this.aeXMLnodeCreate('datarequesttype', pRequestType);
        dataPayload += this.aeXMLnodeCreate('filename', pFilename);
        dataPayload = this.aeXMLnodeCreate('datarequest', dataPayload);
        
        return dataPayload;
    }

    this.aeUpdateContent = function()
    {
        var Header = new Array;
        var DataRequest;
        var RequestXML;
        
        Header['msgseqnum']   = this.aeGetMsgSeqNum();
        Header['requesttype'] = 'datarequest';
        Header['loggingflag'] = 'true';
        Header['aetype']      = this.aeGetAEtype();
        Header['aeid']        = this.aeGetAEid();

        if ( this.AE_paramList == "fixed" )
        {
            filename = "textFixed" + this.aeGetAEid() + ".txt";
        }
        else if ( this.AE_paramList == "variable" )
        {
            filename = "textVariable" + this.aeGetScreenName() + this.aeGetAEid() + ".txt";
        }
        else
        {
            // AEparam should be one of 'fixed' or 'variable'. To get here, it is neither - not good
            filename = "";
        }

        RequestXML = this.aeCreateRequestHeaderXML(Header);
        RequestXML += this.aeCreateDataRequestXML('text', filename);

        DataRequest = this.aeXMLnodeCreate('activeelementrequest', RequestXML);
        
        this.aeSendRequest(DataRequest);
    }
    
    this.aeProcessResponse = function(pXML)
    {
        D.debugStartFunction("AEtext.aeProcessResponse", arguments);
        D.debugEndFunction("AEtext: aeProcessResponse");
    }
 
    this.aeInitialise();
    this.aeUpdateContent();
    
    D.debugEndFunction("AEtext");
}