/* global navigator javascript code */

function gnav_show(show, newCat) {
	if (newCat == null) {
		newCat = gnav_cat;
	}
	var url = "fns_navigator.php?i="+gnav_search_peopleid+"&int=y&sh="+(show ? 'y' : 'n')+"&cat="+newCat+(gnav_photo_library ? "&ph=y": "");
	new Ajax.Request( url,
	{   method:'post', // use post to defeat browser caching
		postBody : "",
		onSuccess: function(transport) {
					var content = transport.responseText;
					content.evalScripts();
					//alert(content);
					$('gnav_mainWindow').innerHTML = content;
					if (show) {
						$('gnav_mainWindow').style.width = gnav_open_width;
					} else {
						$('gnav_mainWindow').style.width = gnav_closed_width;
					}
					gnav_showState = show;
					setTimeout('gnav_onresize()', 10);
					if (typeof calendarNavResizeCallback == 'function'  ) {
						if ($('thePage') !== null) {
							calendarNavResizeCallback(); // hook back to calendar
						}
					} else if (typeof tableNavResizeCallback == 'function'  ) {
                                            tableNavResizeCallback();
                                        }
				},
		onFailure: function (transport) {
			alert("Request failed, please try again in a while.");
		},
				onException : function(request, e) {
				if (e.toString)
					alert("Javascript Exception: " + e.toString());
				else
					alert("Exception");
				}
	} );

}

function gnav_toggleFolderState() {
	var folder = $('gnav_folderTagList');
	var folderState = $('gnav_selectedFolderState');
	if (folder != null) {
		if (folder.style.display == 'none') {
			folder.style.display = '';
			folderState.innerHTML = '&nbsp;[-]&nbsp';
		} else {
			folder.style.display = 'none';
			folderState.innerHTML = '&nbsp;[+]&nbsp';
		}
	}
}

function gnav_toggleCabinetContent() {
	var cabinet = $('gnav_cabinetContent');
	var cabinetState = $('gnav_selectedCabinetState');
	if (cabinet != null) {
		if (cabinet.style.display == 'none') {
			cabinet.style.display = '';
			cabinetState.innerHTML = '&nbsp;[-]&nbsp';
		} else {
			cabinet.style.display = 'none';
			cabinetState.innerHTML = '&nbsp;[+]&nbsp';
		}
	}
}

function gnav_doAddNewFolder(showorhide) {
	if (showorhide) {
		$('gnav_NewFolderEntry').style.display = "";
		$('gnav_NewFolderName').value = "";
		$('gnav_NewFolderName').focus();
		$('gnav_NewFolderHint').style.display = "none";
	} else {
		$('gnav_NewFolderEntry').style.display = "none";
		$('gnav_NewFolderHint').style.display = "";
	}
	return false;
}

function gnav_doCheckAddNewFolder() {
var fName = $('gnav_NewFolderName').value;
if (fName.length > 0) {
  var url = 'fns_asynch_api.php?action=newCategory&fnm='+fName;
  new Ajax.Request( url,
  { method:'get',
	  onSuccess: function(transport) {
		var jdata = transport.responseText;
		var json = jdata.evalJSON(true);
		if (json.status != 0) {
		  alert(json.message);
		} else {
						if (!gnav_is_calendar) {
							// refresh the folder display
							if (gnav_showState) {
								location.href="show.php?i="+gnav_search_peopleid+"&cat="+json.data[0]+"&fclick=y";
								return;
							}
						} else {
							location.href='/'+json.data[0]+'?i='+gnav_search_peopleid;
							return;
						}
		}
	  },

	  onFailure: function () {
		alert('Your request failed, please refresh your browser and try again');
	  },
	  onException: function(tr, e) {
		alert('Javascript Exception: '+e.toString());
	  }
  } );

}
	gnav_doAddNewFolder(false);
}

