ajaxobject = Ajax.getTransport();

function toggleLogin () {
	Effect.toggle('loginform', 'slide', {duration: 0.25});
}

function toggleRegister () {
	Effect.toggle('registerform', 'slide', {duration: 0.25});
}

loginshown = 0;
function showLoginOnce () {
	if (loginshown == 0) {
		//Effect.SlideDown('loginform', {duration: 0.25});
		//Effect.SlideDown('registerform', {duration: 0.25});
		toggleLogin();
		toggleRegister();
		loginshown = 1;
	}
}

function toggleSearchOptions () {
	Effect.toggle('searchoptions', 'slide', {duration: 0.35});
}

function toggleCurrentLeafAction () {
	Effect.toggle('currentleafaction', 'slide', {duration: 0.15});
}

function toggleCurrentLeafEdit () {
	Effect.toggle('currentleafedit', 'slide', {duration: 0.3});
}

function toggleCurrentLeafDelete () {
	Effect.toggle('currentleafdelete', 'slide', {duration: 0.2});
}

function toggleCurrentLeafTag () {
	Effect.toggle('currentleaftag', 'slide', {duration: 0.25});
}

function toggleNewLinkForm () {
	Effect.toggle('newlinkform', 'slide', {duration: 0.3});
}

function toggleNewFeedForm () {
	Effect.toggle('newfeedform', 'slide', {duration: 0.3});
}

function toggleNewChildForm () {
	Effect.toggle('newchildform', 'slide', {duration: 0.3});
}

function toggleNewSiblingForm () {
	Effect.toggle('newsiblingform', 'slide', {duration: 0.3});
}

hiddenusertags = 0;
function toggleHiddenUserTags() {
	if (hiddenusertags == 0) {
		Effect.SlideDown('hiddenusertags', {duration: 0.3});
		$('hiddenusertaglink').innerHTML = '<a href="javascript:toggleHiddenUserTags();"> ^^ less ^^ </a>';
		hiddenusertags = 1;
	} else {
		Effect.SlideUp('hiddenusertags', {duration: 0.3});
		$('hiddenusertaglink').innerHTML = '<a href="javascript:toggleHiddenUserTags();"> >> more << </a>';
		hiddenusertags = 0;
	}
}

currentLeafAction = 0;
function toggleLeafAction (leafid) {
	if (currentLeafAction == 0) {
		currentLeafAction = leafid;
		Effect.SlideDown('leaf' + leafid + 'action', {duration: 0.15});
	} else {
		/*if (currentLeafEdit != 0) {
			Effect.SlideUp('leaf' + currentLeafEdit + 'edit', {duration: 0.3});
			currentLeafEdit = 0;
		}
		if (currentLeafDelete != 0) {
			Effect.SlideUp('leaf' + currentLeafDelete + 'delete', {duration: 0.3});
			currentLeafDelete = 0;
		}*/
		
		if (currentLeafAction == leafid) {
			Effect.SlideUp('leaf' + leafid + 'action', {duration: 0.15});
			currentLeafAction = 0;
		} else {
			
			Effect.SlideUp('leaf' + currentLeafAction + 'action', {duration: 0.15});
			Effect.SlideDown('leaf' + leafid + 'action', {duration: 0.15});
			currentLeafAction = leafid;
		}
	}
}

currentLeafEdit = 0;
function toggleLeafEdit (leafid) {
	if (currentLeafEdit == 0) {
		currentLeafEdit = leafid;
		Effect.SlideDown('leaf' + leafid + 'edit', {duration: 0.3});
		
	} else {
		if (currentLeafEdit == leafid) {
			Effect.SlideUp('leaf' + leafid + 'edit', {duration: 0.3});
			currentLeafEdit = 0;
		} else {
			Effect.SlideUp('leaf' + currentLeafEdit + 'edit', {duration: 0.3});
			Effect.SlideDown('leaf' + leafid + 'edit', {duration: 0.3});
			currentLeafEdit = leafid;
		}
	}
}

function saveCurrentLeaf() {
	$('currentleafalert').innerHTML = '<div class="alert">Saving current leaf...</div>';
	Effect.SlideDown('currentleafalert', {queue: 'front', duration: 0.25});
	
	sendvar = 'savecurleaf=' + $('currentleafid').value + '&leafname=' + escape($('currentleafname').value) + '&leafinfo=' + escape($('currentleafdesc').value);
	ajaxobject.open('POST', 'api.php', true);
	ajaxobject.onreadystatechange = function() {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('currentleaf', {duration: 0.4, afterFinish: function () {
				$('currentleaf').innerHTML = ajaxobject.responseText;
				Effect.SlideDown('currentleaf', {duration: 0.4, afterFinish: function () {
					$('currentleafalert').innerHTML = '<div class="alert">Leaf saved.</div>';
					Effect.SlideDown('currentleafalert', {duration: 0.25});
					window.setTimeout(
						function () {
							Effect.SlideUp('currentleafalert', {duration: 0.25});
						}, 1500
					);
				}});
			}});
		}
	}
	
	ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
	ajaxobject.send(sendvar);
	
}

function saveLeaf(leafid) {
	$('leaf' + leafid + 'alert').innerHTML = '<div class="alert">Saving leaf...</div>';
	Effect.SlideDown('leaf' + leafid + 'alert', {queue: 'front', duration: 0.25});
	
	sendvar = 'saveleaf=' + leafid + '&leafname=' + escape($('leafe' + leafid + 'name').value) + '&leafinfo=' + escape($('leafe' + leafid + 'info').value);
	ajaxobject.open('POST', 'api.php', true);
	ajaxobject.onreadystatechange = function() {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('leaf' + leafid, {duration: 0.4, afterFinish: function () {
				$('leaf' + leafid).innerHTML = ajaxobject.responseText;
				Effect.SlideDown('leaf' + leafid, {duration: 0.4, afterFinish: function () {
					$('leaf' + leafid + 'alert').innerHTML = '<div class="alert">Leaf saved.</div>';
					Effect.SlideDown('leaf' + leafid + 'alert', {duration: 0.25});
					window.setTimeout(
						function () {
							Effect.SlideUp('leaf' + leafid + 'alert', {duration: 0.25});
						}, 1500
					);
				}});
				currentLeafEdit = 0;
				if (currentLeafAction == leafid) {
					currentLeafAction = 0;
				}
			}});
		}
	}
	
	ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
	ajaxobject.send(sendvar);
}

currentLeafDelete = 0;
function toggleLeafDelete (leafid) {
	if (currentLeafDelete == 0) {
		currentLeafDelete = leafid;
		Effect.SlideDown('leaf' + leafid + 'delete', {duration: 0.2});
	} else {
		if (currentLeafDelete == leafid) {
			Effect.SlideUp('leaf' + leafid + 'delete', {duration: 0.2});
			currentLeafDelete = 0;
		} else {
			Effect.SlideUp('leaf' + currentLeafDelete + 'delete', {duration: 0.2});
			Effect.SlideDown('leaf' + leafid + 'delete', {duration: 0.2});
			currentLeafDelete = leafid;
		}
	}
}

