var trendCount = 0;
var featuresLoop = 0;

// This generates the Directory page on first load
$(document).ready(function(){
    if ($("#taxonomy").length > 0) {
        create_homepage ();
    };
});

// JS validation for the search box
$(document).ready(function(){

    if ($("#form-search").length > 0) {

		// Hmm.... bit of a nasty hack to fix the search issue. On Webkit + Firefox the search is working fine using POST, but fails with NGINX on IE. So switch to GET in IE.
		if ($.browser.msie) {
			$("#form-search").attr("method", "get");
		};

		$("#form-search").live("submit", function (){
			if (($("#input-search").attr("value") == "") || ($("#input-search").attr("value") == "Search lists") || ($("#input-search").attr("value").replace(new RegExp(" ","g"),"").length == 0) || ($("#input-search").attr("value") == "Enter a search term")) {
				$("#input-search").css("color", "#999999");
				$("#input-search").attr("value", "Enter a search term");
				$("#input-search").blur();
				return false;
			} else {
				$("#form-search").attr("action","/search/" + $("#input-search").attr("value").replace(new RegExp("#","g"),"%23") + "/#directory"); 
				return true;
			};
		});
    };

});

// Function to create the homepage
function create_homepage () {
    var lotsoflists, array_about, html_about, islast, newhref;

    $("#nextList a").live("click", function() { 
        clearInterval ( featuresLoop );
        featuresLoop = 0;
        if ($("div.rotatingList:last").attr("id") == $("div.activeList:first").attr("id")) {
            $("div.rotatingList").removeClass("activeList");
            $("#featured1").addClass("activeList");
            feedSwitch("featured1", 1);
        } else {
            nextFeed = $("div.activeList:first").next().attr("id");
            $("div.rotatingList").removeClass("activeList");
            $("#" + nextFeed).addClass("activeList");            
            feedSwitch(nextFeed, 1);
        };
    });

    $("#prevList a").live("click", function() { 
        clearInterval ( featuresLoop );
        featuresLoop = 0;
        // alert($("div.rotatingList:first").attr("id") + " - "+ $("div.activeList:first").attr("id"));
        if ($("div.rotatingList:first").attr("id") == $("div.activeList:first").attr("id") ) {
            $("div.rotatingList").removeClass("activeList");
            $("#featured5").addClass("activeList");     
            feedSwitch("featured5", 1);
        } else {
            prevFeed = $("div.activeList:first").prev().attr("id");
            $("div.rotatingList").removeClass("activeList");
            $("#" + prevFeed).addClass("activeList");  
            feedSwitch(prevFeed, 1);
        };
    });

    // Add the JS to the Trends panel to change the trends on the homepage
    $("#trends h3 a").click(function() {
        $("#trends h3 a").removeClass("on");
        $(this).addClass("on");
        $("#trends ul.list_info").css("display","none");
        $("#trends ul#trend-" + $(this).text().replace(new RegExp('#','g'),'').replace(new RegExp(' ','g'),'')).fadeIn(500);
    });

};

function feedSwitch(newFeedId, rotate) {

    var feedList, feedH3, feedMore;
    var newHTML, newH3, newMore;
    
    feedList = "#" + newFeedId + " ul.list_info";
    feedH3 = "#" + newFeedId + " h3";
    feedMore = "#" + newFeedId + " p.more";

    $("#featured ul.list_info").animate({opacity: 0.0}, 500, function () {
        newHTML = $(feedList).html();
        $("#featured ul.list_info").html(newHTML);
        $("#featured ul.list_info").animate({opacity: 1.0}, 500);
    });

    $("#featured h3 span#featuredH3").animate({opacity: 0.0}, 500, function () {
        newH3 = $(feedH3).html();
        $("#featured h3 span#featuredH3").html(newH3);
        $("#featured h3 span#featuredH3").animate({opacity: 1.0}, 500);
    });
    
    $("#featured p.more span").animate({opacity: 0.0}, 500, function () {
        newMore = $(feedMore).html();
        $("#featured p.more span").html(newMore);
        $("#featured p.more span").animate({opacity: 1.0}, 1000, function () {
            if (rotate == 1) {
                featuresLoop = setInterval( "slideSwitch()", 5000 );
            };
        });      
    });

};
    
function slideSwitch() {
    var $active = $('#featured ul.list_info li.list_item.active');

    if ( $active.length == 0 ) $active = $('#featured ul.list_info li.list_item:last');

    if ( $active.next().length ) {
        $next = $active.next();
        
        $active.addClass('last-active');

        $next.css({opacity: 0.0})
            .addClass('active')
            .animate({opacity: 1.0}, 1000, function() {
                $active.removeClass('active last-active');
            });
            
    } else {

        if ($("div.rotatingList:last").attr("id") == $("div.activeList:first").attr("id")) {
            $("div.rotatingList").removeClass("activeList");
            $("#featured1").addClass("activeList");
            feedSwitch("featured1", 0);
        } else {
            nextFeed = $("div.activeList:first").next().attr("id");
            $("div.rotatingList").removeClass("activeList");
            $("#" + nextFeed).addClass("activeList");            
            feedSwitch(nextFeed, 0);
        };

    };
    
};

