var addListener = (function () {if (window.addEventListener) {return function (el, type, fn) {el.addEventListener(type, fn, false);};} else if (window.attachEvent) {return function (el, type, fn) {var f = function () {fn.call(el, window.event);};el.attachEvent("on" + type, f);};} else {return function (el, type, fn) {el["on" + type] = fn;};}})();

function getTarget(e) {
	var targ = e.target || e.srcElement;
	if (targ && (targ.nodeType == 3 || targ.nodeType == 4)) {
		targ = targ.parentNode;
	}
	return targ ? targ : null;
}

function findMaxVwitem() {
	var form = document.getElementById('ma-of'),
		vwitemNumber = 0;

	if (form && form['multiple-add']) {
		var vwitemTest = /^vwitem(\d*)/i;

		// Find largest vwitem number currently in use
		for (var i = 0, el; el = form.elements[i]; i++) {
			var matches = el.getAttribute('name').match(vwitemTest);
			if (matches && matches.length > 0) {
				var number = parseInt(matches[1]);
				vwitemNumber = vwitemNumber > number ? vwitemNumber : number;
			}
		}
	}
	return vwitemNumber;
}

function addMultiItem() {
	var vwitemNumber = findMaxVwitem() + 1,
	    tbody = document.getElementById("multi-add-body").getElementsByTagName('tbody')[0],
	    trs = tbody.getElementsByTagName('tr'),
	    newTr = trs[trs.length - 2].cloneNode(true),
	    newSep = trs[trs.length - 1].cloneNode(true),
	    vwattr = newTr.getElementsByTagName('select')[0],
	    vwitem = newTr.getElementsByTagName('input')[0],
	    vwquantity = newTr.getElementsByTagName('input')[1],
	    replaceRegex = /^vw(attr|item|quantity)\d*/i;
	vwattr.name = vwattr.name.replace(replaceRegex, 'vw$1' + vwitemNumber);
	vwitem.name = vwitem.name.replace(replaceRegex, 'vw$1' + vwitemNumber);
	vwquantity.name = vwquantity.name.replace(replaceRegex, 'vw$1' + vwitemNumber);
	tbody.appendChild(newTr);
	tbody.appendChild(newSep);
}

addListener(window, 'load', function () {
	var table = document.getElementById('multi-add-body');
	if (table) {
		var selects = table.getElementsByTagName('tbody')[0].getElementsByTagName('select'),
		    vwTest = /^vwattr/i;
		for (var i = 0, select; select = selects[i]; i++) {
			if (vwTest.test(select.name)) {
				addListener(select, 'change', function(e) {
					var select = getTarget(e);
					if (select.selectedIndex !== 0) {
						var matches = select.name.match(/^vwattr(\d*)/i),
						    qtyInput = select.form.elements['vwitem' + matches[1]];
						if (qtyInput && qtyInput.value === '0') qtyInput.value = '1';
					}
				});
			}
		}
	}
});