currentLeafPreviews = new Array();
function toggleLeafPreview (leafid) {
	
	if (currentLeafPreviews.length > 0) {
		
		for (i = 0; i < currentLeafPreviews.length; i++) {
			if (currentLeafPreviews[i] == leafid) {
				
				Effect.SlideUp('leaf' + currentLeafPreviews[i] + 'preview', {duration: 0.35});
				$('leaf' + leafid + 'expand').innerHTML = '<a href="javascript:toggleLeafPreview(' + leafid + ');">expand >></a>';
				currentLeafPreviews.splice(i,1);
				return;
			}
		}
		
	}
	
	$('leaf' + leafid + 'message').innerHTML = '<i>Loading leaf content...</i>';
	sendvar = 'previewleaf=' + leafid;
	ajaxobject.open("GET", 'api.php?' + sendvar, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('leaf' + leafid + 'message').innerHTML = '';
			$('leaf' + leafid + 'preview').innerHTML = ajaxobject.responseText;
			Effect.Appear('leaf' + leafid + 'preview', {duration: 0.35});
			$('leaf' + leafid + 'expand').innerHTML = '<a href="javascript:toggleLeafPreview(' + leafid + ');" style="background: #bfb;"><< collapse</a>';
		}
	}
	ajaxobject.send(null);
	currentLeafPreviews[currentLeafPreviews.length] = leafid;
}

currentLinkAction = 0;
function toggleLinkAction (linkid) {
	if (currentLinkAction == 0) {
		currentLinkAction = linkid;
		Effect.SlideDown('link' + linkid + 'action', {duration: 0.15});
	} else {
		/*if (currentLinkEdit != 0) {
			Effect.SlideUp('link' + currentLinkEdit + 'edit', {duration: 0.3});
			currentLinkEdit = 0;
		}
		if (currentLinkDelete != 0) {
			Effect.SlideUp('link' + currentLinkDelete + 'delete', {duration: 0.3});
			currentLinkDelete = 0;
		}*/
		
		if (currentLinkAction == linkid) {
			Effect.SlideUp('link' + linkid + 'action', {duration: 0.15});
			currentLinkAction = 0;
		} else {
			
			Effect.SlideUp('link' + currentLinkAction + 'action', {duration: 0.15});
			Effect.SlideDown('link' + linkid + 'action', {duration: 0.15});
			currentLinkAction = linkid;
		}
	}
}

currentLinkEdit = 0;
function toggleLinkEdit (linkid) {
	if (currentLinkEdit == 0) {
		currentLinkEdit = linkid;
		Effect.SlideDown('link' + linkid + 'edit', {duration: 0.3});
		
	} else {
		if (currentLinkEdit == linkid) {
			Effect.SlideUp('link' + linkid + 'edit', {duration: 0.3});
			currentLinkEdit = 0;
		} else {
			Effect.SlideUp('link' + currentLinkEdit + 'edit', {duration: 0.3});
			Effect.SlideDown('link' + linkid + 'edit', {duration: 0.3});
			currentLinkEdit = linkid;
		}
	}
}

function saveLink(linkid) {
	$('link' + linkid + 'alert').innerHTML = '<div class="alert">Saving link...</div>';
	Effect.SlideDown('link' + linkid + 'alert', {queue: 'front', duration: 0.25});
	
	sendvar = 'savelink=' + linkid + '&linkname=' + escape($('linke' + linkid + 'name').value) + '&linkurl=' + escape($('linke' + linkid + 'url').value) + '&linkinfo=' + escape($('linke' + linkid + 'info').value);
	ajaxobject.open('POST', 'api.php', true);
	ajaxobject.onreadystatechange = function() {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('link' + linkid, {duration: 0.4, afterFinish: function () {
				document.getElementById('link' + linkid).innerHTML = ajaxobject.responseText;
				Effect.SlideDown('link' + linkid, {duration: 0.4, afterFinish: function () {
					document.getElementById('link' + linkid + 'alert').innerHTML = '<div class="alert">Link saved.</div>';
					Effect.SlideDown('link' + linkid + 'alert', {duration: 0.25});
					currentLinkEdit = 0;
					if (currentLinkAction == linkid) {
						currentLinkAction = 0;
					}
					window.setTimeout(
						function () {
							Effect.SlideUp('link' + linkid + 'alert', {duration: 0.25});
						}, 2000
					);
				}});
			}});
		}
	}
	
	ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
	ajaxobject.send(sendvar);
}

currentLinkDelete = 0;
function toggleLinkDelete (linkid) {
	if (currentLinkDelete == 0) {
		currentLinkDelete = linkid;
		Effect.SlideDown('link' + linkid + 'delete', {duration: 0.2});
	} else {
		if (currentLinkDelete == linkid) {
			Effect.SlideUp('link' + linkid + 'delete', {duration: 0.2});
			currentLinkDelete = 0;
		} else {
			Effect.SlideUp('link' + currentLinkDelete + 'delete', {duration: 0.2});
			Effect.SlideDown('link' + linkid + 'delete', {duration: 0.2});
			currentLinkDelete = linkid;
		}
	}
}

currentFeedAction = 0;
function toggleFeedAction (feedid) {
	if (currentFeedAction == 0) {
		currentFeedAction = feedid;
		Effect.SlideDown('feed' + feedid + 'action', {duration: 0.15});
	} else {
		/*if (currentFeedEdit != 0) {
			Effect.SlideUp('feed' + currentFeedEdit + 'edit', {duration: 0.3});
			currentFeedEdit = 0;
		}
		if (currentFeedDelete != 0) {
			Effect.SlideUp('feed' + currentFeedDelete + 'delete', {duration: 0.3});
			currentFeedDelete = 0;
		}*/
		
		if (currentFeedAction == feedid) {
			Effect.SlideUp('feed' + feedid + 'action', {duration: 0.15});
			currentFeedAction = 0;
		} else {
			
			Effect.SlideUp('feed' + currentFeedAction + 'action', {duration: 0.15});
			Effect.SlideDown('feed' + feedid + 'action', {duration: 0.15});
			currentFeedAction = feedid;
		}
	}
}

currentFeedEdit = 0;
function toggleFeedEdit (feedid) {
	if (currentFeedEdit == 0) {
		currentFeedEdit = feedid;
		Effect.SlideDown('feed' + feedid + 'edit', {duration: 0.3});
		
	} else {
		if (currentFeedEdit == feedid) {
			Effect.SlideUp('feed' + feedid + 'edit', {duration: 0.3});
			currentFeedEdit = 0;
		} else {
			Effect.SlideUp('feed' + currentFeedEdit + 'edit', {duration: 0.3});
			Effect.SlideDown('feed' + feedid + 'edit', {duration: 0.3});
			currentFeedEdit = feedid;
		}
	}
}

function saveFeed (feedid) {
	$('feed' + feedid + 'alert').innerHTML = '<div class="alert">Saving feed...</div>';
	Effect.SlideDown('feed' + feedid + 'alert', {queue: 'front', duration: 0.25});
	
	sendvar = 'savefeed=' + feedid + '&feedname=' + escape($('feede' + feedid + 'name').value) + '&feedurl=' + 
		escape($('feede' + feedid + 'url').value) + '&feedinfo=' + escape($('feede' + feedid + 'info').value) + '&feedage=' + 
		escape($('feede' + feedid + 'age').value) + '&feedsize=' + escape($('feede' + feedid + 'size').value);
	ajaxobject.open('POST', 'api.php', true);
	ajaxobject.onreadystatechange = function() {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('feed' + feedid, {duration: 0.4, afterFinish: function () {
				$('feed' + feedid).innerHTML = ajaxobject.responseText;
				Effect.SlideDown('feed' + feedid, {duration: 0.4, afterFinish: function () {
					$('feed' + feedid + 'alert').innerHTML = '<div class="alert">Feed saved.</div>';
					Effect.SlideDown('feed' + feedid + 'alert', {duration: 0.25});
					currentFeedEdit = 0;
					if (currentFeedAction == feedid) {
						currentFeedAction = 0;
					}
					window.setTimeout(function () {
						Effect.SlideUp('feed' + feedid + 'alert', {duration: 0.25});
					}, 1500);
				}});
			}});
		}
	}
	
	ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
	ajaxobject.send(sendvar);
}

