Cobalt.Website.Common.RendererModule = function(sandbox)
{
    /**
     * @param {Object} e
     */
    function updateUIHandler(e)
    {
		var xmlDoc = getXmlDocument(e).documentElement;
		var childElements = sandbox.dom(xmlDoc).children();
		var _isIE = sandbox.browser().msie;
        sandbox.dom(childElements).each(function()
        {
			/*var id = sandbox.dom(this).attr("id");
			var element = sandbox.getElementById(id);
			var elementText = sandbox.getXmlElementTextValue(this);
			sandbox.dom(element).html(elementText);*/
			
			var _id = sandbox.dom(this).attr("id");
			var _element = sandbox.getElementById(_id);
			var _node = this.firstChild;
			/*If the size is zero then XML data contains CDATA else its a pure XML*/
			if( _node != null && '#cdata-section' === _node.nodeName ) 
			{  
				var _html = sandbox.getXmlElementTextValue(this);
				sandbox.dom(_element).html(_html);
				return;
			} 

			if (_isIE)
			{
				sandbox.dom(_element).replaceWith(this.xml);
				return;
			} 

			var _serializer = new XMLSerializer();
			var _html = _serializer.serializeToString(this);
			sandbox.dom(_element).replaceWith(_html);
			return;
        });

        sandbox.raise(null, Cobalt.Website.Common.Events.RenderingCompleted, {sourceModule:e.customData.sourceModule, componentId:e.customData.componentId});
    }

    function getXmlDocument(eventArg)
    {
        if (eventArg && eventArg.customData && eventArg.customData.xmlDocument)
        {
            return eventArg.customData.xmlDocument;
        }

        throw new Error("RendererModule => no xmlDocument");
    }
    
    return {
        init:function()
        {
			sandbox.listen(null, Cobalt.Website.Common.Events.UpdateUI, updateUIHandler, null);
        },
        destroy:function()
        {
            //TODO: handle destroy
        }
    };
};


