jQuery(document).ready( function($) {
	initiateMessageFunctions();

	$("select.members-list").change( function(){
	 	if( this.value != 0 ){
			document.location = this.value;
		}
	});

	if( $.browser.msie && $.browser.version == '6.0' )
	{
		$("div#members-area-banner-profile-credits").bind('mouseover',function(){
			$("select#select-members-list").css('visibility','hidden');
		});

		$("div#members-area-banner-profile-credits").bind('mouseout',function(){
			$("select#select-members-list").css('visibility','visible');
		});

		$("ul#members-area-navigation li#button-members").bind("mouseover",function(){
			$("select#select-members-list").css('visibility','hidden');
		});

		$("ul#members-area-navigation li#button-members").bind("mouseout",function(){
			$("select#select-members-list").css('visibility','visible');
		});
	}

	$("div.members-list-sort-heading a").click(function(){

		$("div.members-list-sort ul").toggle();

		return false;
	});
});

function initiateMessageFunctions(){
	$("div#user-profile a.display-message-box").click( function(){
	 	displayMessageBox();

	 	return false;
	});
}

/*
	This will display the message box
*/
function displayMessageBox()
{
	$("ul#send-message-box textarea").elastic();

	var target_offset = $("div#send-message-container").offset();
	var target_top = target_offset.top;

	//goto that anchor by setting the body scroll top to anchor top
	$('html, body').animate({scrollTop:target_top}, 500);

	return false;
}

/*
	This will display the message box
*/
function hideMessageBox()
{
	return false;
}

function getElement( elementId )
{
	var oElement = document.getElementById( elementId );

	return oElement;
}

function sendMessage(userIdTo)
{
	var message_container = $("div#send-message-container");

	var messageSubject = $("li.form-subject input");

	var messageSubject_value = messageSubject.val();
	var messageSubject_default = messageSubject.attr("default");

	var messageMessage = $("li.form-message textarea");

	var messageMessage_value = messageMessage.val();
	var messageMessage_default = messageMessage.attr("default");

	var errorBox = getElement("send-message-error");

	if( messageSubject_value == '' || messageSubject_value == messageSubject_default )
	{
		errorBox.innerHTML = 'Please enter a subject';
		errorBox.style.display = 'block';
	}
	else if(  messageMessage_value == '' || messageMessage_value == messageMessage_default )
	{
		errorBox.innerHTML = 'Please type in your message';
		errorBox.style.display = 'block';
	}
	else
	{
		var loadingBar = document.getElementById('send-message-loading');

		loadingBar.style.display = 'block';

		var request = 'ajax_requests.php?AjaxRequest&SendMessage';

		var params = '&Subject=' + encodeURIComponent(messageSubject_value) + '&Message=' + encodeURIComponent(messageMessage_value) + '&UserIdTo=' + userIdTo;

		// Try to connect to the server
		try
		{
			// Make server requst only if the XMLHttpRequest object isnt busy from previous request
			if( xmlHttp.readyState == 4 || xmlHttp.readyState == 0 )
			{
				xmlHttp.open("POST",request,true);
				xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
				xmlHttp.onreadystatechange = sendMessageStateChange;
				xmlHttp.send(params);
			}
		}
		catch(e)
		{
			loadingBar.style.display = 'none';

			handleError(e.toString());
		}
	}

	return false;
}

function sendMessageStateChange()
{
	if( xmlHttp.readyState == 4)
	{
		// When readyState is 4, we also read the server response
		if( xmlHttp.status == 200 )
		{
			try
			{
				// Read the response
				var response = xmlHttp.responseText;

				// Server error ?
				if( response.indexOf("ERRNO") >= 0 || response.indexOf("error") >= 0 )
				{
					handleError(response);
				}
				else
				{
					// This is the ul that holds all the fields of the form
					var messageList = $("ul#send-message-box");

					switch ( parseInt(response) ) {

						// Message could not be delivered
						case 0:
							$("li#send-message-error",messageList).html('Your message could not be delivered, Please try again').fadeIn('slow');
							break;

						// Message went thru
						case 1:
							$("li.form-text-field input,li.form-text-field textarea",messageList).each(function(){
								var default_value = $(this).attr("default");

								$(this).val(default_value)
							});

							$("div#message-sent").fadeIn('slow', function(){
								setTimeout( function() {
									$("div#message-sent").hide();
								},2000);
							});

							break;
					}
				}

				document.getElementById('send-message-loading').style.display = 'none';
			}
			catch(e)
			{
				// Handle error
				handleError(e.toString());
			}
		}
		else
		{
			// Handle error
			handleError( xmlHttp.responseText);
		}
	}
}

function sendMessageToUser(inUserId)
{
	var subject = $("input#Subject-" + inUserId).val();

	var message = $("textarea#Message-" + inUserId).val();

	// Everything is set in terms of requirements
	if( subject && message )
	{
		$.ajax({
			beforeSend: function(){ $("div#message-box-" + inUserId + " div.loading").show(); },
			timeout: 5000,
			error: function() { $("form#send-message-form-" + inUserId).submit(); },
			type: "POST",
			dataType: "html",
			url: "ajax_requests.php?AjaxRequest&SendMessage",
			data: { Subject: subject, Message: message, UserIdTo: inUserId },
			success: function(isMessageSent) {
				$("div#message-box-" + inUserId + " div.loading").hide();
				$("div#message-box-" + inUserId).hide();

				if( isMessageSent == "0" )
				{
					$("form#send-message-form-" + inUserId).submit();
				}
			}
		});
	}

	return false;
}

/*
	When inviting a friend checks all fields for any possible errors;
	if errors found returns false, otherwise true
*/
function inviteAFriend()
{
	// whether
	var valid = true;

	var oFriendsName = getElement("FriendsName").value;
	var oFriendsEmail = getElement("FriendsEmail").value;
	var oPersonalMessage = getElement("PersonalMessage").value;

	if( oFriendsName == 'Friends Name' || oFriendsName == '' )
	{
		var oErrorBox = getElement("invite-a-friend-errorbox");
		oErrorBox.innerHTML = 'Please insert a Friends Name';
		changeElementClass("invite-a-friend-errorbox", 'error-message');

		valid = false;

	}
	else if( oFriendsEmail == 'Friends Email' || oFriendsEmail == '' )
	{
		var oErrorBox = getElement("invite-a-friend-errorbox");
		oErrorBox.innerHTML = 'Please insert a Valid Email Address';
		changeElementClass("invite-a-friend-errorbox", 'error-message');

		valid = false;
	}

	if( valid )
		return true;
	else
		return false;
}