currentFeedDelete = 0;
function toggleFeedDelete (feedid) {
	if (currentFeedDelete == 0) {
		currentFeedDelete = feedid;
		Effect.SlideDown('feed' + feedid + 'delete', {duration: 0.2});
	} else {
		if (currentFeedDelete == feedid) {
			Effect.SlideUp('feed' + feedid + 'delete', {duration: 0.2});
			currentFeedDelete = 0;
		} else {
			Effect.SlideUp('feed' + currentFeedDelete + 'delete', {duration: 0.2});
			Effect.SlideDown('feed' + feedid + 'delete', {duration: 0.2});
			currentFeedDelete = feedid;
		}
	}
}

/*function savePublicFeedLink (feedid, linknum) {
	saveFeedLink(-1,feedid,linknum);
}

function saveFeedLink(leafid, feedid, linknum) {
	sendvar = 'newlink=' + leafid + '&linkname=' + escape($('feedlink' + feedid + '.' + linknum + 'title').value) + '&linkurl=' + escape($('feedlink' + feedid + '.' + linknum + 'url').value);
	
	ajaxobject.open("POST", 'api.php', true);
	ajaxobject.onreadystatechange = function() {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('itemmsg' + feedid + '.' + linknum).innerHTML = '<b>Link Saved.</b>';
			if ($('newlinks')) {
				$('newlinks').innerHTML = $('newlinks').innerHTML + ajaxobject.responseText;
			}
			window.setTimeout(
				function () {
					$('itemmsg' + feedid + '.' + linknum).innerHTML = '';
				},
				3000
			);
		}
	};
	
	ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
	ajaxobject.send(sendvar);
	
	$('itemmsg' + feedid + '.' + linknum).innerHTML = '<i>Saving link...</i>';
}*/

function saveFeedLink (feedid, linknum) {
	$('newlinkname').value = $('feedlink' + feedid + '.' + linknum + 'title').value;
	$('newlinkurl').value = $('feedlink' + feedid + '.' + linknum + 'url').value;
	window.scrollTo(0,0);
	Effect.SlideDown('newlinkform', {duration: 0.3});
}

function saveNewLink (leafid) {
	sendvar = 'newlink=' + leafid + '&linkname=' + escape($('newlinkname').value) + '&linkurl=' + escape($('newlinkurl').value) + '&linkinfo=' + escape($('newlinkinfo').value) + '&linkprv=' + escape($('newlinkprv').value) + '&linkpub=' + escape($('newlinkpub').value);
	
	ajaxobject.open("POST", 'api.php', true);
	ajaxobject.onreadystatechange = function() {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('newlinkform', {queue: 'end', duration: 0.25});
			$('newlinkname').value = '';
			$('newlinkurl').value = '';
			$('newlinkinfo').value = '';
			$('newlinkprv').value = '';
			$('newlinkpub').value = '';
			Effect.SlideUp('newitemalert', {queue: 'end', duration: 0.25, afterFinish: function () {
				$('newitemalert').innerHTML = '<div class="alert"><strong>Link saved.</strong></div>';
				Effect.SlideDown('newitemalert', {queue: 'end', duration: 0.25});
				/*if ($('linklist')) {
					$('linklist').innerHTML = $('linklist').innerHTML + ajaxobject.responseText;
				} else {
					if ($('perlinktagresults')) {
						$('perlinktagresults').innerHTML = $('perlinktagresults').innerHTML + ajaxobject.responseText;
					}
				}*/
				$('newlinks').innerHTML = $('newlinks').innerHTML + ajaxobject.responseText;
				window.setTimeout(
					function () {
						Effect.SlideUp('newitemalert', {duration: 0.35});
					},
					1500
				);
			}});
		}
	};
	
	ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
	ajaxobject.send(sendvar);
	
	$('newitemalert').innerHTML = '<div class="alert"><strong>Saving link...</strong></div>';
	Effect.SlideDown('newitemalert', {queue: 'front', duration: 0.25});
}

function savePublicFeed (feedid) {
	$('newfeedname').value = $('feed' + feedid + 'title').value;
	$('newfeedurl').value = $('feed' + feedid + 'url').value;
	window.scrollTo(0,0);
	Effect.SlideDown('newfeedform', {duration: 0.3});
}

function saveMetaLink (metaid) {
	$('newlinkname').value = $('meta' + metaid + 'name').value;
	$('newlinkurl').value = $('meta' + metaid + 'url').value;
	window.scrollTo(0,0);
	Effect.SlideDown('newlinkform', {duration: 0.3});
}

function saveNewFeed (leafid) {
	sendvar = 'newfeed=' + leafid + '&feedname=' + escape($('newfeedname').value) + '&feedurl=' + escape($('newfeedurl').value) + '&feedinfo=' + escape($('newfeedinfo').value) + '&feedage=' + escape($('newfeedage').value) + '&feedsize=' + escape($('newfeedsize').value) + '&feedprv=' + escape($('newfeedprv').value) + '&feedpub=' + escape($('newfeedpub').value);
	
	ajaxobject.open("POST", 'api.php', true);
	ajaxobject.onreadystatechange = function() {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('newfeedform', {queue: 'end', duration: 0.25});
			$('newfeedname').value = '';
			$('newfeedurl').value = '';
			$('newfeedinfo').value = '';
			$('newfeedage').value = '60';
			$('newfeedsize').value = '10';
			$('newfeedprv').value = '';
			$('newfeedpub').value = '';
			Effect.SlideUp('newitemalert', {queue: 'end', duration: 0.25, afterFinish: function () {
				$('newitemalert').innerHTML = '<div class="alert"><strong>Feed saved.</strong></div>';
				Effect.SlideDown('newitemalert', {queue: 'end', duration: 0.25});
				$('newfeeds').innerHTML = $('newfeeds').innerHTML + ajaxobject.responseText;
				window.setTimeout(
					function () {
						Effect.SlideUp('newitemalert', {duration: 0.5});
					},
					1500
				);
			}});
		}
	};
	
	ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
	ajaxobject.send(sendvar);
	
	$('newitemalert').innerHTML = '<div class="alert"><strong>Saving feed...</strong></div>';
	Effect.SlideDown('newitemalert', {queue: 'front', duration: 0.25});
}

function saveNewChild (leafid) {
	sendvar = 'newchild=' + leafid + '&childname=' + escape($('newchildname').value) + '&childinfo=' + escape($('newchildinfo').value) + '&childprv=' + escape($('newchildprv').value) + '&childpub=' + escape($('newchildpub').value);
	
	ajaxobject.open("POST", 'api.php', true);
	ajaxobject.onreadystatechange = function() {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('newchildform', {queue: 'end', duration: 0.25});
			$('newchildname').value = '';
			$('newchildinfo').value = '';
			$('newchildprv').value = '';
			$('newchildpub').value = '';
			Effect.SlideUp('newitemalert', {queue: 'end', duration: 0.25, afterFinish: function () {
				$('newitemalert').innerHTML = '<div class="alert"><strong>Child saved.</strong></div>';
				Effect.SlideDown('newitemalert', {queue: 'end', duration: 0.25});
				if ($('newleafs')) {
					$('newleafs').innerHTML = $('newleafs').innerHTML + ajaxobject.responseText;
				}
				window.setTimeout(
					function () {
						Effect.SlideUp('newitemalert', {duration: 0.5});
					},
					1500
				);
			}});
		}
	};
	
	ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
	ajaxobject.send(sendvar);
	
	$('newitemalert').innerHTML = '<div class="alert"><strong>Saving child...</strong></div>';
	Effect.SlideDown('newitemalert', {queue: 'front', duration: 0.25});
}

