function DDgetArgs() {
	var args = new Object();
	var query = location.search.substring(1);
	var pairs = query.split("&");
	for (var i = 0; i < pairs.length; i++) {
		var pos = pairs[i].indexOf('=');
		var val = (-1 != pos && pairs[i].length - 1 != pos) ? decodeURIComponent(pairs[i].substring(pos+1).replace(/\+/g, "%20")) : '';
		args[pairs[i].substring(0,pos)] = val;
	}
	return args;
}

function DDcreateDropdown(e, name, data, l) {
	var dropdown = document.createElement("select");
	dropdown.setAttribute("id", name);
	e.appendChild(dropdown);
	DDfillDropdown(dropdown, data, l);
	return dropdown;
}

function DDclipText(s, len) {
	return (s.length < len + 3) ? s : (s.substring(0, len) + "...");
}

function DDfillDropdown(d, data, l) {
    var maxLen = l;
	for (var i = 0; null != data && i < data.length; ++i) {
		var option = document.createElement("option");
		var displayVal = DDclipText(data[i], maxLen);
		option.setAttribute("value", data[i]);
		d.appendChild(option);
		option.appendChild(document.createTextNode(displayVal));
	}
	d.selectedIndex = 0;
}

function DDresetState(d, join) {
	var form = d.parentNode;
	var iselect = 0;
	var state = '';
	for (; iselect < form.elements.length; ++iselect) {
		if (join)
			state += DDselectedValue1(form[iselect]);
		else
			state = DDselectedValue1(form[iselect]);
		if (form[iselect] == d) break;
	}
	if (1 + iselect < form.elements.length) {
		var target = form.elements[1 + iselect];
		DDclearDropdown(target);
		DDfillDropdown(target, form.ymm.data[1 + iselect][state], form.ymm.maxLen);
		target.disabled = (target.options.length <= 1);
		DDresetState(form.elements[1 + iselect], join);
		if (window.ymmCallback) {
			window.ymmCallback();
		}
	}
}

function DDselect(el, value) {
	var frm = el.parentNode;
	for (var sel in frm.ymm.mpSel2Val) {
		if (frm.ymm.mpSel2Val[sel] == value) {
			value = sel;
			break;
		}
	}
	
	for (var ioption = 0; ioption < el.options.length; ++ioption) 
	{
		if (value == encodeURIComponent(el.options[ioption].value) || value == el.options[ioption].value) 
			el.selectedIndex = ioption;
	}
}

function DDclearDropdown(d) {
	if (d && d.options) {
		for (var ioption = d.options.length - 1; ioption >= 0; --ioption) {
			d.removeChild(d.options[ioption]);
		}
	}
}

function DDselectedValue1(e) {
	if (null == e || -1 == e.selectedIndex) return null;
	if ("select-one" == e.type) return e.options[e.selectedIndex].value;
	if ("select-multiple" == e.type) {
		var result = "";
		for (var ifield = 0; ifield < e.options.length; ifield++) {
			if (e.options[ifield].selected) result += e.options[ifield].value + ',';
		}
		return result.substring(0, result.length - 1);
	}
}

function DDmappedSelectedValue1(e) {
	var frm = e.parentNode;
	var value = DDselectedValue1(e);
	for (var sel in frm.ymm.mpSel2Val) {
		if (sel == value)
			return frm.ymm.mpSel2Val[sel];
	}
	return value;
}

function DDselectedValue(f, el) {
	return DDselectedValue1(f.elements[el]);
}

function DDmappedSelectedValue(f, el) {
	return DDmappedSelectedValue1(f.elements[el]);
}

function DDslotRedirect(e) {
	return DDslotRedirect1(e, '');
}

function DDslotRedirect1(e, addQuery) {
	if (0 == e.selectedIndex) return;
	
	var frm = e.parentNode;
	var url = (frm.ymm.urls.length > e.selectedIndex) ? url = frm.ymm.urls[e.selectedIndex] : frm.ymm.url;
	for (var ifield = 0; ifield < frm.elements.length; ifield++) {
		var regexp = new RegExp("\\{" + ifield + "\\}", "g");
		var value = DDselectedValue(frm, ifield);
		for (var sel in frm.ymm.mpSel2Val) {
			if (sel == value) {
				value = frm.ymm.mpSel2Val[sel];
				break;
			}
		}
		url = url.replace(regexp, encodeURIComponent(value));
	}
	window.location.href = url + addQuery;
}