function gnav_doProcessNewFolderKey(ev) {
	var keycode;
	var escapeKeycode = 0;

	if (window.event) {
		// IE
		keycode = window.event.keyCode;
		escapeKeycode = 27;
	} else if (ev) {
		keycode = ev.keyCode;
		escapeKeycode = ev.DOM_VK_ESCAPE;
	}	else {
		return true;
	}
	if (keycode == 13) {
		gnav_doCheckAddNewFolder();
		return false;
	} else if (keycode == escapeKeycode) {
		gnav_doAddNewFolder(false);
		return false;
	}
	return true;
}

function gnav_toggleFriendsState() {

	var friendsList = $('gnav_friendsCabinets');
	var friendsState = $('gnav_selectedFriendState');
	if (friendsList != null) {
		if (friendsList.style.display == 'none') {
			friendsList.style.display = '';
			friendsState.innerHTML = '&nbsp;[-]&nbsp';
	$('gnav_appContent').scrollTop = $('gnav_appContent').scrollHeight; // scroll content to bottom of opened list
		} else {
			friendsList.style.display = 'none';
			friendsState.innerHTML = '&nbsp;[+]&nbsp';
		}
	}
	return false;
}

function gnav_saveTabSettings() {
	var url = 'fns_asynch_api.php';
	var body = 'action=saveTabSettings';
	// calendar
	for (var i = 1; i <= 30; i++) {
		var ctrl = $('gnav_calendarTab'+i);
		if (ctrl) {
		body += '&gnav_calendarTab'+i+'='+(ctrl.checked ? "y" : "n");
		}
	}
	for (var i = 1; i <= 4; i++) {
		var ctrl = $('gnav_docTab'+i);
		if (ctrl) {
		body += '&gnav_docTab'+i+'='+(ctrl.checked ? "y" : "n");
		}
	}
	for (var i = 1; i <= 4; i++) {
		var ctrl = $('gnav_photoTab'+i);
		if (ctrl) {
		body += '&gnav_photoTab'+i+'='+(ctrl.checked ? "y" : "n");
		}
	}
	for (var i = 1; i <= 4; i++) {
		var ctrl = $('gnav_favTab'+i);
		if (ctrl) {
		body += '&gnav_favTab'+i+'='+(ctrl.checked ? "y" : "n");
		}
	}
	for (var i = 1; i <= 4; i++) {
		var ctrl = $('gnav_discussTab'+i);
		if (ctrl) {
		body += '&gnav_discussTab'+i+'='+(ctrl.checked ? "y" : "n");
		}
	}
	for (var i = 1; i <= 4; i++) {
		var ctrl = $('gnav_todoTab'+i);
		if (ctrl) {
		body += '&gnav_todoTab'+i+'='+(ctrl.checked ? "y" : "n");
		}
	}
	for (var i = 1; i <= 4; i++) {
		var ctrl = $('gnav_addrTab'+i);
		if (ctrl) {
		body += '&gnav_addrTab'+i+'='+(ctrl.checked ? "y" : "n");
		}
	}

	new Ajax.Request( url,
	{   method:'post',
		postBody : body,
		onSuccess: function(transport) {
			var jdata = transport.responseText;
			var json = jdata.evalJSON(true);
			if (json.status != 0) {
			alert(json.message);
			} else {
			// refresh the folder display if it's open
			if (gnav_showState) {
				gnav_show(gnav_showState);
				return;
			}
			}
		},

		onFailure: function () {
			alert('Your request failed, please refresh your browser and try again');
		},
		onException: function(tr, e) {
			alert('Javascript Exception: '+e.toString());
		}
	} );
}