function saveNewSibling (leafid) {
	sendvar = 'newsibling=' + leafid + '&siblingname=' + escape($('newsiblingname').value) + '&siblinginfo=' + escape($('newsiblinginfo').value) + '&siblingprv=' + escape($('newsiblingprv').value) + '&siblingpub=' + escape($('newsiblingpub').value);
	
	ajaxobject.open("POST", 'api.php', true);
	ajaxobject.onreadystatechange = function() {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('newsiblingform', {queue: 'end', duration: 0.25});
			$('newsiblingname').value = '';
			$('newsiblinginfo').value = '';
			$('newsiblingprv').value = '';
			$('newsiblingpub').value = '';
			Effect.SlideUp('newitemalert', {queue: 'end', duration: 0.25, afterFinish: function () {
				$('newitemalert').innerHTML = '<div class="alert"><strong>sibling saved.</strong></div>';
				Effect.SlideDown('newitemalert', {queue: 'end', duration: 0.25});
				if (document.getElementById('newsiblings')) {
					$('newsiblings').innerHTML = $('newleafs').innerHTML + ajaxobject.responseText;
					$('newsiblings').style.display = "block";
				}
				window.setTimeout(
					function () {
						Effect.SlideUp('newitemalert', {duration: 0.5});
					},
					1500
				);
			}});
		}
	};
	
	ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
	ajaxobject.send(sendvar);
	
	$('newitemalert').innerHTML = '<div class="alert"><strong>Saving sibling...</strong></div>';
	Effect.SlideDown('newitemalert', {queue: 'front', duration: 0.25});
}

function refreshRawFeed (feedid, feedcolor) {
	$('feed' + feedid + 'message').innerHTML = '<i>Refreshing feed...</i>';
	
	sendvar = 'refreshrawfeed=' + feedid + '&c=' + feedcolor;
	ajaxobject.open('GET', 'api.php?' + sendvar, true);
	ajaxobject.onreadystatechange = function () {
		//$('feed' + feedid + 'alert').innerHTML = $('feed' + feedid + 'alert').innerHTML + '..';
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('feed' + feedid + 'message').innerHTML = '<i>Feed refreshed.</i>';
			$('feed' + feedid + 'content').innerHTML = ajaxobject.responseText;
			window.setTimeout(
				function () {
					$('feed' + feedid + 'message').innerHTML = '';
				},
				2000
			);
		}
	}
	ajaxobject.send(null);
}

function refreshFeed (feedid, feedcolor) {
	$('feed' + feedid + 'message').innerHTML = '<i>Refreshing feed...</i>';
	//$('feed' + feedid + 'content').innerHTML = '';
	//$('feed' + feedid + 'alert').style.display = 'block';
	
	sendvar = 'refreshfeed=' + feedid + '&c=' + feedcolor;
	ajaxobject.open("GET", 'api.php?' + sendvar, true);
	ajaxobject.onreadystatechange = function () {
		//$('feed' + feedid + 'alert').innerHTML = $('feed' + feedid + 'alert').innerHTML + '..';
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('feed' + feedid + 'message').innerHTML = '<i>Feed refreshed.</i>';
			$('feed' + feedid + 'content').innerHTML = ajaxobject.responseText;
			window.setTimeout(
				function () {
					$('feed' + feedid + 'message').innerHTML = '';
				},
				2000
			);
		}
	}
	//ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
	try {
		ajaxobject.send(null);
	} catch(err) {
		$('feed' + feedid + 'alert').innerHTML = '<div class="alert">Problem occured. Info: ' + err.description + '</div>';
	}
}

feedPreviews = new Array();
function previewFeed (feedid) {
	if (feedPreviews.length > 0) {
		
		for (i = 0; i < feedPreviews.length; i++) {
			if (feedPreviews[i] == feedid) {
				
				Effect.SlideUp('feed' + feedPreviews[i] + 'content', {duration: 0.35});
				feedPreviews.splice(i,1);
				return;
			}
		}
		
	}

	$('feed' + feedid + 'message').innerHTML = '<i>Loading preview...</i>';
	//$('feed' + feedid + 'content').innerHTML = '';
	//$('feed' + feedid + 'alert').style.display = 'block';
	
	sendvar = 'refreshfeed=' + feedid + '&preview=true&c=3';
	ajaxobject.open("GET", 'api.php?' + sendvar, true);
	ajaxobject.onreadystatechange = function () {
		//$('feed' + feedid + 'alert').innerHTML = $('feed' + feedid + 'alert').innerHTML + '..';
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('feed' + feedid + 'message').innerHTML = '';
			$('feed' + feedid + 'content').innerHTML = ajaxobject.responseText;
			Effect.Appear('feed' + feedid + 'content', {duration: 0.35});
		}
	}
	ajaxobject.send(null);
	feedPreviews[feedPreviews.length] = feedid;
}

publicFeedPreviews = new Array();
function previewPublicFeed (feedid) {
	
	if (publicFeedPreviews.length > 0) {
		
		for (i = 0; i < publicFeedPreviews.length; i++) {
			if (publicFeedPreviews[i] == feedid) {
				
				Effect.SlideUp('publicfeed' + publicFeedPreviews[i] + 'content', {duration: 0.35});
				publicFeedPreviews.splice(i,1);
				return;
			}
		}
		
	}
	
	$('publicfeed' + feedid + 'alert').innerHTML = '<i>Loading preview...</i>';
	sendvar = 'previewfeed=' + feedid;
	ajaxobject.open("GET", 'api.php?' + sendvar, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('publicfeed' + feedid + 'alert').innerHTML = '';
			$('publicfeed' + feedid + 'content').innerHTML = ajaxobject.responseText;
			Effect.Appear('publicfeed' + feedid + 'content', {duration: 0.35});
		}
	}
	ajaxobject.send(null);
	publicFeedPreviews[publicFeedPreviews.length] = feedid;
}

function deleteLink (linkid) {
	$('link' + linkid + 'delete').innerHTML = $('link' + linkid + 'delete').innerHTML + '<div style="font-weight: bold;"><i>Deleting link...</i></div>';
	
	ajaxobject.open("GET", "api.php?deletelink=" + linkid, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('link' + linkid + 'delete', {duration: 0.25});
			$('link' + linkid + 'alert').innerHTML = ajaxobject.responseText;
			Effect.SlideDown('link' + linkid + 'alert', {duration: 0.25});
			window.setTimeout(
				function () {
					Effect.SlideUp('link' + linkid, {duration: 0.25});
				},
				1500
			);
		}
	}
	ajaxobject.send(null);
}

