// holds an instance of XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();
// when set to true, display detailed error messages
var showErrors = true;

// creates an XMLHttpRequest instance
function createXmlHttpRequestObject() 
{
  // will store the reference to the XMLHttpRequest object
  var xmlHttp;
  // this should work for all browsers except IE6 and older
  try
  {
    // try to create XMLHttpRequest object
    xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    // assume IE6 or older
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                    "MSXML2.XMLHTTP.5.0",
                                    "MSXML2.XMLHTTP.4.0",
                                    "MSXML2.XMLHTTP.3.0",
                                    "MSXML2.XMLHTTP",
                                    "Microsoft.XMLHTTP");
									
									
									
    // try every prog id until one works
    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
    {
      try 
      { 
        // try to create XMLHttpRequest object
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      } 
      catch (e) {} // ignore potential error
    }
  }
  // return the created object or display an error message
  if (!xmlHttp)
	  eval("parent.location='old.php'");
  else 
    return xmlHttp;
}

function displayError($message)
{
	if (showErrors) {
		showErrors = false;
		alert("Error encountered: \n" + $message);
	}
}

function disableAll() {
	document.getElementById("textSecret").disabled = true;
	document.getElementById("btnSubmit").disabled = true;
	document.getElementById("textPhone").disabled = true;
	document.getElementById("menuPrefixId").disabled = true;
	document.getElementById("menuSetType").disabled = true;
	document.getElementById("menuModels").disabled = true;
	document.getElementById("menuVendors").disabled = true;
	showText("");
}

function onVendorSelect(id)
{
	disableAll();
	if (id != 0) {
		if (xmlHttp){
			try {
				if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
					params = "";
					xmlHttp.open("GET", "sets.php?action=get_models&vendor_id=" + id, true);
					//проблема с Opera 8.0					
					//xmlHttp.setRequestHeader("Content-Type", 
					//					 "application/x-www-form-urlencoded");
					xmlHttp.onreadystatechange = handleHttpVendorSelect;
					xmlHttp.send(params);
					showText("Загрузка...");

				} else  {
					setTimeout("onVendorSelect(" + id + ");", 1000);
				}
			} catch (e) {
				displayError(e.toString());
			}
		}	
	} else {
		document.getElementById("menuVendors").disabled = false;
	}
	
}

function handleHttpVendorSelect() {
	disableAll();
	if (xmlHttp.readyState == 4) {
		showText("");
		if (xmlHttp.status == 200) 	{
			document.getElementById("menuVendors").disabled = false;
			var xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;  

			menuModels = document.getElementById("menuModels");
			while (menuModels.length > 0) {
			    menuModels.remove(0);
			} 
			

			
			modelArray = xmlRoot.getElementsByTagName("model");
			
			for (var i=0; i<modelArray.length; i++) {
				name = "";
				id = 0;
				try {
					name = modelArray.item(i).attributes.getNamedItem("name").value;
					id = modelArray.item(i).attributes.getNamedItem("id").value;
				} catch (e) {
				
				}
				oOption = document.createElement("OPTION");
				menuModels.options.add(oOption, 0);
				oOption.text = name;
				oOption.innerText  = name;
				oOption.value = id;
			}
			
			oOption = document.createElement("OPTION");
			menuModels.options.add(oOption, 0);
			oOption.text = "Выберите...";
			oOption.innerText  = "Выберите...";
			oOption.value = 0;
			
			menuModels.selectedIndex = 0

			document.getElementById("menuModels").disabled = false;
		}
		
	}
}

function onModelSelect(id) {
	disableAll();
	if (id != 0) {
		if (xmlHttp)
		{
			try	{
				if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
					params = "";
					xmlHttp.open("GET", "sets.php?action=get_sets&model_id=" + id, true);
					//проблема с Opera 8.0
					//xmlHttp.setRequestHeader("Content-Type", 
					//			 "application/x-www-form-urlencoded");
					xmlHttp.onreadystatechange = handleHttpModelSelect;
					xmlHttp.send(params);
					showText("Загрузка...");
					document.getElementById("menuModels").disabled = true;
					document.getElementById("menuVendors").disabled = true;
				}
				else{
					setTimeout("onModelSelect(" + id + ");", 1000);
				}
			}
			catch (e){
				displayError(e.toString());
			}
		}
	} else {
		document.getElementById("menuSetType").disabled = false;
		document.getElementById("menuModels").disabled = false;
		document.getElementById("menuVendors").disabled = false;
	}
	
}

