$(document).ready(function () {

	ifvis = false;

	if ( VERBOSE ) { console.warn("messmasken.js loading ..."); }
	
	function getTXLCode(e) {
		var frmName = e.target.form.id;
		switch ( frmName ) { 
			case "frmMM3040":
				actTXLCode = helper.trp2TXLCode( "3040", $("#tb_mm3040_tool").val(), $("#tb_mm3040_rev").val(), $("#tb_mm3040_part").val());
				return [actTXLCode, "foo"];
			case "frmMM3030":
				actTXLCode = helper.trp2TXLCode("3030", $("#tb_mm3030_tool").val(), $("#tb_mm3030_rev").val(), $("#tb_mm3030_part").val());
				return [actTXLCode, "foo"];
			case "frmMM2121":
				actTXLCode2121 = helper.trp2TXLCode( "2121", $("#tb_mm2121_tool").val(), $("#tb_mm2121_rev").val(), $("#tb_mm2121_part").val());
				actTXLCode2121C = helper.trp2TXLCode( "2121C", $("#tb_mm2121_tool").val(), $("#tb_mm2121_rev").val(), $("#tb_mm2121_part").val());
				return [actTXLCode2121, actTXLCode2121C];
			case "frmMM2121C":
				actTXLCode2121 = helper.trp2TXLCode( "2121", $("#tb_mm2121C_tool").val(), $("#tb_mm2121C_rev").val(), $("#tb_mm2121C_part").val());
				actTXLCode2121C = helper.trp2TXLCode( "2121C", $("#tb_mm2121C_tool").val(), $("#tb_mm2121C_rev").val(), $("#tb_mm2121C_part").val());
				return [actTXLCode2121, actTXLCode2121C];
		}
	}

	function showAlertBauteilstatus(errCode) {
		var typ = frmName.substring(5);
		var message = "Undefinierter errCode übergeben\nFunktion messmasken.js->showAlertBauteilstatus()";
		switch ( errCode ) { 
			case -1: 
				message = "Fehler in DB.getBauteilStatus().\n(siehe Debug-Nachricht in der Konsole)";
				break;
			case 1: 
				message = "Bauteil schon gemessen";
				break;
			case 2: 
				message = "Bauteil wurde nicht in der Datenbank gefunden";
				break;
		}
		swal({
			title: 'Fehler',
			text: message,
			type: 'warning',
			showCancelButton: false,
			confirmButtonColor: '#d33',
			cancelButtonColor: '#d33',
			confirmButtonText: 'Ok'
		}).then(function() { resAndFocus(typ); });
	}

	$("body").off("keypress", "#messmaske");
	$("body").on("keypress", "#messmaske", function(e) {
		var keyCode = e.keyCode || e.which;
		if (keyCode === 13 && e.target.id.substring(0,3) != "btn") { // wurde [Enter] gedrueckt und was es nicht ein Button?
			frmName = e.target.form.id;
			if (frmName.indexOf("frmMM") > -1) { // pruefen, ob in einer MessmaskenForm
				
				pholder = e.target.placeholder;

				switch (pholder) {
					case "TT": case "RR":
						if ( e.target.value === "" ) { break; }
						if ($.isNumeric(e.target.value)) {
							focusNextInpField();
						} else {
							swal("Fehler","Keine Zahl", "error");
						}
						break;
					case "PPPP":
						if ($.isNumeric(e.target.value)) {
							// bauteil checken
							if( DEBUG ) { console.log("Bauteilcheck start"); }
							
							actTXLCode = getTXLCode(e);
							if ( frmName === "frmMM3040") {
									if( DEBUG ) { console.log("bauteilcheck: 3040"); }
								bStatus3040 = DB.getBauteilStatus(actTXLCode[0]);
								if ( bStatus3040 === 0 ){
									enableAllMessTBs();
									// playSound("ding");; // brauch kein Sound ausgeben, da focusNextInpField() das ja schon macht
									$('#debug').text("");
									setTimeout(function() { focusNextInpField(); }, (300));
								} else {
									playSound("error");
									showAlertBauteilstatus(bStatus3040);
								}
							} else if ( frmName === "frmMM3030") {
								if( DEBUG ) { console.log("bauteilcheck 3030"); }

								bStatus3030 = DB.getBauteilStatus(actTXLCode[0]);
								if ( bStatus3030 === 0 ){
									enableAllMessTBs();
									// playSound("ding");; // brauch kein Sound ausgeben, da focusNextInpField() das ja schon macht
									$('#debug').text("");
									setTimeout(function() { focusNextInpField(); }, (300));
								} else {
									playSound("error");
									showAlertBauteilstatus(bStatus3030);
								}
							} else if ( frmName === "frmMM2121" || frmName === "frmMM2121C" ) {
								bStatus2121 = DB.getBauteilStatus(actTXLCode[0]);
								bStatus2121C = DB.getBauteilStatus(actTXLCode[1]);
							}

							if (frmName === "frmMM2121") {
									if ( bStatus2121 === 2 && bStatus2121C === 2 ) {        // 2121 n. vorh. / 2121C n. vorh.
										playSound("error");
										swal("Fehler", "Bauteil wurde weder als 2121 noch als 2121C in der Datenbank gefunden.", "error");
									} else if ( bStatus2121 === 0 && bStatus2121C === 2 ) { // 2121    vorh. / 2121C n. vorh.
										console.log("enableAllMessTBs");
										enableAllMessTBs();
										playSound("ding");
										$('#debug').text("");
										console.log("start timeout");
										setTimeout(function() { $("#tb_mm2121_OL1").focus(); }, (300));
										console.log("end timeout");
									} else if ( bStatus2121 === 2 && bStatus2121C === 0 ) { // 2121 n. vorh. / 2121C    vorh.
										playSound("error");
										swal("Fehler", "Bauteil ist schon als 2121C markiert. (aber noch nicht gemessen)", "error");
									} else if ( bStatus2121 === 1 && bStatus2121C === 2 ) { // schon als 2121 gemessen
										playSound("error");
										swal("Fehler", "Bauteil ist schon als 2121 gemessen.", "error");
									} else if ( bStatus2121 === 2 && bStatus2121C === 1 ) { // schon als 2121C gemessen
										playSound("error");
										swal("Fehler", "Bauteil ist schon als 2121C gemessen.", "error");
									} else if ( bStatus2121 === 1 && bStatus2121C === 1 ) { // ERR: als beide gemessen
										playSound("error");
										swal("Fehler", "Bauteil ist als beide gemessen. Bitte Olli melden.", "error");
									} else if ( bStatus2121 === 0 && bStatus2121C === 1 ) { // ERR: 2121 vorh. und als 2121C gemessen
										playSound("error");
										swal("Fehler", "Bauteil ist als 2121 vorhanden und als 2121C gemessen. Bitte Olli melden.", "error");
									} else if ( bStatus2121 === 1 && bStatus2121C === 0 ) { // ERR: 2121 gemessen und als 2121C vorh.
										playSound("error");
										swal("Fehler", "Bauteil ist als 2121 gemessen und als 2121C vorhanden. Bitte Olli melden.", "error");
									} else if ( bStatus2121 === 0 && bStatus2121C === 0 ) { // ERR: beide vorh.
										playSound("error");
										swal("Fehler", "Bauteil ist sowohl als 2121 als auch als 2121C vorhanden. Bitte Olli melden.", "error");
									}
								}
							
							if (frmName === "frmMM2121C") {
								if ( bStatus2121 === 2 && bStatus2121C === 2 ) {        // 2121 n. vorh. / 2121C n. vorh.
									playSound("error");
									swal("Fehler", "Bauteil wurde weder als 2121 noch als 2121C in der Datenbank gefunden.", "error");
								} else if ( bStatus2121 === 0 && bStatus2121C === 2 ) { // 2121    vorh. / 2121C n. vorh.
									// typ umschreiben
									updatedStatus = update2121to2121C(actTXLCode[0], actTXLCode[1]);
									if ( updatedStatus.responseText === 1 ) {
										// normal weiter
										enableAllMessTBs();
										playSound("ding");
										$('#debug').text("");
										setTimeout(function() { $("#tb_mm2121C_OL1").focus(); }, (300));
									} else {
										playSound("error");
										swal("Fehler", "Es trat ein Fehler beim Umschreiben des Bauteils " + actTXLCode2121 + " zu einem 2121C auf. Bitte Olli melden.\n\n" + updatedStatus.responseText, "error");
									}
								} else if ( bStatus2121 === 2 && bStatus2121C === 0 ) { // 2121 n. vorh. / 2121C    vorh.
									// normal weiter
									enableAllMessTBs();
									playSound("ding");
									$('#debug').text("");
									setTimeout(function() { $("#tb_mm2121C_OL1").focus(); }, (300));
								} else if ( bStatus2121 === 1 && bStatus2121C === 2 ) { // schon als 2121 gemessen
									playSound("error");
									swal("Fehler", "Bauteil ist schon als 2121 gemessen.", "error");
								} else if ( bStatus2121 === 2 && bStatus2121C === 1 ) { // schon als 2121C gemessen
									playSound("error");
									swal("Fehler", "Bauteil ist schon als 2121C gemessen.", "error");
								} else if ( bStatus2121 === 1 && bStatus2121C === 1 ) { // ERR: als beide gemessen
									playSound("error");
									swal("Fehler", "Bauteil ist als beide gemessen. Bitte Olli melden.", "error");
								} else if ( bStatus2121 === 0 && bStatus2121C === 1 ) { // ERR: 2121 vorh. und als 2121 gemessen
									playSound("error");
									swal("Fehler", "Bauteil ist als 2121 vorhanden und als 2121C gemessen. Bitte Olli melden.", "error");
								} else if ( bStatus2121 === 1 && bStatus2121C === 0 ) { // ERR: 2121 gemessen und als 2121 vorh.
									playSound("error");
									swal("Fehler", "Bauteil ist als 2121 gemessen und als 2121C vorhanden. Bitte Olli melden.", "error");
								} else if ( bStatus2121 === 0 && bStatus2121C === 0 ) { // ERR: beide vorh.
									playSound("error");
									swal("Fehler", "Bauteil ist sowohl als 2121 als auch als 2121C vorhanden. Bitte Olli melden.", "error");
								}
							}
						} else { // end if isNumeric() 
							playSound("error");
							swal("Fehler", "Keine Zahl", "error");
						}
						break;
						// end case PPPP:
					case "OL1":	case "OL2":	case "OW1":	case "OW2":
					case "R11": case "R21":	case "R22":	case "R23": case "R31":
					case "R32":	case "R33":	case "R41":	case "R42":	case "R43":
						if(convertAndCheck(e.target)){
							focusNextInpField();
						} else {
							playSound("error");
							swal("Fehler", "keine zahl in längenangabe", "error");
						}
						break;
					case "R12":
						if ( frmName === "frmMM3040" || frmName === "frmMM3030") {
							if(convertAndCheck(e.target)){
								focusNextInpField();
							} else {
								playSound("error");
								swal("Fehler", "keine zahl in längenangabe", "error");
							}
						}
						if ( frmName === "frmMM2121" || frmName === "frmMM2121C") {
							if(convertAndCheck(e.target)){
								switch(frmName){
									case "frmMM2121": $("#btn_mm2121_check").prop("disabled", false).focus(); playSound("ding"); break;
									case "frmMM2121C": $("#btn_mm2121C_check").prop("disabled", false).focus(); playSound("ding"); break;
									default: swal("Fehler", "Falscher Formularname!", "error"); playSound("error"); break;
								}
							} else {
								playSound("error");
								swal("Fehler", "keine zahl in längenangabe", "error");
							}
						}
						break;
					case "R13":
						if(convertAndCheck(e.target)){
							switch (frmName) {
								case "frmMM3040": $("#btn_mm3040_check").prop("disabled", false).focus(); playSound("ding"); break;
								case "frmMM3030": $("#btn_mm3030_check").prop("disabled", false).focus(); playSound("ding"); break;
								default: swal("Fehler", "Falscher Formularname!", "error"); playSound("error"); break;
							}
						} else {
							playSound("error");
							swal("Fehler", "keine zahl in längenangabe", "error");
						}
						break;
						default: swal("Fehler", "Falscher Formularname!", "error"); playSound("error"); break;
				}
				
			} // end if frmName.indexOf("frmMM")
			
		}
	});

	$("body").off("click", "#btn_mm3040_check");
	$("body").off("click", "#btn_mm3040_uups");
	$("body").off("click", "#btn_mm3040_eintragen");
	$("body").off("click", "#btn_mm3030_check");
	$("body").off("click", "#btn_mm3030_uups");
	$("body").off("click", "#btn_mm3030_eintragen");
	$("body").off("click", "#btn_mm2121_check");
	$("body").off("click", "#btn_mm2121_uups");
	$("body").off("click", "#btn_mm2121_eintragen");
	$("body").off("click", "#btn_mm2121C_check");
	$("body").off("click", "#btn_mm2121C_uups");
	$("body").off("click", "#btn_mm2121C_eintragen");


// region MM3040
 /***
 *     +-+-+-+-+-+-+
 *     |M|M|3|0|4|0|
 *     +-+-+-+-+-+-+
 */
	$("body").on("click", "#btn_mm3040_uups", function () { $("#frmMM3040").trigger("reset"); });
	$("body").on("click", "#btn_mm3040_check", function () {

		awObjs = { // AusgewerteteWerte
			"ol1": $('#div_ausw_mm3040_ol1'), "ol2": $('#div_ausw_mm3040_ol2'),
			"ow1": $('#div_ausw_mm3040_ow1'), "ow2": $('#div_ausw_mm3040_ow2'),
			"il1": $('#div_ausw_mm3040_il1'), "il2": $('#div_ausw_mm3040_il2'),
			"iw1": $('#div_ausw_mm3040_iw1'), "iw2": $('#div_ausw_mm3040_iw2'),
			"r1": $('#div_ausw_mm3040_r1'), "r2": $('#div_ausw_mm3040_r2'),
			"r3": $('#div_ausw_mm3040_r3'), "r4": $('#div_ausw_mm3040_r4')
		}
	
		mwObjs = { // erfasste messwerte
			"ol1": {"inp":  $("#tb_mm3040_OL1"), "tol": "OL" },
			"ol2": {"inp":  $("#tb_mm3040_OL2"), "tol": "OL" },
			"ow1": {"inp":  $("#tb_mm3040_OW1"), "tol": "OW" },
			"ow2": {"inp":  $("#tb_mm3040_OW2"), "tol": "OW" },
			"r11": {"inp":  $("#tb_mm3040_r11"), "tol": "R" },
			"r12": {"inp":  $("#tb_mm3040_r12"), "tol": "R" },
			"r13": {"inp":  $("#tb_mm3040_r13"), "tol": "R" },
			"r21": {"inp":  $("#tb_mm3040_r21"), "tol": "R" },
			"r22": {"inp":  $("#tb_mm3040_r22"), "tol": "R" },
			"r23": {"inp":  $("#tb_mm3040_r23"), "tol": "R" },
			"r31": {"inp":  $("#tb_mm3040_r31"), "tol": "R" },
			"r32": {"inp":  $("#tb_mm3040_r32"), "tol": "R" },
			"r33": {"inp":  $("#tb_mm3040_r33"), "tol": "R" },
			"r41": {"inp":  $("#tb_mm3040_r41"), "tol": "R" },
			"r42": {"inp":  $("#tb_mm3040_r42"), "tol": "R" },
			"r43": {"inp":  $("#tb_mm3040_r43"), "tol": "R" }
		}
	
		tols = {"gruen": "tolGruen", "gelb": "tolGelb", "rot": "tolRot"}
		//for ( obj in awObjs ){
		//	for ( tol in tols ) {
		//		obj.removeClass(tol);
		//	}
		//}

		ol1 = mwObjs["ol1"]["inp"].val(); ol2 = mwObjs["ol2"]["inp"].val();
		ow1 = mwObjs["ow1"]["inp"].val(); ow2 = mwObjs["ow2"]["inp"].val();
		r11 = mwObjs["r11"]["inp"].val() - 38.242; r12 = mwObjs["r12"]["inp"].val() - 38.242; r13 = mwObjs["r13"]["inp"].val() - 38.242;
		r21 = mwObjs["r21"]["inp"].val() - 38.242; r22 = mwObjs["r22"]["inp"].val() - 38.242; r23 = mwObjs["r23"]["inp"].val() - 38.242;
		r31 = mwObjs["r31"]["inp"].val() - 38.242; r32 = mwObjs["r32"]["inp"].val() - 38.242; r33 = mwObjs["r33"]["inp"].val() - 38.242;
		r41 = mwObjs["r41"]["inp"].val() - 38.242; r42 = mwObjs["r42"]["inp"].val() - 38.242; r43 = mwObjs["r43"]["inp"].val() - 38.242;

		RimDiffs = {
			"1": Math.max(r11, r12, r13) - Math.min(r11, r12, r13),
			"2": Math.max(r21, r22, r23) - Math.min(r21, r22, r23),
			"3": Math.max(r31, r32, r33) - Math.min(r31, r32, r33),
			"4": Math.max(r41, r42, r43) - Math.min(r41, r42, r43)
		};

		il1 = (ol1 - r43) - r31; 
		il2 = (ol2 - r41) - r33;
		iw1 = (ow1 - r23) - r11; 
		iw2 = (ow2 - r21) - r13;

		$('#div_ausw_mm3040_ol1').text(Number(ol1).toFixed(2));
		$('#div_ausw_mm3040_ol2').text(Number(ol2).toFixed(2));
		$('#div_ausw_mm3040_ow1').text(Number(ow1).toFixed(2));
		$('#div_ausw_mm3040_ow2').text(Number(ow2).toFixed(2));
		
		$('#div_ausw_mm3040_il1').text(il1.toFixed(2));
		$('#div_ausw_mm3040_il2').text(il2.toFixed(2));
		$('#div_ausw_mm3040_iw1').text(iw1.toFixed(2));
		$('#div_ausw_mm3040_iw2').text(iw2.toFixed(2));
		
		$('#div_ausw_mm3040_r1').text(((r11 + r12 + r13) / 3).toFixed(2));
		$('#div_ausw_mm3040_r2').text(((r21 + r22 + r23) / 3).toFixed(2));
		$('#div_ausw_mm3040_r3').text(((r31 + r32 + r33) / 3).toFixed(2));
		$('#div_ausw_mm3040_r4').text(((r41 + r42 + r43) / 3).toFixed(2));


		for (i in mwObjs) {
			checkTolAndDye("3040", mwObjs[i]["inp"], mwObjs[i]["tol"]);
		}

 /* TODO -- Auswertung der Innenwerte und randbreiten */

		tol3040 = {
			"ol1": 0, "ol2": 0, "ow1": 0, "ow2": 0,
			"r11": 0, "r12": 0, "r13": 0,
			"r21": 0, "r22": 0, "r23": 0,
			"r31": 0, "r32": 0, "r33": 0,
			"r41": 0, "r42": 0, "r43": 0
		}

		if ( ol1 <= 429.39 || ol1 >= 429.61 ) { tol3040["ol1"] = 3 }
		if ( ol1 == 429.40 || ol1 == 429.41 || ol1 == 429.59 || ol1 == 429.60 ) { tol3040["ol1"] = 2 }
		if ( ol1 >= 429.42 && ol1 <= 429.58 ) { tol3040["ol1"] = 1 }

		if ( ol2 <= 429.39 || ol2 >= 429.61 ) { tol3040["ol2"] = 3 }
		if ( ol2 == 429.40 || ol2 == 429.41 || ol2 == 429.59 || ol2 == 429.60 ) { tol3040["ol2"] = 2 }
		if ( ol2 >= 429.42 && ol2 <= 429.58 ) { tol3040["ol2"] = 1 }

		if ( ow1 <= 310.49 || ow1 >= 310.71 ) { tol3040["ow1"] = 3 }
		if ( ow1 == 310.50 || ow1 == 310.51 || ow1 == 310.69 || ow1 == 310.70 ) { tol3040["ow1"] = 2 }
		if ( ow1 >= 310.52 && ow1 <= 310.68 ) { tol3040["ow1"] = 1 }

		if ( ow2 <= 310.49 || ow2 >= 310.71 ) { tol3040["ow2"] = 3 }
		if ( ow2 == 310.50 || ow2 == 310.51 || ow2 == 310.69 || ow2 == 310.70 ) { tol3040["ow2"] = 2 }
		if ( ow2 >= 310.52 && ow2 <= 310.68 ) { tol3040["ow2"] = 1 }


		if ( il1 <= 421.97 || il1 >= 422.39 ) { tol3040["il1"] = 3 }
		if ( il1 == 421.98 || il1 == 421.99 || il1 == 422.37 || il1 == 422.38 ) { tol3040["il1"] = 2 }
		if ( il1 >= 422.00 && il1 <= 422.36 ) { tol3040["il1"] = 1 }

		if ( il2 <= 421.97 || il2 >= 422.39 ) { tol3040["il2"] = 3 }
		if ( il2 == 421.98 || il2 == 421.99 || il2 == 422.37 || il2 == 422.38 ) { tol3040["il2"] = 2 }
		if ( il2 >= 422.00 && il2 <= 422.36 ) { tol3040["il2"] = 1 }

		if ( iw1 <= 303.07 || iw1 >= 303.49 ) { tol3040["iw1"] = 3 }
		if ( iw1 == 303.08 || iw1 == 303.09 || iw1 == 303.47 || iw1 == 303.48 ) { tol3040["iw1"] = 2 }
		if ( iw1 >= 303.10 && iw1 <= 303.46 ) { tol3040["iw1"] = 1 }

		if ( iw2 <= 303.07 || iw2 >= 303.49 ) { tol3040["iw2"] = 3 }
		if ( iw2 == 303.08 || iw2 == 303.09 || iw2 == 303.47 || iw2 == 303.48 ) { tol3040["iw2"] = 2 }
		if ( iw2 >= 303.10 && iw2 <= 303.46 ) { tol3040["iw2"] = 1 }

		
		faerbeEin($('#div_ausw_mm3040_ol1'), tol3040["ol1"]);
		faerbeEin($('#div_ausw_mm3040_ol2'), tol3040["ol2"]);
		faerbeEin($('#div_ausw_mm3040_ow1'), tol3040["ow1"]);
		faerbeEin($('#div_ausw_mm3040_ow2'), tol3040["ow2"]);
		faerbeEin($('#div_ausw_mm3040_il1'), tol3040["il1"]);
		faerbeEin($('#div_ausw_mm3040_il2'), tol3040["il2"]);
		faerbeEin($('#div_ausw_mm3040_iw1'), tol3040["iw1"]);
		faerbeEin($('#div_ausw_mm3040_iw2'), tol3040["iw2"]);

 /* TODO -- ENDE */

		$("#btn_mm3040_eintragen").prop("disabled", false).focus();
	});

	$("body").on("click", "#btn_mm3040_eintragen", function () { 
		var tool = $('#tb_mm3040_tool').val();
		var rev = $('#tb_mm3040_rev').val();
		var part = $('#tb_mm3040_part').val();
		if ( tool !== "" && rev !== "" && part !== "") {
			updateBauteilMesswerte3040();
		} else {
			playSound("error"); 
			swal("Fehler", "Bauteilnummer fehlerhaft", "error");
		}
	});

	$("body").on("click", "#btn_mm3040_archiv", function() {
		switch ( ifvis ) {
			case true:
				$("#divMessArchiv").hide();
				ifvis = false;
				break;
			
			case false:
				$("#divMessArchiv").show();
				ifvis = true;	
				break;
		}
		
	});
// end region MM3040

// region MM3030
 /***
 *     +-+-+-+-+-+-+
 *     |M|M|3|0|3|0|
 *     +-+-+-+-+-+-+
 */
	$("body").on("click", "#btn_mm3030_uups", function () { $("#frmMM3030").trigger("reset"); });

	$("body").on("click", "#btn_mm3030_check", function () {
		checkTolAndDye("3030", $("#tb_mm3030_OL1"), "OL"); checkTolAndDye("3030", $("#tb_mm3030_OL2"), "OL");
		checkTolAndDye("3030", $("#tb_mm3030_OW1"), "OW"); checkTolAndDye("3030", $("#tb_mm3030_OW2"), "OW");
		checkTolAndDye("3030", $("#tb_mm3030_r11"), "R");	checkTolAndDye("3030", $("#tb_mm3030_r12"), "R");	checkTolAndDye("3030", $("#tb_mm3030_r13"), "R");
		checkTolAndDye("3030", $("#tb_mm3030_r21"), "R");	checkTolAndDye("3030", $("#tb_mm3030_r22"), "R");	checkTolAndDye("3030", $("#tb_mm3030_r23"), "R");
		checkTolAndDye("3030", $("#tb_mm3030_r31"), "R");	checkTolAndDye("3030", $("#tb_mm3030_r32"), "R");	checkTolAndDye("3030", $("#tb_mm3030_r33"), "R");
		checkTolAndDye("3030", $("#tb_mm3030_r41"), "R");	checkTolAndDye("3030", $("#tb_mm3030_r42"), "R");	checkTolAndDye("3030", $("#tb_mm3030_r43"), "R");
		$("#btn_mm3030_eintragen").prop("disabled", false).focus();
	});

	$("body").on("click", "#btn_mm3030_eintragen", function () {
		var tool = $('#tb_mm3030_tool').val();
		var rev = $('#tb_mm3030_rev').val();
		var part = $('#tb_mm3030_part').val();
		if ( tool !== "" && rev !== "" && part !== "") {
			updateBauteilMesswerte3030();
		} else {
			playSound("error"); 
			swal("Fehler", "Bauteilnummer fehlerhaft", "error");
		}
	});
// end region MM3030

// region MM2121
 /***
 *     +-+-+-+-+-+-+
 *     |M|M|2|1|2|1|
 *     +-+-+-+-+-+-+
 */
	$("body").on("click", "#btn_mm2121_uups", function () { $("#frmMM2121").trigger("reset"); });

	$("body").on("click", "#btn_mm2121_check", function () {
		checkTolAndDye("2121", $("#tb_mm2121_OL1"), "O");
		checkTolAndDye("2121", $("#tb_mm2121_OW1"), "O");
		checkTolAndDye("2121", $("#tb_mm2121_r11"), "R");	checkTolAndDye("2121", $("#tb_mm2121_r12"), "R");
		checkTolAndDye("2121", $("#tb_mm2121_r21"), "R");	checkTolAndDye("2121", $("#tb_mm2121_r22"), "R");
		checkTolAndDye("2121", $("#tb_mm2121_r31"), "R");	checkTolAndDye("2121", $("#tb_mm2121_r32"), "R");
		checkTolAndDye("2121", $("#tb_mm2121_r41"), "R");	checkTolAndDye("2121", $("#tb_mm2121_r42"), "R");
		$("#btn_mm2121_eintragen").prop("disabled", false).focus();
	});

	$("body").on("click", "#btn_mm2121_eintragen", function () {
		var tool = $('#tb_mm2121_tool').val();
		var rev = $('#tb_mm2121_rev').val();
		var part = $('#tb_mm2121_part').val();
		if ( tool !== "" && rev !== "" && part !== "") {
			updateBauteilMesswerte2121();
		} else {
			playSound("error"); 
			swal("Fehler", "Bauteilnummer fehlerhaft", "error");
		}
	});
// end region MM2121

// region MM2121C
 /***
 *     +-+-+-+-+-+-+-+
 *     |M|M|2|1|2|1|C|
 *     +-+-+-+-+-+-+-+
 */
	$("body").on("click", "#btn_mm2121C_uups", function () { $("#frmMM2121C").trigger("reset"); });

	$("body").on("click", "#btn_mm2121C_check", function () {
		checkTolAndDye("2121C", $("#tb_mm2121C_OL1"), "O"); 
		checkTolAndDye("2121C", $("#tb_mm2121C_OW1"), "O"); 
		checkTolAndDye("2121C", $("#tb_mm2121C_r11"), "R");	checkTolAndDye("2121C", $("#tb_mm2121C_r12"), "R");
		checkTolAndDye("2121C", $("#tb_mm2121C_r21"), "R");	checkTolAndDye("2121C", $("#tb_mm2121C_r22"), "R");
		checkTolAndDye("2121C", $("#tb_mm2121C_r31"), "R");	checkTolAndDye("2121C", $("#tb_mm2121C_r32"), "R");
		checkTolAndDye("2121C", $("#tb_mm2121C_r41"), "R");	checkTolAndDye("2121C", $("#tb_mm2121C_r42"), "R");
		$("#btn_mm2121C_eintragen").prop("disabled", false).focus();
	});

	$("body").on("click", "#btn_mm2121C_eintragen", function () {
		var tool = $('#tb_mm2121C_tool').val();
		var rev = $('#tb_mm2121C_rev').val();
		var part = $('#tb_mm2121C_part').val();
		if ( tool !== "" && rev !== "" && part !== "") {
			updateBauteilMesswerte2121C();
		} else {
			playSound("error"); 
			swal("Fehler", "Bauteilnummer fehlerhaft", "error");
		}
	});
// end region MM2121C

// region MessArchiv
	$("body").on("click", ".btnMA", function(e) {
		btnName = e.name;
		//alert(btnName);
	});
// end region MessArchiv

// region updateBauteilMesswerte
	function updateBauteilMesswerte3040() {
		var txlcode = helper.getTXLCode("3040", $("#tb_mm3040_tool").val(), $("#tb_mm3040_rev").val(), $("#tb_mm3040_part").val());
		var datetime = heute() + " " + jetzt();
		var messwerte = {
			"func" : "updateBauteilMesswerte",
			"TXLCode" : txlcode, "zeitstempel" : datetime, "messcomm" : $("#tb_mm3040_comm").val(),
			"OL1" : $("#tb_mm3040_OL1").val(), "OL2" : $("#tb_mm3040_OL2").val(),
			"OW1" : $("#tb_mm3040_OW1").val(), "OW2" : $("#tb_mm3040_OW2").val(),
			"R11" : $("#tb_mm3040_r11").val(), "R12" : $("#tb_mm3040_r12").val(), "R13" : $("#tb_mm3040_r13").val(),
			"R21" : $("#tb_mm3040_r21").val(), "R22" : $("#tb_mm3040_r22").val(), "R23" : $("#tb_mm3040_r23").val(),
			"R31" : $("#tb_mm3040_r31").val(), "R32" : $("#tb_mm3040_r32").val(), "R33" : $("#tb_mm3040_r33").val(),
			"R41" : $("#tb_mm3040_r41").val(), "R42" : $("#tb_mm3040_r42").val(), "R43" : $("#tb_mm3040_r43").val()
		};

		if ( DEBUG ) { console.log(JSON.stringify(messwerte)); }
		
		messwertEintragungResp = DB.updateMesswerteGeneric(messwerte);
		if (messwertEintragungResp.responseText == "1") {
			// Um den beim Messen nicht die Hand an die Maus nehmen zu müssen, hab ich den Dialog, dass
			// das Bauteil eingetragen wurde mit einem Sound ersetzt. So kann ich wieder direkt ins
			// Eingabefeld für die Tool-Nummer fokusen.
			playSound("ding");
			$('#debug').text("Bauteil " + $("#tb_mm3040_tool").val() + "-" + $("#tb_mm3040_rev").val() + "-" + $("#tb_mm3040_part").val() + " wurde in die Datenbank eingetragen.");
			//swal("Fertig","Bauteil wurde eingetragen.", "success");
			
			removeColor("3040");
			$("#frmMM3040").trigger("reset");
			setTimeout(function() { 
				$("#btn_mm3040_check").prop("disabled", true); 
				$("#btn_mm3040_eintragen").prop("disabled", true); 
				$("#tb_mm3040_tool").focus();
			}, (300));
		} else {
			playSound("error");
			swal("Fehler beim eintragen", messwertEintragungResp.responseText, "error");
		}
	}

	function updateBauteilMesswerte3030() {
		var txlcode = helper.getTXLCode("3030", $("#tb_mm3030_tool").val(), $("#tb_mm3030_rev").val(), $("#tb_mm3030_part").val());
		var datetime = heute() + " " + jetzt();
		var messwerte = {
			"func" : "updateBauteilMesswerte",
			"TXLCode" : txlcode, "zeitstempel" : datetime, "messcomm" : $("#tb_mm3030_comm").val(),
			"OL1" : $("#tb_mm3030_OL1").val(), "OL2" : $("#tb_mm3030_OL2").val(),
			"OW1" : $("#tb_mm3030_OW1").val(), "OW2" : $("#tb_mm3030_OW2").val(),
			"R11" : $("#tb_mm3030_r11").val(), "R12" : $("#tb_mm3030_r12").val(), "R13" : $("#tb_mm3030_r13").val(),
			"R21" : $("#tb_mm3030_r21").val(), "R22" : $("#tb_mm3030_r22").val(), "R23" : $("#tb_mm3030_r23").val(),
			"R31" : $("#tb_mm3030_r31").val(), "R32" : $("#tb_mm3030_r32").val(), "R33" : $("#tb_mm3030_r33").val(),
			"R41" : $("#tb_mm3030_r41").val(), "R42" : $("#tb_mm3030_r42").val(), "R43" : $("#tb_mm3030_r43").val()
		};

		if ( DEBUG ) { console.log(JSON.stringify(messwerte)); }
		
		messwertEintragungResp = DB.updateMesswerteGeneric(messwerte);
		if (messwertEintragungResp.responseText == "1") {
			playSound("ding");
			$('#debug').text("Bauteil " + $("#tb_mm3030_tool").val() + "-" + $("#tb_mm3030_rev").val() + "-" + $("#tb_mm3030_part").val() + " wurde in die Datenbank eingetragen.");
			//swal("Fertig", "Bauteil wurde eingetragen", "success");
			removeColor("3030");
			$("#frmMM3030").trigger("reset");
			setTimeout(function() { 
				$("#btn_mm3030_check").prop("disabled", true); 
				$("#btn_mm3030_eintragen").prop("disabled", true); 
				$("#tb_mm3030_tool").focus();
			}, (30));
		} else {
			playSound("error");
			swal("Fehler beim eintragen:", messwertEintragungResp.responseText, "error");
		}
	}

	function updateBauteilMesswerte2121() {
		var txlcode = helper.getTXLCode("2121", $("#tb_mm2121_tool").val(), $("#tb_mm2121_rev").val(), $("#tb_mm2121_part").val());
		var datetime = heute() + " " + jetzt();
		var messwerte = {
			"func" : "updateBauteilMesswerte",
			"TXLCode" : txlcode, "zeitstempel" : datetime, "messcomm" : $("#tb_mm2121_comm").val(),
			"OL1" : $("#tb_mm2121_OL1").val(),
			"OW1" : $("#tb_mm2121_OW1").val(),
			"R11" : $("#tb_mm2121_r11").val(), "R12" : $("#tb_mm2121_r12").val(),
			"R21" : $("#tb_mm2121_r21").val(), "R22" : $("#tb_mm2121_r22").val(),
			"R31" : $("#tb_mm2121_r31").val(), "R32" : $("#tb_mm2121_r32").val(),
			"R41" : $("#tb_mm2121_r41").val(), "R42" : $("#tb_mm2121_r42").val(),
		};

		if ( DEBUG ) { console.log(JSON.stringify(messwerte)); }
		
		messwertEintragungResp = DB.updateMesswerteGeneric(messwerte);
		if (messwertEintragungResp.responseText == "1") {
			playSound("ding");
			$('#debug').text("Bauteil " + $("#tb_mm2121_tool").val() + "-" + $("#tb_mm2121_rev").val() + "-" + $("#tb_mm2121_part").val() + " wurde in die Datenbank eingetragen.");
			//swal("Fertig", "Bauteil wurde eingetragen.", "success");
			removeColor("2121");
			$("#frmMM2121").trigger("reset");
			setTimeout(function() { 
				$("#btn_mm2121_check").prop("disabled", true); 
				$("#btn_mm2121_eintragen").prop("disabled", true); 
				$("#tb_mm2121_tool").focus();
			}, (30));
		} else {
			playSound("error");
			swal("Fehler beim eintragen:", messwertEintragungResp.responseText, "error");
		}
	}

	function updateBauteilMesswerte2121C() {
		var txlcode = helper.getTXLCode("2121C", $("#tb_mm2121C_tool").val(), $("#tb_mm2121C_rev").val(), $("#tb_mm2121C_part").val());
		var datetime = heute() + " " + jetzt();
		var messwerte = {
			"func" : "updateBauteilMesswerte",
			"TXLCode" : txlcode, "zeitstempel" : datetime, "messcomm" : $("#tb_mm2121C_comm").val(),
			"OL1" : $("#tb_mm2121C_OL1").val(),
			"OW1" : $("#tb_mm2121C_OW1").val(),
			"R11" : $("#tb_mm2121C_r11").val(), "R12" : $("#tb_mm2121C_r12").val(),
			"R21" : $("#tb_mm2121C_r21").val(), "R22" : $("#tb_mm2121C_r22").val(),
			"R31" : $("#tb_mm2121C_r31").val(), "R32" : $("#tb_mm2121C_r32").val(),
			"R41" : $("#tb_mm2121C_r41").val(), "R42" : $("#tb_mm2121C_r42").val(),
		};

		if ( DEBUG ) { console.log(JSON.stringify(messwerte)); }
		
		messwertEintragungResp = DB.updateMesswerteGeneric(messwerte);
		if (messwertEintragungResp.responseText == "1") {
			playSound("ding");
			$('#debug').text("Bauteil " + $("#tb_mm2121C_tool").val() + "-" + $("#tb_mm2121C_rev").val() + "-" + $("#tb_mm2121C_part").val() + " wurde in die Datenbank eingetragen.");
			//swal("Fertig", "Bauteil wurde eingetragen.", "success");
			removeColor("2121C");
			$("#frmMM2121C").trigger("reset");
			setTimeout(function() { 
				$("#btn_mm2121C_check").prop("disabled", true); 
				$("#btn_mm2121C_eintragen").prop("disabled", true); 
				$("#tb_mm2121C_tool").focus();
			}, (30));
		} else {
			playSound("error");
			swal("Fehler beim eintragen:", messwertEintragungResp.responseText, "error");
		}
	}
// end region


	function disableAllMessTBs() { $('.inp_messwerte').prop("disabled", true); }
	function enableAllMessTBs() { $('.inp_messwerte').prop("disabled", false); }

	function focusNextInpField() {
		// tabindex vom aktuell fokusierten element + 1
		nextTabIdx = parseInt($(':focus').attr('tabindex'), 10) + 1;
		$next_input = $('form [tabindex=' + nextTabIdx + ']');
		$next_input.prop("disabled", false).focus();
		playSound("ding");
	}


	/**
	 * erwartet objekt in form eines input-text-elements als eingabe
	 *
	 * konvertiert im inhalt das komma zu einem punkt und prueft,
	 * ob das vorkommen eines punkt = 1 ist
	 * ist dies gegeben wird der inhalt des inputfeldes aktualisiert
	 *
	 * gibt true/false zurueck
	 */
	function convertAndCheck(field) {
		var iReturn = false;
		var actval = field.value;
		var newval = actval.replace(",", ".");
		if ($.isNumeric(newval) && newval.match(/\./g).length == 1) {
			document.getElementById(field.id).value = newval;
			iReturn = true;
		}
		return iReturn;
	}

	function checkTolAndDye(flavor, tbox, mark){
		if (flavor == "3040") {
			colorcode = checkTol3040(tbox[0].value, mark);
		}	else if (flavor == "2121") { 
			colorcode = checkTol2121(tbox[0].value, mark); 
		}	else if (flavor == "3030") { 
			colorcode = checkTol3030(tbox[0].value, mark); 
		} else if (flavor == "2121C") { 
			colorcode = checkTol2121C(tbox[0].value, mark); 
		}
		dyeTB(tbox, colorcode);
	}
	function checkTol2121(val, mark){
		if (mark == "O") {
			if ( val < 222.0 || val > 222.2) {
				return 3;
			} else if ( val >= 222.01  &&  val <= 222.19 ) {
				return 1;	}
			else {
				return 2;
			}
		}
		if (mark == "R") {
			if ((val >= 42.1) || (val <= 41.7)) {
				return 2;
			} else if ((val > 41.7) || (val < 42.1)) {
				return 1;
			} else {
				return 2;
			}
		}
	}
	function checkTol2121C(val, mark){
		if (mark == "O") {
			console.log("O:" + val);
			if ( val < 217.60 || val > 217.80) {
				return 3;
			} else if ( (val >= 217.61) && (val <= 217.79) ) {
				return 1;	
			} else {
				return 2;
			}
		}
		if (mark == "R") {
			if ((val >= 42.1) || (val <= 41.7)) {
				return 2;
			} else if ((val > 41.7) || (val < 42.1)) {
				return 1;
			} else {
				return 2;
			}
		}
	}
	function checkTol3040(val, mark){
		if (mark == "OL") {
			if (((val >= -9999999) && (val <= 429.39)) || ((val >= 429.61) && (val < 999999999999.9))) {
				return 3;
			} else if ((val >= 429.42) && (val <= 429.58)) {
				return 1;	}
			else {
				return 2;
			}
		}
		if (mark == "OW") {
			if (((val >= -9999999) && (val <= 310.49)) || ((val >= 310.71) && (val < 999999999999.9))) {
				return 3;
			} else if ((val >= 310.52) && (val <= 310.68)) {
				return 1;	}
			else {
				return 2;
			}
		}
		if (mark == "R") {
			if ((val >= 42.1) || (val <= 41.7)) {
				return 2;
			} else if ((val > 41.7) || (val < 42.1)) {
				return 1;
			} else {
				return 2;
			}
		}
	}
	function checkTol3030(val, mark){
		if (mark == "OL") {
			if (((val >= -9999999) && (val <= 323.19)) || ((val >= 323.61) && (val < 999999999999.9))) {
				return 3;
			} else if ((val >= 323.22) && (val <= 323.58)) {
				return 1;	
			}	else {
				return 2;
			}
		}
		if (mark == "OW") {
			if (((val >= -9999999) && (val <= 323.19)) || ((val >= 323.61) && (val < 999999999999.9))) {
				return 3;
			} else if ((val >= 323.22) && (val <= 323.58)) {
				return 1;	
			}	else {
				return 2;
			}
		}
		if (mark == "R") {
			if ((val >= 42.1) || (val <= 41.7)) {
				return 2;
			} else if ((val > 41.7) || (val < 42.1)) {
				return 1;
			} else {
				return 2;
			}
		}
	}
	function dyeTB(tbox, colorcode) {
		switch(colorcode){
			case 1: color = "limegreen"; break;
			case 2: color = "yellow"; break;
			case 3: color = "red"; break;
			case 4: color = "white"; break;
			default: color = "black";
		}
		tbox[0].style.backgroundColor = color;
	}

	function faerbeEin($obj, $farbe) {
		switch ($farbe) {
			case 0: $obj.addClass("tolSchwarz"); break;
			case 1: $obj.addClass("tolGruen"); break;
			case 2: $obj.addClass("tolGelb"); break;
			case 3: $obj.addClass("tolRot"); break;
		}
	}

	function removeColor(flavor){
		$("#frmMM" + flavor + " :input[type=text]").each( function(){
			var ele = $(this);
			if ( ele[0].className != "comm") {
				ele[0].style.backgroundColor = "white";
			}
		});

		$("#divZeichnungPrim3040 div").each( function(){ var ele = $(this); ele[0].className = "inp_messwerte"; });
		$("#divZeichnungPrim3030 div").each( function(){ var ele = $(this); ele[0].className = "inp_messwerte"; });
		$("#divZeichnungPrim2121 div").each( function(){ var ele = $(this); ele[0].className = "inp_messwerte"; });
		$("#divZeichnungPrim2121C div").each( function(){ var ele = $(this); ele[0].className = "inp_messwerte"; });

	}



	function testValues3040(){
		$("#tb_mm3040_OL1").val(randomXToY(42940, 42970) / 100);
		$("#tb_mm3040_OL2").val(randomXToY(42940, 42970) / 100);
		$("#tb_mm3040_OW1").val(randomXToY(31045, 31075) / 100);
		$("#tb_mm3040_OW2").val(randomXToY(31045, 31075) / 100);
		$("#tb_mm3040_r11").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3040_r12").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3040_r13").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3040_r21").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3040_r22").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3040_r23").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3040_r31").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3040_r32").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3040_r33").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3040_r41").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3040_r42").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3040_r43").val(randomXToY(4170, 4240) / 100);
		$("#btn_mm3040_check").trigger("click");
	}
	function testValues3030(){
		$("#tb_mm3030_OL1").val(randomXToY(32318, 32363) / 100);
		$("#tb_mm3030_OL2").val(randomXToY(32318, 32363) / 100);
		$("#tb_mm3030_OW1").val(randomXToY(32318, 32363) / 100);
		$("#tb_mm3030_OW2").val(randomXToY(32318, 32363) / 100);
		$("#tb_mm3030_r11").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3030_r12").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3030_r13").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3030_r21").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3030_r22").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3030_r23").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3030_r31").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3030_r32").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3030_r33").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3030_r41").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3030_r42").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm3030_r43").val(randomXToY(4170, 4240) / 100);
		$("#btn_mm3030_check").trigger("click");
	}
	function testValues2121(){
		$("#tb_mm2121_OL1").val(randomXToY(22200, 22220) / 100);
		$("#tb_mm2121_OW1").val(randomXToY(22200, 22220) / 100);
		$("#tb_mm2121_r11").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm2121_r12").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm2121_r21").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm2121_r22").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm2121_r31").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm2121_r32").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm2121_r41").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm2121_r42").val(randomXToY(4170, 4240) / 100);
		$("#btn_mm2121_check").trigger("click");
	}
	function testValues2121C(){
		$("#tb_mm2121C_OL1").val(randomXToY(21755, 21787) / 100);
		$("#tb_mm2121C_OW1").val(randomXToY(21755, 21782) / 100);
		$("#tb_mm2121C_r11").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm2121C_r12").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm2121C_r21").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm2121C_r22").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm2121C_r31").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm2121C_r32").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm2121C_r41").val(randomXToY(4170, 4240) / 100);
		$("#tb_mm2121C_r42").val(randomXToY(4170, 4240) / 100);
		$("#btn_mm2121C_check").trigger("click");
	}

	function reset3040() {
		$("#frmMM3040").trigger("reset");
	}

	function resAndFocus(typ) {
		if ( DEBUGmany ) { console.log("get typ = " + typ);}
		$('#tb_mm' + typ + '_part').val("");
		$('#tb_mm' + typ + '_rev').val("");
		$('#tb_mm' + typ + '_tool').val("").focus();
	}

	function randomXToY(minVal,maxVal,floatVal){var randVal = minVal+(Math.random()*(maxVal-minVal));return typeof floatVal=='undefined'?Math.round(randVal):randVal.toFixed(floatVal);}

	if ( VERBOSE ) { console.log("messmasken.js loaded ..."); }


});
