var http = false;

if(navigator.appName == "Microsoft Internet Explorer") {
  http = new ActiveXObject("Microsoft.XMLHTTP");
} else {
  http = new XMLHttpRequest();
} 

function initProfile()
{

}

function killEvent(eventObject) {
    if (eventObject && eventObject.stopPropagation) {
        eventObject.stopPropagation();
    }
    if (window.event && window.event.cancelBubble ) {
        window.event.cancelBubble = true;
    }
    
    if (eventObject && eventObject.preventDefault) {
        eventObject.preventDefault();
    }
    if (window.event) {
        window.event.returnValue = false;
    }
}

function getFrameContents(id){
	var iFrame =  document.getElementById(id);
	var iFrameBody;
	if ( iFrame.contentDocument ) 
	{ // FF
		iFrameBody = iFrame.contentDocument.getElementsByTagName('body')[0];
	}
	else if ( iFrame.contentWindow ) 
	{ // IE
		iFrameBody = iFrame.contentWindow.document.getElementsByTagName('body')[0];
	}
	return iFrameBody.innerHTML;
}

function loadXMLString(txt)
{
	if (window.DOMParser)
	{
		parser=new DOMParser();
		xmlDoc=parser.parseFromString(txt,"text/xml");
	}
	else // Internet Explorer
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(txt); 
	}
	return xmlDoc;
}

function AJAXRequest(url, paramArray, successCallback, failureCallback)
{
	http.open("POST", url, true);
	http.onreadystatechange=function()
	{
		if (http.readyState==4 && http.status==200)
		{
			stopSpinner();
			eval(successCallback+'(http);');
		}
		else if (http.status != 200)
		{
			eval(failureCallback+'(http);');
		}
	}

	parameters = "";
	for (i = 0; i < paramArray.length; i++)
	{
		if (i > 0)
			parameters += '&';
		
		parameters += paramArray[i];
	}
	
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	startSpinner();
	http.send(parameters);
}

function AJAX_SubmitPost(formID, mode)
{
	form = document.getElementById(formID);
	var action = form.elements['Action'];
	var postTextField = form.elements['post-input'];
	var originField = form.elements['OriginUserID'];
	var targetField = form.elements['TargetUserID'];
	if (form.elements['post-option'] != undefined)
		for (i = 0; i < form.elements['post-option'].length; i++)
		{
			ele = form.elements['post-option'][i];
			if (ele.checked == true && ele.value == 'user')
				var targetField = form.elements['post-target-username'];
		}
	var pageField = form.elements['page-id'];
	
	if (postTextField.value.length > 0)
	{
		http.open("POST", "ajax/ajaxhandler.php", true);
		http.onreadystatechange=function()
		{
			if (http.readyState==4 && http.status==200)
			{
				stopSpinner();
				if (mode == 'feed')
				{
					refreshPosts(http.responseText)
				}
				if (mode == 'popup')
				{
					fillPopup('<span id="popup-loading">Shared successfully!</span>');
					timeoutPopup(1000);
				}
			}
			else if (http.status != 200)
			{
				stopSpinner();
				fillPopup('<span class="ajax-error">There was a request error.</span>');
				showPopup();
			}
		}

		parameters = 'Action='+action.value;
		
		originUserID = encodeURIComponent(originField.value);
		parameters += '&OriginUserID='+originUserID;

		targetUserID = encodeURIComponent(targetField.value);
		parameters += '&TargetUserID='+targetUserID;

		postText = encodeURIComponent(postTextField.value);
		parameters += '&Text='+postText;

		if (pageField != undefined)
		{
			pageID = encodeURIComponent(pageField.value);
			parameters += '&PageID='+pageID;
		}

//		parameters = 'Action='+action.value+'&OriginUserID='+originUserID+'&TargetUserID='+targetUserID+'&Text='+postText;
		http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		startSpinner();
		http.send(parameters);
		
		return true;
	}
	else
		return false;
}

function refreshPosts(responseText)
{
	if (responseText)
		if (responseText.substring(0, 18) == 'Validation-Error: ')
		{
			errorElement = document.getElementById('post-media-error');
			errorElement.innerHTML = responseText.substring(18, responseText.length);
			errorElement.style.display = 'block';
		}
		else
		{
			insertPostAtBeginning(responseText, 'profile-feeditem', 'profile-feed');
			postTextField = document.getElementById('post-input');
			postTextField.value = null;
			expandTextarea(postTextField);
	
			document.getElementById('MediaFile').form.reset();
			closeMediaUpload();
		}
}

function openMediaUpload()
{
	document.getElementById('user-upload-box').style.display = 'block';
	document.getElementById('user-upload-button').style.display='none';
}

