<!--








function Friends_CreateObject(BoxID,
				
				HTML,
				
				Items,
				Show,
				Status,
				Location
				)
{
	
	HTML = UnXML(HTML);
	
	var BoxObject = Boxes.Objects[BoxID];

	if (!BoxObject.Friends)
	{//If object not initialized yet...
		BoxObject.Friends = new Object; //Creating a Friends instance inside the box if not existing already
		
		BoxObject.Friends.RemoveFriend_Handler = new XMLHTTPEngine("Friends_RemoveFriend","","POST"); //Creates Friends_RemoveFriend Ajax Handler for the box
		BoxObject.Friends.RemoveFriend_Handler.onLoad = Friends_RemoveFriend_onLoad; //Links the onload function
		BoxObject.Friends.RemoveFriend_Handler.BoxID = BoxID; //Saves the BoxID
		BoxObject.Friends.RemoveFriend_Handler.BoxObject = BoxObject; //Saves the BoxID

		BoxObject.Friends.ApproveFriend_Handler = new XMLHTTPEngine("Friends_ApproveFriend","","POST"); //Creates Friends_ApproveFriend Ajax Handler for the box
		BoxObject.Friends.ApproveFriend_Handler.onLoad = Friends_ApproveFriend_onLoad; //Links the onload function
		BoxObject.Friends.ApproveFriend_Handler.BoxID = BoxID; //Saves the BoxID
		BoxObject.Friends.ApproveFriend_Handler.BoxObject = BoxObject; //Saves the BoxID

		BoxObject.Friends.Save_Handler = new XMLHTTPEngine("Friends_Save","","POST"); //Creates FriendsSave Ajax Handler for the box
		BoxObject.Friends.Save_Handler.onLoad = Friends_Save_Handler_onLoad; //Links the onload function
		BoxObject.Friends.Save_Handler.BoxID = BoxID; //Saves the BoxID
		BoxObject.Friends.Save_Handler.BoxObject = BoxObject; //Saves the BoxID
		
		BoxObject.Friends.List = document.createElement("DIV");
		BoxObject.Friends.List.style.width="100%";
		BoxObject.Friends.List.style.display="";
		BoxObject.Friends.List.ondblclick=Friends_onClick;
		BoxObject.Content.appendChild(BoxObject.Friends.List);

		BoxObject.Friends.EditTool = document.createElement("DIV");
		BoxObject.Friends.EditTool.style.width="100%";
		BoxObject.Friends.EditTool.style.overflow="hidden";
		BoxObject.Friends.EditTool.style.display="none";

			var EditTable = document.createElement("TABLE");
			EditTable.className = 'box_table_nospace';
			EditTable.style.width="100%";
	
			var Row_Items = EditTable.insertRow(0);
			var Row_Additional = EditTable.insertRow(1);
			
			var TMP_Cell;
			var TMP_Element;
			var TMP_Option;
	
				TMP_Cell = Row_Items.insertCell(0);
				TMP_Cell.width = "40px";
				TMP_Element = document.createElement("SPAN");
				TMP_Element.innerHTML = "Number:";
				TMP_Element.style.fontSize = "10px";
				TMP_Cell.appendChild(TMP_Element);
	
				TMP_Cell = Row_Items.insertCell(1);
				TMP_Cell.width = "50%"
				TMP_Element = document.createElement("DIV");
				TMP_Element.style.width = "100%";
				BoxObject.Friends.EditTool.Items = document.createElement("SELECT");
				BoxObject.Friends.EditTool.Items.style.width = "100%";
				BoxObject.Friends.EditTool.Items.style.styleFloat = "left";
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=10; TMP_Option.innerHTML=10; BoxObject.Friends.EditTool.Items.appendChild(TMP_Option);
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=20; TMP_Option.innerHTML=20; BoxObject.Friends.EditTool.Items.appendChild(TMP_Option);
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=30; TMP_Option.innerHTML=30; BoxObject.Friends.EditTool.Items.appendChild(TMP_Option);
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=40; TMP_Option.innerHTML=40; BoxObject.Friends.EditTool.Items.appendChild(TMP_Option);
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=50; TMP_Option.innerHTML=50; BoxObject.Friends.EditTool.Items.appendChild(TMP_Option);

					TMP_Element.appendChild(BoxObject.Friends.EditTool.Items);
				TMP_Cell.appendChild(TMP_Element);
	
				TMP_Cell = Row_Items.insertCell(2);
				TMP_Cell.width = "50px"
				TMP_Element = document.createElement("SPAN");
				TMP_Element.innerHTML = "Display:";
				TMP_Element.style.fontSize = "10px";
				TMP_Cell.appendChild(TMP_Element);
	
				TMP_Cell = Row_Items.insertCell(3);
				TMP_Cell.width = "50%"
				TMP_Element = document.createElement("DIV");
				TMP_Element.style.width = "100%";
				BoxObject.Friends.EditTool.Show = document.createElement("SELECT");
				BoxObject.Friends.EditTool.Show.style.width = "100%";
				BoxObject.Friends.EditTool.Show.style.styleFloat = "left";
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=0; TMP_Option.innerHTML="Avatar"; BoxObject.Friends.EditTool.Show.appendChild(TMP_Option);
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=1; TMP_Option.innerHTML="Name"; BoxObject.Friends.EditTool.Show.appendChild(TMP_Option);
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=2; TMP_Option.innerHTML="Both"; BoxObject.Friends.EditTool.Show.appendChild(TMP_Option);
				TMP_Element.appendChild(BoxObject.Friends.EditTool.Show);
				TMP_Cell.appendChild(TMP_Element);


				TMP_Cell = Row_Additional.insertCell(0);
				TMP_Element = document.createElement("SPAN");
				TMP_Element.innerHTML = "Show status?";
				TMP_Element.style.fontSize = "10px";
				TMP_Cell.appendChild(TMP_Element);
	
				TMP_Cell = Row_Additional.insertCell(1);
				TMP_Element = document.createElement("DIV");
				TMP_Element.style.width = "100%";
				BoxObject.Friends.EditTool.ShowStatus = document.createElement("INPUT");
				BoxObject.Friends.EditTool.ShowStatus.type="checkbox";
				BoxObject.Friends.EditTool.ShowStatus.style.styleFloat = "left";
				TMP_Element.appendChild(BoxObject.Friends.EditTool.ShowStatus);
				TMP_Cell.appendChild(TMP_Element);
	
				TMP_Cell = Row_Additional.insertCell(2);
				TMP_Element = document.createElement("SPAN");
				TMP_Element.innerHTML = "Show Location?:";
				TMP_Element.style.fontSize = "10px";
				TMP_Cell.appendChild(TMP_Element);
	
				TMP_Cell = Row_Additional.insertCell(3);
				TMP_Element = document.createElement("DIV");
				TMP_Element.style.width = "100%";
				BoxObject.Friends.EditTool.ShowLocation = document.createElement("INPUT");
				BoxObject.Friends.EditTool.ShowLocation.type="checkbox";
				BoxObject.Friends.EditTool.ShowLocation.style.styleFloat = "left";
				TMP_Element.appendChild(BoxObject.Friends.EditTool.ShowLocation);
				TMP_Cell.appendChild(TMP_Element);

	
			BoxObject.Friends.EditTool.appendChild(EditTable);
		
		BoxObject.Content.appendChild(BoxObject.Friends.EditTool);


		BoxObject.Friends.ActionBar = document.createElement("CENTER");
		BoxObject.Friends.ActionBar.style.width="100%";
		BoxObject.Friends.ActionBar.style.display="none";

			BoxObject.Friends.CancelButton = document.createElement("INPUT");
			BoxObject.Friends.CancelButton.type="button";
			BoxObject.Friends.CancelButton.value="Cancel";
			BoxObject.Friends.CancelButton.onclick=Friends_CancelEdit;
			BoxObject.Friends.ActionBar.appendChild(BoxObject.Friends.CancelButton);
			
			BoxObject.Friends.SaveButton = document.createElement("INPUT");
			BoxObject.Friends.SaveButton.type="button";
			BoxObject.Friends.SaveButton.value="Save";
			BoxObject.Friends.SaveButton.onclick=Friends_SaveEdit;
			BoxObject.Friends.ActionBar.appendChild(BoxObject.Friends.SaveButton);

		BoxObject.Content.appendChild(BoxObject.Friends.ActionBar);

		//Assigns edit function
		BoxObject.EditBox = Friends_Edit;

		//Free up memory
		Row_Items = null;
		Row_Additional = null;
		TMP_Cell = null;
		TMP_Element = null;
		TMP_Option = null;
	}


	//Resets visuals
	BoxObject.Friends.List.style.display="";
	BoxObject.Friends.EditTool.style.display="none";
	BoxObject.Friends.ActionBar.style.display="none";

	Box_UpdateLoadStatus(BoxObject,"");
	BoxObject.Friends.List.innerHTML=HTML;

	BoxObject.Friends.EditTool.Items.value = Items;
	BoxObject.Friends.EditTool.Show.value = Show;
	BoxObject.Friends.EditTool.ShowStatus.value = Status;
	BoxObject.Friends.EditTool.ShowLocation.value = Location;

	BoxObject.Friends.EditMode = false;
}





