<source><name>Hemi</name><project><name>Hemi JavaScript Framework</name><url-title>Hemi JavaScript Framework</url-title><url>/Hemi/</url></project><package><description>Framework base classes, including: Hemi for creating framework objects and loading external libraries; Hemi.xml for AJAX and JSON requests (libXmlRequest derivative); Hemi.registry for object repository management; Hemi.message for delegating message subscriptions and publications.</description><library>Hemi</library><global><version>3.1.9</version><description>The base set of classes for the Hemi Framework.</description><object><name>Hemi</name><description>The core class used to load and manage framework classes.</description></object></global><static-class><name>Hemi</name><example><name>Create Framework Object</name><description>Demonstrate how to create a new Framework Object</description><code>// Create a new object that is also registered</code><code>var oNewObject = Hemi.newObject("myObject","1.0", true);</code><code>var sId = oNewObject.getObjectId();</code><code>// Retrieve the object from the registry</code><code>var oLookup = Hemi.registry.service.getObject(sId);</code></example><example><name>Prepare an Existing Object for the Framework</name><description>Demonstrate how to prepare an existing object for the framework and use a custom identifier.</description><code>// Prepare an existing object and give it a custom id</code><code>var oObject = {};</code><code>oObject.object_id = "MyCustomId";</code><code>Hemi.prepareObject("myObject", "1.0", true, oObject);</code><code>// Retrieve the object from the registry</code><code>var oLookup = Hemi.registry.service.getObject("MyCustomId");</code></example><object><name>FrameworkObject</name><description>API definition for any object created by the Hemi Framework.</description><property type="object" name="properties">A hash of primitive values (strings, ints, etc) for storing configuration, settings, and status.</property><property type="object" name="objects">A hash of object values for storing named object references.</property><property name="object_id" type="String" internal="1">A globally unique identifier.</property><property name="object_type" type="String" internal="1">The named type of the object.</property><property name="object_version" type="String" internal="1">The version of the object.</property><property name="ready_state" type="int" internal="1">State tracking mechanism, used primarily for determining object availability and destruction.</property><property name="object_config" type="object">Object on which the inner status and pointers objects are defined.</property><method><name>getObjectId</name><return-value type="String" name="i">Identifier used to identify this object within the registry.</return-value><description>Returns the object identifier.</description></method><method><name>setObjectId</name><param name="i" type="String">The id of the object.</param><description>Sets the object identifier.  Only applicable after creating or preparing a new object, and prior to registering the object.</description></method><method><name>getObjectType</name><return-value type="String" name="t">Named type for the object.</return-value><description>Returns the object identifier.</description></method><method><name>getObjectVersion</name><return-value type="String" name="v">Version of the object.</return-value><description>Returns the object version.</description></method><method><name>getReadyState</name><return-value type="int" name="i">The ready state of the object.</return-value><description>Returns the state of the object.</description></method></object><property name="hemi_base" get="1" set="1" type="String">The base path of the Hemi Framework. By default, the base path is /Hemi/ when accessed via http/s, and the current directory when accessed via the filesystem.</property><object internal="1"><name>DATATYPES</name><description>Enumeration of object types.</description><property name="TYPE_STRING" type="String">string</property><property name="TYPE_OBJECT" type="String">object</property><property name="TYPE_FUNCTION" type="String">function</property><property name="TYPE_UNDEFINED" type="String">undefined</property><property name="TYPE_NUMBER" type="String">number</property></object><method><name>logError</name><param name="sMessage" type="String">Message to send to the logger.</param><description>Sends a message in the #100.5 message block.</description></method><method><name>logWarning</name><param name="sMessage" type="String">Message to send to the logger.</param><description>Sends a message in the #100.4 message block.</description></method><method><name>logDebug</name><param name="sMessage" type="String">Message to send to the logger.</param><description>Sends a message in the #100.1 message block.</description></method><method><name>log</name><param name="sMessage" type="String">Message to send to the logger.</param><description>Sends a message in the #100.3 message block.</description></method><method><name>isImported</name><param name="s" type="String">Namespace name.</param><return-value type="boolean" name="bImported">Bit indicating whether the namespace has been imported.</return-value><description>Returns the object identifier.</description></method><method internal="1"><name>dereference</name><param name="sName" type="String">Namespace or Library name of the imported script file.</param><return-value name="bUnreferenced" type="bit">Bit indicating the namespace and library maps were dereferenced.</return-value><description>Dereferences the imported library and library map.  This does not delete the object from its parent, or destroy the object from the framework.</description></method>
alert('def: ' + n + ":" + HemiEngine.isImported(n));
<method internal="1"><name>getLibrary</name><param name="sName" type="String">Namespace or Library name of the imported script file.</param><return-value name="NamespaceObject" type="object">Returns an internal namespace object.</return-value><description>Returns the specified namespace object.</description></method><method><name>include</name><param name="sName" type="String">Namespace of the script file to import.</param><param name="sPath" type="String" optional="1">Path where the script file resides.  Default to Framework/</param><param name="bNoEval" type="boolean" optional="1">Bit indicating whether the loaded script should not be executed.</param><return-value name="NamespaceObject" type="object">Returns an internal namespace object.</return-value><description>Imports the specified namespace.</description></method>
try {
<method><name>namespace</name><description>Creates a hierarchical object namespace from the supplied name.</description><param name="sPath" type="String">Period-delimited hierarchy.</param><param name="oBase" type="object" optional="1">Base object, defaults to Hemi.Context (which default to window).</param><param name="hContents" type="object" optional="1">Object hash contents.</param><param name="bService" type="boolean" optional="1">Bit indicating the namespace defines service and serviceImpl members, and to instantiate the service.</param></method><method><name>lookup</name><description>Verifies the specified hierarchy exists.</description><param name="sPath" type="String">Period-delimited hierarchy.</param><return-value name="v" type="boolean">Returns true if the hierachy exists, or the matching object if bObjOut is set to true.</return-value></method><method><name>hashlight</name><description>A very light hash.</description><param name="sData" type="String">Data to be hashed.</param><return-value name="sHash" type="String">A light hash of the input data.</return-value></method><method><name>guid</name><description>Returns a globally unique identifier, relative to the page view.  This uses a weak hash.</description><return-value name="sId" type="String">A unique id.</return-value></method><method><name>newObject</name><param name="t" type="String">The type of the object.</param><param name="v" type="String">The version of the object.</param><param name="r" type="boolean">Bit indicating whether the object should be registered with the Object Registry.</param><param name="d" type="boolean">Bit indicating whether the object should include a deconstructor.</param><param name="h" type="hash">Object members to include on this object.</param><return-value type="FrameworkObject" name="o">The new framework object.</return-value><description>Creates and optionally registers a new FrameworkObject ready for use within the framework.</description></method><method><name>prepareObject</name><param name="t" type="String">The type of the object.</param><param name="v" type="String">The version of the object.</param><param name="r" type="boolean">Bit indicating whether the object should be registered with the Object Registry.</param><param type="FrameworkObject" name="o">The object to be prepared for use in the Hemi framework.</param><param name="d" type="boolean">Bit indicating whether the object should include a deconstructor.</param><description>Prepares and optionally registers a new FrameworkObject ready for use within the Hemi framework.</description></method><method private="1"><name>_implements</name><param name="o" type="object">Target object to merge features..</param><param name="n" type="String">Name of merge features.</param><param name="v" type="variant">Overloaded variant arguments to pass to the implementing object constructor.</param><description>Implements a specified feature.</description></method><method private="1" internal="1"><name>_forName</name><param name="s" type="String">Name of the object to return.</param><return-value name="o" type="object">Object based on the specified name.</return-value><description>Creates a specific internal object.  Includes the definition for base_object, and supports external definitions via class imports.</description></method><method><name>GetSpecifiedAttribute</name><param name="o" type="Node">Node reference</param><param name="n" type="String">Name of the attribute to test.</param><return-value type="String" name="v">Value of the attribute.</return-value><description>Returns the value of an attribute if it was specified and the length is greater than zero.</description></method><method><name>IsAttributeSet</name><param name="o" type="Node">Node reference</param><param name="n" type="String">Name of the attribute to test.</param><param name="b" type="bit" optional="1" default="0">Bit indicating whether to return the attribute value instead of a positive bit.</param><return-value type="bit" name="b">A bit indicating whether the specified attribute was set.</return-value><description>Tests whether an attribute has been set.</description></method></static-class><static-class><name>registry.service</name><version>3.1.9</version><description>Static implementation of hemi.registry.serviceImpl</description><method><name>getEvalStatement</name><param name="o" type="object">Registered object.</param><return-value name="sEvalCode" type="String">A javascript statement which, when evaluated, returns a reference to the object.</return-value><description>Returns a string statement that can be evaluated to return a reference to the registered object.</description></method><method><name>getApplyStatement</name><param name="o" type="object">Registered object.</param><param name="f" type="String">Name of a method on the registered object</param><return-value name="sApplyCode" type="String">A javascript statement which, when evaluated, returns a reference to the function on the object.</return-value><description>Returns a string statement that can be evaluated to return a reference to the specified method for the registered object.</description></method></static-class><class><name>registry.serviceImpl</name><version>3.1.9</version><description>Repository service for storing and discovering framework objects.</description><method><name>canRegister</name><param name="o" type="object">Object to test whether or not it can be registered.</param><return-value name="b" type="boolean">Returns true if the specified object defines an <i>object_id</i>, <i>object_version</i>, and <i>object_type</i> String property, and <i>ready_state</i> int property.</return-value><description>Verifies whether an object can be added to the registry.</description></method><method><name>addObject</name><param name="o" type="object">Object to add to the registry</param><return-value name="b" type="boolean">Returns true if the object was added to the registry.</return-value><description>Adds the specified object to the registry, and automatically registers the object with the transaction service.</description></method><method><name>removeObject</name><param name="o" type="object">Object to remove from the registry</param><param name="b" type="boolean" default="false">Bit indicating whether the <i>onremoveobject</i> message should be suppressed from being published.</param><return-value name="b" type="boolean">Returns true if the object was removed.</return-value><description>Removes the specified object from the registry.</description></method><method><name>getObjectsArray</name><return-value name="a" type="array">Array of registered objects.</return-value><description>Returns an array of registered objects.</description></method><method><name>getObjectsMap</name><return-value name="a" type="array">Array of object identifiers directly mapped to the objects array.</return-value><description>Returns the object identifier mapping.</description></method><method><name>getObject</name><param name="v" type="variant">Index or name of the object to retrieve.</param><return-value name="o" type="object">Object with the specified identifier or index.</return-value><description>Returns the object matching the specified identifier or index.</description></method><method><name>isRegistered</name><param name="o" type="object">Object in the registry</param><return-value name="b" type="boolean">Returns true if the object is in the registry.</return-value><description>Returns true if the specified object is in the registry.</description></method><method><name>sendSigterm</name><description>Sends a termination signal to all registered objects for preparation to be destroyed. This method causes all objects to be removed from the registry, and to have any <i>sigterm</i> method invoked.</description></method><method><name>sendDestroyTo</name><param name="o" type="object">Object in the registry</param><return-value name="b" type="boolean">Returns true if the object defined a destroy method and the method was invoked.</return-value><description>Invokes the destroy method on the specified object.  Object must be registered.  This method will not remove the object from the registry.</description></method></class><static-class><name>message.service</name><version>3.1.9</version><description>Static implementation of hemi.message.serviceImpl</description></static-class><class><name>message.serviceImpl</name><version>3.1.9</version><description>Service that delegates subscriptions and publications at a global and object level.</description><method><name>getReportThreshold</name><return-value name="iThreshold" type="int">The message threshold.</return-value><description>Returns the report threshold for <i>sendMessage</i>.    Messages sent below this level will not be propogated.</description></method><method><name>setReportThreshold</name><param name="level" type="variant">Int or string value.  Int values are 0 - 7, and String values are: ALL, DEBUG, ADVISORY, NORMAL, WARNING, ERROR, FATAL, NONE</param><description>Sets the report threshold for <i>sendMessage</i>.   Messages sent below this level will not be propogated.</description></method>

If a number, retrieve the level name

If the level name is a valid index ...

<method><name>getEntries</name><return-value name="aBuffer" type="array">Array of recent messages.</return-value><description>Returns the current message buffer.</description></method><method><name>clearEntries</name><description>Clears message entries.</description></method><method><name>getDeliveryDelay</name><return-value name="d" type="int">Delay in milliseconds between publication and delivery.</return-value><description>Returns the delay in milliseconds between publication and delivery.</description></method><method><name>setDeliveryDelay</name><param name="d" type="int">Sets the delay in milliseconds.</param><description>Sets the delay in milliseconds between publication and delivery.</description></method><method><name>subscribe</name><param name="o" type="object">The object for which the subscription will belong.</param><param name="e" type="String">The name of the publication.</param><param name="f" type="function">Function to be invoked on message publication.</param><param name="v" type="object">Reference object, such as the publication owner, used to filter publications to this subscription.</param><description>Subscribes an object to receive message publications for the specified publication name.</description></method><method><name>unsubscribe</name><param name="o" type="object">The object for which the subscription belongs.</param><param name="e" type="String">The name of the publication.</param><param name="f" type="function">Function invoked on message publication.</param><description>Unsubscribes an object from receiving message publications for the specified publication name.</description><return-value name="b" type="boolean">Returns true if unsubscribed, false otherwise.</return-value></method><method><name>sigterm</name><description>Termination signal indicating the message service should stop processing messages and subscriptions, and be prepared for destruction.</description></method><method><name>flush</name><description>Clears delayed delivery cache.</description></method><method private="1" internal="1"><name>_delayPublish</name><param name="i" type="String">Identifier of the cached message item to be delivered for the corresponding subscribers.</param><description>End action for a delayed publication.  Cached message is sent directly on to publication.</description></method><method><name>publish</name><param name="e" type="String">The name of the publication.</param><param name="v" type="variant">Data being published.</param><description>Publishes the specified data to registered subscribers.  If delayed delivery is in effect, caches the message data and sends it after the preset delay in milliseconds.</description></method><method internal="1" private="1"><name>_publish</name><param name="e" type="String">The name of the publication.</param><param name="v" type="variant">Data being published.</param><description>Publishes the specified data to registered subscribers.</description></method><object><name>Message</name><description>Object published to <i>onsendmessage</i> subscribers when the <i>sendMessage</i> method is invoked.</description><property name="message" type="variant">Variant message body.</property><property name="level" type="int">The message threshold.</property><property name="description" type="String">Description of the message origination, if the message type code was mapped to an internal definition.</property></object><method><name>sendMessage</name><param name="d" type="String">The message data to be sent.</param><param name="s" type="String" optional="1" default="200.1">Numeric message code.</param><param name="p" type="boolean" optional="1" default="false">Bit indicating the message should raise an alert.</param><description>Sends the specified message as a Message to all <i>onsendmessage</i> subscribers.</description><return-value type="Message" name="o">The Message created for this message.</return-value></method><method><name>parseMessage</name><param type="Message" name="o">A Message object.</param><return-value type="String" name="sMessage">Formatted message.</return-value><description>Parses a message object and returns a formatted construct suitable for printing to a log.</description></method>
After a message definition is registered, the encoded definition data must be resorted
Otherwise, the message definition may (and probably will) return the wrong label!
The hemi.util.logger invokes this for new message definitions

Given some code in the format of ###.###.###
Return the corresponding instruction object

</class><static-class><name>xml</name><version>3.1.9</version><description>XML Utilities for making AJAX and JSON requests, result caching, request pooling, and XML-XHTML node manipulation.</description><example><name>Synchronous GET</name><description>Make a synchronous request for an XML document.</description><syntax>[xml_dom_object] = getXml(path);</syntax><code>var oXml = Hemi.xml.getXml("/Data/Test1.xml");</code></example><example><name>Asynchronous GET</name><description>Make an asynchronous request for an XML document.</description><syntax>[int] = getXml(path,custom_handler,1,{optional_id});</syntax><code>function HandleXml(s,v){</code><code>   var oXml = v.xdom;</code><code>}</code><code>Hemi.xml.getXml("/Data/Test1.xml",HandleXml,1);</code></example><example><name>Cached Asynchronous GET</name><description>Asynchronously request an XML document, and cached the result for later referal.</description><syntax>[int] = getXml(path,custom_handler,1,request_id,1);</syntax><code>function HandleXml(s,v){</code><code>   var oXml = v.xdom;</code><code>}</code><code>Hemi.xml.getXml("/Data/Test1.xml",HandleXml,1,"cache-me",1);</code></example><example><name>Synchronous POST</name><description>Synchronously post data to the server.</description><syntax>[xml_dom_object] = postXml(path,data);</syntax><code>var oPostThis = Hemi.xml.newXmlDocument("Request");</code><code>var oData = oPostThis.createElement("data");</code><code>oData.setAttribute("id","data-id");</code><code>oData.setAttribute("value","data-value");</code><code>oPostThis.documentElement.appendChild(oData);</code><code>var oResponseXml = Hemi.xml.postXml("/Data/TestData.aspx",oPostThis);</code></example><example><name>Asynchronous POST</name><description>Asynchronously post data to the server.</description><syntax>[int] = postXml(path,data,custom_handler,1,{optional_id});</syntax><code>function HandleXml(s,v){</code><code>   var oResponseXml = v.xdom;</code><code>}</code><code>var oPostThis = Hemi.xml.newXmlDocument("Request");</code><code>var oResponseXml = Hemi.xml.postXml("/Data/TestData.aspx",oPostThis,HandlePostXml,1);</code></example><object private="1"><name>XmlHttp</name><description>Object representing a pooled XMLHTTP resource</description><property name="xml_object" type="object">An XMLHttp object.</property><property name="in_use" type="boolean">Bit indicating whether the object is in use.</property><property name="vid" type="int">Integer identifying the variant object identifier.</property><property name="handler" type="function">Anonymous wrapper to invoke the internal readystate or complete handler for the specified identifier.</property></object><object><name>XmlObject</name><description>Object passed to the event handler following an XML request using <i>getXml</i> or <i>postXml</i>.</description><property name="xdom" type="XMLDocument">An XML Document object.</property><property name="id" type="String">Identifier used to distinguish the request for this XML Document from other requests.</property></object><property type="String" get="1" set="1" default="text/xml"><name>xml_content_type</name><description>Specifies the content type to use posting data.</description></property><property type="String" get="1" set="1" default="text/xml"><name>text_content_type</name><description>Specifies the content type to use requesting and receiving text data (eg: JSON).</description></property><property type="boolean" get="1" set="1"><name>auto_content_type</name><description>Specifies whether to determine posted content type by included post value.</description></property><property type="String" get="1" set="1"><name>form_content_type</name><description>Specifies the content type to use when auto_content_type is true and the post value is a string.</description></property><property type="String" get="1" set="1"><name>ax_http_control</name><description>Specifies the name of the registered ActiveX control to use for XML requests.</description></property><property type="String" get="1" set="1"><name>ax_http_control</name><description>Specifies the name of the registered ActiveX control to use for XML requests.</description></property><property type="boolean" get="1" set="1"><name>gadget_mode</name><description>Specifies whether the xml package is operating in a mode that better supports Windows Sidebar Gadgets.</description></property><property type="String" get="1" set="1"><name>gadget_control</name><description>Specifies the name of the registered ActiveX control to use for XML requests when in Gadget mode.</description></property><property type="String" get="1" set="1"><name>gadget_base_path</name><description>Specifies the base path to use when operating in Gadget mode.  The base path should be in the format of a file URI, such as <i>file:///c:/...</i>.</description></property><method><name>setCacheEnabled</name><param name="b" type="boolean">boolean indicating whether caching is enabled.</param></method><method><name>getCacheEnabled</name><return-value name="b" type="boolean">boolean indicating whether caching is enabled.</return-value></method><method><name>setPoolEnabled</name><param name="b" type="boolean">boolean indicating whether pooling is enabled.</param></method><method><name>getPoolEnabled</name><return-value name="b" type="boolean">boolean indicating whether pooling is enabled.</return-value></method><method><name>parseXmlDocument</name><param name="s" type="String">XML source text.</param><return-value name="oXml" type="XMLDocument">XMLDocument object.</return-value></method><method><name>newXmlDocument</name><param name="s" type="String">Name of root node to create in new document.</param><return-value name="oXml" type="XMLDocument">XMLDocument object.</return-value></method><method><name>getRequestArray</name><return-value type="array" name="aRequests">An array of requests.</return-value><description>Returns an array of XML requests.</description></method><method><name>clear</name><description>Clears the request maps and caches.</description></method><method><name>clearCache</name><description>Clears the response cache.</description></method><method><name>getXmlHttpArray</name><return-value name="aXml" type="array">Array of XmlHttp objects.</return-value></method><method><name>resetXmlHttpObjectPool</name><description>Resets the current pool with new instances of XMLHttpRequest objects.</description></method><method><name>testXmlHttpObject</name><description>Tests whether an XMLHTTPRequest object can be created.</description><return-value name="b" type="boolean">Bit indicating whether a new XMLHTTPRequest object was created.</return-value></method><method private="1"><name>newXmlHttpObject</name><description>Creates a new XMLHTTPRequest object.</description><param name="b" type="boolean">Bit indicating whether to wrap the new object in an internal XmlHttp object for use with pooling.</param><param name="i" type="int">Pool index to set on new XmlHttp object.</param><param name="z" type="boolean">Bit indicating whether this is a test operation, and to return true if the object was created, or false otherwise.</param><return-value name="v" type="variant">Return value is determined by the specified parameters.</return-value></method><method private="1"><name>returnXmlHttpObjectToPool</name><description>Returns an in-use XmlHttp object to the pool of available resources.</description><param name="i" type="int">Pool index of the XmlHttp object to be returned.</param><param name="y" type="boolean">Bit indicating whether the pool object was requested for asynchronous operation.</param></method><method private="1"><name>getXmlHttpObjectFromPool</name><description>Retrieves the next available XmlHttp object from the pool of available resources.</description><param name="y" type="boolean">Bit indicating whether the pool object is requested for asynchronous operation.</param><return-value name="oXml" type="XmlHttp">An XmlHttp object.</return-value></method><method><name>getJSON</name><description>Retrieve a JSON object from the specified path.</description><param name="p" type="String">Path of the JSON source.  If specifying the server, note the server name and port must match the context host name and port.</param><param name="h" type="function" optional="1" default="null">Function to invoke when a response is received.</param><param name="a" type="boolean" optional="1" default="false">Bit indicating whether the request is an asynchronous operation.</param><param name="i" type="String" optional="1" default="null">Identifier to assign to the request.</param><param name="c" type="boolean" optional="1" default="false">Bit indicating whether the response should be cached.</param><return-value name="v" type="variant">Returns boolean for asynchronous operations, and a JSON object for synchronous operations.</return-value></method><method><name>getText</name><description>Retrieve text from the specified path.</description><param name="p" type="String">Path of the text source.  If specifying the server, note the server name and port must match the context host name and port.</param><param name="h" type="function" optional="1" default="null">Function to invoke when a response is received.</param><param name="a" type="boolean" optional="1" default="false">Bit indicating whether the request is an asynchronous operation.</param><param name="i" type="String" optional="1" default="null">Identifier to assign to the request.</param><param name="c" type="boolean" optional="1" default="false">Bit indicating whether the response should be cached.</param><return-value name="v" type="variant">Returns boolean for asynchronous operations, and text for synchronous operations.</return-value></method><method><name>getXml</name><description>Retrieve an XML document from the specified path.</description><param name="p" type="String">Path of the XML source.  If specifying the server, note the server name and port must match the context host name and port.</param><param name="h" type="function" optional="1" default="null">Function to invoke when a response is received.</param><param name="a" type="boolean" optional="1" default="false">Bit indicating whether the request is an asynchronous operation.</param><param name="i" type="String" optional="1" default="null">Identifier to assign to the request.</param><param name="c" type="boolean" optional="1" default="false">Bit indicating whether the response should be cached.</param><return-value name="v" type="variant">Returns boolean for asynchronous operations, and an XMLDocument object for synchronous operations.</return-value></method><method><name>postJSON</name><description>Posts a JSON object to the specified path and returns any JSON response.</description><param name="p" type="String">Path of the XML source.  If specifying the server, note the server name and port must match the context host name and port.</param><param name="d" type="XMLDocument">XMLDocument to post the server</param><param name="h" type="function" optional="1" default="null">Function to invoke when a response is received.</param><param name="a" type="boolean" optional="1" default="false">Bit indicating whether the request is an asynchronous operation.</param><param name="i" type="String" optional="1" default="null">Identifier to assign to the request.</param><return-value name="v" type="variant">Returns boolean for asynchronous operations, and a JSON object for synchronous operations.</return-value></method><method><name>postText</name><description>Posts text to the specified path and returns any text response.</description><param name="p" type="String">Path of the XML source.  If specifying the server, note the server name and port must match the context host name and port.</param><param name="d" type="XMLDocument">XMLDocument to post the server</param><param name="h" type="function" optional="1" default="null">Function to invoke when a response is received.</param><param name="a" type="boolean" optional="1" default="false">Bit indicating whether the request is an asynchronous operation.</param><param name="i" type="String" optional="1" default="null">Identifier to assign to the request.</param><return-value name="v" type="variant">Returns boolean for asynchronous operations, and text for synchronous operations.</return-value></method><method><name>postXml</name><description>Posts an XML document to the specified path and returns any XML response.</description><param name="p" type="String">Path of the XML source.  If specifying the server, note the server name and port must match the context host name and port.</param><param name="d" type="XMLDocument">XMLDocument to post the server</param><param name="h" type="function" optional="1" default="null">Function to invoke when a response is received.</param><param name="a" type="boolean" optional="1" default="false">Bit indicating whether the request is an asynchronous operation.</param><param name="i" type="String" optional="1" default="null">Identifier to assign to the request.</param><return-value name="v" type="variant">Returns boolean for asynchronous operations, and an XMLDocument object for synchronous operations.</return-value></method><message><name>onloadxml</name><param name="oXml" type="XmlObject">The Hemi.xml object representing the request.</param><description>Message published to all subscribers when an xml request has completed loading.  This message is published for text and JSON requests made through the XML request.</description></message><method private="1"><name>_request_xmlhttp</name><description>Assembles and opens an XMLHTTP Request.</description><param name="p" type="String">Path to the XML data source.</param><param name="h" type="function" optional="1" default="null">Handler invoked for asynchronous requests.</param><param name="a" type="boolean" optional="1" default="false">Bit indicating whether the request is asynchronous.</param><param name="i" type="String" optional="1" default="auto">Identifier used to track the request and retrieve cached results.</param><param name="x" type="boolean" optional="1" default="false">Bit indicating whether the request is a post.</param><param name="d" type="XMLDocument" optional="1" default="null">XML Document to send with post request.</param><param name="c" type="boolean" optional="1" default="false">Bit indicating whether the response should be cached.</param><param name="t" type="int" optional="1" default="0">Int indicating whether the request and response as text (1) or JSON (2) instead of XML (0).</param><return-value name="v" type="variant">Returns a boolean value for asynchronous requests, an XML Document for synchronous requests, text when the text bit is set to (1), and a JSON object when the text bit is set to (2).</return-value></method>

2011/02/22 Only use the proxy if loaded
TODO - need to add in the feature tag support so statements like this check can be stripped from the whole compilation
Otherwise, it's wasted space

2011/02/22 - isProxied checks for a proxy protocol and supported data.io bus type
2011/02/20 - This is an early phase proxy - the general data exchange across components needs to have a clean entry/exit through data.io instead of straight xml
For current compatibility, it's shimmed into the xml-handling.
NOTE: Because this is a shim, it does not use any of the xml utility level caching.
Also, it's an ugly duplication of the XML OM reconstruction

2011/02/22 - Strip any proxy protocol tags, which may occur for matching proxy protocols and unsupported bus types

alert(i + "\n" + r.ct);
alert(z);
<method><name>transformNode</name><description>Transforms the specified Document with the specified XSL document.</description><param name="x" type="variant">XML Document to be transformed.  If specified as a string, the string is used as a path to request the XML Document.</param><param name="s" type="Document">XSL Document to transform the XML Document.  If specified as a string, the string is used as a path to request the XSL Document.</param><param name="n" type="DOMNode" optional="1" default="null">DOMNode to transform.</param><param name="i" type="String" optional="1" default="null">Identifier used when requesting the XML Document.</param><param name="j" type="String" optional="1" default="null">Identifier used when requesting the XSL Document.</param><param name="p" type="boolean" optional="1" default="false">Bit indicating whether a request for the XSL Document should be cached.</param><param name="t" type="boolean" optional="1" default="false">Bit indicating whether the transformation should expect a type text/plain as a result.</param><return-value name="v" type="variant">Depending on the type of copy operation, returns a reference to the newly created node.</return-value></method>

alert(o==null);
<method><name>selectSingleNode</name><description>Returns a DOM Node selected from the specified document and based on the specified path.</description><param name="d" type="XMLDocument">XMLDocument.</param><param name="p" type="String">XPath query.</param><param name="c" type="DOMNode">Context node.</param><return-value name="v" type="String">Returns a DOM Node based on the specified xpath query.</return-value></method><method><name>selectNodes</name><description>Returns an array of DOM Nodes selected from the specified document and based on the specified path.</description><param name="d" type="XMLDocument">XMLDocument.</param><param name="p" type="String">XPath query.</param><param name="c" type="DOMNode">Context node.</param><return-value name="aNodes" type="array">Returns an array of DOM Nodes based on the specified xpath query.</return-value></method><method><name>queryNodes</name><description>Returns an array of DOM Nodes selected from the specified document and based on the specified parent node name, node name, and attribute name and values.</description><param name="d" type="XMLDocument">XMLDocument.</param><param name="p" type="String">Parent element name.</param><param name="n" type="String" optional="1" default="null">Element name.  Defaults to parent if not specified.</param><param name="a" type="String" optional="1" default="null">Attribute name.</param><param name="v" type="String" optional="1" default="null">Attribute value.</param><return-value name="aNodes" type="array">Returns an array of DOM Nodes based on the specified parent node name, node name, and attribute name and value.</return-value></method><method><name>queryNode</name><description>Returns a DOM Node selected from the specified document and based on the specified parent node name, node name, and attribute name and values.</description><param name="d" type="XMLDocument">XMLDocument.</param><param name="p" type="String">Parent element name.</param><param name="n" type="String" optional="1" default="null">Element name.  Defaults to parent if not specified.</param><param name="a" type="String" optional="1" default="null">Attribute name.</param><param name="v" type="String" optional="1" default="null">Attribute value.</param><return-value name="aNodes" type="DOMNode">Returns a DOM Node based on the specified parent node name, node name, and attribute name and value.</return-value></method><method><name>serialize</name><description>Returns a string representation of the specified node and its children.</description><param name="n" type="DOMNode">XML DOM Node.</param><return-value name="s" type="String">String representation of the specified node.</return-value></method>

2011/04/10
Switch order to take property over XMLSerializer
IE 9.0 has problems with XMLSerializer and the responseXML document

<method><name>getCDATAValue</name><description>Returns a concatenation of all CDATA values that are immediate children of the specified node.</description><param name="n" type="DOMNode">XML DOM Node.</param><return-value name="v" type="String">Returns a concatenation of all child CDATA values.</return-value></method><method><name>getInnerText</name><description>Returns a concatenation of text nodes belonging to all children of the specified node.</description><param name="n" type="DOMNode">DOM Node.</param><param name="b" type="boolean">Bit indicating to only return the first text value.</param><return-value name="sTxt" type="String">Returns the inner text of the specified node.</return-value></method><method><name>removeChildren</name><description>Removes all child nodes of the specified node.</description><param name="o" type="DOMNode">DOM Node.</param><param name="b" type="boolean">Bit indicating to send a termination signal to any backing objects if a Hemi reference identifier is found.</param></method><method><name>swapNode</name><description>Replaces the specified node.</description><param name="r" type="DOMNode">DOM Node to replace.</param><param name="n" type="DOMNode">New DOM Node.</param></method><method><name>setInnerXHTML</name><description>Copies the child nodes of the specified source node into the specified target node.</description><param name="t" type="DOMNode">DOM Node into which the source node children will be copied.</param><param name="s" type="DOMNode">DOM Node from which nodes will be copied into the target node.</param><param name="p" type="boolean" optional="1" default="false">Bit indicating whether to keep the children of the target node, or to remove them before copying in the new contents.</param><param name="d" type="Document" optional="1" default="window.document">Document object to use when creating elements for the target node.</param><param name="z" type="boolean" optional="1" default="false">Bit indicating whether recursion should be blocked.</param><param name="c" type="boolean" optional="1" default="false">Bit indicating whether whitespace should be preserved.</param><param name="h" type="boolean" optional="1" default="false">Bit indicating whether HTML source nodes should be cloned instead of incrementally recreated.</param><param name="ch" type="function" optional="1" default="false">Optional callback handler for substituting values prior to copying.  Useful for templates.</param><return-value name="v" type="variant">Depending on the type of copy operation, returns a reference to the newly created node.</return-value></method><method internal="1"><name>JSONReviver</name><description>Custom reviver for handling date values.</description><param name="k" type="String">Key name.</param><param name="v" type="String">Key value.</param><return-value name="r" type="String">Revived key value for use with JSON.</return-value></method>

if(v == v.caller) break;
</static-class></package><index><description>Framework base classes, including: Hemi for creating framework objects and loading external libraries; Hemi.xml for AJAX and JSON requests (libXmlRequest derivative); Hemi.registry for object repository management; Hemi.message for delegating message subscriptions and publications.</description><url>Hemi_api.html</url><url-title>API Index</url-title></index></source>
