<!--




function CommentBox_CreateObject(BoxID,Items,AllowLevel,HTML)
{
	HTML = UnXML(HTML);
	
	var BoxObject = Boxes.Objects[BoxID];

	if (!BoxObject.CommentBox)
	{//If object not initialized yet...
		BoxObject.CommentBox = new Object; //Creating a CommentBox instance inside the box if not existing already
		
		BoxObject.CommentBox.DeleteComment_Handler = new XMLHTTPEngine("CommentBox_DeleteComment","","POST"); //Creates CommentBox_DeleteComment Ajax Handler for the box
		BoxObject.CommentBox.DeleteComment_Handler.onLoad = CommentBox_DeleteComment_Handler_onLoad; //Links the onload function
		BoxObject.CommentBox.DeleteComment_Handler.BoxID = BoxID; //Saves the BoxID
		BoxObject.CommentBox.DeleteComment_Handler.BoxObject = BoxObject; //Saves the BoxID

		BoxObject.CommentBox.Save_Handler = new XMLHTTPEngine("CommentBox_Save","","POST"); //Creates CommentBox_Save Ajax Handler for the box
		BoxObject.CommentBox.Save_Handler.onLoad = CommentBox_Save_Handler_onLoad; //Links the onload function
		BoxObject.CommentBox.Save_Handler.BoxID = BoxID; //Saves the BoxID
		BoxObject.CommentBox.Save_Handler.BoxObject = BoxObject; //Saves the BoxID
		
		BoxObject.CommentBox.EditTool = document.createElement("DIV");
		BoxObject.CommentBox.EditTool.style.width="100%";
		BoxObject.CommentBox.EditTool.style.overflow="hidden";
		BoxObject.CommentBox.EditTool.style.display="none";

			var EditTable = document.createElement("TABLE");
			EditTable.className = 'box_table_nospace';
			EditTable.style.width="100%";
	
			var Row_URL = EditTable.insertRow(0);
			var Row_Items = EditTable.insertRow(1);
			var Row_Target = EditTable.insertRow(2);
			
			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 = "Items:";
				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.CommentBox.EditTool.Items = document.createElement("SELECT");
				BoxObject.CommentBox.EditTool.Items.style.width = "100%";
				BoxObject.CommentBox.EditTool.Items.style.styleFloat = "left";
					for (var RunIndex=1; RunIndex<=10; RunIndex++)
					{
						TMP_Option = document.createElement("OPTION");
						TMP_Option.value=RunIndex;
						TMP_Option.innerHTML=RunIndex;
						BoxObject.CommentBox.EditTool.Items.appendChild(TMP_Option);
					}
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=15; TMP_Option.innerHTML=15; BoxObject.CommentBox.EditTool.Items.appendChild(TMP_Option);
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=20; TMP_Option.innerHTML=20; BoxObject.CommentBox.EditTool.Items.appendChild(TMP_Option);
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=25; TMP_Option.innerHTML=25; BoxObject.CommentBox.EditTool.Items.appendChild(TMP_Option);
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=50; TMP_Option.innerHTML=50; BoxObject.CommentBox.EditTool.Items.appendChild(TMP_Option);
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=75; TMP_Option.innerHTML=75; BoxObject.CommentBox.EditTool.Items.appendChild(TMP_Option);
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=100; TMP_Option.innerHTML=100; BoxObject.CommentBox.EditTool.Items.appendChild(TMP_Option);

					TMP_Element.appendChild(BoxObject.CommentBox.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 = "Allow:";
				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.CommentBox.EditTool.AllowLevel = document.createElement("SELECT");
				BoxObject.CommentBox.EditTool.AllowLevel.style.width = "100%";
				BoxObject.CommentBox.EditTool.AllowLevel.style.styleFloat = "left";
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=0; TMP_Option.innerHTML="Everyone"; BoxObject.CommentBox.EditTool.AllowLevel.appendChild(TMP_Option);
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=1; TMP_Option.innerHTML="All Members"; BoxObject.CommentBox.EditTool.AllowLevel.appendChild(TMP_Option);
					TMP_Option = document.createElement("OPTION"); TMP_Option.value=2; TMP_Option.innerHTML="Only Friends"; BoxObject.CommentBox.EditTool.AllowLevel.appendChild(TMP_Option);
				TMP_Element.appendChild(BoxObject.CommentBox.EditTool.AllowLevel);
				TMP_Cell.appendChild(TMP_Element);


	
			BoxObject.CommentBox.EditTool.appendChild(EditTable);
		
		BoxObject.Content.appendChild(BoxObject.CommentBox.EditTool);



		BoxObject.CommentBox.ActionBar = document.createElement("CENTER");
		BoxObject.CommentBox.ActionBar.style.width="100%";
		BoxObject.CommentBox.ActionBar.style.display="none";

			BoxObject.CommentBox.CancelButton = document.createElement("INPUT");
			BoxObject.CommentBox.CancelButton.type="button";
			BoxObject.CommentBox.CancelButton.value="Cancel";
			BoxObject.CommentBox.CancelButton.onclick=CommentBox_CancelEdit;
			BoxObject.CommentBox.ActionBar.appendChild(BoxObject.CommentBox.CancelButton);
			
			BoxObject.CommentBox.SaveButton = document.createElement("INPUT");
			BoxObject.CommentBox.SaveButton.type="button";
			BoxObject.CommentBox.SaveButton.value="Save";
			BoxObject.CommentBox.SaveButton.onclick=CommentBox_SaveEdit;
			BoxObject.CommentBox.ActionBar.appendChild(BoxObject.CommentBox.SaveButton);

			TMP_Element = document.createElement("DIV");
			TMP_Element.className = "CommentBox_Seperator";
			BoxObject.CommentBox.ActionBar.appendChild(TMP_Element);

		BoxObject.Content.appendChild(BoxObject.CommentBox.ActionBar);


		BoxObject.CommentBox.Comments = document.createElement("DIV");
		BoxObject.CommentBox.Comments.style.width="100%";
		BoxObject.CommentBox.Comments.style.display="";
		BoxObject.CommentBox.Comments.ondblclick=CommentBox_OnClick;
		BoxObject.Content.appendChild(BoxObject.CommentBox.Comments);


		//Assigns edit function
		BoxObject.EditBox = CommentBox_Edit;
	}


	//Resets visuals
	BoxObject.CommentBox.EditTool.style.display="none";
	BoxObject.CommentBox.ActionBar.style.display="none";
	BoxObject.CommentBox.Comments.style.display="";

	Box_UpdateLoadStatus(BoxObject,"");
	BoxObject.CommentBox.Comments.innerHTML=HTML;

	BoxObject.CommentBox.EditTool.Items.value = Items;
	BoxObject.CommentBox.EditTool.AllowLevel.value = AllowLevel;

	BoxObject.CommentBox.EditMode = false;
}








var CommentBox_Form;
function CommentBox_AddCommentForm(BoxID,BBCode)
{
	BBCode = UnXML(BBCode);
	
		CommentBox_Form = new Object; //Creating a CommentBox Form instance
		
		CommentBox_Form.EditTool = document.createElement("DIV");
		CommentBox_Form.EditTool.style.width="100%";
	
			var TMP_Element;
			var TMP_Button;
	
			CommentBox_Form.EditTool.Comment = document.createElement("TEXTAREA");
			CommentBox_Form.EditTool.Comment.name = "Comment";
			CommentBox_Form.EditTool.Comment.style.width="100%";
			CommentBox_Form.EditTool.Comment.style.height="200px";
			
			CommentBox_Form.EditTool.appendChild(CommentBox_Form.EditTool.Comment);
			
			TMP_Element = document.createElement("CENTER");
			TMP_Element.style.width="100%";
			TMP_Element.innerHTML = BBCode_CreateTools(BoxID);
			CommentBox_Form.EditTool.appendChild(TMP_Element);
		
			CommentBox_Form.ActionBar = document.createElement("CENTER");
			CommentBox_Form.ActionBar.style.width="100%";
	
				/*CommentBox_Form.CancelButton = document.createElement("INPUT");
				CommentBox_Form.CancelButton.type="button";
				CommentBox_Form.CancelButton.value="Cancel";
				CommentBox_Form.CancelButton.onclick=CommentBox_Form_Cancel;
				CommentBox_Form.ActionBar.appendChild(CommentBox_Form.CancelButton);*/
				
				CommentBox_Form.SaveButton = document.createElement("INPUT");
				CommentBox_Form.SaveButton.type="button";
				CommentBox_Form.SaveButton.value="Add comment";
				CommentBox_Form.SaveButton.onclick=CommentBox_Form_Save;
				CommentBox_Form.ActionBar.appendChild(CommentBox_Form.SaveButton);
	
			CommentBox_Form.EditTool.appendChild(CommentBox_Form.ActionBar);


	CommentBox_Form.Form = Element_ByID('CommentBox_Form');
	CommentBox_Form.Form.ObjectType="Klostu_Box"; //PRETENDING to be a box, for the BBCode area
	CommentBox_Form.Form.BoxID=BoxID; //PRETENDING to be a box ID#
	CommentBox_Form.Form.appendChild(CommentBox_Form.EditTool);
	BBCode_RegisterTools(CommentBox_Form.Form,CommentBox_Form.EditTool.Comment); //Registering the BBCodeTool for that form

	CommentBox_Form.EditTool.Comment.value=BBCode;
}



function CommentBox_Form_Cancel()
{
	window.close();
}


function CommentBox_Form_Save()
{
	CommentBox_Form.Form.submit();
}







function CommentBox_OnClick(Event)
{
	CommentBox_Edit(Boxes.GetContainingBox(this));
	return(false);
}



function CommentBox_Edit(BoxObject)
{
	if (!BoxObject.CommentBox.EditMode)
	{
		//Entering edit mode
		BoxObject.CommentBox.EditMode = true;
		
		//BoxObject.CommentBox.Comments.style.display="none";

		BoxObject.CommentBox.EditTool.style.display="";
		BoxObject.CommentBox.ActionBar.style.display="";


		BoxObject.CommentBox.EditTool.focus();
	}
}



function CommentBox_CancelEdit(Event)
{
	var BoxObject = Boxes.GetContainingBox(this);
	
	if (BoxObject.CommentBox.EditMode)
	{
		//Entering edit mode
		BoxObject.CommentBox.EditMode = false;
		
		BoxObject.CommentBox.Comments.style.display="";

		BoxObject.CommentBox.EditTool.style.display="none";
		BoxObject.CommentBox.ActionBar.style.display="none";
	}
	
	EditBox_Finished(BoxObject.BoxID);

	//Free up memory
	BoxObject = null;

	return(false);
}




function CommentBox_SaveEdit(Event)
{
	var BoxObject = Boxes.GetContainingBox(this);
	
	if (BoxObject.CommentBox.EditMode)
	{
		//Leaving edit mode
		BoxObject.CommentBox.EditMode = false;
		
		//Debug(BoxObject.CommentBox.EditTool.value);
		Box_UpdateLoadStatus(BoxObject,"updating");
//		BoxObject.CommentBox.Comments.innerHTML="<center>Updating...</center>";
		BoxObject.CommentBox.Comments.style.display="";
		BoxObject.CommentBox.EditTool.style.display="none";
		BoxObject.CommentBox.ActionBar.style.display="none";

		CommentBox_Save_Server(BoxObject.CommentBox.Save_Handler,BoxObject.CommentBox.EditTool.Items.value,BoxObject.CommentBox.EditTool.AllowLevel.value);
	}
	
	EditBox_Finished(BoxObject.BoxID);

	//Free up memory
	BoxObject = null;

}







CommentBox_DeleteComment_Handler_onLoad = CommentBox_Save_Handler_onLoad = CommentBox_Generic_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.Comments.innerHTML = "";
		//Handler.BoxObject.Comments.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 CommentBox_Save_Server(Handler,Items,AllowLevel)
{//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/commentbox.pl?usk='+USK+'&act=save&bid='+Handler.BoxID;
		Handler.resetData();
		Handler.addData("Items",Items);
		Handler.addData("AllowLevel",AllowLevel);
		Handler.Execute(); //Execute server call
	}
	catch (e)
	{//Error - Could not call server
		//(?)
	};
};








