function checkMS(elem, max){
	var cElem = elem;
	//finding ul element
	do {
		if (elem.nodeName == "DIV")
			break;
		elem = elem.parentNode;
	}
	while(true);
	elem = elem.parentNode;
	
	var inputs = elem.getElementsByTagName('input');
	var mirrorElements = new Array();
	var checkedElements = new Array();
	for(i=0;i<inputs.length;i++){
		if (inputs[i].value == cElem.value){			//changing state of mirror elements
			if (cElem != inputs[i])
				mirrorElements.push(inputs[i]);
		}
		else {
			if (inputs[i].checked)
				checkedElements.push(inputs[i].value);
		}
	}
	//getting unique elements
	uniqueCheckedElements = unique(checkedElements);
	result = (uniqueCheckedElements.length<max);
	for(i=0;i<mirrorElements.length;i++){			//marking mirrored values
		if (cElem.checked)
			mirrorElements[i].checked = result;
		else
			mirrorElements[i].checked = false;
	}
	updatePreview();
	return result;
}

function unique(dataArray){
	sorted = dataArray.sort();
	
	var uniqueElements = new Array();
	var last = "";
	for (i=0;i<sorted.length;i++){
		if (last != sorted[i])
			uniqueElements.push(sorted[i]);
		last = sorted[i];
	}
	return uniqueElements;
}

function markPPP(boxId, max){
	var box = document.getElementById(boxId);
	var uls = box.getElementsByTagName("UL");
	
	var inputs = box.getElementsByTagName("INPUT");
	var markedBefore = inputs[0].value;			//hidden field
	var checkedInputs = new Array();
	for (i=0;i<inputs.length;i++){
		if (inputs[i].type != "checkbox")
			continue;
		if (markedBefore == "1")
			inputs[i].checked = false;
		else {
			if (inputs[i].checked)
				checkedInputs.push(inputs[i].value);
		}
	}
	inputs[0].value = (markedBefore == "1")?"0":"1";
	if (markedBefore == "1"){
		updatePreview();
		return;
	}
	var uniqueCheckedElements = unique(checkedInputs);
	
	var pppInputs = uls[0].getElementsByTagName("INPUT");
	maxInputsToMark = max-uniqueCheckedElements.length;
	
	var pppMarked = 0;
	for (i=0;i<pppInputs.length;i++){
		if (pppMarked == maxInputsToMark)
			break;
		if (!pppInputs[i].checked){
			for(k=0;k<inputs.length;k++){
				if (inputs[k].value == pppInputs[i].value)
					inputs[k].checked = true;
			}
			pppMarked++;
		}
	}
	pppMarked = true;
	updatePreview();
}

function checkMatrixSelection(vrs, hrs){
	var vul = document.getElementById(vrs);
	
	setError("");
	var inputs = vul.getElementsByTagName('input');
	var n = 0;
	for(i=0;i<inputs.length;i++){
		if (inputs[i].checked)
			n++;
	}
	if (n == 0){
		setError('Please choose at least one currency which will be displayed in rows of table');
		return false;
	}

	var hul = document.getElementById(hrs);
	
	inputs = hul.getElementsByTagName('input');
	n = 0;
	for(i=0;i<inputs.length;i++){
		if (inputs[i].checked)
			n++;
	}
	if (n == 0){
		setError('Please choose at least on currency which will be displayed in cells of table');
		return false;
	}
	return true;
}

function setError(msg){
	var e = document.getElementById("error");
	e.innerHTML = msg;
}

function changeTab(selectedTab){
	//marking selected tab
	var tabs = selectedTab.parentNode.getElementsByTagName("div");
	var currentIndex = 0;
	for(i=0;i<tabs.length;i++){
		tabs[i].className = "tabs";
		if (tabs[i] == selectedTab)
			currentIndex = i;
	}
	selectedTab.className = "selected tabs";
	
	var lists = selectedTab.parentNode.getElementsByTagName("ul");
	for (i=0;i<lists.length;i++)
		lists[i].style.display = 'none';
	lists[currentIndex].style.display = '';
}
