function findIndex(folder)
	{
	for (var i=0 ; i<folderButtons.length; i++)
		if (folderButtons[i].get("text") == folder)
			return i;

	return 0;
	}


var bookmarks = $$("ul.bookmarks li a.title");
var folderButtons = $$("div.folderButtons a");
var folders = $$("div.folder");
var currentFolder;
var parts = location.href.split("#");

if (parts[1])
	currentFolder = findIndex(unescape(parts[1]));
else
	currentFolder = 0;

var counter = 0;

bookmarks.each(function(bookmark) {
	bookmark.addEvent("click", function(a){
		var li = this.getParent();
		li.morph({"height": 0, "margin": 0, "padding": 0});
		});
	});

folders[currentFolder].setStyle("display", "block");
if (folderButtons.length > 0)
	folderButtons[currentFolder].addClass("active");

folders.each(function(folder){

	if (folderButtons.length > 0)
		{
		var button = folderButtons[counter];
		button.id = "folderButton" + counter;

		// toggle folder divs
		button.addEvent("click", function(){
			var newFolder = this.id.substr(12);
			this.blur(); 
			folders[currentFolder].setStyle("display", "none");
			folders[newFolder].setStyle("display", "block");

			folderButtons[currentFolder].removeClass("active");
			folderButtons[newFolder].addClass("active");
			currentFolder = newFolder;
			});
		}


	// use this loop to handle other folder based things

	var folder = folders[counter];

	if (folder)
		{
		if(folder.getElement("a.new_bookmark_link"))
			{
			folder.getElement("a.new_bookmark_link").addEvent("click", function(){
					folder.getElement(".new_bookmark").setStyle("display", "block");
					folder.getElement(".bookmark").focus();
					return false;
					});
			}

		// toggle stale div
		var stale = folder.getElement(".showStale");
		if (stale)
			{
			stale.addEvent("click", function(){
				var staleLinks = folder.getElement("ul.stale");

				if (staleLinks.getStyle("display") == "none"){
					staleLinks.setStyle("display", "block");
					this.getElement("span").set("text", "- Hide ")
					}
				else{
					staleLinks.setStyle("display", "none");
					this.getElement("span").set("text", "+ Show ")
					}
				
				return false;
				});
			}  // end stale

		// on submit.
		// 1. check if the feed exists
		// 2. if so, get the feed to get the title

		if(folder.getElement(".checkSite"))
			{
			folder.getElement(".checkSite").addEvent('click', function(event){
				this.setProperty("disabled");
				this.set("value", "Working...");
				
				folder.getElement(".siteName").setStyle("display", "none");

				var bookmark = folder.getElement(".bookmark").get("value");

				var regex = new RegExp("(https?|ftp)://");
				if(!regex.test(bookmark))
					bookmark = "http://" + bookmark.split(" ").join("");
				
				// call google to find feed
				google.feeds.lookupFeed(bookmark, function (result){
					var rss = "";
					if (result.error || result.url == null) 
						showFail(folder);
					else
						{
						rss = result.url;

						// call google again to 
						var feed = new google.feeds.Feed(result.url);
						feed.load(function(result) {
							if (result.error || result.status.code == 400)	{
								showFail(folder);
								return;
								}
							folder.getElement(".name").set("value", result.feed.title);

							var urlField = folder.getElement(".url");

							// sometimes feeds dont return a url.  if they dont we just use the url part of the thing the user added
							if (result.feed.link == "" && rss.indexOf("feedburner") < 0)
								{
								var url = bookmark.replace(/https?:\/\//, "");
								urlField.set("value", url);
								}
							else 
								urlField.set("value", result.feed.link);

							folder.getElement(".rss").set("value", rss);
							if(newUser)
								folder.getElement(".rssForm").submit();
							else 
								{
								folder.getElement(".noFeed").setStyle("display", "none");
								folder.getElement(".siteName").setStyle("display", "block");
								folder.getElement(".checkSite").setStyle("display", "none");
								}
							});  // end call google 2nd time
						}
					});  // end call google 1st time
				return false;
				});
			}
		}  // end folder

	counter++;
	});



function showFail(folder)
	{
	folder.getElement(".noFeed").setStyle("display", "block");
	var checkSite = folder.getElement(".checkSite");
		
	checkSite.removeProperty("disabled");
	if(newUser)
		checkSite.set("value", "Show me Rososo.");
	else
		checkSite.set("value", "Add website or RSS feed.");
	}

$$("span.editor").each(function(bookmark){
	bookmark.getElement("a.edit").addEvent("click", function(){
		this.setStyle("display", "none");
		this.getParent().getElement("span.controls").setStyle("display", "inline");
		return false;
		});

	if(!bookmark.getElement("span.category a"))
		return;

	var original = bookmark.getParent().getElement("select").selectedIndex;

	
	bookmark.getElement("span.category a").addEvent("click", function(){
		var bookMarklink = this;

		this.setStyle("display", "none");

		var select = this.getParent().getElement("select");
		select.setStyle("display", "inline");

		select.addEvent("change", function(){
			var folID = this.get("value");
			var ID = this.get("ID").substr(2);
			var el = this;
			var url = "/folder/" + ID + "/" + folID;

			if (select.value == "+")
				{
				var reply = "";
				reply = prompt("What would you like to call this folder?\n\n(Only letters and numbers please.)");

				var regex = new RegExp(/^[a-zA-Z0-9\s._-]{1,16}$/);
				if(!regex.test(reply)){
					alert("That was a bad folder name, please try again.");
					return;
					}

				url = "/addfolder/" + escape(reply) + "/" + ID;
				}

				location.href = url;
				return;
			});
		return false;
		});

	});

function fetchFeed(url)
	{
	var feed = new google.feeds.Feed(url);
	feed.load(function(result) {
		$$("body").set("text", JSON.encode(result.feed));
		});
	}

google.load("feeds", "1");