function closeMediaUpload()
{
	document.getElementById('user-upload-box').style.display = 'none';
	document.getElementById('user-upload-button').style.display='block';
}

function AJAX_SubmitComment(formID)
{
	form = document.getElementById(formID);
	var action = form.elements['action'];
	var postIDField = form.elements['post-id'];
	var originField = form.elements['comment-origin'];
	var commentTextField = form.elements['comment-text'];
	
	if (commentTextField.value.length > 0)
	{
		http.open("POST", "ajax/ajaxhandler.php", true);
		http.onreadystatechange=function()
		{
			if (http.readyState==4 && http.status==200)
			{
				stopSpinner();
				insertCommentAtEnd(http.responseText, 'feeditem-comment', 'comment-block-'+postIDField.value);
				commentTextField.value = null;
				expandTextarea(commentTextField);
			}
			else if (http.status != 200)
			{
				stopSpinner();
				fillPopup('<span class="ajax-error">There was a request error.</span>');
				showPopup();
			}
		}

		postID = encodeURIComponent(postIDField.value);
		originUserID = encodeURIComponent(originField.value);
		commentText = encodeURIComponent(commentTextField.value);
		parameters = 'Action='+action.value+'&UserID='+originUserID+'&PostID='+postID+'&Text='+commentText;
		http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		startSpinner();
		http.send(parameters);
		
		return true;
	}
	else
		return false;
}

function AJAX_RemovePost(postID)
{	
	if (confirm("Are you sure you want to remove this post?") && postID != undefined)
	{
		http.open("POST", "ajax/ajaxhandler.php", true);
		http.onreadystatechange=function()
		{
			if (http.readyState==4 && http.status==200)
			{
				stopSpinner();
				if (http.responseText == 'TRUE')
				{
					postEle = document.getElementById('post-'+postID);
					postEle.parentNode.removeChild(postEle);
				}
			}
			else if (http.status != 200)
			{
				stopSpinner();
				fillPopup('<span class="ajax-error">There was a request error.</span>');
				showPopup();
			}
		}

		parameters = 'Action=RemovePost&PostID='+postID;
		http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		startSpinner();
		http.send(parameters);	
	}
}

function AJAX_AcceptFriendRequest(requestID)
{
	http.open("POST", "ajax/ajaxhandler.php", true);
	http.onreadystatechange=function()
	{
		if (http.readyState==4 && http.status==200)
		{
			stopSpinner();
			location.reload();
		}
		else if (http.status != 200)
		{
			stopSpinner();
			fillPopup('<span class="ajax-error">There was a request error.</span>');
			showPopup();
		}
	}

	parameters = 'Action=AcceptFriendRequest&RequestID='+requestID;
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	startSpinner();
	http.send(parameters);	
}

function AJAX_IgnoreFriendRequest(requestID)
{
	http.open("POST", "ajax/ajaxhandler.php", true);
	http.onreadystatechange=function()
	{
		if (http.readyState==4 && http.status==200)
		{
			stopSpinner();
			location.reload();
		}
		else if (http.status != 200)
		{
			stopSpinner();
			fillPopup('<span class="ajax-error">There was a request error.</span>');
			showPopup();
		}
	}

	parameters = 'Action=IgnoreFriendRequest&RequestID='+requestID;
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	startSpinner();
	http.send(parameters);	
}

function AJAX_RequestFriend(formID)
{
	http.open("POST", "ajax/ajaxhandler.php", true);
	http.onreadystatechange=function()
	{
		if (http.readyState==4 && http.status==200)
		{
			stopSpinner();
			fillPopup('<span id="popup-loading">Friend request was successful.</span>');
			timeoutPopup(1000);
		}
		else if (http.status != 200)
		{
			stopSpinner();
			fillPopup('<span class="ajax-error">There was a request error.</span>');
			showPopup();
		}
	}

	form = document.getElementById(formID);
	var action = form.elements['action'];
	var targetField = form.elements['target-user'];
	var originField = form.elements['origin-user'];
	var requestTextField = form.elements['request-text'];
	
	targetUserID = encodeURIComponent(targetField.value);
	originUserID = encodeURIComponent(originField.value);
	requestText = encodeURIComponent(requestTextField.value);
	parameters = 'Action='+action.value+'&TargetUserID='+targetUserID+'&OriginUserID='+originUserID+'&Text='+requestText;
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	startSpinner();
	http.send(parameters);	
}