$(function() {
    featuresLoop = setInterval( "slideSwitch()", 5000 );
});


function getListTrends (trendName, trCount) {
    var newUL, newA;
    var array_about, html_about, islast;

    $.getJSON("http://api.tlists.com/api/v2/lists/search.json?&q=" + trendName.replace('#','%23') + "&rpp=4&callback=?", function(searchdata) {
        if (searchdata.total_count >= 4) {
            newUL = $("<ul/>").attr("id", "trend-" + trendName.replace('#','').replace(new RegExp(' ','g'),'')).addClass("list_info").css("display", "none");
            newA = $("<a/>").attr("href","javascript:void(0);").html(trendName).click(function() {
                $("#trends h3 a").removeClass("on");
                $(this).addClass("on");
                $("#trends ul.list_info").css("display","none");
                $("#trends ul#trend-" + trendName.replace('#','').replace(new RegExp(' ','g'),'')).fadeIn(600);
            });

            newA.appendTo("#trends h3");

            $.each(searchdata.lists, function(i, item) {
                array_about = item.talks_about.split(",");
                html_about = "";
                $.each(array_about, function(i, item) {
                    islast = (i == array_about.length-1 ? " class='last'" : "");
                    html_about = html_about + "<li" + islast + ">" + item + "</li>";
                });
                newHTML = '<div class="cf"><a href="/list' + item.uri + '/' + item.id + '/#directory" class="img-link"><img src="' + item.user.profile_image_url + '" alt="" /></a><dl><dt><a href="/list' + item.uri + '/' + item.id + '/#directory">' + item.name + '</a></dt><dd><ul class="list_stats"><li><strong>' + item.member_count + ' </strong>following</li><li><strong>' + item.subscriber_count + ' </strong>followers</li><li><strong>' + item.tweets_per_day.toFixed(1) + ' </strong>tweets/day</li></ul></dd></dl></div><dl class="list_extras"><dt>about</dt><dd><ul>' + html_about + '</ul></dd></dl>';

                $("<li/>").addClass("list_item").html(newHTML).appendTo(newUL);
            });

            newUL.appendTo("#trends");

            trendCount++;
        };

        if (trCount == 9) {
            $("#trends ul:first").css("display", "block");
            $("#trends h3 a:first").addClass("on");
        };
    });
};

// Initialise the search page
$(document).ready(function(){
    if ($("#search-results").length > 0) {
        create_search(searchTermPassed, pagePassed);
    };
});

// Generate the search results based on the variable passed in from the page
function create_search (searchTerm, page) {

    var newHTML, lotsoflists, pageNumber, pageStart, array_about, html_about, islast;
    var searchURL = "http://api.tlists.com/api/v2/lists/search.json?&q=" + searchTerm.replace('#','%23') + "&rpp=20&page=" + page + "&callback=?";

	$.getJSON(searchURL, function(data){
		lotsoflists = data.lists;

        total_pages = (data.page_count <= 10) ? data.page_count : 10;
        total_results = ( data.total_count <= 200 ) ? data.total_count : 200;

        $("#num_results_found").html(total_results);

        if (total_results <= data.rpp) {
            $(".pagination").css('display', 'none');
        }

        if (total_results > 0) {

            $.each(lotsoflists, function(i, item) {
                array_about = item.talks_about.split(",");
                html_about = "";
                $.each(array_about, function(i, item) {
                    islast = (i == array_about.length-1 ? " class='last'" : "");
                    html_about = html_about + "<li" + islast + ">" + item + "</li>";
                });
                newHTML = '<div class="panel white rounded3 col_one left" ' + ( i%4 == 3 ? 'style="margin-right:0px"' : '' ) + '><ul><li><div class="cf"><a href="/list' + item.uri + '/' + item.id + '/#directory" class="img-link"><img src="' + item.user.profile_image_url + '" alt="" /></a><dl><dt><a href="/list' + item.uri + '/' + item.id + '/#directory">' + item.name + '</a></dt><dd><ul class="list_stats"><li><strong>' + item.member_count + ' </strong>following</li><li><strong>' + item.subscriber_count + ' </strong>followers</li><li><strong>' + item.tweets_per_day.toFixed(1) + ' </strong>tweets/day</li></ul></dd></dl></div><dl class="list_extras"><dt>about</dt><dd><ul>' + html_about + '</ul></dd></dl><p class="buttons"><img src="/assets/directory/AddTwitterListSmall.png"' + ' class="addtwitterlistsmall" id="import:' + item.user.screen_name + ':' + item.id + '" /></p></li></ul></div>';
                $("<li/>").addClass("search_list_item").html(newHTML).appendTo("#search-results ul.list_info");
            });

            $(".addtwitterlistsmall").each(function() {
                $(this).click(function() {
                    var curr = $(this);
                    $(this).attr("src", "/assets/directory/AddTwitterListSmall-Adding.png");
                    var parts = this.id.split(':');
                    var list_sn = parts[1];
                    var list_id = parts[2];
                    $.post(
                        "/list-subscribe/" + list_sn + "/" + list_id + "/",
                        {'a' : 'b'},
                        function(response) {
                            if (response == 'success') {
                                curr.attr("src", "/assets/directory/AddTwitterListSmall-Added.png");

                            } else if (response == 'begin_auth') {
                                window.location = '/twitter_auth';
                            } else {
                                curr.attr("src", "/assets/directory/AddTwitterListSmall-Error.png");
                            }
                            curr.unbind('click', curr.data('events').click[0]);
                        },
                        "text"
                        );

                    });
                });

        	for (o=1; o <= total_pages; o++) {
        	    item_start = ((o-1) * data.rpp) + 1;
        	    item_finish = ((data.rpp*o) > total_results) ? total_results : (data.rpp*o);
        	    $("<li/>").attr("class", "page"+o).html("<a href='/search/" + searchTerm + "/" + o + "/'>" + item_start + "-" + item_finish + "</a>").appendTo(".pagination ol");
        	};

        	// Make the page number bold by adding the 'on' classs
        	$(".page" + page).addClass("on");
        	var userAgent = navigator.userAgent.toLowerCase();
        	if (userAgent.indexOf('mac') != -1) {
        	    $(".pagination .all-pages ol li").css("padding-top", "3px");
        	};

            // Add an onclick event to the links so that it will go to the right page
        	$(".pagination a").click(function (){
        	    searchArray=this.href.split("/");
        	    changePage(searchTerm, searchArray[5]);
        	    return false;
        	});
        } else {
            $("<li/>").html("Your search for \"" + searchTerm + "\" has returned no results. Try a different search term or search using the <a href='/#directory' title=''>taxonomy</a>.").appendTo("#search-results ul.list_info");
        };

	});

};

