function noAjax()
{
	alert(GetLanguage("NO_AJAX"));
}

function getXhr()
{
	if (window.XMLHttpRequest)
	{
		xhr = new XMLHttpRequest();
	
		// Avoid a Safari Bug
		if (xhr.overrideMimeType)
		{
			xhr.overrideMimeType("text/xml");
		}
	}
	else
	{
		if (window.ActiveXObject)
		{
			try
			{
				// Try to load object on Internet Explorer
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (e)
			{
				try
				{
					// Try to load object for another version of Internet Explorer
					xhr = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e)
				{
					// The browser does not support XMLHttpRequest
					noAjax();
					xhr = false;
				}
			}
		}
		else
		{
			// The browser does not support XMLHttpRequest
			noAjax();
			xhr = false;
		}
	}
	
	return xhr;
}

function getObject(Id)
{
	if (document.getElementById) return document.getElementById(Id);
	if (document.layers) return document.layers[Id];
	if (document.all) return document.all[Id];
	return null;
}

var xhr = null;

var needNetwork  = false;
var needBrand    = false;
var needModel    = false;
var needProvider = false;
var needKBH      = false;
var needMEP      = false;
var needPRD      = false;
var needPIN      = false;
var needType     = false;
var needLocks    = 0;
var allowOther   = false;
var SMS          = false;

function ajaxSetTool(ToolID)
{
	getObject("trBrand").style.display = "none";
	getObject("trModel").style.display = "none";
	getObject("trModelOther").style.display = "none";
	getObject("trCountry").style.display = "none";
	getObject("trNetwork").style.display = "none";
	getObject("trProvider").style.display = "none";
	getObject("trKBH").style.display = "none";
	getObject("trMEP").style.display = "none";
	getObject("trPRD").style.display = "none";
	getObject("trPIN").style.display = "none";
	getObject("trType").style.display = "none";
	getObject("trLock").style.display = "none";
	getObject("trSMS").style.display = "none";
	getObject("divMessage").style.display = "none";
	getObject("delayDiv").style.visibility = "hidden";
	getObject("originDatabase").style.display = "none";
	getObject("originCalculator").style.display = "none";
	
	if (ToolID != "")
	{
		// Show Loading
		getObject("trLoading").style.visibility = "visible";
		
		if (xhr)
		{
			if (xhr.readyState != 0)
			{
				xhr.onreadystatechange = function() {};
				xhr.abort();
			}
		}
		else
		{
			xhr = getXhr();
		}
		
		xhr.open("GET", "conn/tool.php?ID=" + ToolID, true);
		xhr.onreadystatechange = function()
		{
			if (xhr.readyState == 4 && xhr.responseXML)
			{
				// Needs
				needNetwork  = (xhr.responseXML.getElementsByTagName("needNetwork" )[0].firstChild.data == "true");
				needBrand    = (xhr.responseXML.getElementsByTagName("needBrand"   )[0].firstChild.data == "true");
				needModel    = (xhr.responseXML.getElementsByTagName("needModel"   )[0].firstChild.data == "true");
				needProvider = (xhr.responseXML.getElementsByTagName("needProvider")[0].firstChild.data == "true");
				needKBH      = (xhr.responseXML.getElementsByTagName("needKBH"     )[0].firstChild.data == "true");
				needMEP      = (xhr.responseXML.getElementsByTagName("needMEP"     )[0].firstChild.data == "true");
				needPRD      = (xhr.responseXML.getElementsByTagName("needPRD"     )[0].firstChild.data == "true");
				needPIN      = (xhr.responseXML.getElementsByTagName("needPIN"     )[0].firstChild.data == "true");
				needType     = (xhr.responseXML.getElementsByTagName("needType"    )[0].firstChild.data == "true");
				needLocks    = parseInt(xhr.responseXML.getElementsByTagName("needLocks")[0].firstChild.data);
				allowOther   = (xhr.responseXML.getElementsByTagName("allowOther"  )[0].firstChild.data == "true");
				SMS          = (xhr.responseXML.getElementsByTagName("SMS"         )[0].firstChild.data == "true");
				origin       = (xhr.responseXML.getElementsByTagName("origin"      )[0].firstChild.data);

				var message = xhr.responseXML.getElementsByTagName("message")[0];
				
			if (message.hasChildNodes())
				
				{
					var messageContent = document.getElementById("messageContent");
					while (messageContent.hasChildNodes()) messageContent.removeChild(messageContent.firstChild);
					
					var msg = message.firstChild.data;
					msg = msg.replace(new RegExp('\\{LiveHelp\\}', 'g'), '<a href="#" onclick="openLiveHelp(); return false;"><img src="/img/mini-live-help.gif" width="72" height="20" border="0" align="absmiddle" /></a>');
					msg = msg.replace("\r\n", "\n");
					msg = msg.replace("\r", "\n");
					msg = msg.split("\n");
					
					for (var key in msg)
					{
						messageContent.appendChild(document.createTextNode(msg[key]));
						if (key != msg.length - 1) messageContent.appendChild(document.createElement('br'));
					}
					
					messageContent.innerHTML = messageContent.innerHTML.replace(new RegExp("(http://[^\\s<]+)", "ig"), '<a href="$1" target="_blank">$1</a>');
					
					getObject("divMessage").style.display = "";
				}
				
				// Tool supports SMS ?
				if (SMS)
				{
					getObject("trSMS").style.display = "";
				}

				switch (origin)
				{
					case "Database": getObject("originDatabase").style.display = ""; break;
					case "Calculator": getObject("originCalculator").style.display = ""; break;
				}
				
				// Network
				if (needNetwork)
				{
					var countries = xhr.responseXML.getElementsByTagName("country");
					
					if (countries)
					{
						for (var i=document.forms["order"].CountryID.options.length - 1; i>=0; i--)
						{
							document.forms["order"].CountryID.options[i] = null;
						}
						
						document.forms["order"].CountryID.options[0] = new Option("---", "");
						
						for (var i=0; i<countries.length; i++)
						{
							document.forms["order"].CountryID.options[i+1] = new Option(countries[i].firstChild.data, countries[i].attributes[0].nodeValue);
						}
						
						getObject("trCountry").style.display = "";
					}
				}

				// Brands
				if (needBrand)
				{
					var brands = xhr.responseXML.getElementsByTagName("brand");
					
					if (brands)
					{
						for (var i=document.forms["order"].BrandID.options.length - 1; i>=0; i--)
						{
							document.forms["order"].BrandID.options[i] = null;
						}
						
						document.forms["order"].BrandID.options[0] = new Option("---", "");
						
						for (var i=0; i<brands.length; i++)
						{
							document.forms["order"].BrandID.options[i+1] = new Option(brands[i].firstChild.data, brands[i].attributes[0].nodeValue);
						}
						
						getObject("trBrand").style.display = "";
					}
				}
				
				// Models
				if (!needBrand && needModel)
				{
					var models = xhr.responseXML.getElementsByTagName("model");
					
					if (models)
					{
						for (var i=document.forms["order"].ModelID.options.length - 1; i>=0; i--)
						{
							document.forms["order"].ModelID.options[i] = null;
						}
						
						document.forms["order"].ModelID.options[0] = new Option("---", "");
						
						for (var i=0; i<models.length; i++)
						{
							document.forms["order"].ModelID.options[i+1] = new Option(models[i].firstChild.data, models[i].attributes[0].nodeValue);
						}
						
						getObject("trModel").style.display = "";
					}
				}
				
				if (needProvider)
				{
					getObject("trProvider").style.display = "";
				}

				if (needKBH)
				{
					getObject("trKBH").style.display = "";
				}
				if (needMEP)
				{
					getObject("trMEP").style.display = "";
				}
				if (needPRD)
				{
					getObject("trPRD").style.display = "";
				}
				
				if (needPIN)
				{
					getObject("trPIN").style.display = "";
				}
				
				if (needType)
				{
					getObject("trType").style.display = "";
				}

				if (needLocks)
				{
					getObject("trLock").style.display = "";
				}
				
				/* Delivery time */
				
				var deliveryUnit = xhr.responseXML.getElementsByTagName("deliveryUnit")[0].firstChild.data;
				var deliveryMin = parseInt(xhr.responseXML.getElementsByTagName("deliveryMin")[0].firstChild.data);
				var deliveryMax = parseInt(xhr.responseXML.getElementsByTagName("deliveryMax")[0].firstChild.data);
				
				var delayDiv = getObject("delayDiv");
				var delayTxt = null;
				
				while (delayDiv.hasChildNodes()) delayDiv.removeChild(delayDiv.firstChild);
				
				if (deliveryUnit == "Instant")
				{
					delayTxt = GetLanguage("DELIVERY_TIME") + " : " + GetLanguage(deliveryUnit);
				}
				else if (deliveryMax == deliveryMin)
				{
					if (deliveryMax != 0)
					{
						delayTxt = GetLanguage("DELIVERY_TIME") + " : " + deliveryMax.toString() + " " + GetLanguage(deliveryUnit + (deliveryMax > 1 ? "s" : ""));
					}
				}
				else if (deliveryMax > deliveryMin)
				{
					delayTxt = GetLanguage("DELIVERY_TIME") + " : " + deliveryMin.toString() + " " + GetLanguage("TO") + " " + deliveryMax.toString() + " " + GetLanguage(deliveryUnit + (deliveryMax > 1 ? "s" : ""));
				}
				
				if (delayTxt != null)
				{
					delayDiv.appendChild(document.createTextNode(delayTxt));
					delayDiv.style.visibility = "visible";
				}
				
				// Hide Loading
				getObject("trLoading").style.visibility = "hidden";
				
				// For the assistant pop up
				window.loaded = true;
			}
		}
		xhr.send(null);
	}
	
	removeMobilePhoto();
}

function ajaxSetBrand(BrandID, ToolID)
{
	if (needModel)
	{
		getObject("trModel").style.display = "none";
		getObject("trModelOther").style.display = "none";
		
		if (BrandID != "")
		{
			// Show Loading
			getObject("trLoading").style.visibility = "visible";
			
			if (xhr)
			{
				if (xhr.readyState != 0)
				{
					xhr.onreadystatechange = function() {};
					xhr.abort();
				}
			}
			else
			{
				xhr = getXhr();
			}
			
			xhr.open("GET", "conn/brand.php?ID=" + BrandID + "&ToolID=" + ToolID, true);
			xhr.onreadystatechange = function()
			{
				if (xhr.readyState == 4 && xhr.responseXML)
				{
					var models = xhr.responseXML.getElementsByTagName("model");
					
					if (models)
					{	
						for (var i=document.forms["order"].ModelID.options.length - 1; i>=0; i--)
						{
							document.forms["order"].ModelID.options[i] = null;
						}
						
						document.forms["order"].ModelID.options[0] = new Option("---", "");
						
						for (var i=0; i<models.length; i++)
						{
							document.forms["order"].ModelID.options[i+1] = new Option(models[i].firstChild.data, models[i].attributes[0].nodeValue);
						}
						
						if (allowOther)
						{
							document.forms["order"].ModelID.options[i+1] = new Option(GetLanguage("OTHER"), "0");
							setCssProp(document.forms["order"].ModelID.options[i+1], "background-color", "#FFCC66");
						}
						
						getObject("trModel").style.display = "";
					}
	
					// Hide Loading
					getObject("trLoading").style.visibility = "hidden";
					
					window.loaded = true;
				}
			}
			xhr.send(null);
		}
	}
	
	removeMobilePhoto();
}

function ajaxSetModel(ModelID)
{
	getObject("trModelOther").style.display = ((ModelID == "0") ? "" : "none");
	loadMobilePhoto(ModelID);
}

function ajaxSetCountry(CountryID, ToolID)
{
	getObject("trNetwork").style.display = "none";
	
	if (CountryID != "")
	{
		// Show Loading
		getObject("trLoading").style.visibility = "visible";
		
		if (xhr)
		{
			if (xhr.readyState != 0)
			{
				xhr.onreadystatechange = function() {};
				xhr.abort();
			}
		}
		else
		{
			xhr = getXhr();
		}
		
		xhr.open("GET", "conn/country.php?ID=" + CountryID + "&ToolID=" + ToolID, true);
		xhr.onreadystatechange = function()
		{
			if (xhr.readyState == 4 && xhr.responseXML)
			{
				var networks = xhr.responseXML.getElementsByTagName("network");
				
				if (networks)
				{	
					for (var i=document.forms["order"].NetworkID.options.length - 1; i>=0; i--)
					{
						document.forms["order"].NetworkID.options[i] = null;
					}
					
					document.forms["order"].NetworkID.options[0] = new Option("---", "");
					
					for (var i=0; i<networks.length; i++)
					{
						document.forms["order"].NetworkID.options[i+1] = new Option(networks[i].firstChild.data, networks[i].attributes[0].nodeValue);
					}
						
					getObject("trNetwork").style.display = "";
				}

				// Hide Loading
				getObject("trLoading").style.visibility = "hidden";
				
				window.loaded = true;
			}
		}
		xhr.send(null);
	}
}

function ajaxSubmitFormImeiSingle()
{
	with(document.forms["order"])
	{
		if (! jsCheckIMEI(IMEI.value))
		{
			alert(GetLanguage("INVALID_IMEI"));
			return false;
		}
		if (ToolID.selectedIndex <= 0)
		{
			alert(GetLanguage("SELECT_TOOL"));
			return false;
		}
		if (needBrand)
		{
			if (BrandID.selectedIndex <= 0)
			{
				alert(GetLanguage("SELECT_BRAND"));
				return false;
			}
		}
		if (needModel)
		{
			if (ModelID.selectedIndex <= 0)
			{
				alert(GetLanguage("SELECT_MODEL"));
				return false;
			}
			if (ModelID.value == 0)
			{
				if (jsTrim(ModelOther.value) == "")
				{
					alert(GetLanguage("ENTER_MODEL"));
					return false;
				}
			}
		}
		if (needNetwork)
		{
			if (CountryID.selectedIndex <= 0)
			{
				alert(GetLanguage("SELECT_COUNTRY"));
				return false;
			}
			if (NetworkID.selectedIndex <= 0)
			{
				alert(GetLanguage("SELECT_NETWORK"));
				return false;
			}
		}
		if (needProvider)
		{
			if (! jsCheckProviderID(ProviderID.value))
			{
				alert(GetLanguage("INVALID_PROVIDER_ID"));
				return false;
			}
		}
		if (needKBH)
			{
				if (jsTrim(KBH.value) == "")
				{
					alert(GetLanguage("ENTER_KBH"));
					return false;
				}
			}
		if (needMEP)
			{
				if (! jsCheck_MEP_PRD('MEP', MEP.value))
				{
					alert(GetLanguage("ENTER_MEP"));
					return false;
				}
			}
		if (needPRD)
			{
				if (! jsCheck_MEP_PRD('PRD', PRD.value))
				{
					alert(GetLanguage("ENTER_PRD"));
					return false;
				}
			}
		if (needPIN)
		{
			if (jsTrim(PIN.value) == "")
			{
				alert(GetLanguage("ENTER_PIN"));
				return false;
			}
		}
		if (needType)
		{
			if (jsTrim(PhoneType.value) == "" || jsTrim(PhoneType.value) == "RM-")
			{
				alert(GetLanguage("ENTER_TYPE"));
				return false;
			}
		}
		if (needLocks)
		{
			var locks = 0;
			for (var i=0; ; i++)
			{
				var obj = document.getElementById("Lock" + i);
				if (! obj) break;
				if (obj.checked) locks++;
			}
			
			if (locks != needLocks)
			{
				alert(GetLanguage("WRONG_NUMBER_LOCKS"));
				return false;
			}
		}
		if (jsTrim(Email.value) != "")
		{
			if (! jsCheckEmail(jsTrim(Email.value)))
			{
				alert(GetLanguage("INVALID_EMAIL"));
				return false;
			}
		}
		if (SMS)
		{
			var r = new RegExp("^(\\+[0-9]{5,})?$", "");

			if (! r.test(jsTrim(GSM.value)))
			{
				alert(GetLanguage("INVALID_PHONE"));
				return false;
			}
		}
	}
	document.getElementById("singleSubmit").disabled = true;
	return true;
}

function ajaxSubmitFormImeiMultiple()
{
	with(document.forms["multiple"])
	{
		if (jsTrim(IMEI.value) == "")
		{
			alert(GetLanguage("ENTER_IMEI"));
			return false;
		}
		if (ToolID.selectedIndex <= 0)
		{
			alert(GetLanguage("SELECT_TOOL"));
			return false;
		}
	}
	document.getElementById("bulkSubmit").disabled = true;
	return true;
}

function ajaxChangeFieldState(field, enabled)
{
	getObject("TdIco" + field + "Off").style.display = (enabled ? "none" : "");
	getObject("TdTxt" + field + "Off").style.display = (enabled ? "none" : "");
	getObject("TdIco" + field + "On").style.display = (enabled ? "" : "none");
	getObject("TdTxt" + field + "On").style.display = (enabled ? "" : "none");
}

var needSerial = false;
var needLogin = false;

function ajaxSetCableServer(ServerID)
{
	getObject("trIcons").style.display = "none";
	getObject("trSerial").style.display = "none";
	getObject("trLogin").style.display = "none";
	getObject("trEmail").style.display = "none";
	getObject("MobilesFieldset").style.display = "none";
	
	if (ServerID != "")
	{
		// Show Loading
		getObject("trLoading").style.visibility = "visible";
		
		if (xhr)
		{
			if (xhr.readyState != 0)
			{
				xhr.onreadystatechange = function() {};
				xhr.abort();
			}
		}
		else
		{
			xhr = getXhr();
		}
		
		xhr.open("GET", "conn/cable.php?ServerID=" + ServerID, true);
		xhr.onreadystatechange = function()
		{
			if (xhr.readyState == 4 && xhr.responseXML)
			{
				var softwarename = xhr.responseXML.getElementsByTagName("softwarename");
				var softwareurl = xhr.responseXML.getElementsByTagName("softwareurl");
				var userguideurl = xhr.responseXML.getElementsByTagName("userguideurl");
				
				needSerial = (xhr.responseXML.getElementsByTagName("needSerial")[0].firstChild.data == "true");
				needLogin = (xhr.responseXML.getElementsByTagName("needLogin")[0].firstChild.data == "true");
				needEmail = (xhr.responseXML.getElementsByTagName("needEmail")[0].firstChild.data == "true");
				
				if (softwarename && softwareurl && userguideurl)
				{
					if (softwareurl[0].hasChildNodes())
					{
						getObject("Software").setAttribute("href", softwareurl[0].firstChild.data);
						getObject("Software").setAttribute("title", softwarename[0].hasChildNodes() ? softwarename[0].firstChild.data : "");
					}
					ajaxChangeFieldState("Download", softwareurl[0].hasChildNodes());
					
					if (userguideurl[0].hasChildNodes())
					{
						getObject("UserGuide").setAttribute("href", userguideurl[0].firstChild.data);
					}
					ajaxChangeFieldState("Info", userguideurl[0].hasChildNodes());
					
					if (needSerial)
					{
						getObject("trSerial").style.display = "";
					}
					if (needLogin)
					{
						getObject("trLogin").style.display = "";
					}
					if (needEmail)
					{
						getObject("trEmail").style.display = "";
					}
				}
				
				// Show compatible mobiles
				var brands = xhr.responseXML.getElementsByTagName("brand");
				var colors = new Array("#F4F4F6", "#FBFBFC");
				var k = 0;
				
				if (brands.length > 0)
				{
					var Html = '<table cellpadding="5" cellspacing="1" border="0" bgcolor="#CCCCCC">';
	
					for (var i=0; i<brands.length; i++)
					{
						Html += '<tr bgcolor="' + colors[k^=1] + '">';
						Html += '<td>';
						if (brands[i].getAttribute("logo")) Html += '<img src="' + brands[i].getAttribute("logo") + '" width="16" height="16" hspace="3" align="absmiddle" />';
						Html += jsXmlEntities(brands[i].getAttribute("name")) + '</td>';
						Html += '<td>';
						
						var mobiles = brands[i].getElementsByTagName("mobile");
						var models = new Array();
						
						for (var j=0; j<mobiles.length; j++)
						{
							models.push('<a href="' + mobiles[j].attributes[0].nodeValue + '">' + jsXmlEntities(mobiles[j].firstChild.data) + '</a>');
						}
						
						Html += models.join(" &middot; ");
						
						Html += '</td>';
						Html += '</tr>';
					}

					Html += '</table>';

					getObject("MobilesDiv").innerHTML = Html;
					getObject("MobilesAnchor").setAttribute("href", xhr.responseXML.getElementsByTagName("featuresurl")[0].firstChild.data);
					getObject("MobilesFieldset").style.display = "";
				}
				ajaxChangeFieldState("Phone", brands.length > 0);
				
				// Show icons
				getObject("trIcons").style.display = "";
				
				// Hide Loading
				getObject("trLoading").style.visibility = "hidden";
			}
		}
		xhr.send(null);
	}
}

var fileNamePattern = null;

function ajaxSetFileServer(ServerID)
{
	getObject("trIcons").style.display = "none";
	getObject("MobilesFieldset").style.display = "none";
	fileNamePattern = null;
	
	if (ServerID != "")
	{
		// Show Loading
		getObject("trLoading").style.visibility = "visible";
		
		if (xhr)
		{
			if (xhr.readyState != 0)
			{
				xhr.onreadystatechange = function() {};
				xhr.abort();
			}
		}
		else
		{
			xhr = getXhr();
		}
		
		xhr.open("GET", "conn/file.php?ServerID=" + ServerID, true);
		xhr.onreadystatechange = function()
		{
			if (xhr.readyState == 4 && xhr.responseXML)
			{
				var softwarename = xhr.responseXML.getElementsByTagName("softwarename");
				var softwareurl = xhr.responseXML.getElementsByTagName("softwareurl");
				var userguideurl = xhr.responseXML.getElementsByTagName("userguideurl");

				if (softwarename && softwareurl && userguideurl)
				{
					if (softwareurl[0].hasChildNodes())
					{
						getObject("Software").setAttribute("href", softwareurl[0].firstChild.data);
						getObject("Software").setAttribute("title", softwarename[0].hasChildNodes() ? softwarename[0].firstChild.data : "");
					}
					ajaxChangeFieldState("Download", softwareurl[0].hasChildNodes());
					
					if (userguideurl[0].hasChildNodes())
					{
						getObject("UserGuide").setAttribute("href", userguideurl[0].firstChild.data);
					}
					ajaxChangeFieldState("Info", userguideurl[0].hasChildNodes());
				}
				
				var fileNamePatternCI = (xhr.responseXML.getElementsByTagName("filenamepatternci")[0].firstChild.data == "true");
				fileNamePattern = new RegExp(xhr.responseXML.getElementsByTagName("filenamepattern")[0].firstChild.data, fileNamePatternCI ? "i" : "");

				// Show compatible mobiles
				var brands = xhr.responseXML.getElementsByTagName("brand");
				var colors = new Array("#F4F4F6", "#FBFBFC");
				var k = 0;
				
				if (brands.length > 0)
				{
					var Html = '<table cellpadding="5" cellspacing="1" border="0" bgcolor="#CCCCCC">';
	
					for (var i=0; i<brands.length; i++)
					{
						Html += '<tr bgcolor="' + colors[k^=1] + '">';
						Html += '<td>';
						if (brands[i].getAttribute("logo")) Html += '<img src="' + brands[i].getAttribute("logo") + '" width="16" height="16" hspace="3" align="absmiddle" />';
						Html += jsXmlEntities(brands[i].getAttribute("name")) + '</td>';
						Html += '<td>';
						
						var mobiles = brands[i].getElementsByTagName("mobile");
						var models = new Array();
						
						for (var j=0; j<mobiles.length; j++)
						{
							models.push('<a href="' + mobiles[j].attributes[0].nodeValue + '">' + jsXmlEntities(mobiles[j].firstChild.data) + '</a>');
						}
						
						Html += models.join(" &middot; ");
						
						Html += '</td>';
						Html += '</tr>';
					}

					Html += '</table>';

					getObject("MobilesDiv").innerHTML = Html;
					getObject("MobilesAnchor").setAttribute("href", xhr.responseXML.getElementsByTagName("featuresurl")[0].firstChild.data);
					getObject("MobilesFieldset").style.display = "";
				}
				ajaxChangeFieldState("Phone", brands.length > 0);
				
				// Show icons
				getObject("trIcons").style.display = "";

				// Hide Loading
				getObject("trLoading").style.visibility = "hidden";
			}
		}
		xhr.send(null);
	}
}

var needIMEI = false;
var needNumber = false;
var needPhone = false;



function ajaxSubmitFormCableServer()
{
	with(document.forms["order"])
	{
		if (ServerID.selectedIndex <= 0)
		{
			alert(GetLanguage("SELECT_SERVER"));
			return false;
		}
		
		if (needSerial)
		{
			if (jsTrim(SerialNumber.value) == "")
			{
				alert(GetLanguage("ENTER_SERIAL_NUMBER"));
				return false;
			}
		}
		
		if (needLogin)
		{
			if (jsTrim(Login.value) == "")
			{
				alert(GetLanguage("ENTER_LOGIN"));
				return false;
			}
		}
		
		if (needEmail)
		{
			if (jsTrim(AccountEmail.value) == "")
			{
				alert(GetLanguage("ENTER_EMAIL"));
				return false;
			}
		}
	}

	document.getElementById("cableSubmit").disabled = true;
	return true;
}

function ajaxSubmitFormFileServer()
{
	with(document.forms["order"])
	{
		if (ServerID.selectedIndex <= 0)
		{
			alert(GetLanguage("SELECT_SERVER"));
			return false;
		}
		if (File.value == "")
		{
			alert(GetLanguage("SELECT_FILE"));
			return false;
		}
		
		if (! fileNamePattern)
		{
			// Ajax did not finish loading ...
			return false;
		}

		var Path = File.value.split(/[\/\\]+/);

		if (! fileNamePattern.test(Path[Path.length-1]))
		{
			alert(GetLanguage("INVALID_FILENAME"));
			return false;
		}
	}

	document.getElementById("fileSubmit").disabled = true;
	return true;
}


function ajaxSetFeaturesBrand(BrandID)
{
	getObject("Model").style.display = "none";

	if (BrandID != "")
	{
		getObject("Loading").style.display = "";
		
		if (xhr)
		{
			if (xhr.readyState != 0)
			{
				xhr.onreadystatechange = function() {};
				xhr.abort();
			}
		}
		else
		{
			xhr = getXhr();
		}
		
		xhr.open("GET", "conn/model.php?BrandID=" + BrandID, true);
		xhr.onreadystatechange = function()
		{
			if (xhr.readyState == 4 && xhr.responseXML)
			{
				var models = xhr.responseXML.getElementsByTagName("model");
				
				if (models)
				{
					var Model = getObject("Model");

					Model.options.length = 1;
					
					for (var i=0; i<models.length; i++)
					{
						Model.options[i+1] = new Option(models[i].firstChild.data, models[i].getAttribute("url"));
					}
					
					getObject("Model").style.display = "";
				}

				// Hide Loading
				getObject("Loading").style.display = "none";
			}
		}
		xhr.send(null);
	}
	else
	{
		getObject("Loading").style.display = "none";
	}
}

function ajaxAutoSelectTool(ToolID, BrandID, ModelID)
{
	if (window.loaded)
	{
		if (ToolID)
		{
			window.loaded = false;
			document.order.ToolID.value = ToolID;
			document.order.ToolID.onchange();
		}
	
		ajaxAutoSelectBrand(BrandID, ModelID);
	}
	else setTimeout(function() { ajaxAutoSelectTool(ToolID, BrandID, ModelID); }, 10);
}

function ajaxAutoSelectBrand(BrandID, ModelID)
{
	if (window.loaded)
	{
		if (BrandID)
		{
			window.loaded = false;
			document.order.BrandID.value = BrandID;
			document.order.BrandID.onchange();
		}

		ajaxAutoSelectModel(ModelID);
	}
	else setTimeout(function() { ajaxAutoSelectBrand(BrandID, ModelID); }, 10);
}

function ajaxAutoSelectModel(ModelID)
{
	if (window.loaded)
	{
		if (ModelID)
		{
			window.loaded = false;
			document.order.ModelID.value = ModelID;
			document.order.ModelID.onchange();
		}
	}
	else setTimeout(function() { ajaxAutoSelectModel(ModelID); }, 10);
}