var defaultNote = 'Add note';
var notePopupDialogue = '';
var activeNoteCallerElement = '';
var id = 0
var sFormElement = 'NotePopupDialogue';

function fnReportAbuse(iComment){
	
	id = iComment;
	notePopupDialogue = $(sFormElement);	
	activeNoteCallerElement = $('ra'+iComment);
	var noteX, noteY;
	
	// offset it against the element position
	noteX = getXPos(activeNoteCallerElement) - 138;	
	noteY = getYPos(activeNoteCallerElement) + 16;
	
	//and make it shoe       
	notePopupDialogue.style.left = noteX + 'px';	
	notePopupDialogue.style.top = noteY + 'px';
	notePopupDialogue.style.display = 'block';
	//Effect.Appear(sFormElement, { duration: .25 });
	
	
	var inputNotEl, save, cancel;
	inputNotEl = $('NotePopupInputBox');
	save = $('NotePopupSaveButton');
	cancel = $('NotePopupCancelButton');
	
	inputNotEl.focus();
	
	inputNotEl.onkeypress = function(e){
		if (!e){
			e = event;
		}
		// ESC
		if (e.keyCode == '27' || e.charCode == '27'){
			CloseNoteDialogue();
		}
		// just another character
		else{
			return true;
		}
		return true;
	}
	
	// handles click on cancel button
	cancel.onclick = function(e)
	{
		CloseNoteDialogue();
		//ResetNoteActives();
	}
	
	// handles click on save button
	save.onclick = function(e)
	{
		//alert("saving");
		var input = $('NotePopupInputBox');
		
		// get all important parameters to save the note
		if(input) 
		{
			savedText = input.value;
			iUserID = $('NotePopupUserID').value;
		}
		
		//alert(savedText+"|"+iUserID);
		// update UI
		//SetNoteText(); 
		// store in DB	
		SaveNote();
		// close the window
		CloseNoteDialogue();
		//ResetNoteActives();
	}
	
	
	
	
	
	
};



function SaveNote(){
	SetNoteText();
	var url = "/scripts/ajax/report_abuse.asp?id="+id+"&u="+iUserID+"&n="+URLencode(savedText);
	//alert(url);
	newEle = ReplaceString(activeNoteCallerElement,'Reporting...');
	new Ajax.Request(url, {
		 onSuccess : function(resp) {
			//alert("The response from the server is: " + resp.responseText);
			newEle = ReplaceString(newEle,'Abuse Reported');
			
		 },
		 onFailure : function(resp) {
			newEle = ReplaceString(newEle,"Error");
		 },
		 parameters : ""
		});
};

function SetNoteText(){
	if(savedText.length > 50){
		savedText = encodeHtml(savedText.substr(0,50)) + '...';
	}
	else{
		savedText = encodeHtml(savedText);
	}
};



function CloseNoteDialogue()
	{	
	if (notePopupDialogue) notePopupDialogue.style.display = 'none';//Effect.Fade(sFormElement, { duration: .25 });
    // cancel focus on input causing floating ghost caret in Mozilla
	var input = $('NotePopupInputBox');
	input.value = ""
	if (input) input.blur();
	//Effect.Fade(sFormElement, { duration: .25 });
	notePopupDialogue.style.display = 'none';
	return true;
};


function ReplaceString(objEmementToReplace,strToReplaceWith){
	objEmementToReplace.innerHTML = "";
	var sp1 = document.createElement("span");
	sp1.setAttribute("id", "newSpan");
	var sp1_content = document.createTextNode(strToReplaceWith);
	sp1.appendChild(sp1_content);
	var parentDiv = objEmementToReplace.parentNode;
	parentDiv.insertBefore(sp1, objEmementToReplace);
	return sp1;
}







// Extra Helper functions

// ###################################################################################
// ###################################################################################
// ###################################################################################


function getXPos(el) 
{
	if (document.getBoxObjectFor) 
	{ 
		var bo = document.getBoxObjectFor(el); 
		return bo.x; 
	} 
	else if (el.getBoundingClientRect) 
	{ 
		var rect = el.getBoundingClientRect(); 
		return rect.left; 
	} 
	else
	{
		var x;
		x = 0;
		
		while(el != null) 
		{
			if(el.offsetLeft != null && typeof(el.offsetLeft) == "number")
				x += el.offsetLeft;	

			el = el.offsetParent;
		}
			
		return x;
	}
}

// ###################################################################################
// ###################################################################################
// ###################################################################################

function getYPos(el) 
{
	if (document.getBoxObjectFor) 
	{ 
		// Moz
		var bo = document.getBoxObjectFor(el); 
		return bo.y; 
	} 
	else if (el.getBoundingClientRect) 
	{ 
		// IE
		var rect = el.getBoundingClientRect(); 
		
		var scrollingOffsetY;
		if (document.documentElement && document.documentElement.scrollTop) 
		{
			scrollingOffsetY = document.documentElement.scrollTop;	
		} 
		else if (window.pageYOffset) 
		{ 
			scrollingOffsetY = window.pageYOffset;	
		} 
		else if (document.body) 
		{
			// IE
			scrollingOffsetY = document.body.scrollTop;
		}
		else {
			scrollingOffsetY = 0;
		}

		// add scrolling offset		
		return rect.top + scrollingOffsetY; 
	} 
	else
	{
		// Other
		var y;
		y = 0;
		while(el != null) 
		{
			if(el.offsetTop != null && typeof(el.offsetTop) == "number" )
				y += el.offsetTop;
			
			el = el.offsetParent;
		}
		
		return y;
	} 
}

// ###################################################################################
// ###################################################################################
// ###################################################################################
// encodes input from note ajax dialogue

function encodeHtml(stringToEncode)
{
	var encodedHtml = '';
	encodedHtml = stringToEncode;
	encodedHtml = encodedHtml.replace(/>/g, "&gt;");
	encodedHtml = encodedHtml.replace(/</g, "&lt;");
	return encodedHtml;
} 



function URLencode(sStr) 
{
    return escape(sStr).
             replace(/\+/g, '%2B').
                replace(/\"/g,'%22').
                   replace(/\'/g, '%27');
}