String.prototype.trim=function() {
	return this.rtrim().ltrim()
}
String.prototype.ltrim=function() {
	return this.replace(/^\s*/,'')
}
String.prototype.rtrim=function() {
	return this.replace(/\s*$/,'')
}
	
function LimitLength(control, limitToLength) {
	var str = control.value;
	if(! str || str.length == 0) return false;

	var matches = str.match(/\r|\n/g);
	if(! matches) return false;

 	var offSet = matches.length;
	if (str.length > (limitToLength + offSet)) {
		control.value = str.substring(0, limitToLength + offSet);
	}
	return false;
}

/*This set of functions is for displaying the report abuse area on the screen*/
function mouseX(evt) {
	if (evt.pageX) return evt.pageX;
	else if (evt.clientX)
		return evt.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
	else return null;
}

function mouseY(evt) {
	if (evt.pageY) return evt.pageY;
	else if (evt.clientY)
		return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
	else return null;
}


function ShowDivAtMouse(evt, id) {
	posx = mouseX(evt) - 170;    
	posy = mouseY(evt);
	//normalize to make sure we at least appear on the screen
	if(posx < 0) posx = 10;
	if(posy < 0) posy = 10;
	document.getElementById(id).style.left = posx + "px";
	document.getElementById(id).style.top = posy + "px";
	document.getElementById(id).style.display = "block";
}
/*End REport Abuse display*/

function ShowReportAbuse(evt/*, url, command*/) {
	var doc = document;
	doc.getElementById("ReportAbuse_CommentText").value = "";
	doc.getElementById("ReportAbuse_Reason").selectedIndex = 0;
	ShowDivAtMouse(evt, "ReportAbuse_Menu");
	doc.getElementById('ReportAbuse_CommentText').focus();
}

//For adding recommendation to an object
function addrecommendation(rtype,recthis,reccnt,title) {
	var recid = "rec_" + recthis;
	var gk = "";
	var rb = new RequestBatch();
	if (rtype == "Gallery") gk = new GalleryKey(recthis);
	else if (rtype == "Video") gk = new VideoKey(recthis);
	var addr = new RecommendAction(gk,title);
	rb.AddToRequest(addr);
	var recsw = function(resp) {
		if (resp.Messages[0].Message == "ok") {
			var rcnt = parseInt(reccnt) + 1;
			document.getElementById(recid).innerHTML = "<div style=\"display: inline;\"><div class=\"Recommend_Container\"><span class=\"SiteLife_Recommended\">Recommended (" + rcnt + ")</span></div></div>";
		}
		else {
			alert(resp.Messages[0].Message);
		}
	}
	rb.BeginRequest(serverUrl, recsw);
	return false
}

//For reporting abuse on an object
function reportabuse(rtype,recthis,butid) {
	//Disable the Report button
	var repbut = document.getElementById(butid);
	repbut.value = "Reporting...";
	repbut.disabled = true;
	
	var recid = "rpt_" + recthis;
	var ddown = document.getElementById('ReportAbuse_Reason');
	var sidx = ddown.selectedIndex;
	var reason = ddown.options[sidx].value;
	var desc = document.getElementById('ReportAbuse_CommentText').value.trim();
	
	var gk = "";
	var rb = new RequestBatch();
	if (rtype == "Article") gk = new ArticleKey(recthis);
	else if (rtype == "Video") gk = new VideoKey(recthis);
	var addr = new ReportAbuseAction(gk,reason,desc);
	rb.AddToRequest(addr);
	var recsw = function(resp) {
		if (resp.Messages[0].Message == "ok") {
			document.getElementById('ReportAbuse_Menu').style.display = "none";
			document.getElementById(recid).innerHTML = "<div style=\"display: inline;\"><span class=\"SiteLife_Reported\">Reported</span></div>";
		}
		else {
			repbut.value = "Report";
			repbut.disabled = false;
			alert(resp.Messages[0].Message);
		}
	}
	rb.BeginRequest(serverUrl, recsw);
	return false
}