


//	ruleCheckForm


function ruleCheckForm(initialRule)
{
	// public:
	this.getRule = ruleCheckForm_getRule
	this.write = ruleCheckForm_write

	// private:
	var parts = initialRule.split('/')
}


var kRuleCheckForm = 'ruleCheckForm'

function ruleCheckForm_write(writer)
{
	writer.writeln('<form name="' + kRuleCheckForm + '"><table>')

	ruleCheckForm_writeControl(writer, 'B0a    ')
	ruleCheckForm_writeControl(writer, 'B1ab   ')
	ruleCheckForm_writeControl(writer, 'B2abc  ')
	ruleCheckForm_writeControl(writer, 'B3abcd ')
	ruleCheckForm_writeControl(writer, 'B4abcde')
	ruleCheckForm_writeControl(writer, 'B5 bcde')
	ruleCheckForm_writeControl(writer, 'B6  cde')
	ruleCheckForm_writeControl(writer, 'B7   de')
	ruleCheckForm_writeControl(writer, 'B8    e')

	ruleCheckForm_writeControl(writer, 'S0a    ')
	ruleCheckForm_writeControl(writer, 'S1ab   ')
	ruleCheckForm_writeControl(writer, 'S2abc  ')
	ruleCheckForm_writeControl(writer, 'S3abcd ')
	ruleCheckForm_writeControl(writer, 'S4abcde')
	ruleCheckForm_writeControl(writer, 'S5 bcde')
	ruleCheckForm_writeControl(writer, 'S6  cde')
	ruleCheckForm_writeControl(writer, 'S7   de')
	ruleCheckForm_writeControl(writer, 'S8    e')

	writer.writeln('</table></form>')
}

function ruleCheckForm_onClick(name)
{
	var form = document.forms[kRuleCheckForm]
	if (form == null || form.elements == null || form.elements[name] == null) {
		return
	}

	var checkbox = form.elements[name]

	if (name.length == 2) {
		for (var i = 0; i < 5; i++) {
			var subcheck = form.elements[name + 'abcde'.charAt(i)]
			if (subcheck != null) {
				subcheck.checked = checkbox.checked
			}
		}
	}
	else {
		var root = name.substring(0, 2)
		checkbox = form.elements[root]
		var count = 0
		for (var i = 0; i < 5; i++) {
			var subcheck = form.elements[root + 'abcde'.charAt(i)]
			if (subcheck != null) {
				count += subcheck.checked ? 1 : 0
			}
		}
		checkbox.checked = count != 0 //? false : true
	}

	if (form.onChange) {
		//alert('eval ' + form.onChange)
		//eval(form.OnChange)
		form.onChange()
	}
//	alert(ruleCheckForm_getRule_getRule())
}

function ruleCheckForm_getRule()
{
	var result = ''
	var form = document.forms[kRuleCheckForm]

	for (var i = 0; i < 9; i++) {
		var root = 'B' + i
		if (form.elements[root].checked) {
			var uniform = true
			var nonuniform = '' + i
			for (var c = 0; c < 5; c++) {
				var subcheck = form.elements[root + 'abcde'.charAt(c)]
				if (subcheck) {
					if (subcheck.checked) {
						nonuniform += 'abcde'.charAt(c)
					}
					else {
						uniform = false
					}
				}
			}
			result += uniform ? i : nonuniform
		}
	}

	result += '/'

	for (var i = 0; i < 9; i++) {
		var root = 'S' + i
		if (form.elements[root].checked) {
			var uniform = true
			var nonuniform = '' + i
			for (var c = 0; c < 5; c++) {
				var subcheck = form.elements[root + 'abcde'.charAt(c)]
				if (subcheck) {
					if (subcheck.checked) {
						nonuniform += 'abcde'.charAt(c)
					}
					else {
						uniform = false
					}
				}
			}
			result += uniform ? i : nonuniform
		}
	}

	return result
}


function ruleCheckForm_writeControl(writer, spec)
{
	var chromo = spec.substring(0, 2)
	var checked = chromo == 'B2' ? ' checked' : ''
	writer.writeln('<tr><td>' +
		'<input type="checkbox"' + checked + ' name="' + chromo +
		'" onClick="ruleCheckForm_onClick(\'' + chromo + '\')">' + chromo + '&#160&#160&#160</input>' +
		'</td>')
	for (var i = 2; i < 7; i++) {
		writer.writeln('<td>')
		if (spec.charAt(i) != ' ') {
			var name = chromo + spec.charAt(i)
			writer.writeln('<input type="checkbox"' + checked + ' name="' + name +
				'" onClick="ruleCheckForm_onClick(\'' + name + '\')">' + spec.charAt(i) + '</input>')
		}
		writer.writeln('</td>')	
	}
	writer.writeln('</tr>')
}

