function createXmlHttpRequestObject(){
	if (window.XMLHttpRequest) {
		try {
			return new XMLHttpRequest();
		} catch (e){}
	} else if (window.ActiveXObject) {
		try {
			return new ActiveXObject('Msxml2.XMLHTTP');
		} catch (e){}
		try {
			return new ActiveXObject('Microsoft.XMLHTTP');
		} catch (e){}
	}
	return null;
}

var xmlHttp = false;
xmlHttp = createXmlHttpRequestObject();

function sendRequest(type){
	var brandz = document.getElementById("brandz");
	var catz = document.getElementById("catz");
	var sizez = document.getElementById("sizez");
	var submit = document.getElementById("search_submit");
	
	oos = type;
	
	if(type == 0)
		url = "ajaxer.php?i_need=brands";
	else if(type == 1)
		url = "ajaxer.php?i_need=cats&brand=" + brandz.options[brandz.selectedIndex].value;
	else if(type == 2)
		url = "ajaxer.php?i_need=sizes&brand=" + brandz.options[brandz.selectedIndex].value + 
				"&cat=" + catz.options[catz.selectedIndex].value;
	
	if(xmlHttp)
	{
		try
		{
			if(navigator.appName == "Netscape")
			{
				xmlHttp.open("GET", url, false);
				xmlHttp.send(null);
				if(xmlHttp.status == 200 && xmlHttp.readyState == 4)
					updateSearch();
			}
			else
			{
				xmlHttp.open("GET", url, false);
				xmlHttp.onreadystatechange = updateSearch;
				xmlHttp.send(null);
			}
		}
		catch(e)
		{
			alert(e.toString());
		}
	}
}

function updateSearch(){
	var brandz = document.getElementById("brandz");
	var catz = document.getElementById("catz");
	var sizez = document.getElementById("sizez");
	var submit = document.getElementById("search_submit");
	
	var opt;
	var optgrp;
	var splitdata;
	
	var labeles = new Array;
	labeles[0] = "Одежда для мужчин";
	labeles[1] = "Одежда для женщин";
	labeles[2] = "Аксессуары";
	
	if(xmlHttp.readyState == 4)
	{
		if(xmlHttp.status == 200)
		{
			var myJSONtext = xmlHttp.responseText;
			var myObject = JSON.parse(myJSONtext);
			
			if(oos == 0)
			{
				var brandzval = (typeof(brandz) != "undefined") ? brandz.value : 0;
				brandz.length = 0;
				
				opt = document.createElement("OPTION");
				opt.value = 0;
				opt.text = "Все бренды";
				if(brandzval == 0) opt.selected = true;
				brandz.options.add(opt);
				
				for(var i in myObject)
				{
					opt = document.createElement("OPTION");
					opt.id = "brand_" + i;
					opt.value = i;
					opt.text = myObject[i];
					
					// Opera fix below
					if(navigator.appName == "Opera" && brandzval == i)
						var flag = "brand_" + i;
					else if(brandzval == i)
						opt.selected = true;
						
					brandz.options.add(opt);
				}
				
				if(flag)
					setTimeout( function(){document.getElementById(flag).selected = true;}, 1 );
			}
			else if(oos == 1)
			{
				var catzval = (typeof(catz) != "undefined") ? catz.value : 0;
				
				while (catz.firstChild)
					catz.removeChild(catz.firstChild);
					
				opt = document.createElement("OPTION");
				opt.value = 0;
				opt.text = "Все категории";
				if(catzval == 0) opt.selected = true;
				catz.options.add(opt);
				
				for(var i in myObject)
				{
					if(myObject[i])
					{
						optgrp = document.createElement("OPTGROUP");
						optgrp.label = labeles[i];
						
						splitdata = myObject[i].split("|");
						for(var x in splitdata)
						{
							if(splitdata[x])
							{
								opt = document.createElement("OPTION");
								opt.id = "cat_" + splitdata[x];
								opt.value = splitdata[x];
								
								// IE fix below
								if(navigator.appName == "Microsoft Internet Explorer")
									opt.innerText = nameArray[splitdata[x]];
								else
									opt.text = nameArray[splitdata[x]];
								
								// Opera fix below
								if(navigator.appName == "Opera" && catzval == splitdata[x])
									var flag = "cat_" + splitdata[x];
								else if(catzval == splitdata[x])
									opt.selected = true;
								
								optgrp.appendChild(opt);
							}
						}
						
						catz.appendChild(optgrp);
					}
				}
				
				if(flag)
					setTimeout( function(){document.getElementById(flag).selected = true;}, 1 );
			}
			else if(oos == 2)
			{
				var sizezval = (typeof(sizez) != "undefined") ? sizez.value : 0;
				sizez.length = 0;
				
				opt = document.createElement("OPTION");
				opt.value = 0;
				opt.text = "Все размеры";
				if(sizezval == 0) opt.selected = true;
				sizez.options.add(opt);
				
				for(var i in myObject)
				{
					opt = document.createElement("OPTION");
					opt.id = "size_" + i;
					opt.value = i;
					opt.text = myObject[i];
					
					// Opera fix below
					if(navigator.appName == "Opera" && sizezval == i)
						var flag = "size_" + i;
					else if(sizezval == i)
						opt.selected = true;
					
					sizez.options.add(opt);
				}
				
				if(flag)
					setTimeout( function(){document.getElementById(flag).selected = true;}, 1 );
			}
		}
	}
}

function updateData(){
	var brandz = document.getElementById("brandz");
	var catz = document.getElementById("catz");
	var sizez = document.getElementById("sizez");
	var submit = document.getElementById("search_submit");
	
	brandz.disabled = true;
	catz.disabled = true;
	sizez.disabled = true;
	submit.disabled = true;
	
	sendRequest(0);
	sendRequest(1);
	sendRequest(2);
	
	brandz.disabled = false;
	catz.disabled = false;
	sizez.disabled = false;
	submit.disabled = false;
	
	someFunc();
}