
if (typeof DOMParser == "undefined") {
   DOMParser = function () {};
   DOMParser.prototype.parseFromString = function (str, contentType) {
      if (typeof ActiveXObject != "undefined") {
         var d = new ActiveXObject("MSXML.DomDocument");
         d.loadXML(str);
         return d;
      } else if (typeof XMLHttpRequest != "undefined") {
         var req = new XMLHttpRequest;
         req.open("GET", "data:" + (contentType || "application/xml") +
                         ";charset=utf-8," + encodeURIComponent(str), false);
         if (req.overrideMimeType) {
            req.overrideMimeType(contentType);
         }
         req.send(null);
         return req.responseXML;
      }
   }
}


	function getValuesByTagName(xmldoc, tag) {
		var nl = null;
		var node = null;
		var sa_return = null;
		var i = 0;

		nl = xmldoc.getElementsByTagName(tag);
		
		if (nl.length > 0){
			sa_return = new Array(nl.length);
			for(i=0;i<nl.length;i++){
				node = nl.item(i);
				node = node.firstChild;
				if (node)
					sa_return[i] = node.data;
				else
					sa_return[i] = "NULL";
			}		
		}// end of if condition
		
		return sa_return;
	}// end of function getValuesByTagName
			
	function getValueByTagName(xmldoc, tag, inx) {
		var sa_return = null;		
		var s_return = null;

		sa_return = getValuesByTagName(xmldoc,tag);
		
		if(typeof(sa_return)!='undefined' && sa_return!=null && inx<sa_return.length){
		  s_return = sa_return[inx];
		}else{
		  s_return = "NULL";
		}// end of if else condition
		
		return s_return;
	}// end of function getFirstValueByTagName
	
	function getValueByNode(node){
	  if(node && node.hasChildNodes())
	    return node.firstChild.nodeValue;
	  else
	    return "NULL";  
	}

	function getNodesByTagName(xmldoc, tag){
		var nl = null;
		var node = null;
		var sa_return = null;
		var i = 0;

		nl = xmldoc.getElementsByTagName(tag);
		
		if (nl.length > 0){
			sa_return = new Array(nl.length);
			for(i=0;i<nl.length;i++){
				node = nl.item(i);				
				if (node)
					sa_return[i] = node;					
			}		
		}// end of if condition
		
		return sa_return;
	}
	
	function Category(id,level,parent,name,count,child){
		this.id = id;
		this.level = level;
		this.parent = parent;
		this.name = name;
		this.count = count;
		this.child = child;
	}
	
	function getCategoryArrayFromXML(xmldoc){
		//var nodes = xmldoc.childNodes;
		var nodes = getNodesByTagName(xmldoc,"Category1");
		var categoryArray = new Array();
		var i,j;
		
		j=0;
		for(i=0;i<nodes.length;i++){
			if(nodes[i].nodeType==1){
				categoryArray[j]=getCategoryFromNode(nodes[i]);				
				j++;
			}
		}
		
		return categoryArray;
	}

	function getCategoryFromNode(node){		
		var i,j;
		var id,level,parent,name,count;
		var nodes;
		var categoryArray;
		
		if(node.hasChildNodes())
			nodes = node.childNodes;
		else
			nodes = new Array();	
		
		id = node.getAttribute("id");
		level = node.getAttribute("level");
		parent = node.getAttribute("parent");
		name = node.getAttribute("name");
		count = node.getAttribute("count");
		
		j=0;
		categoryArray = new Array();		
		for(i=0;i<nodes.length;i++){			
			if(nodes[i].nodeType==1){
				categoryArray[j] = getCategoryFromNode(nodes[i]);
				j++;
			}
		}
		
		return new Category(id,level,parent,name,count,categoryArray);
		
	}
	
	function alertXML(xmldoc){	
		var nodes = getNodesByTagName(xmldoc,"Category1");
		var id,level,parent,name,count;		
		var nodes2;
		var node;
		
		for(i=0;i<nodes.length;i++){
			id = nodes[i].getAttribute("id");
			level = nodes[i].getAttribute("level");
			parent = nodes[i].getAttribute("parent");
			name = nodes[i].getAttribute("name");
			count = nodes[i].getAttribute("count");
			alert(id+":"+level+":"+parent+":"+name+":"+count);
									
			nodes2 = nodes[i].childNodes;			
			for(j=0;j<nodes2.length;j++){
				node = nodes2.item(j);				
				if(node.nodeName=="Category2"){
					id = node.getAttribute("id");
					level = node.getAttribute("level");
					parent = node.getAttribute("parent");
					name = node.getAttribute("name");
					count = node.getAttribute("count");
					alert(id+":"+level+":"+parent+":"+name+":"+count);
				}
			}
			
		}
		
	}
	
	function getContents(xmlstring,userId){
      		var domParser = new DOMParser();            
      		var xmldoc=domParser.parseFromString(xmlstring,"text/xml");
      		var cate_array = getCategoryArrayFromXML(xmldoc);
      		var temp_array = null; 
      		var contents = "";     	      		
      
      		for(i=0;i<cate_array.length;i++){
      			contents = contents + "<a href='#abc' onclick='showSubDiv("+cate_array[i].id+");'>+</a> <a href='UserCategory.do?categoryId="+cate_array[i].id+"&userId="+userId+"'>"+cate_array[i].name+"</a>("+cate_array[i].count+")<br/>";
      			temp_array = cate_array[i].child;
      			contents = contents + "<div style='display:none;' id='myCategory_"+cate_array[i].id+"'>\n";
      			for(j=0;j<temp_array.length;j++){
      				contents = contents + "　- <a href='UserCategory.do?categoryId="+temp_array[j].id+"&userId="+userId+"'>"+temp_array[j].name+"</a>("+temp_array[j].count+")<br/>";
      			}
      			contents = contents + "</div>";
      		}
      		      		
      		return contents;
        }                
        
        function showSubDiv(id){
        	var mydiv = document.getElementById("myCategory_"+id);        	
        	
        	if(mydiv.style.display=="block")
        		mydiv.style.display="none";
        	else
        		mydiv.style.display="block";
        	        	
        }	