var lastKey = null;

function Range(name, type) {
	this.name = (name) ? name : '';
	this.type = (type) ? type : 'monetaryItemType';
	this.context = 0;
	this.min = 0;
	this.max = 0;
}

function loadRangeOptions() {
	var frm = document.forms['main'];
	if(!frm || !frm.elements['group'] || !frm.elements['subgroup']) return;
	var options = eval(frm.elements['group'].options[frm.elements['group'].selectedIndex].value);
	var select = frm.elements['subgroup'];
	if(select.selectedIndex != -1) {
		lastKey = select.options[select.selectedIndex].value;
	}
	
	while(select.options.length > 0)
		select.remove(0);

	for(key in options) {
		if(get_object(key)) continue;
		var range = options[key];
		var option = document.createElement('option');
		option.value = key;
		option.text = range.name;
		if(key == lastKey)
			option.selected = true;
		if(document.all)
			select.options.add(option);
		else
			select.appendChild(option);
	}
}

function addRange() {
	var tbl, row, cell, label, inp, span, anchor, img;
	var frm = document.forms['main'];
	if(!frm || !frm.elements['group'] || !frm.elements['subgroup']) return;
	var group = frm.elements['group'];
	var subgroup = frm.elements['subgroup'];
	var rangeId = 'range' + frm.elements['range-count'].value;
	var rangeName = subgroup.options[subgroup.selectedIndex].value;
	var options = eval(group.options[group.selectedIndex].value);
	var range = options[rangeName];
	tbl = get_object(group.options[group.selectedIndex].value);
	if(tbl.rows[0].className == 'no-choice') {
		tbl.deleteRow(0);
	}
	row = tbl.insertRow(tbl.rows.length);
	row.className = 'choice';
	row.id = rangeId;

	inp = document.createElement('input');
	inp.type = 'hidden';
	inp.name = rangeId + '-name';
	inp.value = rangeName;
	row.appendChild(inp);

	inp = document.createElement('input');
	inp.type = 'hidden';
	inp.name = rangeId + '-type';
	inp.value = range.type;
	row.appendChild(inp);

	cell = row.insertCell(row.cells.length);
	span = document.createElement('span');
	span.appendChild(document.createTextNode(range.name));
	cell.appendChild(span);

	var periodsMap = frm.elements['periods-map'].value;
	cell = row.insertCell(row.cells.length);
	cell.width = '1%';
	combo = document.createElement('select');
	combo.name = rangeId + '-ctx';
	cell.appendChild(combo);
	var periods = periodsMap.split(', ');
	for(var n = 0; n < periods.length; n++) {
		var periodentry = periods[n]
		var aPeriod = periodentry.split('=');
		var option = document.createElement('option');
		option.value = aPeriod[0];
		option.text = aPeriod[1];
		if(document.all) {
			combo.options.add(option);
		} else {
			combo.appendChild(option);
		}
	}

	cell = row.insertCell(row.cells.length);
	cell.width = '1%';
	cell.nowrap = true;
	label = document.createElement('label');
	label.htmlFor = rangeId + '-min';
	label.appendChild(document.createTextNode(i18nMin));
	cell.appendChild(label);

	cell = row.insertCell(row.cells.length);
	cell.width = '1%';
	inp = document.createElement('input');
	inp.type = 'text';
	inp.name = rangeId + '-min';
	inp.className = range.type;
	inp.onchange = inputChanged;
	inp.onkeypress = inputOnKeyPress;
	inp.onfocus = inputFocused;
	inp.onblur = inputBlured;
	inp.size = 10;
	cell.appendChild(inp);

	cell = row.insertCell(row.cells.length);
	cell.width = '1%';
	if(range.type == 'doubleItemType')
		cell.appendChild(document.createTextNode(PERCENT_SIGN));
	else if(range.type == 'monetaryItemType')
		cell.appendChild(document.createTextNode(CURRENCY_SYMBOL)); // euro sign
	else
		cell.appendChild(document.createElement('br')); // blank sign

	cell = row.insertCell(row.cells.length);
	cell.width = '1%';
	cell.appendChild(document.createTextNode(NBSP));

	cell = row.insertCell(row.cells.length);
	cell.width = '1%';
	cell.nowrap = true;
	label = document.createElement('label');
	label.htmlFor = rangeId + '-max';
	label.appendChild(document.createTextNode(i18nMax));
	cell.appendChild(label);

	cell = row.insertCell(row.cells.length);
	cell.width = '1%';
	inp = document.createElement('input');
	inp.type = 'text';
	inp.name = rangeId + '-max';
	inp.size = 10;
	inp.className = range.type;
	inp.onchange = inputChanged;
	inp.onkeypress = inputOnKeyPress;
	inp.onfocus = inputFocused;
	inp.onblur = inputBlured;
	cell.appendChild(inp);

	cell = row.insertCell(row.cells.length);
	cell.width = '1%';
	if(range.type == 'doubleItemType')
		cell.appendChild(document.createTextNode(PERCENT_SIGN));
	else if(range.type == 'monetaryItemType')
		cell.appendChild(document.createTextNode(CURRENCY_SYMBOL)); // euro sign
	else
		cell.appendChild(document.createElement('br')); // blank sign

	cell = row.insertCell(row.cells.length);
	cell.width = '1%';
	anchor = document.createElement('a');
	anchor.href = 'javascript:removeRange(\'' + rangeId + '\')';
	img = document.createElement('img');
	img.src = 'images/del.gif';
	img.align = 'absmiddle';
	anchor.appendChild(img);
	cell.appendChild(anchor);
	
	frm.elements['range-count'].value = parseInt(frm.elements['range-count'].value) + 1;
	
	//loadRangeOptions();
}

function removeRange(id) {
	var tbl, row, cell, label, inp, span, anchor, img;
	row = get_object(id);
	tbl = parent_with_name(row, 'table');
	tbl.deleteRow(row.rowIndex);
	if(tbl.rows.length == 0) {
		row = tbl.insertRow(tbl.rows.length);
		row.className = 'no-choice';
	
		cell = row.insertCell(row.cells.length);
		cell.appendChild(document.createTextNode(i18nNoChoice));
	}
	//loadRangeOptions();
}