function handleHttpModelSelect() {
	if (xmlHttp.readyState == 4) {
		// continue only if HTTP status is "OK"
		showText("");
		if (xmlHttp.status == 200) 	{
			var xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;  

			menuSetType = document.getElementById("menuSetType");
			while (menuSetType.length> 0) {
			    menuSetType.remove(0);
			} 
			
			setArray = xmlRoot.getElementsByTagName("set");
			
			for (var i=0; i<setArray.length; i++) {
				name = "";
				id = 0;
				try {
					name = setArray.item(i).attributes.getNamedItem("name").value;
					id = setArray.item(i).attributes.getNamedItem("id").value;
				} catch (e) {
				
				}
				oOption = document.createElement("OPTION");
				menuSetType.options.add(oOption, 0);
				oOption.text = name;
				oOption.innerText  = name;
				oOption.value = id;
			}
			
			oOption = document.createElement("OPTION");
			menuSetType.options.add(oOption, 0);
			oOption.text = "Выберите...";
			oOption.innerText  = "Выберите...";
			oOption.value = 0;
			
			menuSetType.selectedIndex = 0

			document.getElementById("menuSetType").disabled = false;
			document.getElementById("menuModels").disabled = false;
			document.getElementById("menuVendors").disabled = false;
			
			setArray = xmlRoot.getElementsByTagName("secretkey");
			if (setArray.length > 0) {
				sid = setArray.item(0).attributes.getNamedItem("id").value;
				var html = "<img src=\"secret.php?id=" + sid + "\" width=\"50\" height=\"20\" />";
				secretKey = document.getElementById("secretKey1");
				secretKey.innerHTML = html;
				document.getElementById("textSecret").value = "";
			}
		}
	}
}

function onSetSelect(id){
	val = (id == 0);
	document.getElementById("textSecret").disabled = val;
	document.getElementById("btnSubmit").disabled = val;
	document.getElementById("textPhone").disabled = val;
	document.getElementById("menuPrefixId").disabled = val;
}

function onSubmit(){
	var strPhone = document.getElementById("textPhone").value;

	var rg = /\d{6}/;
	if ( !rg.test(strPhone) ) {
		showText("Номер телефона должен быть шестизначным.", "red");
		return;
	}
	menuModels = document.getElementById("menuModels");
	modelId = menuModels.options[menuModels.selectedIndex].value;
	menuSetType = document.getElementById("menuSetType");
	setId = menuSetType.options[menuSetType.selectedIndex].value;
	secretText = document.getElementById("textSecret").value;
	menuPrefixId= document.getElementById("menuPrefixId");
	prefId = menuPrefixId.options[menuPrefixId.selectedIndex].value;

	if (xmlHttp)
	{
		disableAll();
		try
		{
			if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
			{
				params = "";
				url = "sets.php?action=send_sets&model_id=" + modelId + 
					"&set_id=" + setId + 
					"&phone=" + strPhone + 
					"&secret=" + secretText + 
					"&pref_id=" + prefId;
				
				xmlHttp.open("GET", url , true);
				//xmlHttp.setRequestHeader("Content-Type", 
				//					 "application/x-www-form-urlencoded");
				xmlHttp.onreadystatechange = handleHttpSubmit;
				xmlHttp.send(params);
				showText("Загрузка...");
				document.getElementById("textSecret").value = "";
			}
			else
			{
			// if connection was busy, try again after 1 second
				setTimeout("onModelSelect(" + id + ");", 1000);
			}
		}
		// display the error in case of failure
		catch (e)
		{
			displayError(e.toString());
		}
	}
	  
}

function handleHttpSubmit() {
	if (xmlHttp.readyState == 4) {
		document.getElementById("textSecret").disabled = true;
		document.getElementById("btnSubmit").disabled = true;
		document.getElementById("textPhone").disabled = true;
		document.getElementById("menuPrefixId").disabled = true;
		document.getElementById("menuSetType").disabled = false;
		document.getElementById("menuModels").disabled = false;
		document.getElementById("menuVendors").disabled = false;
		showText("");
		if (xmlHttp.status == 200) 	{
			var xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;  
			
			res = xmlRoot.getElementsByTagName("answer");
			if (setArray.length > 0) {
				try {
					showText(res.item(0).text);
				} catch (e) {};			
				try {
					showText(res.item(0).textContent);
				} catch (e) {};
				
			}
			
			setArray = xmlRoot.getElementsByTagName("secretkey");
			if (setArray.length > 0) {
				sid = setArray.item(0).attributes.getNamedItem("id").value;
				var html = "<img src=\"secret.php?id=" + sid + "\" width=\"50\" height=\"20\" />";
				secretKey = document.getElementById("secretKey1");
				secretKey.innerHTML = html;
				document.getElementById("textSecret").value = "";
			}
		}

	}
}

function showText(text) {
	showText(text, "black");
}

function showText(text, color) {
	infoFrame = document.getElementById("informFrame");
	if (text.length < 1) {
		infoFrame.innerHTML = "&nbsp;";
	} else {
		infoFrame.innerHTML = text;
	}

}