function changePage (searchTerm, newPageNum) {
    if ($("#search-results").length > 0) {
        var newHTML, lotsoflists;
        var searchURL = "http://api.tlists.com/api/v2/lists/search.json?&q=" + searchTerm.replace('#','%23') + "&rpp=20&page=" + newPageNum + "&callback=?";

        $("#search-results ul").html("");
    	$(".pagination .all-pages li").removeClass("on");

    	$(".page" + newPageNum).addClass("on");


    	$.getJSON(searchURL, function(data){
    		lotsoflists = data.lists;

            $.each(lotsoflists, function(i, item) {
                array_about = item.talks_about.split(",");
                html_about = "";
                $.each(array_about, function(i, item) {
                    islast = (i == array_about.length-1 ? " class='last'" : "");
                    html_about = html_about + "<li" + islast + ">" + item + "</li>";
                });
                newHTML = '<div class="panel white rounded3 col_one left" ' + ( i%4 == 3 ? 'style="margin-right:0px"' : '' ) + '><ul><li><div class="cf"><a href="/list' + item.uri + '/' + item.id + '/#directory" class="img-link"><img src="' + item.user.profile_image_url + '" alt="" /></a><dl><dt><a href="/list' + item.uri + '/' + item.id + '/#directory">' + item.name + '</a></dt><dd><ul class="list_stats"><li><strong>' + item.member_count + ' </strong>following</li><li><strong>' + item.subscriber_count + ' </strong>followers</li><li><strong>' + item.tweets_per_day.toFixed(1) + ' </strong>tweets/day</li></ul></dd></dl></div><dl class="list_extras"><dt>about</dt><dd><ul>' + html_about + '</ul></dd></dl><p class="buttons"><img src="/assets/directory/AddTwitterListSmall.png"' + ' class="addtwitterlistsmall" id="import:' + item.user.screen_name + ':' + item.id + '" /></p></li></ul></div>';
                $("<li/>").addClass("search_list_item").html(newHTML).appendTo("#search-results ul.list_info");
            });

    $(".addtwitterlistsmall").each(function() {
            $(this).click(function() {
                var curr = $(this);
                $(this).attr("src", "/assets/directory/AddTwitterListSmall-Adding.png");
                var parts = this.id.split(':');
                var list_sn = parts[1];
                var list_id = parts[2];
                $.post(
                    "/list-subscribe/" + list_sn + "/" + list_id + "/",
                    {'a' : 'b'},
                    function(response) {
                        if (response == 'success') {
                            curr.attr("src", "/assets/directory/AddTwitterListSmall-Added.png");

                        } else if (response == 'begin_auth') {
                            window.location = '/twitter_auth';
                        } else {
                            curr.attr("src", "/assets/directory/AddTwitterListSmall-Error.png");
                        }
                        curr.unbind('click', curr.data('events').click[0]);
                    },
                    "text"
                    );

                });
            });
    	});

    };
}