function CommentBox_DeleteComment(BoxID,CommentID,AllBy)
{
	var BoxObject = Boxes.Objects[BoxID];
	var CommentToDelete = AllBy?"ALL comments by this person":"this comment";
	if (confirm("Are you sure you want to delete "+CommentToDelete)) //Asks for deletion confirmation 
	{
		Box_UpdateLoadStatus(BoxObject,"Delete comment/s");
		CommentBox_DeleteComment_Server(BoxObject.CommentBox.DeleteComment_Handler,CommentID,AllBy);
	};
	//Free up memory
	BoxObject = null;
}



function CommentBox_DeleteComment_Server(Handler,CommentID,AllBy)
{//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/commentbox.pl?usk='+USK+'&act=del_comment&bid='+Handler.BoxID;
		Handler.resetData();
		Handler.addData("CommentID",CommentID);
		Handler.addData("AllBy",AllBy);
		Handler.Execute(); //Execute server call
	}
	catch (e)
	{//Error - Could not call server
		//(?)
	};
};








function CommentBox_Init()
{
	if (!Boxes.LoadedScripts['commentbox'])
	{
		Boxes.LoadedScripts['commentbox'] = new Object;
		Boxes.LoadedScripts['commentbox'].StatusID=1; //Marking script as load-pendin
		Boxes.LoadedScripts['commentbox'].DelayedCommands = "";
	}
	else
	{
		Boxes.LoadedScripts['commentbox'].StatusID=1; //Flagging script as loaded
		//Debug(Boxes.LoadedScripts['commentbox'].DelayedCommands);
		eval(Boxes.LoadedScripts['commentbox'].DelayedCommands);//Executes the delayed commands
	}
}



CommentBox_Init();


-->