function deleteFeed (feedid) {
	$('feed' + feedid + 'delete').innerHTML = $('feed' + feedid + 'delete').innerHTML + '<div style="font-weight: bold;"><i>Deleting feed...</i></div>';
	
	ajaxobject.open("GET", "api.php?deletefeed=" + feedid, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('feed' + feedid + 'delete', {duration: 0.25});
			$('feed' + feedid + 'alert').innerHTML = ajaxobject.responseText;
			Effect.SlideDown('feed' + feedid + 'alert', {duration: 0.25});
			window.setTimeout(
				function () {
					Effect.SlideUp('feed' + feedid, {duration: 0.25});
				},
				1500
			);
		}
	}
	ajaxobject.send(null);
}

function deleteLeaf (leafid) {
	$('leaf' + leafid + 'delete').innerHTML = $('leaf' + leafid + 'delete').innerHTML + '<div style="font-weight: bold;"><i>Deleting leaf...</i></div>';
	
	ajaxobject.open("GET", "api.php?deleteleaf=" + leafid, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('leaf' + leafid + 'delete', {duration: 0.25});
			$('leaf' + leafid + 'alert').innerHTML = ajaxobject.responseText;
			Effect.SlideDown('leaf' + leafid + 'alert', {duration: 0.25});
			window.setTimeout(
				function () {
					Effect.SlideUp('leaf' + leafid, {duration: 0.25});
				},
				1500
			);
		}
	}
	ajaxobject.send(null);
}

currentLeafCopy = 0;
function toggleLeafCopy (leafid) {
	if (currentLeafCopy == 0) {
		showLeafCopy(leafid);
		currentLeafCopy = leafid;
	} else {
		if (currentLeafCopy == leafid) {
			Effect.SlideUp('leaf' + leafid + 'copy', {duration: 0.25});
			currentLeafCopy = 0;
		} else {
			Effect.SlideUp('leaf' + currentLeafCopy + 'copy', {duration: 0.25});
			showLeafCopy(leafid);
			currentLeafCopy = leafid;
		}
	}
}

function showLeafCopy (leafid) {
	$('leaf' + leafid + 'alert').innerHTML = '<div class="alert">Retrieving leaf list...</div>';
	Effect.SlideDown('leaf' + leafid + 'alert', {queue: 'front', duration: 0.25});
	
	ajaxobject.open('GET', 'api.php?leafcopyform=' + leafid, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('leaf' + leafid + 'alert', {queue: 'end', duration: 0.25});
			$('leaf' + leafid + 'copy').innerHTML = ajaxobject.responseText;
			Effect.SlideDown('leaf' + leafid + 'copy', {duration: 0.25});
		}
	}
	ajaxobject.send(null);
}

function copyLeaf (leafid) {
	$('leaf' + leafid + 'alert').innerHTML = '<div class="alert">Copying leaf...</div>';
	Effect.SlideDown('leaf' + leafid + 'alert', {duration: 0.25});
	Effect.SlideUp('leaf' + leafid + 'copy', {duration: 0.25});
	ajaxobject.open('GET', 'api.php?copyleaf=' + leafid + '&dest=' + $('leaf' + leafid + 'copyto').value, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('leaf' + leafid + 'alert').innerHTML = ajaxobject.responseText;
			window.setTimeout(
				function () {
					Effect.SlideUp('leaf' + leafid + 'alert', {duration: 0.25});
				},
				1500
			);
		}
	}
	ajaxobject.send(null);
}

currentLeafMove = 0;
function toggleLeafMove (leafid) {
	if (currentLeafMove == 0) {
		showLeafMove(leafid);
		currentLeafMove = leafid;
	} else {
		if (currentLeafMove == leafid) {
			Effect.SlideUp('leaf' + leafid + 'move', {duration: 0.25});
			currentLeafMove = 0;
		} else {
			Effect.SlideUp('leaf' + currentLeafCopy + 'move', {duration: 0.25});
			showLeafMove(leafid);
			currentLeafMove = leafid;
		}
	}
}

function showLeafMove (leafid) {
	$('leaf' + leafid + 'alert').innerHTML = '<div class="alert">Retrieving leaf list...</div>';
	Effect.SlideDown('leaf' + leafid + 'alert', {queue: 'front', duration: 0.25});
	
	ajaxobject.open('GET', 'api.php?leafmoveform=' + leafid, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('leaf' + leafid + 'alert', {queue: 'end', duration: 0.25});
			$('leaf' + leafid + 'move').innerHTML = ajaxobject.responseText;
			Effect.SlideDown('leaf' + leafid + 'move', {duration: 0.25});
		}
	}
	ajaxobject.send(null);
}

function moveLeaf (leafid) {
	$('leaf' + leafid + 'alert').innerHTML = '<div class="alert">Moving leaf...</div>';
	Effect.SlideDown('leaf' + leafid + 'alert', {duration: 0.25});
	Effect.SlideUp('leaf' + leafid + 'move', {duration: 0.25});
	
	ajaxobject.open('GET', 'api.php?moveleaf=' + leafid + '&dest=' + $('leaf' + leafid + 'moveto').value, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('leaf' + leafid + 'alert').innerHTML = ajaxobject.responseText;
			currentLeafMove = 0;
			window.setTimeout(
				function () {
					Effect.SlideUp('leaf' + leafid, {duration: 0.25});
				},
				2000
			);
		}
	}
	ajaxobject.send(null);
}

currentLinkCopy = 0;
function toggleLinkCopy (linkid) {
	if (currentLinkCopy == 0) {
		showLinkCopy(linkid);
		currentLinkCopy = linkid;
	} else {
		if (currentLinkCopy == linkid) {
			Effect.SlideUp('link' + linkid + 'copy', {duration: 0.25});
			currentLinkCopy = 0;
		} else {
			Effect.SlideUp('link' + currentLinkCopy + 'copy', {duration: 0.25});
			showLinkCopy(linkid);
			currentLinkCopy = linkid;
		}
	}
}

function showLinkCopy (linkid) {
	$('link' + linkid + 'alert').innerHTML = '<div class="alert">Retrieving leaf list...</div>';
	Effect.SlideDown('link' + linkid + 'alert', {queue: 'front', duration: 0.25});
	
	ajaxobject.open('GET', 'api.php?linkcopyform=' + linkid, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('link' + linkid + 'alert', {queue: 'end', duration: 0.25});
			$('link' + linkid + 'copy').innerHTML = ajaxobject.responseText;
			Effect.SlideDown('link' + linkid + 'copy', {duration: 0.25});
		}
	}
	ajaxobject.send(null);
}

function copyLink (linkid) {
	$('link' + linkid + 'alert').innerHTML = '<div class="alert">Copying link...</div>';
	Effect.SlideDown('link' + linkid + 'alert', {duration: 0.25});
	Effect.SlideUp('link' + linkid + 'copy', {duration: 0.25});
	ajaxobject.open('GET', 'api.php?copylink=' + linkid + '&dest=' + $('link' + linkid + 'copyto').value, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('link' + linkid + 'alert').innerHTML = ajaxobject.responseText;
			window.setTimeout(
				function () {
					Effect.SlideUp('link' + linkid + 'alert', {duration: 0.25});
				},
				1500
			);
		}
	}
	ajaxobject.send(null);
}

currentLinkMove = 0;
function toggleLinkMove (linkid) {
	if (currentLinkMove == 0) {
		showLinkMove(linkid);
		currentLinkMove = linkid;
	} else {
		if (currentLinkMove == linkid) {
			Effect.SlideUp('link' + linkid + 'move', {duration: 0.25});
			currentLinkMove = 0;
		} else {
			Effect.SlideUp('link' + currentLinkCopy + 'move', {duration: 0.25});
			showLinkMove(linkid);
			currentLinkMove = linkid;
		}
	}
}

