
Event.observe(window, 'load', page_loaded, false);

String.prototype.count = function(match) {
 	var res = this.match(new RegExp(match,"g"));
 	if (res==null) { return 0; }
 	return res.length;
}

function page_loaded(evt) {
try {
  Event.observe('VM', 'click', pm_message_clicked, false);
 } catch (err) {}
  Event.observe('AF', 'click', pm_meun_item_clicked, false);
  Event.observe('pmMenu', 'click', pm_meun_item_clicked, false);
}

var myGlobalHandlers = {
	onComplete: function() {
		if(Ajax.activeRequestCount == 0){			
			$('systemWorking', 'messageCompose').invoke('hide');
		}
	}
};

function pm_message_clicked(evt){
	var menu_item = Event.element(evt);
	var rowId = Event.findElement(evt, 'tr').id;

	if(rowId == undefined) {
		return;
	}

	if(menu_item.tagName == 'INPUT') {


	} else {
		var pmid = rowId;
		Element.show('RM');
		displayMessage('RM',pmid);
		Event.stop(evt); //avoid another call related to 'parent_node' itself
	}

}

function getParentByTagName(obj, tagName) {
	tagName = tagName.toLowerCase();
	while (obj!= null && obj.tagName!=null && obj.tagName.toLowerCase() != tagName) {
		obj=obj.parentNode;
	}
	return obj;
}


function pm_meun_item_clicked(evt){
	var menu_item = Event.element(evt);
	if(/^compose_\d+/.test(menu_item.id)  || /^compose_\d+,\w/.test(menu_item.id)) {
		try {
			Element.hide('VM');
		} catch (err) {}
		create_pmMenu('CM');
		create_pm_send_link(menu_item.id);
		Element.show('messageCompose');
		Event.stop(evt);
	} else if(menu_item.id == 'pm_bk') {
		document.getElementById('pmconfirmation').innerHTML = "";
		Element.show('VM');		
		$('RM', 'messageCompose').invoke('hide');
		displayInbox('VM');
		Event.stop(evt);
	} else if(menu_item.id == 'pm_rp') {
		Element.show('messageCompose');
		Element.hide('pmconfirmation');
		Event.stop(evt);
	} else if(menu_item.id == 'pm_del') {
		var scope = $('VM').getStyle('display');
		var checkboxes = Form.getInputs('Form', 'checkbox');
		var delArray = new Array();

		for (i=0; i <= checkboxes.length; i++) {
			if(checkboxes[i] != undefined && checkboxes[i] != "" && $F(checkboxes[i])) {
				delArray[i] = getParentByTagName(checkboxes[i],'tr').id;
			}
		}
		if(delArray.length <= 0) {
			if(scope == 'none' && $('RM').getElementsByClassName('message')[0].id) {
				var pid = $('RM').getElementsByClassName('message')[0].id;
				if (pid != undefined && pid.match(/pmid_[0-9]+/)) {
					var pmid = $('RM').getElementsByClassName('message')[0].id.split("_")[1];
					Element.hide('RM');
					Element.show('VM');
					deleteMessage(pmid);
				}
			} else {
				deleteMessage();
			}
		} else {
			deleteMessage(delArray);
		}
	create_pmMenu('DL');
	Event.stop(evt);
	} else {
		// alert('Menu item:' + menu_item.innerHTML + ' was clicked and is unhandled');
	}
	
	
	// Event.stop(evt); //avoid another call related to 'parent_node' itself
}


Ajax.Responders.register(myGlobalHandlers);

function reportError(request)
{
	alert('Sorry. There was an error.');
}

function displayInbox(mAction)
{
	var url = 'http://news.forexplane.com/pm.aspx?mAction=VM';
	var myAjax = new Ajax.Updater(
				{success: 'VM'},
				url,
				{
					method: 'get',
					onFailure: reportError,
					onComplete: function(transport) {
							if(transport.responseText.match(/tr id="[0-9]+"/)) {
								var messageCount = transport.responseText.count("tr id=\"[0-9]+\""); 
							if(document.getElementById('pmconfirmation').innerHTML.length == 0) {
								document.getElementById('pmconfirmation').innerHTML = "Number of private messages: " + messageCount;
								Element.show('pm_del');
							}
							} else {
							
								$('VM').innerHTML = "";
								if(document.getElementById('pmconfirmation').innerHTML.length == 0) {
								
									document.getElementById('pmconfirmation').innerHTML = "Private message inbox empty";
									Element.hide('pm_del');
							}	}
						}
				
				});
				create_pmMenu(mAction);
}

