var cgipath = "cgi-bin/barrel.exe";
var inactiveColor = '#eee';

function load()
{
	// Register popupChange handler for all select objects.
	var x = document.getElementsByTagName('SELECT');
	for (var i = 0; i < x.length; i++)
		x[i].onchange = popupChange;
	// Register handlers for all enabled input objects.
	var y = document.getElementsByTagName('INPUT');
	for (var i = 0; i < y.length; i++)
	{
		// The first 10 input fields are required.
		if (i < 10)
			y[i].required = true;

		if (!y[i].disabled)
		{
			y[i].onblur = commandChange;
			y[i].onkeypress = blockNonNumbers;
			if (y[i].size > 0)
				y[i].onkeyup = checkMinLen;
			else
				y[i].onkeyup = extractNumber;
		}
	}
	formReset();
}

function formReset()
{
	// Clear the data field.
	document.getElementById("dataText").innerHTML = "";


	
	//document.getElementById("previewImg").innerHTML = "";




	// Set optional fieldsets to gray.
	var z = document.getElementsByTagName('FIELDSET');
	for (var i = 1; i < z.length; i++)
		z[i].style.backgroundColor = inactiveColor;

	// Put the cursor in the first input field.
	document.forms.fieldForm.primaryCompanyPrefixText.focus();
	return true;
}

function checkMinLen(event)
{
	var e = event ? event : window.event;
	extractNumber(e);
	var src = e.srcElement ? e.srcElement : e.target;
	var minLen = src.size;
	var txt = src.value;
	// Leave empty fields white, unless they're required.
	if ((!src.required && txt.length == 0) || txt.length >= minLen)
		src.style.backgroundColor = 'white';
	else
		src.style.backgroundColor = 'yellow';
}

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, '');
}

// Check for minimum length.
function isValueOK(id)
{
	var elm = document.getElementById(id);
	var minLen = elm.size ? elm.size : 1; // In case some fields don't have "size" attributes.
	return elm.value.length >= minLen;
}

function updateTextField(id, newValue)
{
	var textField = document.getElementById(id);
	if (textField.value != newValue)
	{
		textField.value = newValue;
		textField.parentNode.style.backgroundColor = (newValue == "" ? inactiveColor : 'white');
	}
}

function updateDataField1()
{
	var newValue = "";
	if (isValueOK("addlPurchaseRulesText")
	&&  isValueOK("secondPurchaseRequirementVLIText")
	&&  isValueOK("secondPurchaseRequirementCodeText")
	&&  isValueOK("secondPurchaseFamilyCodeText")
	&&  isValueOK("secondCompanyPrefixVLIText"))
		newValue = "1";
	updateTextField("dataField1Text", newValue);
}

function updateDataField2()
{
	var newValue = "";
	if (isValueOK("thirdPurchaseRequirementVLIText")
	&&  isValueOK("thirdPurchaseRequirementCodeText")
	&&  isValueOK("thirdPurchaseFamilyCodeText")
	&&  isValueOK("thirdCompanyPrefixVLIText"))
		newValue = "2";
	updateTextField("dataField2Text", newValue);
}

function updateDataField3()
{
	updateTextField("dataField3Text", isValueOK("expiryDateText") ? "3" : "");
}

function updateDataField4()
{
	updateTextField("dataField4Text", isValueOK("startDateText") ? "4" : "");
}

function updateDataField5()
{
	updateTextField("dataField5Text", isValueOK("serialNumberVLIText") ? "5" : "");
}

function updateDataField6()
{
	updateTextField("dataField6Text", isValueOK("retailerIDVLIText") ? "6" : "");
}

function updateDataField9()
{
	var newValue = "";
	if (isValueOK("saveValueCodeText")
	&&  isValueOK("whichItemText")
	&&  isValueOK("storeCouponText")
	&&  isValueOK("dontMultiplyText"))
		newValue = "9";
	updateTextField("dataField9Text", newValue);
}

