// Remember to unescape cookie, since we are urlencoding on the server.

function getUserSettingFromCookie(parentNode, childNode)
{
	var xmlDoc;
	var xmlCookie = unescape(readCookie("TrunkUserSettings")).replace("+"," ");
	
	if (window.ActiveXObject)
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(xmlCookie);
	}
	else
	{
		var parser = new DOMParser();
		xmlDoc = parser.parseFromString(xmlCookie,"text/xml");
	}
	
	var node = xmlDoc.getElementsByTagName(parentNode).item(0);
	
	if(node.getElementsByTagName(childNode) != null)
	{
		return node.getElementsByTagName(childNode)[0].firstChild.nodeValue;
	}
	else
	{
		location.href = "LogOn.aspx";
	}
}

function updateUserSettings(server, cookie, variable, value)
{
	//Only update server if the user is present
	if(server && readCookie("TrunkAccount") != "0")
		updateUserSettingsServer(variable, value);
	
	if(cookie)
		updateUserSettingsCookie(variable, value);
}

function updateUserSettingsServer(variable, value)
{
	if(value)
		dataRequest(serverUrl + "ajax/UserSettings.aspx?action=updateUserSettings&content=" + variable + "_" + String(value) + "&" + Math.random(100000), insureSeverUpdate);
	else
		dataRequest(serverUrl + "ajax/UserSettings.aspx?action=updateUserSettings&content=" + variable + "_" + String(eval(variable)) + "&" + Math.random(100000), insureSeverUpdate);
}

function updateUserSettingsCookie(variable, value)
{
	var xmlPathArray = variable.split("_");
	var xmlDoc;
	var xmlCookie = unescape(readCookie("TrunkUserSettings")).replace("+"," ");
	
	if (window.ActiveXObject)
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(xmlCookie);
	}
	else
	{
		var parser = new DOMParser();
		xmlDoc = parser.parseFromString(xmlCookie,"text/xml");
	}
	
	// alert(xmlCookie);
	
	var node = xmlDoc.getElementsByTagName(xmlPathArray[0]).item(0);
	
	if(value)
	{
	    var theNode = node.getElementsByTagName(xmlPathArray[1])[0];
	    if (theNode.firstChild == null)
	    {
	        var element = xmlDoc.createTextNode();
            theNode.appendChild(element);
        }
	    theNode.firstChild.nodeValue = String(value);
	}
	else   
	    node.getElementsByTagName(xmlPathArray[1])[0].firstChild.nodeValue = String(eval(variable));
	
	var xmlString = returnXmlChildrenAsString(xmlDoc);
	
	createCookie("TrunkUserSettings", escape(xmlString));
}

function returnXmlChildrenAsString(node)
{
	var string = "";
	var attributesArray = new Array();

	for(var i=0; i<node.childNodes.length; i++)
	{
		if(node.childNodes[i].nodeType == 1)
			string += "<" + node.childNodes[i].nodeName;
		
		try
		{
		    if (node.childNodes[i].attributes != null)
		    {
			    for(var n=0; n<node.childNodes[i].attributes.length; n++)
			    {
				    if(node.childNodes[i].attributes[n].specified)
					    string += " " + node.childNodes[i].attributes[n].name + "=\"" + node.childNodes[i].attributes[n].value + "\"";
			    }
			}
		}
		catch(e)
		{
		}
		
		if(node.childNodes[i].nodeType == 1)
			string += ">";
		
		if(node.childNodes[i].nodeType == 3)
			string += node.childNodes[i].nodeValue;
		else
			string += returnXmlChildrenAsString(node.childNodes[i]);
		
		if(node.childNodes[i].nodeType == 1)
			string += "</" + node.childNodes[i].nodeName + ">";
	}
	
	return string;
}