/*create namespace for Developers:*/
YAHOO.namespace("example");

/* Using Crockford's "Module Pattern": */
YAHOO.example.treeExample = function() {

    var tree, currentIconMode;
    var sResponse;
	
	var valid;
	var loadtree=0;
	
	var nodoClicked;
    var EDIT_IMAGE = '<img border="0" src="../images/edit.gif">';
    var THIN_LINE = '<img border="0" src="../images/lm.gif">';
// stores the reference to the XMLHttpRequest object
   var xmlHttp = createXmlHttpRequestObject();
   
   	   //	alert("xmlHttp.status = "+ xmlHttp.status+ "  xmlHttp.readyState = "+xmlHttp.readyState);
    GetRoot();

    function changeIconMode() {
        var newVal = parseInt(this.value);
        if (newVal != currentIconMode) {
                   currentIconMode = newVal;
        }
    
    	//buildTree();
	}
	
	function createXmlHttpRequestObject(){
//alert("1");
var req;

	  try {

			   if (window.XMLHttpRequest) {
			   //alert("2");
				  req =  new XMLHttpRequest();
			   } else if (window.ActiveXObject) { 
			     //alert("3");  
				  req =  new ActiveXObject("Microsoft.XMLHTTP");
			   }
			  // 	alert("status = "+ req.status+ "  readyState = "+req.readyState);
			
			   return req;


      } catch (e) {

        alert(e);

      }



			      
		
	}
	
//===========================================================


// executed automatically when a message is received from the server
function handleServerResponse(){
//alert(" handleServerResponse()");
// move forward only if the transaction has completed

//alert("xmlHttp.readyState"+xmlHttp.readyState);
        if (xmlHttp.readyState == 4){
                      // status of 200 indicates the transaction completed successfully
					  
					 // alert("handleServerResponse() xmlHttp.status"+xmlHttp.status);
                      if (xmlHttp.status == 200){
                            // extract the XML retrieved from the server
                           //* var xmlMessage = xmlHttp.responseXML;
        					var jsonExpression = "(" + xmlHttp.responseText + ")";
        					
        					var arbol = eval(jsonExpression);
							var  vienede = arbol.cf;
							var  validr = arbol.valid;
							//alert("arbol.cf="+arbol.cf);
							if (arbol.cf == undefined){
							//alert("NNNN undefined");
							//parent.frames["top"].location.reload();
							}else{
							
							//alert("SSS  defined");
							//alert("vienede= "+vienede+"validr="+validr);
							
							var catalogList = new Array();
							//alert("catalogs.length"+catalogs.length);
							
							if (vienede!="1") { 
								
							//*var catalogs=xmlMessage.getElementsByTagName("catalog");
							var catalogs=arbol.rootItems;
											
										 if (vienede=="4") {/*open clicked node*/
											
											buildClickedNode(catalogs);
											
										 } else if (vienede=="3") {/*root nodes and open nodes*/
										 	buildTree(catalogs);
									
										 }
										 
							
							}//end if viene de
							
							}
						 
			
				
                            
                            return;
                      }else {    // a HTTP status different than 200 signals an error
                  
                            alert("There was a problem accessingthe server: " + xmlHttp.statusText);
                      }
        }
		
//alert("<<<< handleServerResponse()");

}

function getText(el) {
			//alert("getText");
     if (window.ActiveXObject) {
				return el.text;
	} else {
	         return el.textContent;
	}
}
//===============================================================
// make asynchronous HTTP request using the XMLHttpRequest object
// Redirect to another page
//===============================================================
function processRequest(sURL){
//alert("processRequest = ");
		// proceed only if the xmlHttp object isn't busy
		if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0){
				// retrieve the name typed by the user on the form
				xmlHttp.open("GET", sURL, true);
				
				// define the method to handle server responses
				xmlHttp.onreadystatechange = handleServerResponse;
				//alert(sURL);
				
				// make the server request
				xmlHttp.send(null);
				
				//return handleServerResponse();
		}else{ // if the connection is busy, try again after onesecond
				setTimeout("processRequest('" + sURL + "')", 1000);
		}
}

function GetRoot(){
		var sURL = "/baer/servlet/CyberVendor/ajaxtest/getroot/?catId=C14";
		var aStates = processRequest(sURL);
		return aStates;
}

function GetChildRecords(catId,index){
		//var sURL;
		var sURL = "/baer/servlet/CyberVendor/ajaxtest/getchild/?catId="+catId+"&nid="+index;
		//sURL = "treedata.php?Depth=" + iDepth +"&ID=" + DevId;
		// alert ("163 GetChildRecords sURL:" + sURL);
		processRequest(sURL);
}

function GetOpennodes(){
		//var sURL;
		var sURL = "/baer/servlet/CyberVendor/ajaxtest/getopennodes/";
		//sURL = "treedata.php?Depth=" + iDepth +"&ID=" + DevId;
		// alert ("163 GetOpennodes sURL:" + sURL);
		processRequest(sURL);
}

function CloseOpennode(catid){
		//var sURL;
		var sURL = "/baer/servlet/CyberVendor/ajaxtest/closeopennode/?catId="+catid;
		processRequest(sURL);
}

//===============================================================

function loadNodeData(node, fnLoadComplete){
	//alert("node.depth="+node.depth);
	//alert("node.index = "+node.index+" node.expanded = "+node.expanded);
	
	
	//alert("node.index="+node.index);
	iDepth = node.depth; // For Casting
	nodoClicked=node.index;
			GetChildRecords(node.data.id,node.index);
}

