/* Joined.com JS API 
 * Date: 09 June 2008
 */

/* General Management */
/* ------------------ */
function showElement(sShowElem) {
	e = document.getElementById(sShowElem);
	if(e) {
		e.style.display = 'block';
	}
}
function hideElement(sHideElem) {
	e = document.getElementById(sHideElem);
	if(e) {
		e.style.display = 'none';
	}
}
function showHideElement(sElem) {
	e = document.getElementById(sElem);
	if(e) {
		e.toggle();
	}
}
function disableTextBoxes(aTextBoxes) {
	if(aTextBoxes.length > 0) {
		for(var i; i < aTextBoxes.length; i++) {
			eBox = document.getElementById(aTextBoxes[i]);
			if(eBox) {
				eBox.value = "Loading";
				eBox.disabled=true;
				eBox.readOnly=true;				
			}
		}
	}	
}
function disableLinks(aLinks) {
	if(aLinks.length > 0) {
		for(var i = 0; i < aLinks.length; i++) {
			eBox = document.getElementById(aLinks[i]);
			if(eBox) {
				eBox.innerHTML = "Loading";	
				eBox.onclick="";
			}
		}
	}	
}
function disableSelects(aSelects) {
	if(aSelects.length > 0) {
		for(var i = 0; i < aSelects.length; i++) {
			eBox = document.getElementById(aSelects[i]);
			if(eBox) {
				clearList(eBox);
				eBox[0] = new Option('Loading', 'Loading');
			}
		}
	}	
}
function getDropdownValue(elem) {
	var index = elem.selectedIndex;
	if(index != -1) {
		return elem.options[index].value;	
	} else {
		return "";
	}
}
function disableEditEducations(sEditIDs) {
	/* Get all the titles from hidden field */
	var eEditIDs = document.getElementById("edit_titles");
	if(eEditIDs) {
		sEditIDs = eEditIDs.value;
		aEditIDs = sEditIDs.split(":");
		if(aEditIDs.length > 0) {
			for(var i = 0; i < aEditIDs.length; i++) {
				var eDelLink = document.getElementById("edu_del_" + aEditIDs[i]);
				if(eDelLink) {
					eDelLink.innerHTML = "Loading";	
					eDelLink.setAttribute("onclick", "");
				}
				var eDelBox = document.getElementById("edu_edit_" + aEditIDs[i]);
				if(eDelBox) {
					eDelBox.value = "Loading";
					eDelBox.disabled=true;
					eDelBox.readOnly=true;					
				}
			}
		}
	}
}
function sendPostAjaxContent(url, postdata, updateElement) {
	var httpRequest = getAjaxComponent();
	if(!httpRequest) { return false; }

	httpRequest.open('POST', url, true);
	httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	httpRequest.send(postdata);

	httpRequest.onreadystatechange = function() {
		if (httpRequest.readyState == 4) {
			if (httpRequest.status == 200) {
				/* alert (httpRequest.responseText); */
				updateAjaxContents(httpRequest.responseText, updateElement);
			} else {
				alert("error code is not 200: " + httpRequest.status + " - url: " + url);
			}
		}
	};
}

function getAjaxContents(url, updateElement) {
	var responded = false;
	var response = "";
	var httpRequest = getAjaxComponent();
	if(!httpRequest) { return false; }
	/* To stop IE caching our stuff */
//	httpRequest.setRequestHeader("Pragma", "no-cache");
//	httpRequest.setRequestHeader("Expires", "-1");
	httpRequest.open('GET', url, true);
	httpRequest.send('');

	httpRequest.onreadystatechange = function() {
		if (httpRequest.readyState == 4) {
			if (httpRequest.status == 200) {
				if(updateElement.length > 0) {
					updateAjaxContents(httpRequest.responseText, updateElement);
				}
			} else {
				alert("error code: " + httpRequest.status + " - url: " + url);
			}
		}
	};
}

function updateAjaxContents(contents, updateElement) {
	var maincontent	= document.getElementById(updateElement);
	if(maincontent) {
		maincontent.innerHTML = contents;
	}
	// the thickbox plugin has to bind any links that are in the updated element
	// for the lightboxes to work
	bindThickBoxEvents();
	return;	
}