function Friends_onClick(Event)
{
	//Debug_Reset();
	//Debug(document.body.innerHTML);

	Friends_Edit(Boxes.GetContainingBox(this));
	
	
	//Free up memory
	BoxObject = null;

	return(false);
}



function Friends_Edit(BoxObject)
{
	if (!BoxObject.Friends.EditMode)
	{
		//Entering edit mode
		BoxObject.Friends.EditMode = true;
		
		BoxObject.Friends.List.style.display="none";

		BoxObject.Friends.EditTool.style.display="";
		BoxObject.Friends.ActionBar.style.display="";


		//Save values
		//BoxObject.Friends.EditTool.value = BoxObject.Friends.CurrentBBCode;

		BoxObject.Friends.EditTool.focus();
	}
}


function Friends_CancelEdit(Event)
{
	var BoxObject = Boxes.GetContainingBox(this);
	
	if (BoxObject.Friends.EditMode)
	{
		//Entering edit mode
		BoxObject.Friends.EditMode = false;
		
		BoxObject.Friends.List.style.display="";

		BoxObject.Friends.EditTool.style.display="none";
		BoxObject.Friends.ActionBar.style.display="none";
	}
	
	EditBox_Finished(BoxObject.BoxID);
	
	//Free up memory
	BoxObject = null;

	return(false);
}




