var lastWasOk = false;
var lastId = 0;

for(var i = 1; i < 6; i++)
{
 	var x = document.getElementById("s" + i);
 	//x.disabled = true;
 	//x.visible = false;
 	x.style.visibility = "hidden";
}

function createXMLHttpRequest() {
  var xmlReq = false;
  // branch for native XMLHttpRequest object
  if(window.XMLHttpRequest) {
    try {
      xmlReq = new XMLHttpRequest();
    } catch(e) {
      xmlReq = false;
    }
  // branch for IE/Windows ActiveX version
  } else if(window.ActiveXObject) {
    try {
      xmlReq = new  ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        xmlReq = new  ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
        xmlReq = false;
      }
    }
  }
  return xmlReq;
}

var userAgent = { };
userAgent.isAJAX  = (createXMLHttpRequest()?true:false);
userAgent.isMozilla  = (navigator.userAgent.match(/\bGecko\b/));
userAgent.isOpera  = (navigator.userAgent.match(/\bOpera\b/));
userAgent.isInternetExplorer  =
  (navigator.userAgent.match(/\bMSIE\b/) && !userAgent.isOpera);


function callServer(method, url, data, dataType, func, arg) {
  if (!method) method='GET';
  var xmlReq = createXMLHttpRequest();
  if(xmlReq) {
    xmlReq.onreadystatechange = function() {
      // only if xmlReq shows "loaded"
      if (xmlReq.readyState == 4) {
        func(arg, xmlReq.responseText,  xmlReq.responseXML,
             xmlReq.status, xmlReq.statusText);
      }
    };
    xmlReq.open(method, url, true);
    if (data) {
      if (!dataType) dataType='application/xml';
      if (typeof(data)!="string" && dataType.indexOf("charset=")<0
           && userAgent.isMozilla) dataType=dataType+';charset=utf-8';
           // in Mozilla XML always serialized as UTF-8
      xmlReq.setRequestHeader('Content-Type', dataType);
    }
    xmlReq.send(data);
    return false;
  }
  return true;
}


function drawBoxes(arg, responseText, responseXML, statusCode, statusText) {

	if(userAgent.isInternetExplorer)
	{
		//v IE poluboj nado opjat' parsit'
  		responseXML=new ActiveXObject("Microsoft.XMLDOM");
  		responseXML.async="false";
  		responseXML.loadXML(responseText);
	}
	else
	{
		if(!responseXML)
		//v FF ne poluchal responseXML
			responseXML = (new DOMParser()).parseFromString(responseText, "text/xml");
	}

  	if (statusCode==200 || statusCode==201) {
  		var rootNode = responseXML.getElementsByTagName('X').item(0);
  		if(rootNode.getElementsByTagName('K'))
  		{
  		  var mName = new Array;
  		  var mID = new Array;
  		  for(var i=0; i<rootNode.getElementsByTagName('K').length; i++)
  		  {
  			var part = rootNode.getElementsByTagName('K')[i];
  			mName[i] = part.getElementsByTagName('N')[0].firstChild.nodeValue;
  			mID[i]   = part.getElementsByTagName('I')[0].firstChild.nodeValue;
  		  }
  		  //risuem dropbox na nuzhnom urovne. udalaem ostalnyje
  		  for(var i = arg; i < 6; i++)
  		  {
  		  	var x = document.getElementById("s" + i);
  		  	while(x.length > 0)
  		  		x.remove(0);
  		  	//for(var j = 0; j < x.length; j++)
  		  }
  		  var x = document.getElementById("s" + arg);
  		  //x.disabled = false;
  		  x.style.visibility = "visible"; lastWasOk = false;
  		  //alert('kod otkluchilsja tut'); //alert(lastWasOk);
    	  var y = document.createElement('option');
   		  y.text = '   ';
   		  y.value = 0;
   		  try{
  		  		x.add(y,null);
  		  }catch(ex) {
	    		x.add(y);
    	  }
  		  for(var i = 0; i < mName.length; i++)
  		  {
	    	  var y = document.createElement('option');
    		  y.text = mName[i];
    		  y.value = mID[i];
    		  try{
  		  		x.add(y,null); // standards compliant
  		  	  }catch(ex) {
	    		x.add(y); // IE only
    		  }
    	  }
    	  if(x.length == 1)
    	  	//x.disabled = true;
    	  	{ x.style.visibility = "hidden"; lastWasOk = true; tryNextPoint()}
  		  for(var i = arg + 1; i < 6; i++)
  		  {
  		  	var x = document.getElementById("s" + i);
  		  	//x.disabled = true;
  		  	x.style.visibility = "hidden";
  		  	//alert('kod mog srabotat tut v cikle');
  		  	//lastWasOk = true;
  		  }

  		}
  	}
  	else {
    	alert("Загрузить информацию не  удалось: "
        	  +statusText);
  	}

}


function getCategories(level){
	var x = document.getElementById("s" + level);
	var c_id = x.options[x.selectedIndex].value;
	lastId = c_id;
	level++;
	if(level > 0 && level < 6 && c_id != 0)
	{
		callServer(null, '/kategorii.xml/' + c_id + '/', null, null, drawBoxes, level);
	}

//	alert(lastWasOk);
//	tryNextPoint();
	//alert("getCategories("+level+")");
	return true;
}

function tryNextPoint()
{
//	var level = 0;
//	for(var i=0; i<6; i++)
		//if(document.getElementById("s" + i).disabled == true)
//		if(document.getElementById("s" + i).style.visibility == "hidden")
//		{
//			level = i - 1;
//			break;
//		}

//	alert("tryNextPoint()");

	//var x = document.getElementById("s" + level);
	//var c_id = x.options[x.selectedIndex].value;
	//if(c_id != 0)
//		alert("Укажите подкатегорию!");
	//else
	if(lastWasOk && lastId != 0)
	{
		location.assign("/new2/" + lastId + "/");
	}

}