function setPointer(elem) {
	elem.style.cursor = 'pointer';
}

function getAjaxComponent() {
	var httpRequest;
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		httpRequest = new XMLHttpRequest();
	} 
	else if (window.ActiveXObject) { // IE
		try {
			httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			try {
				 httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!httpRequest) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	} else {
		return httpRequest;
	}
}
function clearList(box) {
	if (box) {
		if (box.options) {
			var size = box.options.length;
			if(size > 0) {
				for (i = size; i >= 0; i--) {
					box.options[i] = null;
				}
			}
		}
	}
}
function getID(sName) {
	eElem = document.getElementById(sName);
	if(eElem) {
		return eElem;
	} else {
		return false;
	}
}
function showHide(eElem) {
	if(eElem.style.visibility=='hidden') {
		eElem.style.visibility=='visible';
	} else {
		eElem.style.visibility=='hidden';		
	}
}
function switchToggleText(eElem) {
	if(eElem.innerHTML == "[-] click to close") {
		eElem.innerHTML = "[+] click to expand";
	} else if (eElem.innerHTML == "[+] click to expand") {
		eElem.innerHTML = "[-] click to close";
	} else if(eElem.innerHTML == "[+] edit") {
		eElem.innerHTML = "[-] edit";
	} else if(eElem.innerHTML == "[-] edit") {
		eElem.innerHTML = "[+] edit";
	} else if(eElem.innerHTML == "[+] view more info") {
		eElem.innerHTML = "[-] hide more info";
	} else if(eElem.innerHTML == "[-] hide more info") {
		eElem.innerHTML = "[+] view more info";
	}
}
function toggleAdminFeatured(elem, iUserID) {
	if(elem.checked == true) {
		iValue = 1;
	} else {
		iValue = 0;
	}
	var url = getBaseURL("admin") + "featured/?user=" + iUserID + "&value=" + iValue;
	getAjaxContents(url, '');		
}
function toggleAdminPhotoFeatured(elem, iPhotoID) {
	if(elem.checked == true) {
		iValue = 1;
	} else {
		iValue = 0;
	}
	var url = getBaseURL("admin") + "photofeatured/?photo=" + iPhotoID + "&value=" + iValue;
	getAjaxContents(url, '');		
}
function toggleAdminNotifications(elem, iUserID) {
	if(elem.checked == true) {
		iValue = 1;
	} else {
		iValue = 0;
	}
	var url = getBaseURL("admin") + "notifications/?user=" + iUserID + "&value=" + iValue;
	getAjaxContents(url, '');		
}

function addUserToMessage(uid, uname) {
	if($("#recipient_" + uid).length == 0) // this way you don't add the same user more than once
	{
		if ($("#message_recipients span").length == 0)
		{
			$("#message_recipients").append("<span id='recipient_" + uid + "'>" + uname + "<input type='hidden' class='recipient' name='message_to_ids[]' value='" + uid + "'> <a href='#' onclick='removeUserFromMessage(" + uid + "); return false;'><span class='small-blue'>[x]</span></a></span>");
		}
		else
		{
			$("#message_recipients").append("<span id='recipient_" + uid + "'>, " + uname + "<input type='hidden' class='recipient' name='message_to_ids[]' value='" + uid + "'> <a href='#' onclick='removeUserFromMessage(" + uid + "); return false;'><span class='small-blue'>[x]</span></a></span>");
		}
	}
}
function removeUserFromMessage(uid) {
	if($("#recipient_" + uid).length > 0)
	{
		$("#recipient_" + uid).remove();
	}
}

function addUserToRequest(uid, uname) {
	if (uid == "" || uname == "") { return false; }
	if($("#recipient_" + uid).length == 0) // this way you don't add the same user more than once
	{
		if ($("#message_recipients span").length == 0)
		{
			$("#message_recipients").append("<span id='recipient_" + uid + "'>" + uname + "<input type='hidden' class='recipient' name='message_to_ids[]' value='" + uid + "'> <a href='#' onclick='removeUserFromMessage(" + uid + "); return false;'><span class='small-blue'>[x]</span></a></span>");
		}
		else
		{
			$("#message_recipients").append("<span id='recipient_" + uid + "'>, " + uname + "<input type='hidden' class='recipient' name='message_to_ids[]' value='" + uid + "'> <a href='#' onclick='removeUserFromMessage(" + uid + "); return false;'><span class='small-blue'>[x]</span></a></span>");
		}
	}
}