// Initialise the list details page
$(document).ready(function(){
    if ($("#list-detail").length > 0) {
        create_listpage(userIDpassed);
    };
});

// Generate the list details page
function create_listpage(userID) {
    var newHTML, searchString;
    var listURL = "http://api.tlists.com/api/v2/" + userID + ".json?callback=?";

	$.getJSON(listURL, function(data){

        change_members(userID, 20, 1, 1);

		if ( data.wordcloud != "" ) {
			var talks = data.wordcloud.split(",");
			var highSize = eval(talks[0].substring(talks[0].indexOf(":")+1));
			talks.sort(randOrd);
			$.each(talks, function(i, item) {
				var itemPair = item.split(":");
				itemSize = "font-size:" + (2 * (eval(itemPair[1])/highSize) + 0.5) + "em";
				$("<span/>").attr("class", "clouditem").attr("style", itemSize).html("<a href='/search/" + itemPair[0].replace('#','%23') + "/#directory' title='Search for lists containing \"" + itemPair[0] + "\"'>" + itemPair[0] + "</a> ").appendTo("#cloud p");
			});
		} else {
			$("<span/>").attr("class", "clouditem").html("We are in the process of creating a word cloud for this list.").appendTo("#cloud p");
		};

		$(".list_name").text(data.name);
    	$("#list_screenname").text(data.full_name);
    	$("#list_creator").text(data.user.name);
    	$(".list_creator_url").attr("href", "/user/" + data.user.screen_name + "/#directory");
    	( data.description == "" ) ? $("dl.description").css('display', 'none') : $("dl.description dd").html(data.description);
    	$("#twitter_user").text("@" + data.user.screen_name);
    	$("#twitter_user_url").attr("href", "http://www.twitter.com/" + data.user.screen_name + "/");

    	$("#list_keywords").text(data.talks_about.replace( new RegExp(',','g'), ', ' ));
    	$("#list_avatar").attr('src', data.user.profile_image_url);
    	$("#list_num_subscribed").text(data.subscriber_count);
		if ( data.tweets_per_day != 0 ) {
			$("#list_tweets_per_day").text(data.tweets_per_day.toFixed(1));
		} else {
			$("#list_tweets_per_day").text("N/A");
		};
    	$(".list_num_members").text(data.member_count);

    	$("div#comment_form p label").text("Post a comment:");

	});
};

function change_members(userID, memberspp, page, initialise) {
    var item_start, item_finish, newHTML;
    var memberURL = "http://api.tlists.com/api/v2/" + userID + "/members.json?rpp=" + memberspp + "&page=" + page + "&callback=?";

    $.getJSON(memberURL, function(member_data){
		// SS: Bug in the TList API - sometimes the members.json returns no members - discussed with Ken@Tlists - 7/1/2010
		if ( member_data.total_count > 0 ) {
			membersList = member_data.users;
			$.each(membersList, function(i, item) {
				newHTML = "<img  width='49' height='49' src='" + item.profile_image_url + "' alt='" + item.name + "' title='" + item.name + "'>";
				$("<li/>").html(newHTML).click(
					function () {
						newHTML = "<ul><li><div class='cf'><a href='/user/" + item.screen_name + "/#directory' class='img-link'><img src='" + item.profile_image_url + "' alt'' /></a><dl><dt><a href='/user/" + item.screen_name + "/#directory'>" + item.name + "</a></dt><dd><ul class='list_stats'><li><strong>" + item.friends_count + " </strong>friends</li><li><strong>" + item.followers_count + " </strong>followers</li><li><strong>" + item.tweets_per_day.toFixed(1) + " </strong>tweets/day</li></ul></dd></dl></div>    <dl class='list_extras'><dt>bio</dt><dd>" + item.description + "</dd></dl></li></ul>";

						$("#members_profile").html(newHTML);
						$("#members_profile").css("visibility", "visible");
						$(this).css("cursor", "pointer");
					}
				).appendTo("#members ul#members_images");
			});

			/* Set upt the pagination on the list members section */
			if (initialise == 1) {

				total_pages = member_data.page_count;
				total_results = member_data.total_count;
				first_member = member_data.users[0];

				if (total_results <= 20) {
					$(".pagination").css('display', 'none');
				} else {
					$("#members ul#members_images").addClass("height_fix");
				};

				for (o=1; o <= total_pages; o++) {
					item_start = ((o-1) * memberspp) + 1;
					item_finish = ((memberspp*o) > total_results) ? total_results : (memberspp*o);
					$("<li/>").attr("class", "page"+o).appendTo(".pagination ol");
					$("<a/>").attr('href','javascript:void(0);').attr('rel', o).html(item_start + '-' + item_finish).click(function (){
						$("#members ul").html('');
						change_members(userID, 20, $(this).attr('rel'), 0);
						$(".pagination .all-pages li").removeClass("on");
						$(this).parent().addClass("on");
						return false;
					}).appendTo (".pagination ol li.page"+o);
				};

				// Make the page number bold by adding the 'on' classs
				$(".page" + page).addClass("on");

				// Add the user information for the first member of a list
				newHTML = "<ul><li><div class='cf'><a href='/user/" + member_data.users[0].screen_name + "/#directory' class='img-link'><img src='" + member_data.users[0].profile_image_url + "' alt'' /></a><dl><dt><a href='/user/" + member_data.users[0].screen_name + "/#directory'>" + member_data.users[0].name + "</a></dt><dd><ul class='list_stats'><li><strong>" + member_data.users[0].friends_count + " </strong>friends</li><li><strong>" + member_data.users[0].followers_count + " </strong>followers</li><li><strong>" + member_data.users[0].tweets_per_day.toFixed(1) + " </strong>tweets/day</li></ul></dd></dl></div><dl class='list_extras'><dt>bio</dt><dd>" + member_data.users[0].description + "</dd></dl></li></ul>";

				$("#members_profile").html(newHTML);
				$("#members_profile").css("visibility", "visible");
			}
		} else {
			$("#members").css('display', 'none');
		};
    });

};


