//<![CDATA[
/***************************************************************************************
 Collapsable Sidebar
***************************************************************************************/
function changeTitleStyle(link,el) {
	
	var link = $(link);
	var el = $(el);
	
	if (link) {

		link = link.parentNode.parentNode;

		if (!el) {
			
			if (Element.hasClassName(link,'title') === true) {

				Element.removeClassName(link,'title');
				Element.addClassName(link,'titleCollapsed');
		
			}
		
		} else {
			
			if (el.offsetHeight === 0 && Element.hasClassName(link,'title') === true) {
				
				Element.removeClassName(link,'title');
				Element.addClassName(link,'titleCollapsed');
				
			} else {
			
				Element.removeClassName(link,'titleCollapsed');
				Element.addClassName(link,'title');
			
			}
			
		}
	
	} else {
		
		return false;

	}

}

function toggleSectionBody(link,el) {
	
	var link=$(link),el=$(el),contents=el.childNodes[1];

	if (link && el) {
		
		changeTitleStyle(link,el);
		
		function done() {

			changeTitleStyle(link,el);
			
		}

		elementHeight = new fx.RememberHeight(el,{duration:300});
		elementHeight.toggle();
		
		elementBody = new fx.Height(el,{duration:300,onComplete:done});
		elementBody.toggle();
		
		if (el.offsetHeight !== 0) { 

			myfadeOut = new fx.Opacity(contents,{duration:250});
			myfadeOut.hide();
			
		} else {
			
			myfadeIn = new fx.Opacity(contents,{duration:1250});
			myfadeIn.show();
			
		}
	
	} else {

		return false;

	}

}

/***************************************************************************************
 LiveSearch
***************************************************************************************/
var searchTimer = null;
var loadingTimer = null;
var resultsTimer = null;
var postsTimer = null;
var resetTimer = null;
var titleText = null;

function initLiveSearch() {
	
	var searchLoad = $('searchLoading');
	var searchInput = $('s');
	var searchForm = $('searchform');
	var searchButtonCancel = $('searchsubmitCancel');
	var searcResults = $('searchResults');
	
	if ($('subContentTitle')) { titleText = $('subContentTitle').innerHTML; }
	
	if (searchForm && searchInput) {

		hideLoading = new fx.Opacity(searchLoad);
		hideLoading.setOpacity(0);
	
		Element.hide(searcResults);

		searchInput.onkeypress = function(event) {
			
			var characterCode = event.which;

			if (characterCode === 0) { // ESC
				
				// cancel livesearch search was started AND keywords are entered
				if ($('subContentTitle').innerHTML !== titleText && searchInput.value !== "") {

					liveSearchCancel();
				
				}
				
			} else if (characterCode === 8) { // DELETE
				
				// cancel search if user clears field using backspace/delete
				if (searchInput.value === "") {
					
					liveSearchCancel();
					
				}

			} else {

				liveSearchStart();
			
			}
			
			resetTimer = window.setTimeout("liveSearchCallback()",50);
			
		}

		searchInput.onfocus = function() { if (searchInput.value === "Type and wait...") { searchInput.value = ""; } }
		searchInput.onblur = function() { if (searchInput.value === "") { searchInput.value = "Type and wait..."; } }
		searchButtonCancel.onclick = function() { liveSearchCancel(); return false; }
		searchForm.onsubmit = function() { liveSearchDoSearch(); return false; }
	
	}


}

function liveSearchStart(event) {

	if (searchTimer) { window.clearTimeout(searchTimer); }
	if (loadingTimer) { window.clearTimeout(loadingTimer); }
	if (resultsTimer) { window.clearTimeout(resultsTimer); }
	if (postsTimer) { window.clearTimeout(postsTimer); }

	searchTimer = window.setTimeout("liveSearchDoSearch()",500);

}