var CalendarTabClass = Class.create(Tab, {
	initialize: function($super) {
		$super({ 'id': 'calendarTabId' }, 'gnav_manageCalendarTabs');
	}
});
var DocTabClass = Class.create(Tab, {
	initialize: function($super) {
		$super({ 'id': 'docTabId' }, 'gnav_manageDocTabs');
	}
});
var PhotoTabClass = Class.create(Tab, {
	initialize: function($super) {
		$super({ 'id': 'photoTabId' }, 'gnav_managePhotoTabs');
	}
});
var FavTabClass = Class.create(Tab, {
	initialize: function($super) {
		$super({ 'id': 'favTabId' }, 'gnav_manageFavTabs');
	}
});
var DiscussTabClass = Class.create(Tab, {
	initialize: function($super) {
		$super({ 'id': 'discussTabId' }, 'gnav_manageDiscussTabs');
	}
});
var ToDoTabClass = Class.create(Tab, {
	initialize: function($super) {
		$super({ 'id': 'todoTabId' }, 'gnav_manageToDoTabs');
	}
});
var AddrTabClass = Class.create(Tab, {
	initialize: function($super) {
		$super({ 'id': 'addrTabId' }, 'gnav_manageAddrTabs');
	}
});

var ManageTabsTabbedPopUpClass = Class.create(TabbedPopUp, {
	initialize: function($super) {
		$super();
		this.calendarTab = new CalendarTabClass();
		this.addTab("Calendars", this.calendarTab);
		this.docTab = new DocTabClass();
		this.addTab("Files", this.docTab);
		this.photoTab = new PhotoTabClass();
		this.addTab("Photo", this.photoTab);
		this.favTab = new FavTabClass();
		this.addTab("Bookmark", this.favTab);
		this.discussTab = new DiscussTabClass();
		this.addTab("Discuss", this.discussTab);
		this.todoTab = new ToDoTabClass();
		this.addTab("To Do", this.todoTab);
		this.addrTab = new AddrTabClass();
		this.addTab("Address", this.addrTab);

		var okButton = new Element('button', { 'class': 'kasBtn kasBtnGreen' }).update("OK");
		this.addButton(okButton);
		Event.observe(okButton, 'click', this.okButtonClick.bindAsEventListener(this));
		var closeButton = new Element('button', { 'class': 'kasBtn kasBtnRed' }).update("Close");
		this.addButton(closeButton);
		Event.observe(closeButton, 'click', this.closeButtonClick.bindAsEventListener(this));

	},
	okButtonClick: function(e) {
  gnav_saveTabSettings();
		this.hide();
	},
	closeButtonClick: function(e) {
		this.hide();
	},
	show: function($super, whichTab) {
		this.showTab(whichTab);
		$super();
	}

});
var gnav_manageTagInstance = null;
function gnav_showManage(show) {
	if (gnav_manageTagInstance == null) {
		gnav_manageTagInstance = new ManageTabsTabbedPopUpClass();
	}
	if (show) {
		gnav_manageTagInstance.show(gnav_activeManageTab);
	} else {
		gnav_manageTagInstance.hide();
	}
}


