if ((typeof (self.document.getElementById) != 'undefined')&&(typeof (self.document.getElementsByTagName) != 'undefined')) { djs_swgDOM = 1; }

var djs_swgDOM_elements_editable = 0;
var djs_swgDOM_content_editable = 0;

if (djs_swgDOM)
{
	if ((typeof (self.document.createElement) != 'undefined')&&(typeof (self.document.getElementsByTagName('head')[0].getAttribute) != 'undefined')&&(typeof (self.document.getElementsByTagName('head')[0].setAttribute) != 'undefined')&&(typeof (self.document.getElementsByTagName('head')[0].removeAttribute) != 'undefined')) { djs_swgDOM_elements_editable = 1; }
	if (typeof (self.document.getElementsByTagName('head')[0].firstChild.nodeValue) != 'undefined') { djs_swgDOM_content_editable = 1; }
}

function djs_swgDOM_structure_check (f_xml_data)
{
	var f_return = 0;

	if ((djs_swgDOM_content_editable)&&(djs_swgDOM_elements_editable))
	{
		if (typeof (f_xml_data) == 'object')
		{
			if (f_xml_data.firstChild)
			{
				if (f_xml_data.firstChild.nodeType) { f_return = 1; }
			}
		}
	}

	return f_return;
}

djs_var['js_swgDOM_structure_insert_xml_counter'] = 0;

function djs_swgDOM_structure_insert_xml (f_doc_root_id,f_xml_data)
{
	var f_return = 0;

	if ((djs_swgDOM_content_editable)&&(djs_swgDOM_elements_editable))
	{
		if (self.document.getElementById (f_doc_root_id))
		{
		if (self.document.getElementById(f_doc_root_id).nodeType)
		{
			if (djs_swgDOM_structure_check (f_xml_data))
			{
				f_return = 1;
				var f_set_visibility = true;

				if (f_xml_data.attributes)
				{
				if (f_xml_data.attributes.length > 0)
				{
					for (var i = 0;i < f_xml_data.attributes.length;i++) { self.document.getElementById(f_doc_root_id).setAttribute (f_xml_data.attributes[i].nodeName,f_xml_data.attributes[i].nodeValue); }
					if (self.document.getElementById(f_doc_root_id).style.visibility == 'hidden') { f_set_visibility = false; }
				}
				}

				if (f_set_visibility) { self.document.getElementById(f_doc_root_id).style.visibility = 'hidden'; }

				if (f_xml_data.childNodes)
				{
				if (f_xml_data.childNodes.length > 0)
				{
					var f_node_new_child;
					var f_node_new_child_id = '';

					for (var i = 0;i < f_xml_data.childNodes.length;i++)
					{
						if (f_xml_data.childNodes[i].nodeType == 1)
						{
							f_node_new_child_id = f_xml_data.childNodes[i].getAttribute ('id');

							if (!f_node_new_child_id)
							{
								f_node_new_child_id = ('swgDOMNodeAdd' + djs_var['js_swgDOM_structure_insert_xml_counter']);
								djs_var['js_swgDOM_structure_insert_xml_counter']++;
							}

							f_node_new_child = self.document.createElement (f_xml_data.childNodes[i].nodeName);
							f_node_new_child.setAttribute ('id',f_node_new_child_id);
							self.document.getElementById(f_doc_root_id).appendChild (f_node_new_child);

							djs_swgDOM_structure_insert_xml (f_node_new_child_id,f_xml_data.childNodes[i]);
						}
						else if (f_xml_data.childNodes[i].nodeType == 3)
						{
							f_node_new_child = self.document.createTextNode (f_xml_data.childNodes[i].nodeValue);
							self.document.getElementById(f_doc_root_id).appendChild (f_node_new_child);
						}
					}
				}
				}

				if (f_set_visibility) { self.document.getElementById(f_doc_root_id).style.visibility = 'visible'; }
			}
		}
		}
	}

	return f_return;
}

function djs_swgDOM_structure_delete (f_doc_root_id)
{
	var f_return = 0;

	if ((djs_swgDOM_content_editable)&&(djs_swgDOM_elements_editable))
	{
		if (self.document.getElementById (f_doc_root_id))
		{
		if (self.document.getElementById(f_doc_root_id).cloneNode)
		{
			f_node = self.document.getElementById (f_doc_root_id);
			f_return = 1;

			var f_node_new = f_node.cloneNode (false);
			var f_doc_root = f_node.parentNode;

			try { f_doc_root.replaceChild (f_node_new,f_node); }
			catch (e) { f_return = 0; }
		}
		}
	}

	return f_return;
}

function djs_swgDOM_structure_replace (f_doc_root_id,f_xml_data)
{
	var f_return = 0;

	if ((djs_swgDOM_content_editable)&&(djs_swgDOM_elements_editable))
	{
		if (self.document.getElementById(f_doc_root_id))
		{
		if (self.document.getElementById(f_doc_root_id).nodeType)
		{
			if (djs_swgDOM_structure_check (f_xml_data))
			{
				djs_swgDOM_structure_delete (f_doc_root_id);
				djs_swgDOM_structure_insert_xml (f_doc_root_id,f_xml_data);
			}
		}
		}
	}

	return f_return;
}