function addNewOption(id,value,optionId,content)				/* This function adds a new option value to the end of the given select element */
{	
	if(id==null || id==undefined)
	{
		return;
	}	
	var newItem = new Option(content,value);
	newItem.id = optionId;	
	document.getElementById(id).options[document.getElementById(id).length] = newItem;				
}

function XML2select(id,xmlobj) {					/* This function takes the ID of the next level and the XML it will insert the categories in the next Select-Box*/
	var next_box = "level" + id;
	var next_label = "level" + id + "_label";
	var next_description = "description" + id;
	//var type = xmlobj.getElementsByTagName("type");
	//alert(type[0].childNodes.length);
	//if (type[0].childNodes.length > 0) {
		//type = type[0].childNodes[0].nodeValue + '';
	//}
	var cats = xmlobj.getElementsByTagName("category");
	if (cats.length != 0) {
		clearselect(next_box);							/* Clear the next Select-Box */
		for (var i = 0; i < cats.length; i++) {
			var catname="", catid, catidname;
			var category = cats[i];
			for (var j = 0; j < category.childNodes.length; j++) {
			    with (category.childNodes[j]) {
					if (nodeName == "categoryname") {
						catname = firstChild.nodeValue;
					}
					else if (nodeName == "categoryid") {
						catid = firstChild.nodeValue;
					}
					else if (nodeName == "categoryidname") {
						catidname = firstChild.nodeValue;
					}
					/* Added following to skip system drop-down if in Assitant.  */
					System = document.getElementById('EB_System').value
					if(!(catidname==undefined)){
						if (catidname.toUpperCase().indexOf(System.toUpperCase())>0){
					    		var prodlisturl = document.getElementById('prodlisturl').value;												/* get the prodlist-Url from hidden Input */
					   		var persistMenu = document.getElementById('persistMenu').value;	
					    		stMenu = document.getElementById('persistMenu').value;
					    		prodlisturl = prodlisturl + '?CatalogCategoryID=' + catid + (persistMenu!=null?'&PersistNavigationMenu=YES':'');
					    		document.location.href = prodlisturl; 
					    		return;
						}
					}
					   
				}
			}
			
			new_option = new Option(catname, catid);
			document.getElementById(next_box).options[document.getElementById(next_box).length] = new_option;		/* insert new Option in the next Select-Box */
		}
		document.getElementById(next_box).style.display = 'block';													/* Show next Select-Box 			*/
		document.getElementById(next_label).style.display = 'block';		
		if(document.getElementById('addLastOption')!=null)
		{
			var items = document.getElementById('addLastOption').value.split(",");
			addNewOption(items[0],items[1],items[2],items[3]);
		}
		//document.getElementById(next_description).innerHTML = type;
		document.getElementById('maxlevel').value = 'false';
		/* Insert Level-Description (Label) */
	}
	else {																											/* else - if no subcategories have been found */
		var prev_box = "level" + (id-1);
		var subselected = document.getElementById(prev_box)[document.getElementById(prev_box).selectedIndex].value;	/* find which category is selected	*/
//		var prodlisturl = document.getElementById('prodlisturl').value;												/* get the prodlist-Url from hidden Input */
		var prodlisturl = xmlobj.getElementsByTagName("prodlisturl")[0].getAttribute("url");						/* get the prodlist-Url from returned xml object */
		var persistMenu = document.getElementById('persistMenu').value;												/* get the persistMenu value from hidden input */				
		prodlisturl = prodlisturl + '?CatalogCategoryID=' + subselected + '&ShowAllProducts=YES' + (persistMenu!=null?'&PersistNavigationMenu=YES':'');		/* build URL for product-list		*/
		
		document.getElementById('maxlevel').value = 'true';  /* variable to indicate we are at the lowest category level */
		document.location.href = prodlisturl; 
		var clearLevel = id;
		var i = clearLevel;
		/* Clear out higher levels in case they have values */
		for (i = clearLevel; i <= 4; i++) {																		/* for all following select-boxes				*/
					var next_box = "level" + i;
					clearselect(next_box);	
					//document.getElementById(next_box).style.display = 'none';
		}/* Jump to product-list				*/
	}
}

function clearselect (id) {																							/* clearselect will remove all but 	*/
	while (document.getElementById(id).length > 1) {																/* the first option from a given    */
		document.getElementById(id).options[document.getElementById(id).length - 1] = null;							/* select-box 						*/
	}
	return;
}

function category_select(changed_level) {																			/* this Function is called from the template */	
	var changed_box="level" + changed_level;
	var level = parseInt(changed_level) +1;
	var selected = document.getElementById(changed_box)[document.getElementById(changed_box).selectedIndex].value;		/* selected holds the UUID of the Category the user has selected */
	
	if(selected=="-1")
	{
		var noprodlisturl = document.getElementById('noprodlisturl').value;
		var prodnotfoundpage = document.getElementById('noprodfoundpage').value;
		document.location.href = noprodlisturl + '?Page=' + prodnotfoundpage;
		return;
	}
	else if(selected=="")
	{
		return;
	}
	
	if (level <= 5) {
		if (selected != "0") {																						/* only of a category is selected - first option is something like "please select" */
			var callurl = document.getElementById('callurl').value;	
			/* get pipelinecall from hidden Input 			*/
			callurl = callurl + '?CatalogCategoryID=' + selected;													/* add parameter for next category 				*/
			callAJAX(callurl,level);			/* call the AJAX function 						*/
			var clearLevel = level + 1;
			var i = clearLevel;
			/* Clear out higher levels in case they have values */
			for (i = clearLevel; i <= 4; i++) {																		/* for all following select-boxes				*/
							var next_box = "level" + i;
							clearselect(next_box);							
							//document.getElementById(next_box).style.display = 'none';
			}
		}
		else {																										/* else - the user has selected the first option */
			document.getElementById('maxlevel').value = 'false';
			for (var i = level; i <= 4; i++) {																		/* for all following select-boxes				*/
				var next_box = "level" + i;
				var next_description = "description" + i;
				clearselect(next_box);																				/* clear the select-box							*/
				document.getElementById(next_box).style.display = 'none';											/* hide it										*/
				//document.getElementById(next_description).innerHTML = '';											/* remove the label								*/
			}
		}
	}
}




/*************************************************************************************/
/*  now 2 standard - AJAX Functions | In most cases there is no need to change these */
/*************************************************************************************/

function callAJAX(url,id) {
     try {
     req = new XMLHttpRequest();
     /* e.g. Firefox */
     } catch(e) {
       try {
       req = new ActiveXObject("Msxml2.XMLHTTP");
       /* some versions IE */
       } catch (e) {
         try {
         req = new ActiveXObject("Microsoft.XMLHTTP");
         /* some versions IE */
         } catch (E) {
          req = false;
         }
       }
     }
     req.onreadystatechange = function() {responseAHAH(id);};
     req.open("GET",url,true);
     req.send(null);
  }

function responseAHAH(id) {
   if(req.readyState == 4) {
      if(req.status == 200) {
      										/**************************************************/
      										/*	alert(req.responseText); uncomment for Debug  */
      										/**************************************************/
         XML2select(id,req.responseXML);
         }
      }
  }