function AJAX_EditBasicProfileInfo(formID, mode)
{
	form = document.getElementById(formID);

	paramArray = [];
	paramArray[0] = 'Action='+form.elements['Action'].value;
	paramArray[1] = 'UserID='+form.elements['UserID'].value;
	paramArray[2] = 'DateOfBirth='+form.elements['DateOfBirth'].value;
	paramArray[3] = 'Location='+encodeURIComponent(form.elements['Location'].value);
	paramArray[4] = 'AboutText='+encodeURIComponent(form.elements['AboutText'].value);

	AJAXRequest('ajax/ajaxhandler.php', paramArray, 'reloadPage', 'ajaxError');
}

function AJAX_EditProfileContactInfo(formID, mode)
{
	form = document.getElementById(formID);

	paramArray = [];
	paramArray[0] = 'Action='+form.elements['Action'].value;
	paramArray[1] = 'UserID='+form.elements['UserID'].value;
	paramArray[2] = 'Phone1='+encodeURIComponent(form.elements['Phone1'].value);
	paramArray[3] = 'Phone1Type='+encodeURIComponent(form.elements['Phone1Type'].value);
	paramArray[4] = 'Phone2='+encodeURIComponent(form.elements['Phone2'].value);
	paramArray[5] = 'Phone2Type='+encodeURIComponent(form.elements['Phone2Type'].value);
	paramArray[6] = 'AddressLine1='+encodeURIComponent(form.elements['AddressLine1'].value);
	paramArray[7] = 'AddressLine2='+encodeURIComponent(form.elements['AddressLine2'].value);
	paramArray[8] = 'AddressCity='+encodeURIComponent(form.elements['AddressCity'].value);
	paramArray[9] = 'AddressState='+encodeURIComponent(form.elements['AddressState'].value);
	paramArray[10] = 'AddressZip='+encodeURIComponent(form.elements['AddressZip'].value);
	paramArray[11] = 'Email2='+encodeURIComponent(form.elements['Email2'].value);
	paramArray[12] = 'Email2Type='+encodeURIComponent(form.elements['Email2Type'].value);
	paramArray[13] = 'Websites='+encodeURIComponent(form.elements['Websites'].value);
	paramArray[14] = 'Facebook='+encodeURIComponent(form.elements['Facebook'].value);
	paramArray[15] = 'Twitter='+encodeURIComponent(form.elements['Twitter'].value);

	AJAXRequest('ajax/ajaxhandler.php', paramArray, 'reloadPage', 'ajaxError');
}

function AJAX_EditProfileSkillsInfo(formID, mode)
{
	form = document.getElementById(formID);

	paramArray = [];
	paramArray[0] = 'Action='+form.elements['Action'].value;
	paramArray[1] = 'UserID='+form.elements['UserID'].value;
	paramArray[2] = 'PrimarySkill='+form.elements['PrimarySkill'].value;
	for (i = 1; i <= 5; i++)
		if ((ele = form.elements['Skill'+i]) != undefined)
			paramArray[i+2] = 'Skill'+i+'='+ele.value;

	AJAXRequest('ajax/ajaxhandler.php', paramArray, 'reloadPage', 'ajaxError');
}

function AJAX_EditFullName(formID, mode)
{
	form = document.getElementById(formID);

	paramArray = [];
	paramArray[0] = 'Action='+form.elements['Action'].value;
	paramArray[1] = 'UserID='+form.elements['UserID'].value;
	paramArray[2] = 'FName='+encodeURIComponent(form.elements['FName'].value);
	paramArray[3] = 'LName='+encodeURIComponent(form.elements['LName'].value);
	paramArray[4] = 'Password='+encodeURIComponent(form.elements['Password'].value);

	AJAXRequest('ajax/ajaxhandler.php', paramArray, 'reloadPage', 'ajaxError');
}

function AJAX_EditUsername(formID, mode)
{
	form = document.getElementById(formID);

	paramArray = [];
	paramArray[0] = 'Action='+form.elements['Action'].value;
	paramArray[1] = 'UserID='+form.elements['UserID'].value;
	paramArray[2] = 'Username='+encodeURIComponent(form.elements['Username'].value);
	paramArray[3] = 'Password='+encodeURIComponent(form.elements['Password'].value);

	AJAXRequest('ajax/ajaxhandler.php', paramArray, 'reloadPage', 'ajaxError');
}

function AJAX_EditPrimaryEmail(formID, mode)
{
	form = document.getElementById(formID);

	paramArray = [];
	paramArray[0] = 'Action='+form.elements['Action'].value;
	paramArray[1] = 'UserID='+form.elements['UserID'].value;
	paramArray[2] = 'Email='+encodeURIComponent(form.elements['Email'].value);
	paramArray[3] = 'Password='+encodeURIComponent(form.elements['Password'].value);

	AJAXRequest('ajax/ajaxhandler.php', paramArray, 'primaryEmailReturn', 'ajaxError');
}