function displayMessage(mAction,pmid)
{
		var url = 'http://news.forexplane.com/pm.aspx';
		var pars = 'mAction=' + mAction + '&pmid=' + pmid;
		var myAjax = new Ajax.Updater(
			{success: mAction},
			url,
			{
				method: 'get',
				parameters: pars,
				onFailure: reportError,
				onComplete: function(transport) {
					if (transport.responseText.match(/pmid_[0-9]+/)) {
							var message = $('RM').getElementsByClassName('message')[1].innerHTML;
							var wholeMessage = $('RM').getElementsByClassName('message')[0];
							var subject = "RE: " + wholeMessage.getElementsByTagName('b')[0].innerHTML;
							// alert(subject);

							var pm = $('RM').getElementsByTagName('span');
							if(pm[0].id.match(/pmrp_[0-9]+/)) {

								var toName = pm[0].innerHTML;
								var rpMessage = "\n\n" + toName + " wrote:\n\n" + message;
								$('targetuser').value= toName;
								$('subject').value= subject;
								//$('messagebody').innerHTML = rpMessage;
								document.getElementById('messagebody').value = rpMessage;
								var pmFromId = pm[0].id;
								create_pm_send_link(pmFromId);
							}
					} else {


					}
				}


			});
		Element.hide('VM');
		create_pmMenu('RM');
}


function showResponse(originalRequest)
{
	//put returned XML in the textarea
	document.getElementById('pmconfirmation').innerHTML = originalRequest.responseText;
}

function showElements() {
		Element.show('systemWorking');
		Element.show('pmconfirmation');
		Element.hide('messageCompose');
}

function create_pm_send_link (compose_link) {
	//var TargetUserID = compose_link.split("_")[1];
	var TargetUserID = compose_link.replace(/compose_|pmrp_/,"");
	//var TargetUserID = compose_link.replace(/pmrp_/,"");
	if(/\d+,\w/.test(TargetUserID)) {
				Element.show('pmconfirmation');
				var toName = TargetUserID.split(",")[1];
				var toID = TargetUserID.split(",")[0];
				$('targetuser').value= toName;
				$('subject').value= "";
				$('messagebody').value= "";
				TargetUserID = toID + ",\"" + toName + "\"";
	 }

	var pm_send_link = document.getElementById('pm_send_link');
	pm_send_link.href = "javascript:pmFriend(" + TargetUserID + ");";
}

function create_pmMenu (mAction) {
	switch(mAction)
	{
		case 'RM' :
			Element.show('pm_bk');
			Element.show('pm_rp');
			Element.hide('pmconfirmation');
			Element.hide('messageCompose');
			break;
		case 'VM' :
			Element.hide('pm_bk');
			Element.hide('pm_rp');
			Element.show('pmconfirmation');
			Element.hide('messageCompose');
			break;
		case 'DL' :
			Element.show('pm_bk');
			Element.hide('pm_rp');
			Element.hide('pm_del');
			Element.show('pmconfirmation');
			Element.hide('messageCompose');
			break;
		case 'CM':
			Element.show('pm_bk');
			Element.hide('pm_rp');
			Element.hide('pm_del');
			document.getElementById('pmconfirmation').innerHTML = 'Compose Private Message';
			Element.hide('RM');
			break;
		default:
			return;
			break;

	}
}

function pmFriend(TargetUserID)
{
	 if(/\d+,\w/.test(TargetUserID)) {
		TargetUserID = TargetUserID.split(",")[1];
	 }

	Ajax.Responders.register(myGlobalHandlers);
	var url = 'http://news.forexplane.com/pm.aspx';
	showElements();
	new Ajax.Request(url,
	  {
		method:'get',
		parameters: { subject:$('subject').value , messagebody:$('messagebody').value,targetuser:TargetUserID, mAction:'SM'},
		onSuccess: function(transport){
			showResponse(transport);
			Element.hide('messageCompose');
		},
		onFailure: function(){ alert('Something went wrong...') }
	  });

}

function deleteMessage(TargetMessageIDs)
{
	document.getElementById('pmconfirmation').innerHTML = "";
	if(TargetMessageIDs != undefined && TargetMessageIDs.length == 0) {
		document.getElementById('pmconfirmation').innerHTML = "Please select the message you wish to delete";
		Element.show('pmconfirmation');
		return;
	}

	Ajax.Responders.register(myGlobalHandlers);
	var url = 'http://news.forexplane.com/pm.aspx';

	showElements();
	new Ajax.Request(url,
	  {
		method:'get',
		parameters: { pmid:TargetMessageIDs, mAction:'DL'},
		onSuccess: function(transport){
			displayInbox('DL');
			showResponse(transport);
		},
		onFailure: function(){ alert('Something went wrong...') }
	  });
		
}