function onCollapse(node){
	//alert("node.depth=");
	
	CloseOpennode(node.data.id);
	//alert("node.data.id = "+node.data.id+" node.expanded = "+node.expanded);

}

function onExpand(){
//tree.collapseAll();

}

 //subscribe("collapse", function(node) {alert(node.data.id + " was collapsed");});

function buildOpenNodes(catalogschild,catno) {
	
		
		

	var node =   tree.getNodeByProperty('id',catno);
	//alert("catalogschild.length="+catalogschild.length);
	 for (var i = 0; i < catalogschild.length; i++) {
					
					var catname = catalogschild[i].name;
					var catnumber = catalogschild[i].catno;
					var	myobj = { label: catname, id:"C"+catnumber ,href:"",target:""}; 
					myobj.href= "/baer/servlet/CyberVendor/category/"+myobj.id+"/catalog/?ShowAllGroups=True";
					//myobj.target="center";
					var newNode = new	YAHOO.widget.TextNode(myobj, node, false);
		
		}//ENDfor catalogs
		node.loadComplete();
		tree.draw();


		sResponse = "";
	
}


function buildClickedNode(catalogs) {
	//alert("nodoClicked="+nodoClicked);
	
	//tree.collapseAll();
						 	var node = YAHOO.widget.TreeView.getNode('treeContainerX',nodoClicked);
						 	
						 	//alert(catalogs.length)
						 for (var i = 0; i < catalogs.length; i++) {
									//	var categories=catalogs[i].getElementsByTagName("I");
										
										//var  nid      =getText(catalogs[i].getElementsByTagName("nid").item(0));
									///	var nodosList = new Array(categories.length);
										
										var catname = catalogs[i].name;
										var catnumber = catalogs[i].catno;
										
										//alert("nodosList="+nodosList.length);
										//for (var ii = 0; ii < categories.length; ii++) {
										
												//var cat = categories[ii];
												//var catname = getText(cat.getElementsByTagName("a").item(0));
												//var catnumber = getText(cat.getElementsByTagName("b").item(0));												
												
												var myobj = { label: catname, id:"C"+catnumber ,href:"",target:""}; 
												
												var newNode;
				
												//var obj = listaNodos[i];
												myobj.href= "/baer/servlet/CyberVendor/category/"+myobj.id+"/catalog/?ShowAllGroups=True";		
												//myobj.target="center";
												
												newNode = new	YAHOO.widget.TextNode(myobj, node, false);
												
												

										//}
										
										

						
							
							}//ENDfor catalogs
							
							node.loadComplete();
							 tree.draw();
	
}



function buildTree(catalogs) {

//alert("buildTree");
		//create a new tree:
		tree = new YAHOO.widget.TreeView("treeContainerX");
		var root = tree.getRoot();

		 for (var i = 0; i < catalogs.length; i++) {
										//var categories=catalogs[i].getElementsByTagName("I");
										
										//var  nid      =getText(catalogs[i].getElementsByTagName("nid").item(0));
										//var nodosList = new Array(categories.length);
										
										
										var catname = catalogs[i].name;
										var catnumber = catalogs[i].catno;
										
										//alert("nodosList="+nodosList.length);
										//for (var ii = 0; ii < categories.length; ii++) {
										
												//var cat = categories[ii];
												//var catname = getText(cat.getElementsByTagName("a").item(0));
												//var catnumber = getText(cat.getElementsByTagName("b").item(0));												
												
												var myobj = { label: catname, id:"C"+catnumber ,href:""}; 

												var tmpNode1 = new	YAHOO.widget.MenuNode(myobj, root, false);
												tmpNode1.labelStyle = "ygtvlabelroot";
              									tmpNode1.setDynamicLoad(loadNodeData,currentIconMode);
												//var catalogschild=cat.getElementsByTagName("catalogchild");
										       
										        // tree.draw();
										       var catalogschild= catalogs[i].childItems;
										        if (catalogschild!= null && catalogschild.length>0) {
										        	 //alert("opennodes="+catalogschild.length);
										        	tree.draw();
										        	 buildOpenNodes(catalogschild,myobj.id);
										        	 // tree.draw();
										        	
										     
									
											
										        	 
										        	  
										        }
										       // tree.draw();
										       

										       

										//}
										

						
							
	    }//ENDfor catalogs
		tree.draw();
		tree.subscribe("collapse", onCollapse);
		//tree.subscribe("expand", onExpand);
		
		loadtree=1;		

}


return {
		init: function() {
			
			var el = document.getElementById("treeContainerX");
			
			//alert("linea 254 el= "+el)
				YAHOO.util.Event.on(["mode0", "mode1"], "click", changeIconMode);
				var el = document.getElementById("mode1");
				if (el && el.checked) {
				currentIconMode = parseInt(el.value);
				} else {
				currentIconMode = 0;
				}
				
				//buildTree();
		}
		
		

		

}
} ();


YAHOO.util.Event.addListener("treeContainerX", "load",YAHOO.example.treeExample.init, YAHOO.example.treeExample,true)
//YAHOO.util.Event.addListener("treeContainerX", "collapse",YAHOO.example.treeExample.onCollapse, YAHOO.example.treeExample,true)
 

