/*
var APPLICATION_ID		= "";
var USER_ID				= "";
var WEB_SERVICE_URL		= "";
*/

//--------------------------------------------------------
// Main fucntion that holds all functionallity
function UP_MAIN(sRequest)
{
	if (!UP_MAIN.proccess)
		UP_MAIN.proccess	= "init";
	
	var sProccess	= UP_MAIN.proccess;
	if (sRequest)
		sProccess	= sRequest;
	
	
	switch(sProccess)
	{
		case "init"	:
			UP_MAIN.oUpXml		= new ActiveXObject("Microsoft.XMLDOM");
			UP_MAIN.oUpXml.async= false;
			UP_MAIN.oUpXml.loadXML("<USERPROFILE><DATA/></USERPROFILE>");
			createUPXml();
			
			if (USER_ID!="")
			{
				var oUP	= GetUserData();
				if (oUP!=null)
				{
					var oNodes			= oUP.selectSingleNode("DATA").childNodes, oNode, oTempNode;
					for (var iIndex=0; iIndex<oNodes.length ; iIndex++)
					{
						oNode			= oNodes[iIndex];
						oTempNode		= UP_MAIN.oUpXml.selectSingleNode("//DATA/"+oNode.nodeName.toUpperCase());
						if (oTempNode)
						{
							oTempNode.text	= oNode.text;
						}
						else
						{
							var oNewNode	= UP_MAIN.oUpXml.createElement(oNode.nodeName.toUpperCase());
							oNewNode.text	= oNode.text;
							UP_MAIN.oUpXml.documentElement.firstChild.appendChild(oNewNode);
						}
					}
					
					// peace code
					var oFName	= UP_MAIN.oUpXml.documentElement.selectSingleNode("//NAME_FIRST");
					var oLName	= UP_MAIN.oUpXml.documentElement.selectSingleNode("//NAME_LAST");
					var oFullName	= UP_MAIN.oUpXml.documentElement.selectSingleNode("//FULLNAME");
					if (oFName && oLName && oFullName)
					{
						if (oFName.text=="")
							oFName.text	= oFullName.text.substring(0,oFullName.text.indexOf(" "));
						if (oLName.text=="")
							oLName.text	= oFullName.text.substring(oFullName.text.indexOf(" ")+1,oFullName.text.length);
					}
					// peace code
					
					// load xml data into the form
					loadUP();
					UP_MAIN.proccess	= "update";
				}
				else
				{
					alert("error")
				}
			}
			else
			{
				UP_MAIN.proccess	= "new";
			}
			
			break;
		case "update" :
			// send data to server
			return UpdateUserData(UP_MAIN.oUpXml);
			break;
		
		case "new":
			// send data to server
			return CreateUserProfile(UP_MAIN.oUpXml);
			break;
			
		case "confirm":
			return ConfirmUser();
			break;
			
		case "activate":
			return ActivateUser();
			break;
		
		case "deactivate":
			return DeactivateUser();
			break;
			
		case "enable_mailing":
			return EnableMailing();
			break;
		
		case "disable_mailing":
			return DisableMailing();
			break;
			
		default :
			break;
	}
}


function upFormCheck()
{
	// get form reference
	var oFieldForm = UP_FORM;
		
	// recheck form ok
	var iIndex;
	if(oFieldForm)
	{
		var oItem, bContinue = true;
		var oDATANode	= UP_MAIN.oUpXml.selectSingleNode("//DATA");
			
		// move thrue the elements of the form
		var sFieldName;
		for (iIndex = 0 ; bContinue && iIndex < oFieldForm.length ;iIndex++)
		{
			oItem		= oFieldForm.item(iIndex);
			sFieldName	= oItem.name.toUpperCase();
			if (sFieldName.indexOf("UP_")==0)
			{
				sFieldName	= sFieldName.split("UP_")[1].toUpperCase();
				if (oItem.datarequired=="1")
				{
					var oNode	= oDATANode.selectSingleNode(sFieldName);
					if (oNode)
						if (oNode.text=="")
							bContinue	= false;
				}
				
				if (oItem.datatype=="codes")
				{
					if (oItem.datamaxSelection!="")
					{
						var oNode	= oDATANode.selectSingleNode(sFieldName);
						if (oNode){
							if (oNode.text.split(" ").length>oItem.datamaxSelection*1)
								bContinue	= false;
						}		else alert(sFieldName);
						
					}
				}
			}
		}
	}
	
	if (!bContinue)
		return oFieldForm.item(iIndex-1);
	else
		return null;
	
	
}



