var cgipath = "http://www.createbarcodes.com/cgi-bin/barrel.exe";

function loadpreview()
{
	var y = document.getElementsByTagName('INPUT');
	for (var i = 0; i < y.length; i++)
	{
		y[i].onblur = updatePreview;
		y[i].onkeypress = blockNonNumbers;
		y[i].onkeyup = extractNumber;
	}
	formReset();
}

function formReset()
{
	document.getElementById("previewImg").innerHTML = "";
	//document.forms.fieldForm.dataInput.focus();
	return true;
}

function blockNonNumbers(event)
{
	var key;
	var reg = /[^ -\-:-\177]/; // printable ascii non-digits

	var e = event ? event : window.event;
	if (window.event)
		key = e.keyCode;
	else
	if (e.which)
		key = e.which;

	if (isNaN(key))
		return true;

	return reg.test(String.fromCharCode(key));
}

function extractNumber(event) 
{
	var e = event ? event : window.event;
	var src = e.srcElement ? e.srcElement : e.target;
	var temp = src.value;

	// avoid changing things if already formatted correctly
	var reg0 = new RegExp('^[0-9.]*$');
	if (reg0.test(temp))
		return true;

	// replace all non numbers
	var reg1 = new RegExp('[^0-9.]', 'g');
	src.value = temp.replace(reg1, '');
}

var rowMatrix = new Array
(	new Array(25, 3),
	new Array(27, 3, 2, 0, 1),
	new Array(30, 3, 2),
	new Array(33, 3, 2, 0, 0, 1),
	new Array(37, 4),
	new Array(40, 4, 3, 2, 0, 0, 1),
	new Array(44, 4, 3, 2),
	new Array(47, 4, 3, 2, 0, 0, 0, 1),
	new Array(51, 5, 3),
	new Array(54, 5, 3, 0, 2, 0, 0, 0, 1),
	new Array(57, 5, 4, 0, 2),
	new Array(61, 5, 4, 3, 2, 0, 0, 0, 0, 1),
	new Array(64, 6, 4, 3),
	new Array(68, 6, 4, 3, 0, 2, 0, 0, 0, 0, 1)
);

function rowArrayForLength(length)
{
	var rows = rowMatrix.length;
	for (var i = 0; i < rows; i++)
	{
		if (length >= rowMatrix[i][0] && (i + 1 == rows || length < rowMatrix[i + 1][0]))
			return rowMatrix[i].slice(1);
	}
	return rowMatrix[0]; // should never get here
}

function roundOff(n, p)
{
	var num = new Number(n);
	return n.toFixed(p);
}

function updatePreview(dstyle)
{
	var d =dstyle;

	//document.getElementById("dataInput").value;
//	var x = document.getElementById("xdimInput").value;

	var x ="0.010";
	var upc = document.getElementById("upcInput").value;

	var error = "";
	if (d.length == 0)
		error = "No data provided.<br />";
	else
	if (d.length < 25)
		error = "The data must be at least 25 digits.<br />";
	else
	if (d.length > 70)
		error = "The data must be no more than 70 digits.<br />";

	if (x < 0.010 || x > 0.013)
		error += "The x-dimension must be between 0.010\" and 0.013\".<br />";

	if (upc.length != 0 && upc.length != 12)
		error += "Interim data, if present, must be 12 digits.<br />";

	var html = "";
	if (error != "")
		html = "<div style=\"color:red\">" + error + "</div>";
	else
	{
		var rowArray = rowArrayForLength(d.length);
		html = "<table border=\"0\" rules=\"all\" cellPadding=\"0\" cellSpacing=\"0\">";
		html += "<tr><td align=\"center\"><b>Preview</b></td>";
		html += "<td align=\"center\"><b>Dimensions</b></td>";
		html += "<td align=\"center\"><b>BCG Order Format</b></td></tr>";
		for (var i = 0; i < rowArray.length; i++)
		{
			var n = rowArray[i];
			if (n > 0)
			{
				var rows = i + 2;
				var h = (37.0 * rows) * x; // includes an extra 3x
				var w = (49.0 * n) * x;
 
				var prefixLen = d[4] * 1.0 + 6;
			prefixLen =1
//					alert(prefixLen);
				
				
				var captionLen = prefixLen + 7; // prefix + dash + offer
				var captionWidth = captionLen * 6.0 * x;
				if (captionWidth > w)
					captionWidth = w;

				
			
			


				var captionHeight = (captionWidth / captionLen) * 1.5;
				if (captionHeight < 6.0 * x)
				{
					captionHeight = 6.0 * x;
					captionWidth = captionLen * captionHeight * 0.65;
				}

				if (captionWidth > w)
					w = captionWidth;

				if (upc.length > 0)
				{
					w += 116.14174 * x;
					captionHeight += 6.378 * x;
				}
				
				if(d.indexOf('<b>')>0)
				{
					d=d.substring(0,d.indexOf('<b>'))
				}

				html += "<tr><td align=\"center\">";
				html += "<img src=\"" + cgipath + "?-fRSS-Coupon+-r2540+-v96+-j+-pan+-d" + d + "+-x" + x + "+-h" + h;
				if (upc.length > 0)
					html += "+-s" + upc;
				html += "\">";
				html += "</td><td><font size=2>" + roundOff(w, 3) + "\" x " + roundOff(h + captionHeight - 2 * x, 3) + "\"</font></td>";
				html += "<td align=\"center\"><font size=2>X" + x.split('.', 2)[1] + "h" + roundOff(h, 3).replace('.', '');
				if (upc.length > 0)
					html += "s" + upc;
				html += "</font></td></tr>";
			}
		}
		html += "</table>";
	}
	document.getElementById("previewImg").innerHTML = html;
}