function Friends_SaveEdit(Event)
{
	var BoxObject = Boxes.GetContainingBox(this);
	
	if (BoxObject.Friends.EditMode)
	{
		//Entering edit mode
		BoxObject.Friends.EditMode = false;
		
//		BoxObject.Friends.Text.innerHTML=Friends_ProcessBBCode(BoxObject.Friends.EditTool.value);
		Box_UpdateLoadStatus(BoxObject,"updating");
//		BoxObject.Friends.List.innerHTML="<center>Updating...</center>";
		BoxObject.Friends.List.style.display="";
		BoxObject.Friends.EditTool.style.display="none";
		BoxObject.Friends.ActionBar.style.display="none";

		//Storing the current HTML and BBCode as backup
//		BoxObject.Friends.CurrentHTML = BoxObject.Friends.Text.innerHTML;
		
		Friends_Save_Server(BoxObject.Friends.Save_Handler,BoxObject.Friends.EditTool.Items.value,BoxObject.Friends.EditTool.Show.value,BoxObject.Friends.EditTool.ShowStatus.value,BoxObject.Friends.EditTool.ShowLocation.value);
	}
	
	EditBox_Finished(BoxObject.BoxID);

	//Free up memory
	BoxObject = null;

}





function Friends_Save_Server(Handler,Items,Show,Status,Location)
{//Call server to with Box Order command via Ajax
 //Allow multiple saves - it's up to the user
	try 
	{
		Handler.URL='/cgi-bin/profile/boxes/friends.pl?usk='+USK+'&act=save&bid='+Handler.BoxID;
		Handler.resetData();
		Handler.addData("Items",Items);
		Handler.addData("Show",Show);
		Handler.addData("Status",Status);
		Handler.addData("Location",Location);
		
		Debug("Calling "+Handler.URL);
		
		Handler.Execute(); //Execute server call
	}
	catch (e)
	{//Error - Could not call server
		//(?)
	};
};










function Friends_ApproveFriend(BoxID,FriendID)
{
	var BoxObject = Boxes.Objects[BoxID];
	Friends_ApproveFriend_Server(BoxObject.Friends.ApproveFriend_Handler,FriendID);

	//Free up memory
	BoxObject = null;
}



function Friends_ApproveFriend_Server(Handler,FriendID)
{//Call server to with Box Order command via Ajax
 //Allow multiple saves - it's up to the user
	try 
	{
		Handler.URL='/cgi-bin/profile/boxes/friends.pl?usk='+USK+'&act=add_commit&bid='+Handler.BoxID;
		Handler.resetData();
		Handler.addData("FriendID",FriendID);
		
		Debug("Calling "+Handler.URL);
		
		Handler.Execute(); //Execute server call
	}
	catch (e)
	{//Error - Could not call server
		//(?)
	};
};




function Friends_RemoveFriend(BoxID,FriendID)
{
	var BoxObject = Boxes.Objects[BoxID];
	if (confirm("Are you sure you want to delete this user")) //Asks for removal confirmation
	{
		Friends_RemoveFriend_Server(BoxObject.Friends.RemoveFriend_Handler,FriendID);
	};

	//Free up memory
	BoxObject = null;
}