// Generate the user details page
$(document).ready(function(){
    if ($("#userdetail").length > 0) {
        create_userdetail(userIDpassed);
    };
});

function create_userdetail(userID) {

    var newHTML, searchString, html_about, islast;
    var userURL = "http://api.tlists.com/api/v2/" + userID + ".json?callback=?";
    var createdURL = "http://api.tlists.com/api/v2/" + userID + "/lists.json?callback=?";
    var membershipURL = "http://api.tlists.com/api/v2/" + userID + "/lists/memberships.json?callback=?";

	$.getJSON(userURL, function(data){

		if ( data.wordcloud != "" ) {
			/* Word Cloud code */
			var talks = data.wordcloud.split(",");
			var highSize = eval(talks[0].substring(talks[0].indexOf(":")+1));
			talks.sort(randOrd);
			$.each(talks, function(i, item) {
				var itemPair = item.split(":");
				itemSize = "font-size:" + (2 * (eval(itemPair[1])/highSize) + 0.5) + "em";
				$("<span/>").attr("class", "clouditem").attr("style", itemSize).html("<a href='/search/" + itemPair[0].replace('#','%23') + "/#directory' title='Search for lists containing \"" + itemPair[0] + "\"'>" + itemPair[0] + "</a> ").appendTo("#cloud p");
			});
			/* End Word Cloud code */
		} else {
			$("<span/>").attr("class", "clouditem").html("We are in the process of creating a word cloud for this creator.").appendTo("#cloud p");
		};

		/* Talks about code for the user/curator */
		html_about = "";
        if (data.talks_about != "") {
            array_about = data.talks_about.split(",");
            html_about = "<dl class='list_extras'><dt>about</dt><dd><ul>";
            $.each(array_about, function(i, item) {
                islast = (i == array_about.length-1 ? " class='last'" : "");
                html_about = html_about + "<li" + islast + ">" + item + "</li>";
            });
            html_about = html_about + "</ul></dd></dl>";
            $("#userdetail .left_col").append(html_about);
        };		
		
        /* End Talks about code */

    	$(".userdetail_name").html(data.name);
    	$("#userdetail_screenname").html("<a href='http://www.twitter.com/" + data.screen_name + "' target='_blank'>@" + data.screen_name + "</a>");

    	$("#userdetail_keywords").text(data.talks_about.replace( new RegExp(',','g'), ', ' ));
    	$("#userdetail_avatar").attr('src', data.profile_image_url);
    	$("#userdetail_tweets_per_day").text(data.tweets_per_day.toFixed(1));
    	$("#tweet_ratio").text((data.friends_count/data.followers_count).toFixed(2));
    	$("#num_following").text(data.friends_count);
    	$("#num_followers").text(data.followers_count);

	});

	$.getJSON(createdURL, function(data_created){
		lotsoflists = data_created.lists;

        $.each(lotsoflists, function(i, item) {
            html_about = "";
            if (item.talks_about != "") {
                array_about = item.talks_about.split(",");
                html_about = "<dl class='list_extras'><dt>about</dt><dd><ul>";
                $.each(array_about, function(i, item) {
                    islast = (i == array_about.length-1 ? " class='last'" : "");
                    html_about = html_about + "<li" + islast + ">" + item + "</li>";
                });
                html_about = html_about + "</ul></dd></dl>";
            };

            newHTML = "<div class='cf'><a href='/list" + item.uri + "/" + item.id + "/#directory' class='img-link'><img src='" + item.user.profile_image_url + "' alt='' /></a><dl><dt><a href='/list" + item.uri + "/" + item.id + "/#directory'>" + item.name + "</a><span class='creator'>By <a href='/user/" + item.user.screen_name + "/#directory'>" + item.user.name + "</a></span></dt><dd><ul class='list_stats'><li><strong>" + item.member_count + " </strong>following </li><li><strong>" + item.subscriber_count + " </strong>followers</li><li><strong>" + item.tweets_per_day.toFixed(1) + " </strong>tweets/day</li></ul></dd></dl></div>" + html_about + "<dl class='list_extras'><dt>&nbsp;</dt><dd><img src='/assets/directory/AddTwitterList.png' class='addtwitterlistuser'" + " id='import:" + item.user.screen_name + ":" + item.id + "' /></dd></dl>";
            $("<li/>").html(newHTML).appendTo("#userdetail_created ul.list_info");


        });
    $(".addtwitterlistuser").each(function() {
            $(this).click(function() {
                var curr = $(this);
                $(this).attr("src", "/assets/directory/AddTwitterList-Adding.png");
                var parts = this.id.split(':');
                var list_sn = parts[1];
                var list_id = parts[2];
                $.post(
                    "/list-subscribe/" + list_sn + "/" + list_id + "/",
                    {'a' : 'b'},
                    function(response) {
                        if (response == 'success') {
                            curr.attr("src", "/assets/directory/AddTwitterList-Added.png");

                        } else if (response == 'begin_auth') {
                            window.location = '/twitter_auth';
                        } else {
                            curr.attr("src", "/assets/directory/AddTwitterList-Error.png");
                        }
                        curr.unbind('click', curr.data('events').click[0]);
                    },
                    "text"
                    );

                });
            });

        $("#num_created").text(data_created.total_count);
	});

	$.getJSON(membershipURL, function(data_membership){
		lotsoflists = data_membership.lists;

        $.each(lotsoflists, function(i, item) {
            html_about = "";
            if (item.talks_about != "") {
                array_about = item.talks_about.split(",");
                html_about = "<dl class='list_extras'><dt>about</dt><dd><ul>";
                $.each(array_about, function(i, item) {
                    islast = (i == array_about.length-1 ? " class='last'" : "");
                    html_about = html_about + "<li" + islast + ">" + item + "</li>";
                });
                html_about = html_about + "</ul></dd></dl>";
            };

            newHTML = "<div class='cf'><a href='/list" + item.uri + "/" + item.id + "/#directory' class='img-link'><img src='" + item.user.profile_image_url + "' alt='' /></a><dl><dt><a href='/list" + item.uri + "/" + item.id + "/#directory'>" + item.name + "</a><span class='creator'>By <a href='/user/" + item.user.screen_name + "/#directory'>" + item.user.name + "</a></span></dt><dd><ul class='list_stats'><li><strong>" + item.member_count + " </strong>following</li><li><strong>" + item.subscriber_count + " </strong>followers</li><li><strong>" + item.tweets_per_day.toFixed(1) + " </strong>tweets/day</li></ul></dd></dl></div>" + html_about + "<dl class='list_extras'><dt>&nbsp;</dt><dd><img src='/assets/directory/AddTwitterList.png' class='addtwitterlistmember'" + " id='import:" + item.user.screen_name + ":" + item.id + "' /></dd></dl>";
            $("<li/>").html(newHTML).appendTo("#userdetail_membership ul.list_info");
        });

    $(".addtwitterlistmember").each(function() {
            $(this).click(function() {
                var curr = $(this);
                $(this).attr("src", "/assets/directory/AddTwitterList-Adding.png");
                var parts = this.id.split(':');
                var list_sn = parts[1];
                var list_id = parts[2];
                $.post(
                    "/list-subscribe/" + list_sn + "/" + list_id + "/",
                    {'a' : 'b'},
                    function(response) {
                        if (response == 'success') {
                            curr.attr("src", "/assets/directory/AddTwitterList-Added.png");

                        } else if (response == 'begin_auth') {
                            window.location = '/twitter_auth';
                        } else {
                            curr.attr("src", "/assets/directory/AddTwitterList-Error.png");
                        }
                        curr.unbind('click', curr.data('events').click[0]);
                    },
                    "text"
                    );

                });
            });
        $("#num_membership").text(data_membership.total_count);
	});

};