function liveSearchDoSearch() {

	// get some needed elements
	var searchResults = $('searchResults');
	var searchLoading = $('searchLoading');
	var searchSubmit = $('searchsubmit');
	var searchSubmitCancel = $('searchsubmitCancel');
	var searchBox = $('s');
	var oldPosts = $('previousPosts');
	var subSectionTitle = $('subContentTitle');

	// set search results' opacity to 0 (for fade effect)
	toggleResults = new fx.Opacity(searchResults,{duration:250});
	toggleResults.setOpacity(0);

	// begin
	if (Element.visible(oldPosts)) {

		// change title to reflect search state
		Element.update(subSectionTitle,'LiveSearch');
		
		// swap search buttons
		Element.hide(searchSubmit);
		Element.show(searchSubmitCancel);

		// fade out previous posts
		hideOldPosts = new fx.Opacity(oldPosts,{duration:250,onComplete:function(){Element.hide(oldPosts);}});
		hideOldPosts.custom(1,0);

	}

	// set loading indicator's opacity to 0 (for fade effect)
	toggleLoading = new fx.Opacity(searchLoading,{duration:250});
	toggleLoading.clearTimer();
	Element.show(searchLoading);
	toggleLoading.setOpacity(0);

	// set indicator display timer
	if (loadingTimer) { window.clearTimeout(loadingTimer); }
	loadingTimer = window.setTimeout("toggleLoading.custom(0,1)",250);

	// make sure submitted query isn't blank
	if ($F(searchBox) !== "") {
		
		// onComplete event handler
		function displayResults() {

			// prepare results div
			Element.show(searchResults);
			
			// fade out indicator, fade in results
			toggleLoading.clearTimer();
			if (loadingTimer) { window.clearTimeout(loadingTimer); }
			loadingTimer = window.setTimeout("toggleLoading.custom(1,0)",150);
			
			if (resultsTimer) { window.clearTimeout(resultsTimer); }
			resultsTimer = window.setTimeout("toggleResults.custom(0,1)",500);
			
		}

		// send search query to livesearch php script
		new ajax ('livesearch.php?s='+searchBox.value,{sync:false,method:'GET',update:searchResults,onComplete:displayResults});

	} else {

		liveSearchCancel();

	}
	
	resetTimer = window.setTimeout("liveSearchCallback()",50);
	
}

function liveSearchCancel() {
	
	searchIsActive = false;

	var searchResults = $('searchResults');
	var searchLoading = $('searchLoading');
	var searchSubmit = $('searchsubmit');
	var searchSubmitCancel = $('searchsubmitCancel');
	var searchBox = $('s');
	var oldPosts = $('previousPosts');
	var subSectionTitle = $('subContentTitle');

	if (searchTimer) { window.clearTimeout(searchTimer); }
	if (loadingTimer) { window.clearTimeout(loadingTimer); }
	if (resultsTimer) { window.clearTimeout(resultsTimer); }
	if (postsTimer) { window.clearTimeout(postsTimer); }

	// swap search buttons
	Element.show(searchSubmit);
	Element.hide(searchSubmitCancel);
	
	// set title back to default
	Element.update(subSectionTitle,titleText);
	
	// cancel indicator timer (again) and fade it out
	if (loadingTimer) { window.clearTimeout(loadingTimer); }
	toggleLoading = new fx.Opacity(searchLoading,{duration:250});
	loadingTimer = window.setTimeout("toggleLoading.custom(1,0)",150);

	// prepare previous posts for fade in & hide results
	Element.show(oldPosts);
	Element.hide(searchResults);

	// set previous posts' opacity to 0 for fade in
	showOldPosts = new fx.Opacity(oldPosts,{duration:250});
	showOldPosts.setOpacity(0);
	
	// cancel posts timer if its running, reset it to fade in
	if (postsTimer) { window.clearTimeout(postsTimer); }
	postsTimer = window.setTimeout("showOldPosts.custom(0,1)",500);
	
}

function liveSearchCallback() {
	
	if ($('s').value == "" && resetTimer) {
		
		liveSearchCancel();
		resetTimer = null;
		
	}
	
}

/***************************************************************************************
 Init
***************************************************************************************/
function initFlickr() {
	
	var flickrToggle = $('toggleFlickr');
	var flickrBody = $('bodyFlickr');
	var flickrLoad = $('flickrLoad');
	var flickrFeed = $('flickrFeed');
	
	if (flickrToggle && flickrBody) {
		
		Element.show(flickrLoad);
	
		flickrToggle.onclick = function() {

			toggleSectionBody(flickrToggle,flickrBody);

		};

		flickr = new fx.RememberHeight(flickrBody,{duration:300});
		if (flickrBody.offsetHeight == 0) { changeTitleStyle(flickrToggle); flickr.hide(); Element.hide(flickrLoad); }

		fadeFlickrLoad = new fx.Opacity(flickrLoad,{duration:250})
		fadeFlickr = new fx.Opacity(flickrFeed,{duration:250})
		fadeFlickr.setOpacity(0);
	
		function flickrFinish() {

			fadeFlickrLoad.custom(1,0);
			window.setTimeout("fadeFlickr.custom(0,1)",400);
			window.setTimeout("Element.hide($('flickrLoad'))",100);
		
		}
	
		// get flickr thumbnails
		new ajax ('flickr.php',{sync:false,method:'GET',update:flickrFeed,onComplete:flickrFinish});
	
	}

}