function Friends_RemoveFriend_Server(Handler,FriendID)
{//Call server to with Box Order command via Ajax
 //Allow multiple saves - it's up to the user
	try 
	{
		Handler.URL='/cgi-bin/profile/boxes/friends.pl?usk='+USK+'&act=remove_commit&bid='+Handler.BoxID;
		Handler.resetData();
		Handler.addData("FriendID",FriendID);
		
		Debug("Calling "+Handler.URL);
		
		Handler.Execute(); //Execute server call
	}
	catch (e)
	{//Error - Could not call server
		//(?)
	};
};








Friends_RemoveFriend_onLoad = Friends_ApproveFriend_onLoad = Friends_Save_Handler_onLoad = function(Handler)
{//Function executed upon response from server
	
	function Save_Revert(Reason)
	{//In case of failure to reorder box - Revert/Alert about box reorder failure
		window.alert(Reason); //Alerting the failure reason
		Box_UpdateLoadStatus(Handler.BoxObject,"");
		Handler.BoxObject.Text.innerHTML = "";
		//Handler.BoxObject.Text.innerHTML = Handler.BoxObject.CurrentHTML;
	}
	
	var Response = Handler.getXML();
	if (!Response)
	{//Invalid result retuned
		Save_Revert("No server response");
		Response = null; //Free up memory
		return(false);
	}
	
	var XMLroot = Response.getElementsByTagName('root').item(0);
	Response = null; //Free up memory

	if (!XMLroot)
	{//Invalid result retuned
		Save_Revert("Invalid server XML response");
		XMLroot = null; //Free up memory
		return(false);
	} 
	
	var Status = XMLroot.getElementsByTagName('status').item(0);
	if (!Status)
	{//Invalid result retuned
		Save_Revert("No status reported");
		Status = null; XMLroot = null; //Free up memory
		return(false);
	} 

	var StatusID = Status.getElementsByTagName('status_id').item(0); 
	StatusID = StatusID?StatusID.childNodes.item(0).data:0;
	
	var StatusMessage = Status.getElementsByTagName('status_message').item(0); 
	StatusMessage = StatusMessage?StatusMessage.childNodes.item(0).data:'Unknown';
	
	if (StatusID != 1)
	{
		Save_Revert(StatusMessage);
		StatusID = null; StatusMessage = null; Status = null; XMLroot = null; //Free up memory
		return(false);
	}
	
	//Free up memory
	StatusID = null;
	StatusMessage = null;
	Status = null;

	//Else

	var DataSet = XMLroot.getElementsByTagName('data').item(0);
	if (!DataSet)
	{//Failed to receive data from server regarding the renaming box - Unexpected error - Reverting rename
		Save_Revert("No data reported");
		DataSet = null; Response = null; //Free up memory
		return(false);
	}
	
	var BoxID = DataSet.getElementsByTagName('box_id').item(0);
	BoxID = (BoxID.childNodes.item(0))?parseInt(BoxID.childNodes.item(0).data):false;

	var BoxContent = DataSet.getElementsByTagName('box_content').item(0);
	BoxContent = MergeChildrenItems(BoxContent.childNodes);

	var BoxScript = DataSet.getElementsByTagName('box_script').item(0);
	BoxScript = MergeChildrenItems(BoxScript.childNodes);

	var BoxPrerequisiteScripts = DataSet.getElementsByTagName('box_prerequisitescripts').item(0);
	BoxPrerequisiteScripts = (BoxPrerequisiteScripts.childNodes.item(0))?BoxPrerequisiteScripts.childNodes.item(0).data:"";

	var BoxScriptCode = DataSet.getElementsByTagName('box_scriptcode').item(0);
	BoxScriptCode = MergeChildrenItems(BoxScriptCode.childNodes);

	if (!BoxID)
	{//Bad/missing BoxID or title - Unexpected error - reverts rename
		Save_Revert("Missing Box details in response");
		BoxID = null; DataSet = null; XMLroot = null; //Free up memory
		return(false);
	}
	else
	{
		Box_UpdateLoadStatus(Handler.BoxObject,"");
		eval(BoxScriptCode);
	};
	
	//Free up memory
	BoxID = null;
	BoxContent = null;
	BoxScript = null;
	BoxScriptCode = null;
	DataSet = null;
	XMLroot = null;
};














function Friends_Init()
{
	if (!Boxes.LoadedScripts['friends'])
	{
		Boxes.LoadedScripts['friends'] = new Object;
		Boxes.LoadedScripts['friends'].StatusID=1; //Marking script as load-pendin
		Boxes.LoadedScripts['friends'].DelayedCommands = "";
	}
	else
	{
		Boxes.LoadedScripts['friends'].StatusID=1; //Flagging script as loaded
		//Debug(Boxes.LoadedScripts['friends'].DelayedCommands);
		eval(Boxes.LoadedScripts['friends'].DelayedCommands);//Executes the delayed commands
	}
}



Friends_Init();

-->
