(function (window, document) {
	'use strict';

	var cfg = window.LogisticaOrdenProduccionVasosConfig || {};
	var SHEET_WIDTH_MM = Number(cfg.sheetWidthMm) || 215.9;
	var SHEET_HEIGHT_MM = Number(cfg.sheetHeightMm) || 279.4;
	var i18n = cfg.i18n || {};
	var printFrame = null;

	function pad2(value) {
		var n = String(value == null ? '' : value).replace(/\D/g, '');
		if (!n) {
			return '';
		}
		return n.length === 1 ? '0' + n : n.slice(-2);
	}

	function normalizeYear(value) {
		var n = String(value == null ? '' : value).replace(/\D/g, '');
		if (!n) {
			return '';
		}
		if (n.length === 2) {
			var y = parseInt(n, 10);
			return (y >= 70 ? '19' : '20') + pad2(n);
		}
		return n.slice(0, 4);
	}

	function syncDateFromPicker(group) {
		var picker = group.querySelector('.opv-date__picker');
		var d = group.querySelector('[data-opv-date-part="d"]');
		var m = group.querySelector('[data-opv-date-part="m"]');
		var y = group.querySelector('[data-opv-date-part="y"]');
		var value;
		var parts;

		if (!picker || !picker.value) {
			return;
		}

		parts = picker.value.split('-');
		if (parts.length !== 3) {
			return;
		}

		if (y) {
			y.value = parts[0];
		}
		if (m) {
			m.value = parts[1];
		}
		if (d) {
			d.value = parts[2];
		}
		value = parts;
		return value;
	}

	function syncPickerFromParts(group) {
		var picker = group.querySelector('.opv-date__picker');
		var d = group.querySelector('[data-opv-date-part="d"]');
		var m = group.querySelector('[data-opv-date-part="m"]');
		var y = group.querySelector('[data-opv-date-part="y"]');
		var day;
		var month;
		var year;
		var iso;

		if (!picker) {
			return;
		}

		day = pad2(d && d.value);
		month = pad2(m && m.value);
		year = normalizeYear(y && y.value);

		if (day && month && year && year.length === 4) {
			iso = year + '-' + month + '-' + day;
			if (!Number.isNaN(Date.parse(iso))) {
				picker.value = iso;
				return;
			}
		}

		if (!day && !month && !year) {
			picker.value = '';
		}
	}

	function bindDateGroup(group) {
		var picker;
		var parts;

		if (!group || group.dataset.opvDateBound === '1') {
			return;
		}

		group.dataset.opvDateBound = '1';
		picker = group.querySelector('.opv-date__picker');
		parts = group.querySelectorAll('[data-opv-date-part]');

		if (picker) {
			picker.addEventListener('change', function () {
				syncDateFromPicker(group);
			});
			picker.addEventListener('input', function () {
				syncDateFromPicker(group);
			});
		}

		parts.forEach(function (input) {
			input.addEventListener('input', function () {
				var part = input.getAttribute('data-opv-date-part');
				var raw = String(input.value || '').replace(/\D/g, '');
				if (part === 'y') {
					input.value = raw.slice(0, 4);
				} else {
					input.value = raw.slice(0, 2);
				}
				syncPickerFromParts(group);
			});
			input.addEventListener('blur', function () {
				var part = input.getAttribute('data-opv-date-part');
				if (part === 'd' || part === 'm') {
					input.value = pad2(input.value);
				} else if (part === 'y') {
					input.value = normalizeYear(input.value);
				}
				syncPickerFromParts(group);
			});
		});
	}

	function setStatus(board, message, isError) {
		var status = board ? board.querySelector('[data-opv-status]') : null;
		if (!status) {
			return;
		}
		status.textContent = message || '';
		status.classList.toggle('is-error', !!isError);
	}

	function clearForm(form) {
		if (!form) {
			return;
		}

		form.querySelectorAll('input[type="text"], input[type="number"], textarea').forEach(function (el) {
			el.value = '';
		});
		form.querySelectorAll('input[type="checkbox"], input[type="radio"]').forEach(function (el) {
			el.checked = false;
		});
		form.querySelectorAll('input[type="date"]').forEach(function (el) {
			el.value = '';
		});
	}

	function getPrintCss() {
		return ''
			+ '@page{size:' + SHEET_WIDTH_MM + 'mm ' + SHEET_HEIGHT_MM + 'mm;margin:0;}'
			+ 'html,body{margin:0!important;padding:0!important;background:#fff!important;}'
			+ '*,*::before,*::after{'
			+ 'box-sizing:border-box!important;'
			+ '-webkit-print-color-adjust:exact!important;'
			+ 'print-color-adjust:exact!important;'
			+ 'color-adjust:exact!important;'
			+ '}'
			+ 'body.opv-print-doc{'
			+ 'background:#fff!important;'
			+ 'color:#111!important;'
			+ 'width:' + SHEET_WIDTH_MM + 'mm!important;'
			+ '}'
			+ '.opv-print-page{'
			+ 'box-sizing:border-box;'
			+ 'height:' + SHEET_HEIGHT_MM + 'mm;'
			+ 'margin:0;'
			+ 'overflow:hidden;'
			+ 'page-break-after:always;'
			+ 'break-after:page;'
			+ 'padding:0;'
			+ 'width:' + SHEET_WIDTH_MM + 'mm;'
			+ '}'
			+ '.opv-print-page:last-child{page-break-after:auto;break-after:auto;}'
			+ 'body.opv-print-doc .opv-sheet{'
			+ 'background:#fff!important;'
			+ 'border:0!important;'
			+ 'box-shadow:none!important;'
			+ 'color:#111!important;'
			+ 'display:flex!important;'
			+ 'flex-direction:column!important;'
			+ 'gap:0!important;'
			+ 'height:' + SHEET_HEIGHT_MM + 'mm!important;'
			+ 'margin:0!important;'
			+ 'max-width:none!important;'
			+ 'overflow:hidden!important;'
			+ 'padding:5mm 7mm 4.5mm 6mm!important;'
			+ 'width:' + SHEET_WIDTH_MM + 'mm!important;'
			+ '}'
			/* Espaciado y saltos iguales a pantalla */
			+ 'body.opv-print-doc .opv-body{'
			+ 'display:flex!important;'
			+ 'flex-direction:column!important;'
			+ 'gap:1.8mm!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-pre{'
			+ 'display:flex!important;'
			+ 'flex-direction:column!important;'
			+ 'gap:1.8mm!important;'
			+ 'margin-top:1.8mm!important;'
			+ 'padding-top:2mm!important;'
			+ 'border-top:2.2px solid #111!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-row,'
			+ 'body.opv-print-doc .opv-row--2,'
			+ 'body.opv-print-doc .opv-row--3,'
			+ 'body.opv-print-doc .opv-row--4,'
			+ 'body.opv-print-doc .opv-row--material,'
			+ 'body.opv-print-doc .opv-row--tintas,'
			+ 'body.opv-print-doc .opv-row--pre-top{'
			+ 'align-items:stretch!important;'
			+ 'display:flex!important;'
			+ 'flex-wrap:nowrap!important;'
			+ 'gap:1.8mm!important;'
			+ 'width:100%!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-row--1{gap:0!important;}'
			+ 'body.opv-print-doc .opv-row--tintas{gap:0!important;}'
			+ 'body.opv-print-doc .opv-row--tintas .opv-cell+.opv-cell{border-left:0!important;}'
			+ 'body.opv-print-doc .opv-cell{'
			+ 'align-items:stretch!important;'
			+ 'border:1px solid #111!important;'
			+ 'display:flex!important;'
			+ 'flex-direction:row!important;'
			+ 'gap:0!important;'
			+ 'min-height:6.8mm!important;'
			+ 'overflow:visible!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-cell--sm{flex:1 1 0!important;}'
			+ 'body.opv-print-doc .opv-cell--md{flex:1.15 1 0!important;}'
			+ 'body.opv-print-doc .opv-cell--wide{flex:1.35 1 0!important;}'
			+ 'body.opv-print-doc .opv-cell--date{flex:1.45 1 0!important;min-width:72mm!important;}'
			+ 'body.opv-print-doc .opv-cell--papel{flex:1.15 1 0!important;}'
			+ 'body.opv-print-doc .opv-cell--fill{flex:1 1 100%!important;}'
			+ 'body.opv-print-doc .opv-cell--prices{'
			+ 'align-items:center!important;'
			+ 'background:#fafafa!important;'
			+ 'border:1px solid #111!important;'
			+ 'display:flex!important;'
			+ 'flex:1.4 1 0!important;'
			+ 'flex-wrap:nowrap!important;'
			+ 'gap:2.2mm!important;'
			+ 'padding:0 2mm!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-row--material .opv-cell--md{flex:1 1 0!important;}'
			+ 'body.opv-print-doc .opv-montaje{'
			+ 'display:grid!important;'
			+ 'gap:2.8mm!important;'
			+ 'grid-template-columns:1fr 1fr 1fr!important;'
			+ 'margin:0.8mm 0 0.4mm!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-montaje__frame{'
			+ 'background:#fff!important;'
			+ 'border:1.5px solid #111!important;'
			+ 'min-height:25mm!important;'
			+ 'padding:2.2mm!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-verify{'
			+ 'display:flex!important;'
			+ 'flex-direction:column!important;'
			+ 'gap:2.4mm!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-verify__cols{'
			+ 'display:grid!important;'
			+ 'gap:3mm!important;'
			+ 'grid-template-columns:1fr 1fr!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-verify__col{'
			+ 'background:#fafafa!important;'
			+ 'border:1px solid #111!important;'
			+ 'padding:2.2mm 2.6mm 3mm!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-verify__list{gap:2mm!important;}'
			+ 'body.opv-print-doc .opv-head{'
			+ 'align-items:start!important;'
			+ 'display:grid!important;'
			+ 'gap:3mm!important;'
			+ 'grid-template-columns:minmax(0,1fr) auto!important;'
			+ 'margin-bottom:2.2mm!important;'
			+ 'min-width:0!important;'
			+ 'overflow:visible!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-head__left{min-width:0!important;}'
			+ 'body.opv-print-doc .opv-head__title{font-size:12.5pt!important;min-width:0!important;}'
			+ 'body.opv-print-doc .opv-head__num{min-width:18mm!important;}'
			+ 'body.opv-print-doc .opv-head__brand{'
			+ 'align-items:flex-end!important;'
			+ 'display:flex!important;'
			+ 'flex:0 0 auto!important;'
			+ 'flex-direction:column!important;'
			+ 'gap:1mm!important;'
			+ 'max-width:48mm!important;'
			+ 'min-width:40mm!important;'
			+ 'overflow:visible!important;'
			+ 'padding:0.4mm 0.6mm 0 0!important;'
			+ 'width:48mm!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-head__logo{'
			+ 'display:block!important;'
			+ 'height:10.5mm!important;'
			+ 'max-width:100%!important;'
			+ 'object-fit:contain!important;'
			+ 'object-position:right center!important;'
			+ 'width:100%!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-head__code{'
			+ 'color:#555!important;'
			+ 'font-size:7pt!important;'
			+ 'font-weight:700!important;'
			+ 'letter-spacing:0.06em!important;'
			+ 'max-width:100%!important;'
			+ 'padding-right:0.3mm!important;'
			+ 'text-align:right!important;'
			+ 'white-space:nowrap!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-head__dates{'
			+ 'display:grid!important;'
			+ 'gap:3.5mm!important;'
			+ 'grid-template-columns:1fr 1fr!important;'
			+ '}'
			/* Etiqueta + input = un solo cuadro (evita filete izquierdo doble) */
			+ 'body.opv-print-doc .opv-cell__lab,'
			+ 'body.opv-print-doc .opv-cell--date .opv-date__label{'
			+ 'background:#e4e4e4!important;'
			+ 'border:0!important;'
			+ 'border-right:1px solid #111!important;'
			+ 'box-shadow:none!important;'
			+ 'color:#111!important;'
			+ 'flex:0 0 auto!important;'
			+ 'min-width:max-content!important;'
			+ 'outline:none!important;'
			+ 'padding:0 1.7mm!important;'
			+ 'white-space:nowrap!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-cell,'
			+ 'body.opv-print-doc .opv-cell__inp{outline:none!important;box-shadow:none!important;}'
			+ 'body.opv-print-doc .opv-cell--hl .opv-cell__lab,'
			+ 'body.opv-print-doc .opv-flag--hl .opv-flag__lab{background:#f4a574!important;box-shadow:none!important;}'
			+ 'body.opv-print-doc .opv-cell__inp{'
			+ 'background:#fff!important;'
			+ 'border:0!important;'
			+ 'color:#111!important;'
			+ 'flex:1 1 auto!important;'
			+ 'min-height:6.8mm!important;'
			+ 'min-width:0!important;'
			+ 'padding:0.6mm 1.5mm!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-otro-cual__inp,'
			+ 'body.opv-print-doc .opv-obs__box{'
			+ 'background:#fff!important;'
			+ 'border:1px solid #111!important;'
			+ 'color:#111!important;'
			+ 'flex:1 1 auto!important;'
			+ 'min-height:6.8mm!important;'
			+ 'min-width:0!important;'
			+ 'padding:0.6mm 1.5mm!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-cell--date .opv-date__part{border-top:0!important;border-bottom:0!important;}'
			+ 'body.opv-print-doc .opv-cell--date .opv-date__boxes .opv-date__part:first-child{border-left:0!important;}'
			+ 'body.opv-print-doc .opv-cell--date .opv-date__boxes .opv-date__part:last-child{border-right:0!important;}'
			+ 'body.opv-print-doc .opv-obs{gap:1.3mm!important;width:100%!important;}'
			+ 'body.opv-print-doc .opv-obs__box{min-height:13mm!important;}'
			+ 'body.opv-print-doc .opv-head__num{'
			+ 'border:0!important;'
			+ 'border-bottom:1.7px solid #111!important;'
			+ 'background:transparent!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-date{'
			+ 'align-items:stretch!important;'
			+ 'display:flex!important;'
			+ 'gap:0!important;'
			+ 'width:100%!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-head .opv-date{gap:2mm!important;align-items:flex-end!important;}'
			+ 'body.opv-print-doc .opv-date__group{display:flex!important;flex:1 1 auto!important;}'
			+ 'body.opv-print-doc .opv-date__boxes{display:flex!important;flex:1 1 auto!important;}'
			+ 'body.opv-print-doc .opv-date__part{'
			+ 'border:1px solid #111!important;'
			+ 'display:flex!important;'
			+ 'flex:1 1 0!important;'
			+ 'flex-direction:column!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-date__part+.opv-date__part{border-left:0!important;}'
			+ 'body.opv-print-doc .opv-date__cap{'
			+ 'background:#f3f3f3!important;'
			+ 'border-bottom:1px solid #111!important;'
			+ 'padding:0.35mm 0!important;'
			+ 'text-align:center!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-date__part input{'
			+ 'background:#fff!important;'
			+ 'border:0!important;'
			+ 'min-height:5mm!important;'
			+ 'padding:0.5mm 1mm!important;'
			+ 'text-align:center!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-date__picker-wrap{'
			+ 'border:0!important;'
			+ 'flex:0 0 0!important;'
			+ 'max-width:0!important;'
			+ 'min-width:0!important;'
			+ 'opacity:0!important;'
			+ 'overflow:hidden!important;'
			+ 'padding:0!important;'
			+ 'pointer-events:none!important;'
			+ 'width:0!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-papel{align-items:stretch!important;border:0!important;display:flex!important;flex:1 1 auto!important;position:relative!important;}'
			+ 'body.opv-print-doc .opv-papel__part{display:flex!important;flex:1 1 0!important;flex-direction:column!important;}'
			+ 'body.opv-print-doc .opv-papel__part span{'
			+ 'background:#f3f3f3!important;'
			+ 'border-bottom:1px solid #111!important;'
			+ 'padding:0.35mm 1mm!important;'
			+ 'text-align:center!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-papel__part input{border:0!important;min-height:4.4mm!important;outline:none!important;padding:0.5mm 1mm!important;}'
			+ 'body.opv-print-doc .opv-papel__x{'
			+ 'align-items:center!important;'
			+ 'align-self:stretch!important;'
			+ 'background:#fff!important;'
			+ 'border:0!important;'
			+ 'display:flex!important;'
			+ 'flex:0 0 7mm!important;'
			+ 'font-weight:800!important;'
			+ 'justify-content:center!important;'
			+ 'min-width:7mm!important;'
			+ 'padding:0 1.4mm!important;'
			+ 'position:relative!important;'
			+ 'z-index:2!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-papel__x::before,'
			+ 'body.opv-print-doc .opv-papel__x::after{'
			+ 'background:#111!important;'
			+ 'bottom:0!important;'
			+ 'content:""!important;'
			+ 'position:absolute!important;'
			+ 'top:0!important;'
			+ 'width:1px!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-papel__x::before{left:0!important;}'
			+ 'body.opv-print-doc .opv-papel__x::after{right:0!important;}'
			+ 'body.opv-print-doc .opv-montaje__opt>input:checked+.opv-montaje__frame{background:#e1e7ff!important;}'
			+ 'body.opv-print-doc .opv-montaje__opt>input:checked+.opv-montaje__frame::after{opacity:1!important;}'
			+ 'body.opv-print-doc .opv-flag__lab{background:#e4e4e4!important;border:1px solid #111!important;padding:1.1mm 2.2mm!important;}'
			+ 'body.opv-print-doc .opv-check__box{'
			+ 'background:#fff!important;'
			+ 'border:2.3px solid #00c853!important;'
			+ 'border-radius:1.2mm!important;'
			+ 'height:4.3mm!important;'
			+ 'width:4.3mm!important;'
			+ '}'
			+ 'body.opv-print-doc .opv-check input:checked~.opv-check__box::before{opacity:1!important;}'
			+ 'body.opv-print-doc .opv-otro-cual{display:inline-flex!important;flex:1 1 22mm!important;gap:1mm!important;}'
			+ 'body.opv-print-doc input,body.opv-print-doc textarea{caret-color:transparent;}'
			+ '@media print{'
			+ 'html,body{margin:0!important;padding:0!important;}'
			+ '.opv-print-page{page-break-after:always;break-after:page;}'
			+ '.opv-print-page:last-child{page-break-after:auto;break-after:auto;}'
			+ '}';
	}

	function cloneSheetForPrint(sheet) {
		var clone = sheet.cloneNode(true);
		var sourceInputs = sheet.querySelectorAll('input, textarea, select');
		var cloneInputs = clone.querySelectorAll('input, textarea, select');
		var i;
		var src;
		var dst;

		for (i = 0; i < sourceInputs.length; i += 1) {
			src = sourceInputs[i];
			dst = cloneInputs[i];
			if (!dst) {
				continue;
			}
			if (src.type === 'checkbox' || src.type === 'radio') {
				if (src.checked) {
					dst.setAttribute('checked', 'checked');
					dst.checked = true;
				} else {
					dst.removeAttribute('checked');
					dst.checked = false;
				}
			} else if (src.tagName === 'TEXTAREA') {
				dst.textContent = src.value;
				dst.value = src.value;
			} else {
				dst.setAttribute('value', src.value);
				dst.value = src.value;
			}
		}

		/* No eliminar nodos del layout: solo se ocultan por CSS en impresión */
		return clone;
	}

	function removePrintFrame() {
		if (printFrame && printFrame.parentNode) {
			printFrame.parentNode.removeChild(printFrame);
		}
		printFrame = null;
	}

	function buildPrintDocument(sheet) {
		var clone = cloneSheetForPrint(sheet);
		var cssHref = String(cfg.cssUrl || '').replace(/"/g, '&quot;');
		var cssLink = cssHref
			? '<link rel="stylesheet" href="' + cssHref + '">'
			: '';

		return (
			'<!DOCTYPE html><html><head><meta charset="utf-8">'
			+ '<meta name="viewport" content="width=' + SHEET_WIDTH_MM + '">'
			+ '<title>Orden de producción de vasos</title>'
			+ cssLink
			+ '<style>' + getPrintCss() + '</style>'
			+ '</head><body class="opv-print-doc">'
			+ '<div class="opv-print-page">' + clone.outerHTML + '</div>'
			+ '</body></html>'
		);
	}

	function waitForPrintStyles(printWindow) {
		return new Promise(function (resolve) {
			var doc = printWindow.document;
			var links;
			var pending = 0;
			var done = false;

			function finish() {
				if (done) {
					return;
				}
				done = true;
				resolve();
			}

			if (!doc) {
				finish();
				return;
			}

			links = Array.prototype.slice.call(doc.querySelectorAll('link[rel="stylesheet"]'));
			if (!links.length) {
				setTimeout(finish, 80);
				return;
			}

			links.forEach(function (link) {
				pending += 1;
				if (link.sheet) {
					pending -= 1;
					return;
				}
				link.addEventListener('load', function () {
					pending -= 1;
					if (pending <= 0) {
						finish();
					}
				});
				link.addEventListener('error', function () {
					pending -= 1;
					if (pending <= 0) {
						finish();
					}
				});
			});

			if (pending <= 0) {
				setTimeout(finish, 80);
				return;
			}

			setTimeout(finish, 1200);
		});
	}

	function printSheet(sheet) {
		var html = buildPrintDocument(sheet);

		removePrintFrame();
		printFrame = document.createElement('iframe');
		printFrame.setAttribute('aria-hidden', 'true');
		/* Ancho real de Carta: evita que CSS responsive trate el iframe como móvil */
		printFrame.style.cssText =
			'position:fixed;left:-10000px;top:0;width:' + SHEET_WIDTH_MM + 'mm;height:' + SHEET_HEIGHT_MM + 'mm;border:0;opacity:0;pointer-events:none;';
		document.body.appendChild(printFrame);

		return new Promise(function (resolve, reject) {
			var finished = false;

			function finish(error) {
				if (finished) {
					return;
				}
				finished = true;
				printFrame.onload = null;
				setTimeout(removePrintFrame, 1500);
				if (error) {
					reject(error);
					return;
				}
				resolve();
			}

			printFrame.onload = function () {
				var printWindow = printFrame.contentWindow;
				if (!printWindow) {
					finish(new Error(i18n.printFail || 'No se pudo imprimir.'));
					return;
				}

				waitForPrintStyles(printWindow).then(function () {
					setTimeout(function () {
						try {
							printWindow.focus();
							printWindow.print();
							finish(null);
						} catch (err) {
							finish(err);
						}
					}, 120);
				});
			};

			printFrame.onerror = function () {
				finish(new Error(i18n.printFail || 'No se pudo imprimir.'));
			};

			printFrame.srcdoc = html;
		});
	}

	function bindOtroCual(form) {
		var check = form.querySelector('[data-opv-otro-check]');
		var cual = form.querySelector('[data-opv-otro-cual]');

		if (!check || !cual) {
			return;
		}

		cual.addEventListener('input', function () {
			if (String(cual.value || '').trim() !== '') {
				check.checked = true;
			}
		});
	}

	function bindBoard(board) {
		var form;
		var printBtn;
		var clearBtn;

		if (!board || board.dataset.opvBound === '1') {
			return;
		}

		board.dataset.opvBound = '1';
		form = board.querySelector('[data-opv-sheet]');
		if (!form) {
			return;
		}

		board.querySelectorAll('[data-opv-date]').forEach(bindDateGroup);
		bindOtroCual(form);

		printBtn = board.querySelector('[data-opv-print]');
		clearBtn = board.querySelector('[data-opv-clear]');

		if (printBtn) {
			printBtn.addEventListener('click', function () {
				setStatus(board, 'Abriendo impresión en Carta…', false);
				printSheet(form)
					.then(function () {
						setStatus(board, i18n.printReady || 'Impresión lista.', false);
					})
					.catch(function (err) {
						setStatus(board, (err && err.message) || i18n.printFail || 'No se pudo imprimir.', true);
					});
			});
		}

		if (clearBtn) {
			clearBtn.addEventListener('click', function () {
				clearForm(form);
				setStatus(board, i18n.cleared || 'Formulario limpio.', false);
			});
		}

		form.addEventListener('submit', function (event) {
			event.preventDefault();
		});
	}

	function init(root) {
		var scope = root && root.querySelectorAll ? root : document;
		scope.querySelectorAll('[data-opv-board]').forEach(bindBoard);
		if (root && root.matches && root.matches('[data-opv-board]')) {
			bindBoard(root);
		}
	}

	window.LogisticaOrdenProduccionVasos = {
		init: init,
		printSheet: printSheet,
		clearForm: clearForm
	};

	if (document.readyState === 'loading') {
		document.addEventListener('DOMContentLoaded', function () {
			init(document);
		});
	} else {
		init(document);
	}

	document.addEventListener('logistica:tab-loaded', function (event) {
		var detail = event && event.detail ? event.detail : {};
		if (detail.panel) {
			init(detail.panel);
		}
	});
}(window, document));