function initDelicious() {
	
	var deliciousToggle = $('toggleDelicious');
	var deliciousBody = $('bodyDelicious');
	var deliciousLoad = $('rssLoad');
	var deliciousFeed = $('rssFeed');

	if (deliciousToggle && deliciousBody) {

		deliciousToggle.onclick = function() {

			toggleSectionBody(deliciousToggle,deliciousBody);

		};
	
		delicious = new fx.RememberHeight(deliciousBody,{duration:300});
		if (deliciousBody.offsetHeight == 0) { changeTitleStyle(deliciousToggle); delicious.hide(); Element.hide(deliciousLoad); }

		fadeDeliciousLoad = new fx.Opacity(deliciousLoad,{duration:250})
		fadeDelicious = new fx.Opacity($('rssFeed'),{duration:250})
		fadeDelicious.setOpacity(0);
	
		function deliciousFinish() {

			fadeDeliciousLoad.custom(1,0);
			window.setTimeout("fadeDelicious.custom(0,1)",400);
			window.setTimeout("Element.hide($('rssLoad'))",100);
		
		}

		// get rss feed contents
		new ajax ('delicious.php?url=http://del.icio.us/rss/limenathan/&items=5',{sync:false,method:'GET',update:deliciousFeed,onComplete:deliciousFinish });
	
	}
	
}

function initSubscribe() {
	
	var subscribeToggle = $('toggleSubscribe');
	var subscribeBody = $('bodySubscribe');
	
	if (subscribeToggle && subscribeBody) {
	
		subscribeToggle.onclick = function() {

			toggleSectionBody(subscribeToggle,subscribeBody);

		};

		subscribe = new fx.RememberHeight(subscribeBody,{duration:300});
		if (subscribeBody.offsetHeight == 0) { changeTitleStyle(subscribeToggle); subscribe.hide(); }
	
	}
	
}

function initBrowseCat() {
	
	var browseCatToggle = $('toggleBrowseCat');
	var browseCatBody = $('bodyBrowseCat');
	
	if (browseCatToggle && browseCatBody) {

		browseCatToggle.onclick = function() {

			toggleSectionBody(browseCatToggle,browseCatBody);

		};

		bycat = new fx.RememberHeight(browseCatBody,{duration:300});
		if (browseCatBody.offsetHeight == 0) { changeTitleStyle(browseCatToggle); bycat.hide(); }

	}

}

function initBrowseDate() {
	
	var browseDateToggle = $('toggleBrowseDate');
	var browseDateBody = $('bodyBrowseDate');
	
	if (browseDateToggle && browseDateBody) {
	
		browseDateToggle.onclick = function() {

			toggleSectionBody(browseDateToggle,browseDateBody);

		};

		bydate = new fx.RememberHeight(browseDateBody,{duration:300});
		if (browseDateBody.offsetHeight == 0) { changeTitleStyle(browseDateToggle); bydate.hide(); }

	}
	
}

function initTagCloud() {
	
	var tagCloudToggle = $('toggleTagCloud');
	var tagCloudBody = $('bodyTagCloud');

	if (tagCloudToggle && tagCloudBody) {

		tagCloudToggle.onclick = function() {

			toggleSectionBody(tagCloudToggle,tagCloudBody);

		};

		tagcloud = new fx.RememberHeight(tagCloudBody,{duration:300});
		if (tagCloudBody.offsetHeight == 0) { changeTitleStyle(tagCloudToggle); tagcloud.hide(); }

	}

}

function initPagesNav() {
	
	var pagesNavToggle = $('togglePagesNav');
	var pagesNavBody = $('bodyPagesNav');
	
	if (pagesNavToggle && pagesNavBody) {
	
		pagesNavToggle.onclick = function() {

			toggleSectionBody(pagesNavToggle,pagesNavBody);

		};

		pagesNav = new fx.RememberHeight(pagesNavBody,{duration:300});
		if (pagesNavBody.offsetHeight == 0) { changeTitleStyle(pagesNavToggle); pagesNav.hide(); }

	}
	
}

/***************************************************************************************
 Onload
***************************************************************************************/
window.onload = function() {
	
	initFlickr();
	initDelicious();
	initSubscribe();
	initBrowseCat();
	initBrowseDate();
	initTagCloud();
	initPagesNav();

	initLiveSearch();

};
//]]>