function showLinkMove (linkid) {
	$('link' + linkid + 'alert').innerHTML = '<div class="alert">Retrieving leaf list...</div>';
	Effect.SlideDown('link' + linkid + 'alert', {queue: 'front', duration: 0.25});
	
	ajaxobject.open('GET', 'api.php?linkmoveform=' + linkid, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('link' + linkid + 'alert', {queue: 'end', duration: 0.25});
			$('link' + linkid + 'move').innerHTML = ajaxobject.responseText;
			Effect.SlideDown('link' + linkid + 'move', {duration: 0.25});
		}
	}
	ajaxobject.send(null);
}

function moveLink (linkid) {
	$('link' + linkid + 'alert').innerHTML = '<div class="alert">Moving link...</div>';
	Effect.SlideDown('link' + linkid + 'alert', {duration: 0.25});
	Effect.SlideUp('link' + linkid + 'move', {duration: 0.25});
	
	ajaxobject.open('GET', 'api.php?movelink=' + linkid + '&dest=' + $('link' + linkid + 'moveto').value, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('link' + linkid + 'alert').innerHTML = ajaxobject.responseText;
			currentLinkMove = 0;
			window.setTimeout(
				function () {
					Effect.SlideUp('link' + linkid, {duration: 0.25});
				},
				2000
			);
		}
	}
	ajaxobject.send(null);
}

currentFeedCopy = 0;
function toggleFeedCopy (feedid) {
	if (currentFeedCopy == 0) {
		showFeedCopy(feedid);
		currentFeedCopy = feedid;
	} else {
		if (currentFeedCopy == feedid) {
			Effect.SlideUp('feed' + feedid + 'copy', {duration: 0.25});
			currentFeedCopy = 0;
		} else {
			Effect.SlideUp('feed' + currentFeedCopy + 'copy', {duration: 0.25});
			showFeedCopy(feedid);
			currentFeedCopy = feedid;
		}
	}
}

function showFeedCopy (feedid) {
	$('feed' + feedid + 'alert').innerHTML = '<div class="alert">Retrieving leaf list...</div>';
	Effect.SlideDown('feed' + feedid + 'alert', {queue: 'front', duration: 0.25});
	
	ajaxobject.open('GET', 'api.php?feedcopyform=' + feedid, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('feed' + feedid + 'alert', {queue: 'end', duration: 0.25});
			$('feed' + feedid + 'copy').innerHTML = ajaxobject.responseText;
			Effect.SlideDown('feed' + feedid + 'copy', {duration: 0.25});
		}
	}
	ajaxobject.send(null);
}

function copyFeed (feedid) {
	$('feed' + feedid + 'alert').innerHTML = '<div class="alert">Copying feed...</div>';
	Effect.SlideDown('feed' + feedid + 'alert', {duration: 0.25});
	Effect.SlideUp('feed' + feedid + 'copy', {duration: 0.25});
	ajaxobject.open('GET', 'api.php?copyfeed=' + feedid + '&dest=' + $('feed' + feedid + 'copyto').value, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('feed' + feedid + 'alert').innerHTML = ajaxobject.responseText;
			window.setTimeout(
				function () {
					Effect.SlideUp('feed' + feedid + 'alert', {duration: 0.25});
				},
				1500
			);
		}
	}
	ajaxobject.send(null);
}

currentFeedMove = 0;
function toggleFeedMove (feedid) {
	if (currentFeedMove == 0) {
		showFeedMove(feedid);
		currentFeedMove = feedid;
	} else {
		if (currentFeedMove == feedid) {
			Effect.SlideUp('feed' + feedid + 'move', {duration: 0.25});
			currentFeedMove = 0;
		} else {
			Effect.SlideUp('feed' + currentFeedCopy + 'move', {duration: 0.25});
			showFeedMove(feedid);
			currentFeedMove = feedid;
		}
	}
}

function showFeedMove (feedid) {
	$('feed' + feedid + 'alert').innerHTML = '<div class="alert">Retrieving leaf list...</div>';
	Effect.SlideDown('feed' + feedid + 'alert', {queue: 'front', duration: 0.25});
	
	ajaxobject.open('GET', 'api.php?feedmoveform=' + feedid, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('feed' + feedid + 'alert', {queue: 'end', duration: 0.25});
			$('feed' + feedid + 'move').innerHTML = ajaxobject.responseText;
			Effect.SlideDown('feed' + feedid + 'move', {duration: 0.25});
		}
	}
	ajaxobject.send(null);
}

function moveFeed (feedid) {
	$('feed' + feedid + 'alert').innerHTML = '<div class="alert">Moving feed...</div>';
	Effect.SlideDown('feed' + feedid + 'alert', {duration: 0.25});
	Effect.SlideUp('feed' + feedid + 'move', {duration: 0.25});
	
	ajaxobject.open('GET', 'api.php?movefeed=' + feedid + '&dest=' + $('feed' + feedid + 'moveto').value, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('feed' + feedid + 'alert').innerHTML = ajaxobject.responseText;
			currentFeedMove = 0;
			window.setTimeout(
				function () {
					Effect.SlideUp('feed' + feedid, {duration: 0.25});
				},
				2000
			);
		}
	}
	ajaxobject.send(null);
}

currentLeafTag = 0;
function toggleLeafTag (leafid) {
	if (currentLeafTag == 0) {
		showLeafTag(leafid);
		currentLeafTag = leafid;
	} else {
		if (currentLeafTag == leafid) {
			Effect.SlideUp('leaf' + leafid + 'tag', {duration: 0.25});
			currentLeafTag = 0;
		} else {
			Effect.SlideUp('leaf' + currentLeafTag + 'tag', {duration: 0.25});
			showLeafTag(leafid);
			currentLeafTag = leafid;
		}
	}
}

function showLeafTag (leafid) {
	$('leaf' + leafid + 'alert').innerHTML = '<div class="alert">Retrieving tags...</div>';
	Effect.SlideDown('leaf' + leafid + 'alert', {queue: 'front', duration: 0.25});
	
	ajaxobject.open('GET', 'api.php?leaftagform=' + leafid, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('leaf' + leafid + 'alert', {queue: 'end', duration: 0.25});
			$('leaf' + leafid + 'tag').innerHTML = ajaxobject.responseText;
			Effect.SlideDown('leaf' + leafid + 'tag', {duration: 0.25});
		}
	}
	ajaxobject.send(null);
}

function saveLeafTags (leafid) {
	$('leaf' + leafid + 'alert').innerHTML = '<div class="alert">Saving tags...</div>';
	Effect.SlideDown('leaf' + leafid + 'alert', {duration: 0.25});
	
	sendvar = 'leaftags=' + leafid + '&private=' + escape($('leaftag' + leafid + 'prv').value) + '&public=' + escape($('leaftag' + leafid + 'pub').value);
	ajaxobject.open('POST', 'api.php', true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('leaf' + leafid + 'tag', {duration: 0.25});
			$('leaf' + leafid + 'alert').innerHTML = ajaxobject.responseText;
			currentLeafTag = 0;
			window.setTimeout(
				function () {
					Effect.SlideUp('leaf' + leafid + 'alert', {duration: 0.25});
				},
				1500
			);
		}
	}
	ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
	ajaxobject.send(sendvar);
	
}



