//$Id: row.js,v 1.2 2009/04/12 13:45:03 HARIKRISHNAN Exp $

function buildTree(oResponse) 
	{
	   var currentIconMode;
	   //create a new tree:
	   var tree = new YAHOO.widget.TreeView("leftcol");
	   
	   //turn dynamic loading on for entire tree:
   	   tree.setDynamicLoad(loadNodeData, currentIconMode);
	   
	   //get root node for tree:
	   var root = tree.getRoot();
	   
		for(var i in oResponse.query.categorymembers)
		{
			var rivername = oResponse.query.categorymembers[i]['title'];
			if(rivername == null)
			{
				continue;
			}
			if(rivername.indexOf('List') != -1)
			{
				continue;
			}
					//begin adding children
			var tmpNode = new YAHOO.widget.TextNode(rivername, tree.getRoot(), false);
			
			if(rivername.indexOf('Category') == -1)
			{
				tmpNode.isLeaf = true;
			}
		}
		
		tree.subscribe("clickEvent", findlatlong);
		
		
		//the tree won't show up until you draw (render) it:
		tree.draw();
	}
	
	function findlatlong(event)
	{
		var node = event.node;
		var rivername = node.label;
		if(!node.isLeaf)
		{
			return;
		}
		if(rivername == undefined || rivername == '')
		{
			rivername = "Abdim's Stork";
		}
		if(rivername && rivername !=null && (rivername.indexOf('(') != -1))
		{
			rivername = rivername.substring(0,rivername.indexOf('('));
		}
		
		$('#birdname').html('<h3>' + decodeURI(rivername) + '<h3>');
		$('#wikilink').html('<a href="http://en.wikipedia.org/wiki/' + rivername.replace('/ /g','_') 
							+ '" target="_blank">Wikipedia<img border="0" src="/common_imports/images/external.png"/></a>');
		$('#maclib').html('<a href="http://macaulaylibrary.org/search.do?searchTerm=' + rivername.replace('/ /g','_') 
							+ '" target="_blank">Audio/Video@Macaulay Library<img border="0" src="/common_imports/images/external.png"/></a>');							
									
		rivername = encodeURIComponent(rivername);							
		
		    try {
                YAHOO.util.History.navigate("navbar", rivername);
            } catch (e) {
                loadSection(section);
            }
	}
	
	function jsonFlickrApi(rsp){
		var photodiv = $('#photodiv');
		photodiv.empty();
		for (var i=0; i<rsp.photos.photo.length; i++){
			var blog = rsp.photos.photo[i];
			var div = $('<div></div>');
			var hr = $('<img>');
			hr.attr('src',"http://farm"+blog.farm+".static.flickr.com/"+blog.server+"/"+blog.id+"_"+blog.secret+"_m.jpg");
			var link = $('<a></a>')
			link.attr('href',"http://farm"+blog.farm+".static.flickr.com/"+blog.server+"/"+blog.id+"_"+blog.secret+"_z.jpg");
			link.attr('rel',"lightbox-myGroup").attr('title',blog.title).append(hr);
			div.addClass("imagediv").append(link);
			photodiv.append(div);
		}
		$('#photodiv a').lightbox();
	}
	
	function loadNodeData(node, fnLoadComplete)  {
		var nodeLabel = encodeURI(node.label); 
		var sUrl = "http://en.wikipedia.org/w/api.php?callback=?&action=query&format=json&cmtitle=" + (nodeLabel) + "&list=categorymembers&cmlimit=100&cmtype=subcat|page";
        //if our XHR call is successful, we want to make use
        //of the returned data and create child nodes.
        var success = function(oResponse) {
	   		var currentIconMode;
	   		
			for(var i in oResponse.query.categorymembers)
			{
				var rivername = oResponse.query.categorymembers[i]['title'];
				if(rivername == null)
				{
					continue;
				}
				if(rivername.indexOf('List') != -1)
				{
					continue;
				}
	   		
	   			var tempNode = new YAHOO.widget.TextNode(rivername, node, false)
	   			if(rivername.indexOf('Category') == -1)
				{
					tempNode.isLeaf = true;
				}
			}
	   		fnLoadComplete();
        };
		jQuery.getJSON( sUrl, success);
	}
	
	var searchOptions= {
			'method':'flickr.photos.search',
			'format':'json',
			'api_key':'86a1abd84fbca52ff8dd3054c64be66e',
			'content_type':1,
			'media':'photos',
			'in_gallery':true,
			'safe_search':1,
			'per_page':10,
			'sort':'relevance'
	};


	function loadSection(section) {
		$('#birdname').html('<h3>' + decodeURI(section) + '<h3>');
		$('#wikilink').html('<a href="http://en.wikipedia.org/wiki/' + section.replace('/ /g','_') 
							+ '" target="_blank">Wikipedia<img border="0" src="/common_imports/images/external.png"/></a>');
		$('#maclib').html('<a href="http://macaulaylibrary.org/search.do?searchTerm=' + section.replace('/ /g','_') 
							+ '" target="_blank">Audio/Video@Macaulay Library<img border="0" src="/common_imports/images/external.png"/></a>');
		searchOptions.tags = decodeURI(section);
		jQuery.getJSON("http://api.flickr.com/services/rest/?jsoncallback=?", searchOptions, jsonFlickrApi);
	}
	
	
	var html, bookmarkedSection, querySection, initSection;
	
	bookmarkedSection = YAHOO.util.History.getBookmarkedState("navbar");
    querySection = YAHOO.util.History.getQueryStringParameter("section");
    initSection = bookmarkedSection || querySection || encodeURIComponent("Abdim's Stork");
    
    YAHOO.util.History.register("navbar", initSection, function (state) {
        // This is called after calling YAHOO.util.History.navigate,
        // or after the user has trigerred the back/forward button.
        // We cannot distinguish between these two situations.
        loadSection(state);
    });
    
    function initializeNavigationBar() {
    	currentSection = YAHOO.util.History.getCurrentState("navbar");
    	loadSection(currentSection);
    }
    
    YAHOO.util.History.onReady(function () {
    	initializeNavigationBar();
	});
    
    
	
	// Initialize the browser history management library.
	try {
	    YAHOO.util.History.initialize("yui-history-field", "yui-history-iframe");
	} catch (e) {
	    // The only exception that gets thrown here is when the browser is
	    // not supported (Opera, or not A-grade) Degrade gracefully.
	    // Note that we have two options here to degrade gracefully:
	    //   1) Call initializeNavigationBar. The page will use Ajax/DHTML,
	    //      but the back/forward buttons will not work.
	    //   2) Initialize our module. The page will not use Ajax/DHTML,
	    //      but the back/forward buttons will work. This is what we
	    //      chose to do here:
	    loadSection(initSection);
	}
