﻿
XmlControl = function()
{
    var me = this;

    me.init = function()
    {
    }

    me.create_document = function()
    {
        var xml_doc;

        // code for IE
        if (window.ActiveXObject)
        {
            xml_doc = new ActiveXObject("Microsoft.XMLDOM");
        }
        // code for Mozilla, Firefox, Opera, etc.
        else if (document.implementation && document.implementation.createDocument)
        {
            xml_doc = document.implementation.createDocument("", "", null);
        }
        else
        {
            alert('Your browser cannot handle this script');
        }

        xml_doc.async = false;

        return xml_doc;
    }

    me.load_xml_file = function(file_name)
    {
        var xml_doc = me.create_document();
        xml_doc.load(file_name);
        return (xml_doc);
    }

    me.load_xml_string = function(xml_str)
    {
        var xml_doc;
        // code for IE
        if (window.ActiveXObject)
        {
            xml_doc = new ActiveXObject("Microsoft.XMLDOM");
            xml_doc.async = false;
            xml_doc.loadXML(xml_str);
            return (xml_doc);
        }
        // code for Mozilla, Firefox, Opera, etc.
        else if (document.implementation && document.implementation.createDocument)
        {
            parser = new DOMParser();
            return parser.parseFromString(xml_str, "text/xml");
        }
        else
        {
            alert('Your browser cannot handle this script');
        }
    }

    me.to_xml_doc = function(container)
    {
        var xml_doc = me.create_document();
        xml_doc.appendChild(xml_doc.createElement("root"));

        container.find(":input[col_name]").each(function()
        {
            var tag_name = $(this).attr("col_name");
            var val = $(this).attr("value");
            xml_doc.documentElement.appendChild(xml_doc.createElement(tag_name)).appendChild(xml_doc.createTextNode(val));
        });

        container.find("select[col_name]").each(function()
        {
            var tag_name = $(this).attr("col_name");
            var val = $(this).find("option:selected").attr("value");
            xml_doc.documentElement.appendChild(xml_doc.createElement(tag_name)).appendChild(xml_doc.createTextNode(val));
        });

        return xml_doc;
    }

    me.fill_page = function(parentElement, container)
    {
        for (var i = 0; i < parentElement.attributes.length; i++)
        {
            var attr = parentElement.attributes[i];

            var text_value = "";
            var input = container.find("input[id='" + attr.name + "']");
            if (input.length > 0)
            {
                input.attr("value", attr.value);
                text_value = attr.value;
            }

            var option = container.find("select[id='" + attr.name + "'] option[value='" + attr.value + "']");
            if (option.length > 0)
            {
                option.attr("selected", "selected");
                text_value = option.text();
            }

            var span = container.find("span[id='text_" + attr.name + "']");
            if (span.length > 0)
            {
                //span.html(attr.value);
                span.html(text_value);
            }

            var img = container.find("img[id='" + attr.name + "']");
            if (img.length > 0)
            {
                //span.html(attr.value);
                img.attr("src", attr.value);
            }
        }
    }

    me.init();
}