metaInfoShown = Array();
metaInfoStored = Array();
function toggleMetaInfo (metaid) {
	
	if (metaInfoCheck(metaid)) {
		$('meta' + metaid + 'alert').innerHTML = '<i>Loading...</i>';
		ajaxobject.open('GET', 'api.php?metalinkinfo=' + metaid, true);
		ajaxobject.onreadystatechange = function () {
			if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
				$('meta' + metaid + 'alert').innerHTML = '';
				$('meta' + metaid + 'info').innerHTML = ajaxobject.responseText;
				$('meta' + metaid + 'info').style.display = "block";
				metaInfoShown[metaInfoShown.length] = metaid;
				metaInfoStored[metaInfoStored.length] = metaid;
			}
		}
		ajaxobject.send(null);
	}
}

function metaInfoCheck (metaid) {
	for (i = 0; i < metaInfoShown.length; i++) {
		if (metaInfoShown[i] == metaid) {
			$('meta' + metaid + 'info').style.display = "none";
			metaInfoShown.splice(i,1);
			return false;
		}
	}
	for (j = 0; j < metaInfoStored.length; j++) {
		if (metaInfoStored[j] == metaid) {
			$('meta' + metaid + 'info').style.display = "block";
			metaInfoShown[metaInfoShown.length] = metaid;
			return false;
		}
	}
	return true;
}

publicFeedInfoShown = Array();
publicFeedInfoStored = Array();
function togglePublicFeedInfo (feedid) {
	
	if (publicFeedInfoCheck(feedid)) {
		$('publicfeed' + feedid + 'alert').innerHTML = '<i>Loading...</i>';
		ajaxobject.open('GET', 'api.php?metafeedinfo=' + feedid, true);
		ajaxobject.onreadystatechange = function () {
			if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
				$('publicfeed' + feedid + 'alert').innerHTML = '';
				$('publicfeed' + feedid + 'info').innerHTML = ajaxobject.responseText;
				$('publicfeed' + feedid + 'info').style.display = "block";
				publicFeedInfoShown[publicFeedInfoShown.length] = feedid;
				publicFeedInfoStored[publicFeedInfoStored.length] = feedid;
			}
		}
		ajaxobject.send(null);
	}
}

function publicFeedInfoCheck (feedid) {
	for (i = 0; i < publicFeedInfoShown.length; i++) {
		if (publicFeedInfoShown[i] == feedid) {
			$('publicfeed' + feedid + 'info').style.display = "none";
			publicFeedInfoShown.splice(i,1);
			return false;
		}
	}
	for (j = 0; j < publicFeedInfoStored.length; j++) {
		if (publicFeedInfoStored[j] == feedid) {
			$('publicfeed' + feedid + 'info').style.display = "block";
			publicFeedInfoShown[publicFeedInfoShown.length] = feedid;
			return false;
		}
	}
	return true;
}

leafInfoShown = Array();
function toggleLeafInfo (leafid) {
	j = 1;
	for (i = 0; i < leafInfoShown.length; i++) {
		if (leafInfoShown[i] == leafid) {
			j = 0;
			$('leaf' + leafid + 'stats').style.display = "none";
			leafInfoShown.splice(i,1);
		}
	}
	if (j == 1) {
		$('leaf' + leafid + 'stats').style.display = "block";
		leafInfoShown[leafInfoShown.length] = leafid;
	}
}

currentLinkTag = 0;
function toggleLinkTag (linkid) {
	if (currentLinkTag == 0) {
		showLinkTag(linkid);
		currentLinkTag = linkid;
	} else {
		if (currentLinkTag == linkid) {
			Effect.SlideUp('link' + linkid + 'tag', {duration: 0.25});
			currentLinkTag = 0;
		} else {
			Effect.SlideUp('link' + currentLinkTag + 'tag', {duration: 0.25});
			showLinkTag(linkid);
			currentLinkTag = linkid;
		}
	}
}

function showLinkTag (linkid) {
	$('link' + linkid + 'alert').innerHTML = '<div class="alert">Retrieving tags...</div>';
	Effect.SlideDown('link' + linkid + 'alert', {queue: 'front', duration: 0.25});
	
	ajaxobject.open('GET', 'api.php?linktagform=' + linkid, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('link' + linkid + 'alert', {queue: 'end', duration: 0.25});
			$('link' + linkid + 'tag').innerHTML = ajaxobject.responseText;
			Effect.SlideDown('link' + linkid + 'tag', {duration: 0.25});
		}
	}
	ajaxobject.send(null);
}

function saveLinkTags (linkid) {
	$('link' + linkid + 'alert').innerHTML = '<div class="alert">Saving tags...</div>';
	Effect.SlideDown('link' + linkid + 'alert', {duration: 0.25});
	
	sendvar = 'linktags=' + linkid + '&private=' + escape($('linktag' + linkid + 'prv').value) + '&public=' + escape($('linktag' + linkid + 'pub').value);
	ajaxobject.open('POST', 'api.php', true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('link' + linkid + 'tag', {duration: 0.25});
			$('link' + linkid + 'alert').innerHTML = ajaxobject.responseText;
			currentLinkTag = 0;
			window.setTimeout(
				function () {
					Effect.SlideUp('link' + linkid + 'alert', {duration: 0.25});
				},
				1500
			);
		}
	}
	ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
	ajaxobject.send(sendvar);
	
}

currentFeedTag = 0;
function toggleFeedTag (feedid) {
	if (currentFeedTag == 0) {
		showFeedTag(feedid);
		currentFeedTag = feedid;
	} else {
		if (currentFeedTag == feedid) {
			Effect.SlideUp('feed' + feedid + 'tag', {duration: 0.25});
			currentFeedTag = 0;
		} else {
			Effect.SlideUp('feed' + currentFeedTag + 'tag', {duration: 0.25});
			showFeedTag(feedid);
			currentFeedTag = feedid;
		}
	}
}

function showFeedTag (feedid) {
	$('feed' + feedid + 'alert').innerHTML = '<div class="alert">Retrieving tags...</div>';
	Effect.SlideDown('feed' + feedid + 'alert', {queue: 'front', duration: 0.25});
	
	ajaxobject.open('GET', 'api.php?feedtagform=' + feedid, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('feed' + feedid + 'alert', {queue: 'end', duration: 0.25});
			$('feed' + feedid + 'tag').innerHTML = ajaxobject.responseText;
			Effect.SlideDown('feed' + feedid + 'tag', {duration: 0.25});
		}
	}
	ajaxobject.send(null);
}

function saveFeedTags (feedid) {
	$('feed' + feedid + 'alert').innerHTML = '<div class="alert">Saving tags...</div>';
	Effect.SlideDown('feed' + feedid + 'alert', {duration: 0.25});
	
	sendvar = 'feedtags=' + feedid + '&private=' + escape($('feedtag' + feedid + 'prv').value) + '&public=' + escape($('feedtag' + feedid + 'pub').value);
	ajaxobject.open('POST', 'api.php', true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			Effect.SlideUp('feed' + feedid + 'tag', {duration: 0.25});
			$('feed' + feedid + 'alert').innerHTML = ajaxobject.responseText;
			currentFeedTag = 0;
			window.setTimeout(
				function () {
					Effect.SlideUp('feed' + feedid + 'alert', {duration: 0.25});
				},
				1500
			);
		}
	}
	ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
	ajaxobject.send(sendvar);
	
}