// Generate the Taxonomy page
$(document).ready(function(){
    if ($("#taxonomy-results").length > 0) {
        create_taxonomy (catPassed, subPassed);
    };
});

function create_taxonomy (catTerm, subTerm) {

    var newHTML, subcategoryURL, taxLists, lotsoflists, activeLink, clickEvent, columnSizeClass;
    var catInfo = "http://api.tlists.com/api/v2/categories/all/" + catTerm + ".json?&callback=?";
    var catChildren = "http://api.tlists.com/api/v2/categories/all/" + catTerm + "/children.json?rpp=30&callback=?";

    // Code to inject the Winter Olympics panel into the Taxonomy page 
    if ( subPassed == "winter-olympics" ) {
        $("#taxonomy-results .right_col ul.list_info").append('<li class="right"><iframe src ="http://www.vancouver2010.com/widgets/medals-widget/" scrolling="no" frameborder="0"><p><a href="http://www.vancouver2010.com/olympic-medals/" title="Vancouver 2010 Medals">View the vancouver2010.com medals\' table</a></p></iframe></li>');
    };

    if (subTerm != "") {
        taxLists = "http://api.tlists.com/api/v2/categories/all/" + catTerm + "/" + subTerm + "/lists.json?rpp=15&callback=?";
        activeLink = "";
    } else {
        taxLists = "http://api.tlists.com/api/v2/categories/all/" + catTerm + "/lists.json?rpp=15&callback=?";
        activeLink = " class='active'";
    };

    $.getJSON(catInfo, function(data_catInfo){
        $("#taxonomy-results .left_col h3").html("<a href='/taxonomy/" + data_catInfo.slug + "/#directory'" + activeLink + ">" + data_catInfo.name + "</a>");
        if (subTerm == "") {
            $("#taxonomy-results .right_col h4").html(data_catInfo.name );
        };
    });

    $.getJSON(catChildren, function(data_catChildren){
        $.each(data_catChildren.categories, function(i, subChild) {
            if (subChild.slug == subTerm) {
                activeLink = "active";
        		$("#taxonomy-results .right_col h4").html(subChild.name);
            } else {
                activeLink = "";
            };
            $("<li/>").addClass(activeLink).html("<a href='/taxonomy/" + catTerm + "/" + subChild.slug + "/#directory'>" + subChild.name + "</a><span class='tax_count'>" + ((subChild.list_count <= 150) ? subChild.list_count : 150) + "</span>").appendTo("#taxonomy-results .left_col ul");
        });
    });

    $.getJSON(taxLists, function(data){
    	lotsoflists = data.lists;

        $.each(lotsoflists, function(i, item) {
            array_about = item.talks_about.split(",");
            html_about = "";
            $.each(array_about, function(i, item) {
                islast = (i == array_about.length-1 ? " class='last'" : "");
                html_about = html_about + "<li" + islast + ">" + item + "</li>";
            });
            
            if ( (i < 3) && subPassed == "winter-olympics" ) {
                columnSizeClass = "col_two";
            } else {
                columnSizeClass = "col_one";
            }; 
            
            newHTML = '<div class="panel white rounded3 ' + columnSizeClass + ' left" ' + ( i%3 == 2 ? 'style="margin-right:0px"' : '' ) + '><ul><li><div class="cf"><a href="/list' + item.uri + '/' + item.id + '/#directory" class="img-link"><img src="' + item.user.profile_image_url + '" alt="" /></a><dl><dt><a href="/list' + item.uri + '/' + item.id + '/#directory">' + item.name + '</a></dt><dd><ul class="list_stats"><li><strong>' + item.member_count + ' </strong>following</li><li><strong>' + item.subscriber_count + ' </strong>followers</li><li><strong>' + item.tweets_per_day.toFixed(1) + ' </strong>tweets/day</li></ul></dd></dl></div><dl class="list_extras"><dt>about</dt><dd><ul>' + html_about + '</ul></dd></dl><p class="buttons"><img src="/assets/directory/AddTwitterListSmall.png"' + ' class="addtwitterlistsmall" id="import:' + item.user.screen_name + ':' + item.id + '" /></p></li></ul></div>';

            $("<li/>").addClass("tax_list_item").html(newHTML).appendTo("#taxonomy-results .right_col ul.list_info");
        });
        
        $(".addtwitterlistsmall").each(function() {
            $(this).click(function() {
                var curr = $(this);
                $(this).attr("src", "/assets/directory/AddTwitterListSmall-Adding.png");
                var parts = this.id.split(':');
                var list_sn = parts[1];
                var list_id = parts[2];
                $.post(
                    "/list-subscribe/" + list_sn + "/" + list_id + "/",
                    {'a' : 'b'},
                    function(response) {
                        if (response == 'success') {
                            curr.attr("src", "/assets/directory/AddTwitterListSmall-Added.png");

                        } else if (response == 'begin_auth') {
                            window.location = '/twitter_auth';
                        } else {
                            curr.attr("src", "/assets/directory/AddTwitterListSmall-Error.png");
                        }
                        curr.unbind('click', curr.data('events').click[0]);
                    },
                    "text"
                    );

                });
            });
        total_pages = (data.page_count <= 10) ? data.page_count : 10;
        total_results = ( data.total_count <= 150 ) ? data.total_count : 150;

        if (total_results <= data.rpp) {
            $(".pagination").css('display', 'none');
        }

    	for (o=1; o <= total_pages; o++) {
    	    item_start = ((o-1) * data.rpp) + 1;
    	    item_finish = ((data.rpp*o) > total_results) ? total_results : (data.rpp*o);
    	    $("<li/>").attr("class", "page"+o).html("<a href='/taxonomy/" + catTerm + "/" + subTerm + "/" + o + "/'>" + item_start + "-" + item_finish + "</a>").appendTo(".pagination ol");
    	};

    	// Make the page number bold by adding the 'on' classs
    	$(".page1").addClass("on");
    	var userAgent = navigator.userAgent.toLowerCase();
    	if (userAgent.indexOf('mac') != -1) {
    	    $(".pagination .all-pages ol li").css("padding-top", "3px");
    	};


        // Add an onclick event to the links so that it will go to the right page
    	$(".pagination a").click(function (){
    	    searchArray=this.href.split("/");
    	    changeTaxonomyPage(catTerm, subTerm, searchArray[6]);
    	    return false;
    	});

    });

}; // End Create Taxonomy