function AJAX_EditPassword(formID, mode)
{
	form = document.getElementById(formID);

	paramArray = [];
	paramArray[0] = 'Action='+form.elements['Action'].value;
	paramArray[1] = 'UserID='+form.elements['UserID'].value;
	paramArray[2] = 'Username='+form.elements['Username'].value;
	paramArray[3] = 'OldPassword='+encodeURIComponent(form.elements['OldPassword'].value);
	paramArray[4] = 'NewPassword='+encodeURIComponent(form.elements['NewPassword'].value);
	paramArray[5] = 'ConfirmPassword='+encodeURIComponent(form.elements['ConfirmPassword'].value);

	AJAXRequest('ajax/ajaxhandler.php', paramArray, 'reloadPage', 'ajaxError');
}

function AJAX_SetPrivacyOption(option, value)
{
	paramArray = [];
	paramArray[0] = 'Action=SetPrivacyOption';
	paramArray[1] = 'Option='+option;
	paramArray[2] = 'Value='+value;
	
	AJAXRequest('ajax/ajaxhandler.php', paramArray, 'blindReload', 'ajaxError');
}

function AJAX_ResendEmailVerification(UserID, Email)
{
	paramArray = [];
	paramArray[0] = 'Action=ResendEmailVerification';
	paramArray[1] = 'UserID='+UserID;
	paramArray[2] = 'Email='+Email;
	
	AJAXRequest('ajax/ajaxhandler.php', paramArray, null, 'ajaxError');
}

function displayResponse(http)
{
	fillPopup(http.responseText);
}

function blindReload()
{
	if (http.responseText == 'TRUE')
		location.reload();
}

function reloadPage(http)
{
	if (http.responseText == 'TRUE')
	{
		fillPopup('<span class="ajax-success">Chnages saved.</span>');
		setTimeout('location.reload();', 2500);
		timeoutPopup(2000);
	}
	else if (http.responseText.substring(0, 16) == '<!-- DISPLAY -->')
		displayResponse(http);
	else
		fillPopup('<span class="ajax-error">Changes could not be saved.</span>');
}

function primaryEmailReturn()
{
	if (http.responseText == 'TRUE')
	{
		fillPopup('<span class="ajax-success">You will receive a verification email to confirm this change</span>');
		setTimeout('location.reload();', 5500);
		timeoutPopup(5000);
	}
	else
		fillPopup('<span class="ajax-error">Changes could not be saved.</span>');
}

function ajaxError(http)
{
	fillPopup('<span class="ajax-error">There was an unknown request error. ('+http.status+')</span>');
}

function insertPostAtBeginning(content, elementClassName, feedID)
{
	nodeModel = document.createElement('div');
	nodeModel.innerHTML = content;
	node = nodeModel.getElementsByClassName(elementClassName)[0];
	node.className = elementClassName;
		
	feed = document.getElementById(feedID);
	feed.insertBefore(node, feed.firstChild);
	if (noPosts = document.getElementById('feed-no-posts'))
		noPosts.parentNode.removeChild(noPosts);

	highlight(node);
}

function insertCommentAtEnd(content, elementClassName, feedID)
{
	nodeModel = document.createElement('div');
	nodeModel.innerHTML = content;
	node = nodeModel.getElementsByClassName(elementClassName)[0];
	node.className = elementClassName;
		
	feed = document.getElementById(feedID);
	feed.insertBefore(node, feed.lastChild);
	if (noPosts = document.getElementById('feed-no-posts'))
		noPosts.parentNode.removeChild(noPosts);
}

function highlight(node)
{
	node.style.backgroundColor = '#FFC';
	setTimeout("unhighlight(node);", 3000);
}

function unhighlight(node)
{
	node.style.backgroundColor = 'transparent';
}

function submitIfEnter(field, event, targetForm)
{
	var theCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (theCode == 13)
	{
		killEvent(event);
		submitThis(targetForm);
		return false;
	} 
	else
		return true;

}

function submitThis(targetForm)
{
	parts = targetForm.split("-");
	if (parts[0] == 'status' && parts[1] == 'form')
		AJAX_SubmitPost(targetForm, 'feed');
	if (parts[0] == 'comment' && parts[1] == 'form')
		AJAX_SubmitComment(targetForm);
}

function expandTextarea(ta)
{
	ta.style.height = 'auto';
	ta.style.height = (ta.scrollHeight - 20)+'px';
	
	return false;
}

function openComment(postID)
{
	ele1 = document.getElementById('post-comment-'+postID);
	ele2 = document.getElementById('post-comment-button-'+postID);
	ele1.style.display = 'block';
	ele2.style.display = 'none';
	
	ele1.getElementsByTagName('textarea')[0].focus();
	
	
	return false;
}