familyTreeShown = 0;
familyTreeFetched = 0;
function toggleFamilyTree () {
	if (familyTreeShown == 0) {
		if (familyTreeFetched == 0) {
			$('familytreelist').innerHTML = '<i>Loading...</i>';
			$('familytreelist').style.display = 'block';
			ajaxobject.open('GET', 'api.php?familytree=html', true);
			ajaxobject.onreadystatechange = function () {
				if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
					$('familytreelist').innerHTML = ajaxobject.responseText;
				}
			}
			ajaxobject.send(null);
			familyTreeShown = 1;
			familyTreeFetched = 1;
		} else {
			$('familytreelist').style.display = 'block';
			familyTreeShown = 1;
		}
	} else {
		$('familytreelist').style.display = 'none';
		familyTreeShown = 0;
	}
}

function perLeafPage (tagname, offset) {
	$('perleaftaglinks').innerHTML = '<i>Loading page...</i> ' + $('perleaftaglinks').innerHTML;
	
	ajaxobject.open('GET', 'api.php?perleaftag=' + tagname + '&perleafoffset=' + offset, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('perleaftagresults').innerHTML = ajaxobject.responseText;
		}
	}
	ajaxobject.send(null);
}

function pubLeafPage (tagname, offset) {
	$('publeaftaglinks').innerHTML = '<i>Loading page...</i> ' + $('publeaftaglinks').innerHTML;
	
	ajaxobject.open('GET', 'api.php?publeaftag=' + tagname + '&publeafoffset=' + offset, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('publeaftagresults').innerHTML = ajaxobject.responseText;
		}
	}
	ajaxobject.send(null);
}

function perLinkPage (tagname, offset) {
	$('perlinktaglinks').innerHTML = '<i>Loading page...</i> ' + $('perleaftaglinks').innerHTML;
	
	ajaxobject.open('GET', 'api.php?perlinktag=' + tagname + '&perlinkoffset=' + offset, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('perlinktagresults').innerHTML = ajaxobject.responseText;
		}
	}
	ajaxobject.send(null);
}

function pubLinkPage (tagname, offset) {
	$('publinktaglinks').innerHTML = '<i>Loading page...</i> ' + $('publinktaglinks').innerHTML;
	
	ajaxobject.open('GET', 'api.php?publinktag=' + tagname + '&publinkoffset=' + offset, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('publinktagresults').innerHTML = ajaxobject.responseText;
		}
	}
	ajaxobject.send(null);
}

function perFeedPage (tagname, offset) {
	$('perfeedtaglinks').innerHTML = '<i>Loading page...</i> ' + $('perfeedtaglinks').innerHTML;
	
	ajaxobject.open('GET', 'api.php?perfeedtag=' + tagname + '&perfeedoffset=' + offset, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('perfeedtagresults').innerHTML = ajaxobject.responseText;
		}
	}
	ajaxobject.send(null);
}

function pubFeedPage (tagname, offset) {
	$('pubfeedtaglinks').innerHTML = '<i>Loading page...</i> ' + $('pubfeedtaglinks').innerHTML;
	
	ajaxobject.open('GET', 'api.php?pubfeedtag=' + tagname + '&pubfeedoffset=' + offset, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('pubfeedtagresults').innerHTML = ajaxobject.responseText;
		}
	}
	ajaxobject.send(null);
}
/*

*/

/*agCollapseInfo = new Image(16,16);
agCollapseInfo.src = 'images/collapse.png';
agExpandInfo = new Image(16,16);
agExpandInfo.src = 'images/expand.png';*/
function toggleAgInfo (agKey) {
  if ( $('agItemInfo' + agKey).style.display=='none' ) {
    $('agItemInfo' + agKey).style.display='';
    $('agToggleImage' + agKey).src = 'images/collapse.png';
    //document["agToggleImage" + agKey].src = agCollapseInfo.src;
  } else {
    $('agItemInfo' + agKey).style.display='none';
    //document["agToggleImage" + agKey].src = agExpandInfo.src;
    $('agToggleImage' + agKey).src = 'images/expand.png';
  }
  
}

function agToggleEdit () {
  if ( $('agEditFeeds').style.display=='none' ) {
    $('agEditFeeds').style.display='';
  } else {
    $('agEditFeeds').style.display='none';
  }
}

function agRefresh(leafid) {
  $('agStatus').innerHTML = '<i>Refreshing feeds...</i>';
	sendvar = 'refreshAgFeeds=' + leafid;
	ajaxobject.open('GET', 'api.php?' + sendvar, true);
	ajaxobject.onreadystatechange = function () {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('agStatus').innerHTML = '<b>Feeds refreshed.</b>';
			$('agItemsContainer').innerHTML = ajaxobject.responseText;
			window.setTimeout(
				function () {
					$('agStatus').innerHTML = '';
				},
				2000
			);
		}
	}
	ajaxobject.send(null);
}

function agToggleAllInfo() {
  agInfoBoxes = document.getElementsByClassName('agItemInfo');
  if (agInfoBoxes[0].style.display == 'none') {
    $('agToggleAllInfoButton').innerHTML = 'collapse all';
    for( i = 0; i < agInfoBoxes.length; i++ ) {
      agInfoBoxes[i].style.display = '';
    }
  } else {
    $('agToggleAllInfoButton').innerHTML = 'expand all';
    for( i = 0; i < agInfoBoxes.length; i++ ) {
      agInfoBoxes[i].style.display = 'none';
    }
  }
}

function saveAgFeed (feedid) {
	$('agStatus').innerHTML = '<i>Saving feed...</i>';
	//Effect.SlideDown('feed' + feedid + 'alert', {queue: 'front', duration: 0.25});
	//$('agEditFeeds').style.display='none';
	
	sendvar = 'saveagfeed=' + feedid + '&feedname=' + escape($('agFeedName' + feedid).value) + '&feedurl=' + 
		escape($('agFeedURL' + feedid).value) + '&feedprefix=' + escape($('agFeedPrefix' + feedid).value) + '&feedage=' + 
		escape($('agFeedAgeLimit' + feedid).value) + '&feedsize=' + escape($('agFeedSizeLimit' + feedid).value);
	ajaxobject.open('POST', 'api.php', true);
	ajaxobject.onreadystatechange = function() {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			if (ajaxobject.responseText == 'success') {
				$('agStatus').innerHTML = '<b>Feed saved.</b>';
			} else {
				$('agStatus').style.display = 'block';
				$('agStatus').innerHTML = 'There was an error saving the feed:<br>' + ajaxobject.responseText;
			}
		  window.setTimeout(function () {
				$('agStatus').style.display = '';
				$('agStatus').innerHTML = '';
			}, 1500);
		}
	}
	ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
	ajaxobject.send(sendvar);
}

/*function addAgFeed (leafid) {
	$('agStatus').innerHTML = '<i>Saving new feed...</i>';
	//Effect.SlideDown('feed' + feedid + 'alert', {queue: 'front', duration: 0.25});
	
	sendvar = 'addagfeed=' + leafid + '&feedname=' + escape($('agAddName').value) + '&feedurl=' + 
	  escape($('agAddURL').value) + '&feedprefix=' + escape($('agAddPrefix').value) + '&feedage=' + 
		escape($('agAddAgeLimit').value) + '&feedsize=' + escape($('agAddLimit').value)
	
	ajaxobject.open("POST", 'api.php', true);
	ajaxobject.onreadystatechange = function() {
		if (ajaxobject.readyState == 4 && ajaxobject.status == 200) {
			$('agStatus').innerHTML = '<b>New feed saved.</b>';
			window.setTimeout(function () {
				$('agStatus').style.display = '';
				$('agStatus').innerHTML = '';
			}, 1500);
		}
	};
	
	ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-13');
	ajaxobject.send(sendvar);
}*/