ms_tag.framework = {
    hostPointer: 0,
    supportedPayload: { script: {mime: "text/javascript", tag: "script"}, iframe: {mime: "text/xml", tag: "iframe"}, xml: {mime: "text/html", tag: "xml"} },
    LoadTag: function(payloadType, placementId, hierarchyId, metadata) { 
        //Prerequisites:
        //Placement id must be defined and have a length > 0 (can be a number, string or object)
        if (!placementId || placementId.length == 0) { return false; }
        //Check for a payload type definition, if found, use when creating element
        if (!payloadType) { payloadType = this.supportedPayload.script; }

        //Create the appropriate DOM element for insertion into the page
        var tagHost = ms_tag.contentHosts[this.hostPointer++ % ms_tag.contentHosts.length];
        var tagSrc = "http://" + tagHost + "/Tag/?/" + ms_tag.siteVars.siteId + "/";
        if (hierarchyId && hierarchyId.length > 0) {
            tagSrc += hierarchyId + "/";
        }
        tagSrc += placementId + "/";

        //Create flex tag object
        var tagJson = { 
            tag: payloadType.tag,
            mime: payloadType.mime, 
            src: tagSrc,
            id: 'ms_tag_' + placementId
            };
            
        document.write("<" + tagJson.tag + " id='" + tagJson.id + "' type='" + tagJson.mime + "' src='" + tagJson.src + "'" + "></" + tagJson.tag + ">");
    }
};