function updateDataText()
{

	

	var d = "";
	var y = document.getElementsByTagName('INPUT');
	for (var i = 0; i < 10; i++)
	{
		var node = y[i];
		// The first 10 fields are required to be non-empty and possibly of a minimum length.
		if (node.required && (node.value == ""))
		{
			document.getElementById("dataText").innerHTML = "<div style='color:red'>Some required data fields are missing.</div>";
			document.getElementById("previewImg").innerHTML = "";
			return;
		}
		if (node.type == "text") // skip non-text input, e.g. reset
			d += node.value;
	}

	var dstyle = d; // This version may include style markups.
	if (document.getElementById("dataField1Text").value == "1")
	{
		var d1 = document.getElementById("addlPurchaseRulesText").value;
		d1 += document.getElementById("secondPurchaseRequirementVLIText").value;
		d1 += document.getElementById("secondPurchaseRequirementText").value;
		d1 += document.getElementById("secondPurchaseRequirementCodeText").value;
		d1 += document.getElementById("secondPurchaseFamilyCodeText").value;
		d1 += document.getElementById("secondCompanyPrefixVLIText").value;
		if (document.getElementById("secondCompanyPrefixVLIText").value != "9")
			d1 += document.getElementById("secondCompanyPrefixText").value;
		d += "1" + d1;
		dstyle += "<b>1</b>" + d1;
	}

	if (document.getElementById("dataField2Text").value == "2")
	{
		var d2 = document.getElementById("thirdPurchaseRequirementVLIText").value;
		d2 += document.getElementById("thirdPurchaseRequirementText").value;
		d2 += document.getElementById("thirdPurchaseRequirementCodeText").value;
		d2 += document.getElementById("thirdPurchaseFamilyCodeText").value;
		d2 += document.getElementById("thirdCompanyPrefixVLIText").value;
		if (document.getElementById("thirdCompanyPrefixVLIText").value != "9")
			d2 += document.getElementById("thirdCompanyPrefixText").value;
		d += "2" + d2;
		dstyle += "<b>2</b>" + d2;
	}

	if (document.getElementById("dataField3Text").value == "3")
	{
		var d3 = document.getElementById("expiryDateText").value;
		d += "3" + d3;
		dstyle += "<b>3</b>" + d3;
	}

	if (document.getElementById("dataField4Text").value == "4")
	{
		var d4 = document.getElementById("startDateText").value;
		d += "4" + d4;
		dstyle += "<b>4</b>" + d4;
	}

	if (document.getElementById("dataField5Text").value == "5")
	{
		var d5 = document.getElementById("serialNumberVLIText").value;
		d5 += document.getElementById("serialNumberText").value;
		d += "5" + d5;
		dstyle += "<b>5</b>" + d5;
	}

	if (document.getElementById("dataField6Text").value == "6")
	{
		var d6 = document.getElementById("retailerIDVLIText").value;
		d6 += document.getElementById("retailerIDText").value;
		d += "6" + d6;
		dstyle += "<b>6</b>" + d6;
	}

	if (document.getElementById("dataField9Text").value == "9")
	{
		var d9 = document.getElementById("saveValueCodeText").value;
		d9 += document.getElementById("whichItemText").value;
		d9 += document.getElementById("storeCouponText").value;
		d9 += document.getElementById("dontMultiplyText").value;
		d += "9" + d9;
		dstyle += "<b>9</b>" + d9;
	}

	if (d.length <= 70)
	{
		document.getElementById("dataText").innerHTML = dstyle;
		//document.getElementById("previewImg").innerHTML = "<img src=\"" + cgipath + "?-fRSS-Coupon+-r2540+-paln+-j+-d" + d + "\">";
		
		updatePreview(dstyle);
	}
	else
	{
		document.getElementById("dataText").innerHTML = "<div style='color:red'>Exceeds 70 digits:</div> " + dstyle;
		document.getElementById("previewImg").innerHTML = "";
	}
}

function commandChange(event) 
{
	var srcId = this.id;
	var len = this.value.length;
	if (srcId == "primaryCompanyPrefixText")
		document.getElementById("primaryCompanyPrefixVLIText").value = (len >= 6 ? (len - 6).toString() : "");
	else
	if (srcId == "saveValueText")
		document.getElementById("saveValueVLIText").value = (len > 0 ? len.toString() : "");
	else
	if (srcId == "primaryPurchaseRequirementText")
		document.getElementById("primaryPurchaseRequirementVLIText").value = (len > 0 ? len.toString() : "");
	else
	if (srcId == "secondPurchaseRequirementText")
	{
		document.getElementById("secondPurchaseRequirementVLIText").value = (len > 0 ? len.toString() : "");
		updateDataField1();
	}
	else
	if (srcId == "secondPurchaseFamilyCodeText")
		updateDataField1();
	else
	if (srcId == "secondCompanyPrefixText")
	{
		document.getElementById("secondCompanyPrefixVLIText").value = (len >= 6 ? (len - 6).toString() : len == 0 ? "9" : "");
		updateDataField1();
	}
	else
	if (srcId == "thirdPurchaseRequirementText")
	{
		document.getElementById("thirdPurchaseRequirementVLIText").value = (len > 0 ? len.toString() : "");
		updateDataField2();
	}
	else
	if (srcId == "thirdPurchaseFamilyCodeText")
		updateDataField2();
	else
	if (srcId == "thirdCompanyPrefixText")
	{
		document.getElementById("thirdCompanyPrefixVLIText").value = (len >= 6 ? (len - 6).toString() : len == 0 ? "9" : "");
		updateDataField2();
	}
	else
	if (srcId == "expiryDateText")
		updateDataField3();
	else
	if (srcId == "startDateText")
		updateDataField4();
	else
	if (srcId == "serialNumberText")
	{
		document.getElementById("serialNumberVLIText").value = (len >= 6 ? (len - 6).toString() : "");
		updateDataField5();
	}
	else
	if (srcId == "retailerIDText")
	{
		document.getElementById("retailerIDVLIText").value = (len >= 7 ? (len - 6).toString() : "");
		updateDataField6();
	}

	updateDataText();
	
}

function popupChange(event)
{
	var srcId = this.id;
	if (srcId == "primaryPurchaseReqCode")
		document.getElementById("primaryPurchaseRequirementCodeText").value = this.value;
	else
	if (srcId == "addlPurchaseRulesCode")
	{
		document.getElementById("addlPurchaseRulesText").value = this.value;
		updateDataField1();
	}
	else
	if (srcId == "secondPurchaseReqCode")
	{
		document.getElementById("secondPurchaseRequirementCodeText").value = this.value;
		updateDataField1();
	}
	else
	if (srcId == "thirdPurchaseReqCode")
	{
		document.getElementById("thirdPurchaseRequirementCodeText").value = this.value;
		updateDataField2();
	}
	else
	if (srcId == "saveValueCodeSelect")
	{
		document.getElementById("saveValueCodeText").value = this.value;
		updateDataField9();
	}
	else
	if (srcId == "whichItemSelect")
	{
		document.getElementById("whichItemText").value = this.value;
		updateDataField9();
	}
	else
	if (srcId == "storeCouponSelect")
	{
		document.getElementById("storeCouponText").value = this.value;
		updateDataField9();
	}
	else
	if (srcId == "dontMultiplySelect")
	{
		document.getElementById("dontMultiplyText").value = this.value;
		updateDataField9();
	}

	updateDataText();
}