function elementFriend(mAction)
{
	var url = 'http://news.forexplane.com/miketest4.aspx';
	var pars = 'mAction=' + mAction;

	var myAjax = new Ajax.Updater(
		{success: mAction},
		url,
		{
			method: 'get',
			parameters: pars,
			onFailure: reportError,
			onComplete: function(transport) {

				if(transport.responseText.match(/fr_[0-9]+/)) {
					var friends = new Array();


					friends = $('AF').getElementsByTagName('li');
					for (i in friends)
					{
						if(friends[i].id != undefined && friends[i].id.match(/fr_[0-9]+/)) {
							var userName = friends[i].getElementsByTagName('a')[0].id;
							var frid = friends[i].id.split("_")[1] + "," + userName;

							var composeURL = "<a href=\"#\" id=\"compose_" + frid + "\" title=\"Send a private message\"><img id=\"compose_" + frid + "\" border=\"0\" src=\"/images/icon_pm.gif\" alt=\"Send a private message\" ></a><br />";

							var liHTM = friends[i].innerHTML + composeURL;
							friends[i].innerHTML = liHTM;

						}
					}
				}
			}
		});
}

function elementOnline(mAction)
{
	var url = 'http://news.forexplane.com/whosonline.aspx';
	var pars = 'mAction=' + mAction;

	var myAjax = new Ajax.Updater(
		{success: mAction},
		url,
		{
			method: 'get',
			parameters: pars,
			onFailure: reportError,
			onComplete: function(transport) {

				if(transport.responseText.match(/fr_[0-9]+/)) {
					var friends = new Array();


					friends = $('AF').getElementsByTagName('li');
					for (i in friends)
					{
						if(friends[i].id != undefined && friends[i].id.match(/fr_[0-9]+/)) {
							var userName = friends[i].getElementsByTagName('a')[0].id;
						//	var frid = friends[i].id.split("_")[1] + "," + userName;
							var frid = friends[i].id.split("_")[1];
							
							// http://news.forexplane.com/MyAccount/PrivateMessaging/tabid/155/pmtype/Compose/SendTo/70/Default.aspx
							
							
							
							
//							var composeURL = "<a href=\"#\" id=\"compose_" + frid + "\" title=\"Send a private message\"><img id=\"compose_" + frid + "\" border=\"0\" src=\"/images/icon_pm.gif\" alt=\"Send a private message\" ></a>";
							var composeURL = "<a href=\"/MyAccount/PrivateMessaging/tabid/155/pmtype/Compose/SendTo/" + frid + "/Default.aspx\" id=\"comp_" + frid + "\" title=\"Send a private message\"><img id=\"comp_" + frid + "\" border=\"0\" src=\"/images/icon_pm.gif\" alt=\"Send a private message\" ></a>";
							var imURL = "<a href=\"#\" id=\"compose_" + frid + "\" title=\"Send a private message\"><img id=\"compose_" + frid + "\" border=\"0\" src=\"/images/icon_pm.gif\" alt=\"Send a private message\" ></a><br />";

							var liHTM = friends[i].innerHTML + composeURL;
							friends[i].innerHTML = liHTM;

						}
					}
				}
			}
		});
}


function reportError(request)
{
	alert('Sorry. There was an error.');
}

var myGlobalHandlers = {
	onComplete: function() {
		if(Ajax.activeRequestCount == 0){
			Element.hide('systemWorking');
		}
	}
};


function approveFriend(userID)
{
	Ajax.Responders.register(myGlobalHandlers);
	Element.hide('pmconfirmation');
	var url = 'http://news.forexplane.com/approve_request.aspx';
	var pars = 'userID=' + userID;



	var myAjax = new Ajax.Request(
		url,
		{
			onCreate:   showElements(),
			method:     'get',
			parameters: pars,
			onSuccess: function(transport){
			showResponse(transport);
			},
			onFailure: reportError
		});

}

function declineFriend(userID)
{
	Ajax.Responders.register(myGlobalHandlers);
	Element.hide('pmconfirmation');
	var url = 'http://news.forexplane.com/approve_request.aspx';
	var pars = 'userID=' + userID + '&maction=decline';



	var myAjax = new Ajax.Request(
		url,
		{
			onCreate:   showElements(),
			method:     'get',
			parameters: pars,
			onSuccess: function(transport){
						showResponse(transport);
			},
			onFailure: reportError
		});

}

function showResponse(originalRequest)
{
	//put returned XML in the textarea
	document.getElementById('pmconfirmation').innerHTML = '<b>' + originalRequest.responseText + '</b>';
	try {
		Element.hide('VM');
		elementFriend('AF');
	
	} catch (err) {
		elementOnline('AF');
	}
	
	
	Element.hide('systemWorking');


}

function showElements() {
	Element.show('systemWorking');
	Element.show('pmconfirmation');
}