// JavaScript Document
var xmlHttp = createXmlHttpRequestObject();

function createXmlHttpRequestObject()
{
	var xmlHttp;
	
	try
	{
		xmlHttp = new XMLHttpRequest();
	}
	catch (e)
	{
		var XmlHttpVersions = new Array('MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP');
		for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
		{
			try
			{
				xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			}
			catch (e) {}
		}
	}
	
	if (!xmlHttp) alert("Fatal error!");
	else return xmlHttp;
}

function process()
{
	if (xmlHttp)
	{
		try
		{
			xmlHttp.open("GET","price.txt", true);
			xmlHttp.onreadystatechange = handleServerResponse;
			xmlHttp.send(null);
		}
		catch (e)
		{
			alert ("Server error");
		}
	}
}
	
function handleServerResponse()
{
	weight = encodeURIComponent(document.getElementById("weight").value);
	color = encodeURIComponent(document.getElementById("color").value);
	clarity = encodeURIComponent(document.getElementById("clarity").value);
	
	spanpf = document.getElementById("outprice");
	spanpc = document.getElementById("pricecarat");
	
	if (xmlHttp.readyState == 4)
	{
		if (xmlHttp.status == 200)
		{
			try
			{
				var response = xmlHttp.responseText;
				var shortStr = weight + "\t[0-9]{3,}\t[0-9]{3,}\t[0-9]{3,}\t[0-9]{3,}\t" + color;
				var re = new RegExp(shortStr);
				var result = response.match(re);
				var strpr = "" + result;
				var str = "[0-9]{3,}"
				var rep = new RegExp(str,"g");
				var resultp = strpr.match(rep);
				var pricecarat;
				var priceout;
				var mn = "[0-9]{1}[.]{1}[0-9]{1,}";
				var rew = new RegExp(mn);
				var strw = weight;
				var carat = strw.match(rew);
				
				switch (clarity)
				{
					case "I": pricecarat = resultp[0]; priceout = pricecarat*carat; break;
					case "SI":  pricecarat = resultp[1]; priceout = pricecarat*carat; break;
					case "VS":  pricecarat = resultp[2]; priceout = pricecarat*carat; break;
					case "VVS":  pricecarat = resultp[3]; priceout = pricecarat*carat; break;
				}
				
				spanpf.innerHTML = 'Price per stone from: $ ';
				spanpf.innerHTML += priceout.toFixed(0);
				spanpc.innerHTML = 'Price per carat: $ ';
				spanpc.innerHTML += pricecarat;
				document.getElementById("stone").value = priceout.toFixed(0);
				document.getElementById("carat").value = pricecarat;
			}
			catch (e)
			{
				alert ("1. Error: " + e.toString());
			}
		}
		else
		{
			alert("2. Error: " + xmlHttp.statusText);
		}
	}
}