//
// classtree.js
// @author bmccane@maxbaud.net
//
// $Id: classtree.js,v 1.1 2009/01/16 09:24:21 bmccane Exp $
//
// $Log: classtree.js,v $
// Revision 1.1  2009/01/16 09:24:21  bmccane
// Add scripts file for Ajax site to CVS
//
// Revision 1.3  2007/07/23 02:10:06  bmccane
// Changes to objectify ClassTree
//
// Revision 1.2  2007/07/20 20:41:21  bmccane
// latest and greatest
//
// Revision 1.1  2007/04/25 14:33:04  bmccane
// logic for handling dynamic classTree
//

(function() {
  var ClassTree = new Object() ;
  
  ClassTree.cTreeClickObject = { node: null, func: null } ;
  ClassTree.name = "";

  ClassTree.failureHandler = function() {
    var obj = this ;
    setTimeout(function() { obj.startRequest(null); }, 3000) ;
  };
  
  ClassTree.successHandler = function(o) {
    var node = ClassTree.cTreeClickObject.node;
    var root = o.responseXML.documentElement;
    if (root === null) { return ; }

    var rows = root.getElementsByTagName("row");
    if (rows !== undefined) {
      for (var i = 0; i < rows.length; i = i + 1)
      {
    	var myobj = {label:"", id:0, images:0, groupname:""};
    	myobj.label = rows[i].getAttribute("title");
		myobj.id = rows[i].getAttribute("classification_id");
		myobj.images = rows[i].getAttribute("images");
		myobj.groupname = rows[i].getAttribute("groupname");

		if (1 == rows[i].getAttribute("children")) {
		  myobj.label = myobj.label + "&nbsp;(" + myobj.images + ")";
		  var tmpNode = new YAHOO.widget.MenuNode(myobj, node, false, true);
		  tmpNode.setDynamicLoad(this.beginTransfer);
		}
		else
		{
		  var html = "<a href=\"http://" + myobj.groupname + "." + this.domain + "/\" onclick=\"javascript:new groupLoader(mainLayout, '"+myobj.groupname+"'); return false;\">" + myobj.label + "</a>&nbsp;(" + myobj.images + ")";
		  new YAHOO.widget.HTMLNode(html, node, false, true);
		}
      }
    }
    ClassTree.cTreeClickObject.func();
  };

  ClassTree.beginTransfer = function(oNode, fnLoadComplete)
  {
    ClassTree.cTreeClickObject.node = oNode ;
    ClassTree.cTreeClickObject.func = fnLoadComplete ;

    var sUrl = '/XHR/classtree.xml.pl' +
	       '?parent='+oNode.data.id ;
    var result = YAHOO.util.Connect.asyncRequest('GET', sUrl, ClassTree.ctCallBack) ;
  };

  ClassTree.startRequest = function (name)
  {
    if (name !== null && name !== undefined)
    {
      this.name = name ;
      this.domain = location.hostname ;
      if (this.domain.substring(0,4) === "www.") {
    	  this.domain = this.domain.substring(4);
      }
    }

    var hTree = new YAHOO.widget.TreeView(this.name);
    var root = hTree.getRoot();
    var myobj = { label:"", id:0, images:0, groupname:""};
    var tmpNode = new YAHOO.widget.MenuNode(myobj, root, true, true) ;
    tmpNode.setDynamicLoad(this.beginTransfer) ;

    hTree.draw() ;
  };

  ClassTree.ctCallBack =
  {
    success:ClassTree.successHandler,
    failure:ClassTree.failureHandler,
    scope:ClassTree,
    timeout: 15000
  } ;
  
  ClassTree.startRequest('classTree');
})() ;