function changeTaxonomyPage (catTerm, subTerm, newPageNum) {
    if ($("#taxonomy-results").length > 0) {
        var newHTML, lotsoflists;
        
        if (subTerm != "") {
            taxLists = "http://api.tlists.com/api/v2/categories/all/" + catTerm + "/" + subTerm + "/lists.json?rpp=15&page=" + newPageNum + "&callback=?";
        } else {
            taxLists = "http://api.tlists.com/api/v2/categories/all/" + catTerm + "/lists.json?rpp=15&callback=?";
        };

        $("#taxonomy-results .right_col ul").html("");

        // Code to inject the Winter Olympics panel into the Taxonomy page 
        if ( subTerm == "winter-olympics" && parseInt(newPageNum) == 1 ) {
            $("#taxonomy-results .right_col ul.list_info").append('<li class="right"><iframe src ="http://www.vancouver2010.com/widgets/medals-widget/" scrolling="no" frameborder="0"><p><a href="http://www.vancouver2010.com/olympic-medals/" title="Vancouver 2010 Medals">View the vancouver2010.com medals\' table</a></p></iframe></li>');
        };

    	$(".pagination .all-pages li").removeClass("on");

    	$(".page" + newPageNum).addClass("on");


    	$.getJSON(taxLists, function(data){
    		lotsoflists = data.lists;

            $.each(lotsoflists, function(i, item) {
                array_about = item.talks_about.split(",");
                html_about = "";
                $.each(array_about, function(i, item) {
                    islast = (i == array_about.length-1 ? " class='last'" : "");
                    html_about = html_about + "<li" + islast + ">" + item + "</li>";
                });
                
                
                if ( (i < 3) && subTerm == "winter-olympics" && parseInt(newPageNum) == 1 ) {
                    columnSizeClass = "col_two";
                } else {
                    columnSizeClass = "col_one";
                };
                
                newHTML = '<div class="panel white rounded3 ' + columnSizeClass + ' left" ' + ( i%3 == 2 ? 'style="margin-right:0px"' : '' ) + '><ul><li><div class="cf"><a href="/list' + item.uri + '/' + item.id + '/#directory" class="img-link"><img src="' + item.user.profile_image_url + '" alt="" /></a><dl><dt><a href="/list' + item.uri + '/' + item.id + '/#directory">' + item.name + '</a></dt><dd><ul class="list_stats"><li><strong>' + item.member_count + ' </strong>following</li><li><strong>' + item.subscriber_count + ' </strong>followers</li><li><strong>' + item.tweets_per_day.toFixed(1) + ' </strong>tweets/day</li></ul></dd></dl></div><dl class="list_extras"><dt>about</dt><dd><ul>' + html_about + '</ul></dd></dl><p class="buttons"><img src="/assets/directory/AddTwitterListSmall.png"' + ' class="addtwitterlistsmall" id="import:' + item.user.screen_name + ':' + item.id + '" /></p></li></ul></div>';
                $("<li/>").addClass("tax_list_item").html(newHTML).appendTo("#taxonomy-results .right_col ul.list_info");
            });
            $(".addtwitterlistsmall").each(function() {
            $(this).click(function() {
                var curr = $(this);
                $(this).attr("src", "/assets/directory/AddTwitterListSmall-Adding.png");
                var parts = this.id.split(':');
                var list_sn = parts[1];
                var list_id = parts[2];
                $.post(
                    "/list-subscribe/" + list_sn + "/" + list_id + "/",
                    {'a' : 'b'},
                    function(response) {
                        if (response == 'success') {
                            curr.attr("src", "/assets/directory/AddTwitterListSmall-Added.png");

                        } else if (response == 'begin_auth') {
                            window.location = '/twitter_auth';
                        } else {
                            curr.attr("src", "/assets/directory/AddTwitterListSmall-Error.png");
                        }
                        curr.unbind('click', curr.data('events').click[0]);
                    },
                    "text"
                    );

                });
            });

    	});

    };
}


// Random order generator for the Word Cloud
function randOrd(){
    return (Math.round(Math.random())-0.5);
};


// Function to fade in and fade out the profile panel in the navigation bar
$(document).ready(function(){
    if ($("#login_name").length > 0) {
        $("#login_name").mouseover( function () {
            $("#profile-panel").fadeIn("slow");
        });
        $("#profile-panel").mouseleave( function () {
            $("#profile-panel").fadeOut("slow");
        });
        $("#profile-panel").mouseenter( function () {
            $("#profile-panel").fadeIn("medium");
        });
    };
});