function removeThickBoxEvents() {
	$('.thickbox').each(function(i) {
		$(this).unbind('click');
	});
}

function bindThickBoxEvents() {
	removeThickBoxEvents();
	tb_init('a.thickbox, area.thickbox, input.thickbox');
}
function addUserToGroupModerator(uid, uname) {
	if (uid.length > 0)
	{
		if($("#moderator_" + uid).length == 0) // this way you don't add the same user more than once
		{
			$("#group_moderators").append("<div style='height:18px' id='moderator_" + uid + "'><span class='moderator'>" + uname + "</span><input type='hidden' name='groupModerators[" + uid + "][userId]' value='" + uid + "' /><input type='hidden' name='groupModerators[" + uid + "][name]' value='"+ uname.replace("'", "\'") +"'/><a href='#' onclick='removeUserFromGroupModerator(" + uid + "); return false;'><span class='small-blue'> [x] remove</span></a></div>");
		}
	}
}
function removeUserFromGroupModerator(uid) {
	if($("#moderator_" + uid).length > 0)
	{
		$("#moderator_" + uid).remove();
	}
}
function addUserToGroupInvite(uid, uname) {
	if($("#recipient_" + uid).length == 0) // this way you don't add the same user more than once
	{
		$("#invite_recipients").append("<div style='height:18px' id='recipient_" + uid + "'><p>" + uname + "<input type='hidden' class='recipient' name='invite_to_ids[" + uid + "][id]' value='" + uid + "'><input type='hidden' class='recipient' name='invite_to_ids[" + uid + "][name]' value='" + uname + "'><span class='small-blue'><a href='#' onclick='removeUserFromGroupInvite(" + uid + "); return false;'> [x]remove</a></span></p></div>");
	}
}
function removeUserFromGroupInvite(uid) {
	if($("#recipient_" + uid).length > 0)
	{
		$("#recipient_" + uid).remove();
	}
}
function removeUserFromGroup(id,ref)
{
	if (ref)
	{
		var url = getBaseURL("groups") + "removeUserFromGroup/id/" + id + "/ref/" + ref + "/";
	}
	else
	{
		var url = getBaseURL("groups") + "removeUserFromGroup/id/" + id + "/";
	}
		
	sendPostAjaxContent(url);
}
function clearInput(iid)
{
	var check = iid.value;
	if (check == "(e.g., project manager)") {
		iid.value = "";
	}
}
/* -- */
/* ----------------- Blog Management --------------------- */
/* -- */
function postDelete(pid,ref)
{
	//assume that pid and ref are set properly... for now at least.
	var url = getBaseURL("blog") + "delete/?post_id=" + pid + '&ref=' +ref;
	window.document.location = url;
	return;
}
function blogDelete(uid,ref)
{
	//assume that cid and ref are set properly... for now at least.
	var url = getBaseURL("blog") + "deleteBlog/?user_id=" + uid + '&ref=' +ref;
	window.document.location = url;
	return;
}
function commentDelete(cid,ref)
{
	//assume that cid and ref are set properly... for now at least.
	var url = getBaseURL("blog") + "deleteComment/?comment_id=" + cid + '&ref=' +ref;
	window.document.location = url;
	return;
}
function reportMember(uid)
{
	var url = getBaseURL('members') + 'reportMember/';
	var postString = "user_id=" + uid;
	sendPostAjaxContent(url, postString);
	return;
}

function toggleReportUser(elem, uid) {
	if(elem.checked == true) 
	{
		var url = getBaseURL('members') + 'reportMember/';
		var postString = "user_id=" + uid;
		sendPostAjaxContent(url, postString);
	} 
	else 
	{
		var url = getBaseURL('members') + 'unReportMember/';
		var postString = "user_id=" + uid;
		sendPostAjaxContent(url, postString);
	}
}

/* -- */
/* ----------------- END Blog Management --------------------- */
/* -- */