var MaskedMSelect = {
	version : 0.1,
	templatesSelect_change : function(input) {
		try {
			value = input.options[input.selectedIndex].value;
		} catch(e) {
			value = "";
		}
		MaskedMSelect.getTemplateInput(input).value = value;
	},
	paramInput_change : function(input) {
		var table = MaskedMSelect.getParentByClassName(input, "tableMaskedMSelect");
		var fieldsUnsorted = new Array();
		var items = table.getElementsByTagName("select");
		//Starting at 1 because of the template-select
		for(var i=1;i<items.length;i++) {
			fieldsUnsorted.push(items[i]);
		}
		var items = table.getElementsByTagName("input");
		for(var i=0;i<items.length;i++) {
			fieldsUnsorted.push(items[i]);
		}
		var fieldsSorted = new Array(fieldsUnsorted.length);
		for(var i=0;i<fieldsUnsorted.length;i++) {
			fieldsSorted[parseInt(fieldsUnsorted[i].className.replace("MaskedMSelectParam",""))-1] = fieldsUnsorted[i];
		}
		var values = new Array();
		for(var i=0;i<fieldsSorted.length;i++) {
			if(fieldsSorted[i].tagName == "SELECT") {
				values.push(fieldsSorted[i].options[fieldsSorted[i].selectedIndex].value);
			} else {
				values.push(fieldsSorted[i].value);
			}
		}
		MaskedMSelect.getParamsInput(input).value = values.join("|");
	},
	getTemplateInput : function(aInput) {
		return MaskedMSelect.getWInput(aInput, 1);
	},
	getParamsInput : function(aInput) {
		return MaskedMSelect.getWInput(aInput, 0);
	},
	getWInput : function(startNode, no) {
		var parentDiv = MaskedMSelect.getParentByClassName(startNode, "elementMaskedMSelect");
		return parentDiv.getElementsByTagName("INPUT")[no];
	},
	getParentByClassName : function(node, className) {
		while(node.parentNode) {
			node = node.parentNode;
			if(node.className == className) return node;
		}
	}
}