var curStap = 1;
var cursistenId = 1;

$(document).ready(function() {
	// Initialize tabs
	$(".row-tabs li").each(function() {
		$(this).click(function() {
			switchTab($(this).attr("id"));
		});
	});
	
	// Load opleidingdata
	var opleidingId = $("#opleidingId").val();
	$.get("/efe/opleiding-ajax/get-opleidingen/id/" + opleidingId, function(data) {
		$("#opleidingen").html(data);
		getOpleidingdata();
	});
	
	$("#stap" + curStap).show();
});

function getOpleidingdata() {
	// Check which opleiding has been selected
	var opleidingId = $("#opleidingen :selected").val();
	var opleidingName = $("#opleidingen :selected").text();
	$("#boxOpleiding").text(opleidingName);

	// Get startdata
	getStartdata(opleidingId);
}

function getStartdata(opleidingId) {
	$.get("/efe/opleiding-ajax/get-startdata/id/" + opleidingId, function(data) {
		$("#startdata").html(data);
		$("#boxStartdatum").text($("#startdata :selected").text());
		getPrijs();
	});
}

function setStartdata() {
	$("#boxStartdatum").text($("#startdata :selected").text());
	getPrijs();
}

function getPrijs() {
	var opleidingId = $("#opleidingen :selected").val();
	var opleidingDataId = $("#startdata :selected").val();
	
	$.get("/efe/opleiding-ajax/prijs/", { id: opleidingId, opleidingDataId: opleidingDataId }, function(data) {
		$("#prijs").html(data);
		$("#boxPrijs").html(data);
	});
}

function prevTab() {
	var prevStap = curStap - 1;
	switchTab("tab" + prevStap);
}

function nextTab() {
	var nextStap = curStap + 1;
	switchTab("tab" + nextStap);
}

function switchTab(tab) {
	var stap = parseInt(tab.substr(3));
	if (stap == 3) {
		if (!checkGegevens()) {
			return false;
		}
	}
	else if (stap == 4) {
		if (!checkFactuur()) {
			return false;
		}
		loadFrmData();
	}
	
	var curTab = $(".row-tabs .act");
	curTab.removeClass("act");
	curTab.html('<span><span><a href="#">' + curTab.text() + '</a></span></span>');
	
	var activeTab = $("#" + tab);
	activeTab.addClass("act");
	activeTab.html('<span><span>' + activeTab.text() + '</span></span>');
	
	$("#stap" + curStap).hide();
	curStap = stap;
	$("#stap" + stap).show();	
	
	// Vorige/volgende knoppen
	if (curStap == 1) {
		$("#prev").hide();
		$("#extra").hide();
		$("#next").show();
		$("#send").hide();
		$("#sidebox").hide();
	}
	else if (curStap == 2) {
		$("#prev").show();
		$("#extra").show();
		$("#next").show();
		$("#send").hide();
		$("#sidebox").show();
	}
	else if (curStap == 4) {
		$("#prev").show();
		$("#extra").hide();
		$("#next").hide();
		$("#send").show();
		$("#sidebox").show();
	}
	else {
		$("#prev").show();
		$("#extra").hide();
		$("#next").show();
		$("#send").hide();
		$("#sidebox").show();
	}
}

function checkGegevens() {
	var isOk = true;
	$("#stap2 :input").each(function() {
		if (($(this).attr('required') == 'true' || $(this).attr('required') == true) && $(this).val().length == 0) {
			$(this).addClass("error");
			isOk = false;
		}
		else {
			$(this).removeClass("error");
		}
	});
	
	// Postcode
	$("#stap2 :input[name^='postcode']").each(function() {
		if (!isPostcode($(this).val())) {
			$(this).addClass("error");
			isOk = false;
		}
		else {
			$(this).removeClass("error");
		}
	});
	
	// Telefoon
	$("#stap2 :input[name^='telefoon']").each(function() {
		if (!isTelefoonnummer($(this).val())) {
			$(this).addClass("error");
			isOk = false;
		}
		else {
			$(this).removeClass("error");
		}
	});
	
	// Email
	$("#stap2 :input[name^='email']").each(function() {
		if (!isEmail($(this).val())) {
			$(this).addClass("error");
			isOk = false;
		}
		else {
			$(this).removeClass("error");
		}
	});
	
	// Geboortedatum
	$("#stap2 :input[name^='geboortedatum']").each(function() {
		if (!isDatum($(this).val())) {
			$(this).addClass("error");
			isOk = false;
		}
		else {
			$(this).removeClass("error");
		}
	});
	
	if (!isOk) {
		switchTab("tab2");
		return false;
	}
	
	return true;
}

function checkFactuur() {
	var isOk = true;
	$("#stap3 :input").each(function() {
		if (($(this).attr('required') == 'true' || $(this).attr('required') == true) && $(this).val().length == 0) {
			$(this).addClass("error");
			isOk = false;
		}
		else {
			$(this).removeClass("error");
		}
	});
	
	// Postcode
	$("#stap3 :input[name='fac_postcode']").each(function() {
		if (!isPostcode($(this).val())) {
			$(this).addClass("error");
			isOk = false;
		}
		else {
			$(this).removeClass("error");
		}
	});
	
	// Telefoon
	$("#stap3 :input[name='fac_telefoon']").each(function() {
		if (!isTelefoonnummer($(this).val())) {
			$(this).addClass("error");
			isOk = false;
		}
		else {
			$(this).removeClass("error");
		}
	});
	
	// Email
	$("#stap3 :input[name='fac_email']").each(function() {
		if (!isEmail($(this).val())) {
			$(this).addClass("error");
			isOk = false;
		}
		else {
			$(this).removeClass("error");
		}
	});
		
	if (!isOk) {
		switchTab("tab3");
		return false;
	}
	
	// Ordernummer
	if ($("#stap3 input[name='fac_ordernummer']:checked").length == 0) {
		alert('Geef aan of u een ordernummer heeft.');
		return false;
	}
	if ($("#stap3 input[name='fac_ordernummer']:checked").val() == "ja" && $("#stap3 :input[name='fac_ordernummer_nummer']").val().length == 0) {
		alert('Vul uw ordernummer in.');
		$("#stap3 :input[name='fac_ordernummer_nummer']").addClass("error");
		return false;
	}
	else {
		$("#stap3 :input[name='fac_ordernummer_nummer']").removeClass("error");
	}
			
	return true;
}