// resize the navigator so that the blue bars are always at the bottom left portion of the window, unless the window is too small
function gnav_findPos(obj) {
	var cleft = 0;
	var ctop = 0;
	if (obj.offsetParent) {
		do {
			cleft += obj.offsetLeft;
			ctop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return { top: ctop, left: cleft };
}

var gnav_lastScrollTop = 0;
function gnav_onresize() {
	//Get size of window (either browser or iframe size) and subtract scroll bar offset from it
	var pageH = 0; // height of the display area
	var windowH = 0; // height of the main window
	var noff, ieoff;
	var blueBarHeight = 0; // height of the blue menu bar for scrolling??
	var iframe = gnav_is_iframe; // true if iframe mode
	if(iframe){ //if iframe = true will not take scroll bar sizes into account when rendering calendar
		noff = 108;
		ieoff = 108;
	} else {
		noff = 0;
		ieoff = 0;
	}
	if (parseInt(navigator.appVersion)>3) {
		if (navigator.appName=="Netscape") {
			pageH = window.innerHeight - noff - (iframe ? 0 : blueBarHeight);
			gnav_lastScrollTop = document.documentElement.scrollTop;
			windowH = document.body.offsetHeight - noff - (iframe ? 0 : blueBarHeight);
		}
		if (navigator.appName.indexOf("Microsoft")!=-1) {
			pageH = document.documentElement.clientHeight - ieoff - (iframe ? 0 : blueBarHeight);
			gnav_lastScrollTop = document.documentElement.scrollTop;
			windowH = document.body.offsetHeight - ieoff - (iframe ? 0 : blueBarHeight);
		}
	}
	var mainHeight = $('gnav_appContent').offsetHeight;
	//alert("windowH = "+windowH+", pageH = "+pageH+", mainHeight = "+mainHeight);
	if (windowH > pageH && mainHeight == 0) {
		pageH = windowH;
	}
	pageH += gnav_lastScrollTop;
	var manageTabControl = $('gnav_mangageTagControl');
	if (manageTabControl != null) {
	  pageH -= manageTabControl.scrollHeight; // make room for the Manage Tabs link
	}
	// make the content area big enough to push the tabs to the bottom
	var tabPos = gnav_findPos($('gnav_mainWindow')); // locate the top of the main window
	var tabBarHeight = $('gnav_mainWindow').offsetHeight;
	//var tabBarParentHeight = $('gnav_mainWindow').parentNode.offsetHeight-5;
	var tabHeight = $('gnav_selectedTab').offsetHeight;

	tabBarHeight = (pageH - tabPos.top); // everyting but what's above it
	var newHeight = (tabBarHeight - ( (gnav_numOfTabs+(!gnav_showState ? 1 : 0)) * tabHeight))-(gnav_showState ? 3 : 5);
	if (newHeight < gnav_minimumContentHeight) {
		newHeight = gnav_minimumContentHeight;
	}
	//alert("newHeight = "+newHeight);
	$('gnav_appContent').style.height = newHeight+"px";
	if (gnav_cat.length > 0 && gnav_cat != 0) {
		var selectedCat = $('gnav_cat'+gnav_cat);
		if (selectedCat != null) {
			var itemPos = gnav_findPos(selectedCat);
			var myPos = gnav_findPos($('gnav_appContent'));
			$('gnav_appContent').scrollTop = itemPos.top - myPos.top;
		}
	} else {
		var selectedCabinet = $('gnav_app_'+gnav_curApp);
		if (selectedCabinet != null) {
			var itemPos = gnav_findPos(selectedCabinet);
			var myPos = gnav_findPos($('gnav_appContent'));
			$('gnav_appContent').scrollTop = itemPos.top - myPos.top;
		}
	}
}

function gnav_delayedResize() {
	setTimeout('gnav_onresize()', 50);
}


function gnav_scrollTopCheck() {
	var newScrollTop = document.documentElement.scrollTop;
	if (newScrollTop != gnav_lastScrollTop) {
		gnav_onresize();
	}
}

var gnav_lastFetch = 0;
function gnav_fetchFriendsList() {
	var now = new Date().getTime();
	if ( (now - gnav_lastFetch) < 60000) {
		return; // just used the cached content
	}
	gnav_lastFetch = now;
	var url = 'fns_asynch_api.php?action=friendsList&r'+Math.random();
	new Ajax.Request( url,
	{   method:'get',
			onSuccess: function(transport) {
				var jdata = transport.responseText;
				var json = jdata.evalJSON(true);
				if (json.status != 0) {
					alert(json.message);
				} else {
					var listdata = json.data;
					var html = '';
					if (listdata != null)	{
						for (var i = 0; i < listdata.length; i++) {
							var sharedata = listdata[i].shares.evalJSON(true);
							var location = '';
							if (sharedata.length > 0) {
								location = listdata[i].lastVisit; // this is set if we've visited the user in this session
								if (location == null || location.length == 0) {
									// otherwise, just use the first shared app
									location = "/"+sharedata[0].lastApp+sharedata[0].lastAppShow+"?i="+sharedata[0].peopleid+"&cat=0&fclick=y"+sharedata[0].lastAppParam;
								}
							}

							html += "<div class='gnav_cabinet'";
							if (location.length > 0) {
								html += " onclick='location.href=\""+location+"\"' ";
							}
							html += "onMouseOver=\"this.style.backgroundColor = '"+gnav_highlight_color+"'\" onMouseOut=\"this.style.backgroundColor = '"+gnav_bgcolor+"'\">";
							html += "<table width='100%' cellspacing='0' cellpadding='0'><tr>";
							html += "<td valign='top' width='4px'></span></td>";
							if (sharedata.length == 0) {
								html += "<td valign='top'><span class='gnav_shareFriendName' title=\""+listdata[i].name+" ("+listdata[i].username+") has shared "+sharedata.length+" application"+(sharedata.length == 1 ? "" : "s")+" with you. To see information in their account, ask them to set sharing with your account name '"+gnav_username+"'.\">"+listdata[i].name+":";
								html += "<span style='color:black;font-weight:normal;font-size:10px'> "+sharedata.length+" share"+(sharedata.length == 1 ? "" : "s");
								html += "</span>";
								html +=	"</span></td>";
							} else {
								// has shares
								html += "<td valign='top'><span class='gnav_shareFriendName' title='"+listdata[i].name+" ("+listdata[i].username+") has shared "+sharedata.length+" application"+(sharedata.length == 1 ? "" : "s")+" with you.'>"+listdata[i].name+"</span></td>";
							}
							html += "</tr></table>";
							html += "</div>";
							//html += "<div id='gnav_"+listdata[i].username+"_appdiv'>";
							if (sharedata.length > 0) {
								for (var j = 0; j < sharedata.length; j++) {
									var lastVisitLocation = sharedata[j].lastVisit;
									if (lastVisitLocation == null || lastVisitLocation.length == 0) {
										lastVisitLocation = "/"+sharedata[j].lastApp+sharedata[j].lastAppShow+"?i="+sharedata[j].peopleid+"&cat=0&fclick=y"+sharedata[j].lastAppParam;
									}
									html += "<div class='gnav_folder' onclick='location.href=\""+lastVisitLocation+"\"'>";
									html += "<table width='100%' cellpadding='0' cellspacing='0'><tr>";
									html += "<td valign='top' width='1'><span class='"+sharedata[j].iconclass+"-grayX'></span></td><td><a class='gnav_shareLink' href='javascript:void(0)' title='"+listdata[i].name+" has shared "+sharedata[j].shareCount+" item"+(sharedata[j].shareCount > 1 ? 's' : '')+" with you'>"+sharedata[j].name+" <span style='font-size:9px'>("+sharedata[j].shareCount+")</span></a></td>";
									html += "</tr></table>";
									html += "</div>";
								}
							}
							html += "</div>";
						}
					}
					html += "<div class='gnav_folder'>";
					html += "<div onclick=\"javascript:gnav_toggleFriendsShares(false);gnav_lastFetch=0;showFriendsAndGroupsPopUp('findfriends')\" style=\"margin-top: 2px;\" ><span title=\"Click to add a friend\" style=\"font-size:14px;font-weight:bold;color:green;cursor:pointer\">+</span>&nbsp;&nbsp;<span style=\"font-size:10px;cursor:pointer\">( Add a friend )</span></div>";
					html += "</div>";
					$('gnav_visitContent').innerHTML = html;
				}
			},

			onFailure: function () {
				alert('Your request failed, please refresh your browser and try again');
			},
			onException: function(tr, e) {
				alert('Javascript Exception: '+e.toString());
			}
	} );
}

function gnav_toggleFriendsShares(forceOpen) {
	var flist = $('gnav_visitContent');
	if (flist != null) {
		if (forceOpen || flist.style.display == 'none') {
			flist.style.display = '';
			gnav_fetchFriendsList();
		} else {
			flist.style.display = 'none';
		}
	}
	return false;
}


var gnav_lastRecentFetch = 0;
function gnav_fetchRecentVisits() {
	var now = new Date().getTime();
	if ( (now - gnav_lastRecentFetch) < 60000) {
		return; // just used the cached content
	}
	gnav_lastRecentFetch = now;
	var url = 'fns_asynch_api.php?action=recentVisitsList&i='+gnav_search_peopleid+'&r'+Math.random();
	new Ajax.Request( url,
	{   method:'get',
			onSuccess: function(transport) {
				var jdata = transport.responseText;
				var json = jdata.evalJSON(true);
				if (json.status != 0) {
					alert(json.message);
				} else {
					var listdata = json.data;
					var html = '';
					if (listdata != null && listdata.length > 0)	{
						for (var i = 0; i < listdata.length; i++) {

							html += "<div class='gnav_folder' ";
							html += " title='";
							html += listdata[i].name+" on "+listdata[i].date;
							html += "'>";
							html += listdata[i].link;
							html += "</div>";
						}
					} else {
							html += "<div class='gnav_folder'>No recent visits</div>";
					}
					$('gnav_recentVisitContent').innerHTML = html;
				}
			},

			onFailure: function () {
				alert('Your request failed, please refresh your browser and try again');
			},
			onException: function(tr, e) {
				alert('Javascript Exception: '+e.toString());
			}
	} );
}

function gnav_toggleRecentVisits(forceOpen) {
	var flist = $('gnav_recentVisitContent');
	if (flist != null) {
		if (forceOpen || flist.style.display == 'none') {
			flist.style.display = '';
			gnav_fetchRecentVisits();
		} else {
			flist.style.display = 'none';
		}
	}
	return false;
}



var NavigatorUpgradeDialogClass = null;
var navigatorUpgradeDialog = null;

function showNavigatorUpgradeDialog() {
	if (NavigatorUpgradeDialogClass == null) {
		NavigatorUpgradeDialogClass = Class.create(PopUp, {
			initialize: function($super) {
					$super();
					this.setContent($('navigatorUpgradeDialog'));
					var closeButton = new Element('button', { 'class': 'kasBtn kasBtnRed' }).update("Close");
					this.addButton(closeButton);
					Event.observe(closeButton, 'click', this.closeButtonClick.bindAsEventListener(this));
					this.content.show();
			},
			closeButtonClick: function(e) {
					this.hide();
			}
		});
		navigatorUpgradeDialog = new NavigatorUpgradeDialogClass();
	}
	navigatorUpgradeDialog.show();
}



var gnav_renameCtrl;
function gnav_renameCabinet(ctrlId) {
	gnav_renameCtrl = $(ctrlId);
	if (gnav_renameCtrl != null) {
		var editor = $('gnav_inplaceEditor');
		if (editor != null) {
			var pos = gnav_findPos(gnav_renameCtrl); // find the name
			editor.style.top = (pos.top-2)+"px";
			editor.style.left = pos.left+"px";
			$('gnav_inplaceEditorField').value = gnav_renameCtrl.innerHTML;
			editor.style.display = "";
			$('gnav_inplaceEditorField').focus();
			$('gnav_inplaceEditorField').select();
		}
	}
}

function gnav_renameOK(saveData) {
	if (saveData) {
		var newName = $('gnav_inplaceEditorField').value;
		if (newName.length >= 0) {
			var url = 'fns_asynch_api.php?action=renameCab&an='+gnav_appName+'&name='+escape(newName)+"&r"+Math.random();
			new Ajax.Request( url,
			{   method:'get',
					onSuccess: function(transport) {
						var jdata = transport.responseText;
						var json = jdata.evalJSON(true);
						if (json.status != 0) {
							alert(json.message);
						} else {
							gnav_renameCtrl.innerHTML = newName;
							var nameDiv = $('calendarNameTextDiv');
							if (nameDiv != null) {
								nameDiv.innerHTML = newName;
							}
							customtitle = newName;
						}
					},

					onFailure: function () {
						alert('Your request failed, please refresh your browser and try again');
					},
					onException: function(tr, e) {
						alert('Javascript Exception: '+e.toString());
					}
			} );
		}
	}
	$('gnav_inplaceEditor').style.display="none";
}

function gnav_doProcessRenameKey(ev) {
	var keycode;
	var escapeKeycode = 0;

	if (window.event) {
		// IE
		keycode = window.event.keyCode;
		escapeKeycode = 27;
	} else if (ev) {
		keycode = ev.keyCode;
		escapeKeycode = ev.DOM_VK_ESCAPE;
	}	else {
		return true;
	}
	if (keycode == 13) {
		gnav_renameOK(true);
		return false;
	} else if (keycode == escapeKeycode) {
		gnav_renameOK(false);
		return false;
	}
	return true;
}


var gnav_renameFolderCtrl;
var gnav_renameFolderNumber;
function gnav_renameFolder(ctrlId, category) {
	gnav_renameFolderCtrl = $(ctrlId);
	gnav_renameFolderNumber = category;
	if (gnav_renameFolderCtrl != null) {
		var editor = $('gnav_inplaceFolderEditor');
		if (editor != null) {
			var pos = gnav_findPos(gnav_renameFolderCtrl); // find the name
			editor.style.top = (pos.top-2)+"px";
			editor.style.left = pos.left+"px";
			$('gnav_inplaceFolderEditorField').value = gnav_renameFolderCtrl.innerHTML;
			editor.style.display = "";
			$('gnav_inplaceFolderEditorField').focus();
			$('gnav_inplaceFolderEditorField').select();
		}
	}
}

function gnav_renameFolderOK(saveData) {
	if (saveData) {
		var newName = $('gnav_inplaceFolderEditorField').value;
		// restrictions copied from categories_change.php
		if( newName == null || newName.length == 0)    {
			alert( "The new name field is empty, please enter in the new name." );
			return( false );
		}
		else if( newName.toLowerCase() == "empty" )    {
			alert( "The new name can not be named Empty, please enter in the new name." );
			return( false );
		}
		else if( newName.indexOf('"') >= 0 )    {
			alert( 'The new name can not have an double quote " in it, please enter in the new name.' );
			return( false );
		}
		else if( newName.indexOf('\\') >= 0 )    {
			alert( 'The new name can not have an backward slash \\ in it, please enter in the new name.' );
			return( false );
		}

		if (newName.length >= 0) {
			var url = 'fns_asynch_api.php?action=renameCategory&an='+gnav_appName+'&cat='+gnav_renameFolderNumber+'&name='+escape(newName)+"&r"+Math.random();
			new Ajax.Request( url,
			{   method:'get',
					onSuccess: function(transport) {
						var jdata = transport.responseText;
						var json = jdata.evalJSON(true);
						if (json.status != 0) {
							alert(json.message);
						} else {
							gnav_renameFolderCtrl.innerHTML = newName;
							var name_display = $('category_'+gnav_renameFolderNumber+'_name_div');
							if (name_display != null) {
								name_display.innerHTML = newName;
							}
						}
					},

					onFailure: function () {
						alert('Your request failed, please refresh your browser and try again');
					},
					onException: function(tr, e) {
						alert('Javascript Exception: '+e.toString());
					}
			} );
		}
	}
	$('gnav_inplaceFolderEditor').style.display="none";
	return true;
}

function gnav_doProcessRenameFolderKey(ev) {
	var keycode;
	var escapeKeycode = 0;

	if (window.event) {
		// IE
		keycode = window.event.keyCode;
		escapeKeycode = 27;
	} else if (ev) {
		keycode = ev.keyCode;
		escapeKeycode = ev.DOM_VK_ESCAPE;
	}	else {
		return true;
	}
	if (keycode == 13) {
		gnav_renameFolderOK(true);
		return false;
	} else if (keycode == escapeKeycode) {
		gnav_renameFolderOK(false);
		return false;
	}
	return true;
}