/**
 * Add cursist
 * 
 * @return
 */
function addCursist() {
	var num = $("#stap2 .kader").length;
	var geslacht = $("#cursistFrm input[name='geslacht']:checked").val();
	
	// Copy HTML from #cursistFrm
	var frmHtml = "<div id=\"cursistFrm" + (cursistenId + 1) + "\" style=\"margin-top: 20px;\"><h2>Cursist #" + (num + 1) + "</h2>";
	frmHtml += $("#cursistFrm").html();
	frmHtml += "<div class=\"delete\"><a href=\"#\" onclick=\"delCursist(" + (cursistenId + 1) + ")\">Verwijderen</a></div>";
	frmHtml += "</div>";
	
	if (cursistenId > 1) {
		$("#cursistFrm" + cursistenId).after(frmHtml);
	}
	else {
		$("#cursistFrm").after(frmHtml);
	}
	
	// Create unique names for the new form inputfields
	$("#cursistFrm" + (cursistenId + 1) + " :input").each(function() {
		var name = $(this).attr("name");
		if (name == "regnr[]") {
			var newName = "regnr" + (cursistenId + 1) + "[]";
		}
		else {
			var newName = name + (cursistenId + 1);
		}
		$(this).attr("name", newName);
		$(this).removeClass("error");
	});
	
	// Dirty fix for the geslacht on the original form
	$("#cursistFrm input[name='geslacht'][value='" + geslacht + "']").attr("checked", "checked");
	
	cursistenId = cursistenId + 1;
	
	return false;
}

function delCursist(num) {
	$("#cursistFrm" + num).remove();
	
	// Fix the numbers
	var cnt = 2;
	$("div[id^='cursistFrm'] h2").each(function() {
		$(this).text("Cursist #" + cnt);
		cnt++;
	});
}

// TODO: bug met radio buttons omdat er gecloned wordt!! 
// Is alleen van belang wanneer meerdere cursisten toevoegen weer mogelijk moet zijn
function loadFrmData() {
	var geslachtCursist = $("#cursistFrm input[name='geslacht']:checked").val();
	var geslachtFactuur = $("#factuurData input[name='fac_geslacht']:checked").val();
	var ordernummerFactuur = $("#factuurData input[name='fac_ordernummer']:checked").val();
	var lesmateriaalFactuur = $("#factuurData input[name='fac_adres_lesmateriaal']:checked").val();
	
	$("#checkData").empty();
	$("#stap2 div[id^='cursistFrm']").clone().appendTo($("#checkData"));
	$("#checkData").append("<h2>Factuurgegevens</h2>");
	$("#factuurData").clone().appendTo($("#checkData"));
	
	// Remove 'kaders', required messages and delete buttons
	$("#checkData div[id^='cursistFrm'] .kader").remove();
	$("#checkData div[id^='cursistFrm'] .required").remove();
	$("#checkData div[id^='cursistFrm'] .delete").remove();
	
	// Transform inputfields to plaintext
	$("#checkData :input").each(function() {
		var value = $(this).val();
		// Factuur: geslacht cursist
		if ($(this).attr("name") == "geslacht") {
			value = geslachtCursist;
		}
		// Factuur: geslacht factuur
		else if ($(this).attr("name") == "fac_geslacht") {
			value = geslachtFactuur;
		}
		// Factuur: ordernummer
		else if ($(this).attr("name") == "fac_ordernummer") {
			value = ordernummerFactuur;
			var orderNummer = $("#stap3 :input[name='fac_ordernummer_nummer']").val();
			if (orderNummer && ordernummerFactuur == "ja") {
				value = ordernummerFactuur + ", " + orderNummer;
			}
		}
		// Factuur: lesmateriaal adres factuur
		else if ($(this).attr("name") == "fac_adres_lesmateriaal") {
			value = lesmateriaalFactuur;
			var werkadres = $("#stap3 :input[name='werkadres']").val();
			if (value == "werkadres" && werkadres.length > 0) {
				value += "<br /><br />" + werkadres;
			}
		}
		// Factuur: opmerkingen
		else if ($(this).attr("name") == "opmerkingen") {
			value = $("#stap3 :input[name='opmerkingen']").val();
		}
		$(this).parent().html(value);
	});
	
	// Dirty fix for the radio-buttons on the original form
	$("#cursistFrm input[name='geslacht'][value='" + geslachtCursist + "']").attr("checked", "checked");
	$("#factuurData input[name='fac_geslacht'][value='" + geslachtFactuur + "']").attr("checked", "checked");
	$("#factuurData input[name='fac_ordernummer'][value='" + ordernummerFactuur + "']").attr("checked", "checked");
	$("#factuurData input[name='fac_adres_lesmateriaal'][value='" + lesmateriaalFactuur + "']").attr("checked", "checked");
}

function subscribe() {
	if ($("#stap4 :input[name='voorwaarden']:checked").length == 0) {
		alert("U dient akkoord te gaan met de algemene voowaarden.");
		return false;
	}
	
	$("#subscribeFrm").submit();
}
