var showall = false;
var emptycart = true;

$(document).ready(function(){

	$("#delete_popup").click(function(){
		closeticketingpopup();
	});

	$("#delete_login").click(function(){
		$("#login_popup").hide();
		$("#email_only").attr("value", "");
		$("#password_only").attr("value", "");
		$("#login_only_error").hide();
		return false;
	});	
	
	$("#logout").mouseover(function(){
		$("#logged_in").show();	
	});	
	
	$("#logout").mouseout(function(){
		$("#logged_in").hide();	
	});	
	
	$("#login_only_form").validate({
		rules: {
			email: {required:true},
			password: {required:true}
		},
		messages: {
			email: "Dit veld is verplicht!",
			password: "Dit veld is verplicht!"
		},
		submitHandler: function(form) {
			$("#login_loader").show();
			var ts = new Date().getTime();
	    	$.ajax({
	    		url: '../view/login.php?email='+$("#email_only").attr("value")+'&password='+$("#password_only").attr("value")+'&ts='+ts+'&anon_customer_id='+anon_customer_id,
				dataType: 'xml',
	    		success: function(xml) {
					var userid = $(xml).find('userid').text();
					if (userid == "error") {
						$("#login_only_error").html("Ongeldige gebruikersnaam / wachtwoord combinatie");
						$("#login_only_error").show();
						$("#login_loader").hide();
					} else {
						current_userid = userid;
						var hidecart = handleLogin(userid, true);
						$("#email_only").attr("value", "");
						$("#password_only").attr("value", "");
						$("#login_only_error").hide();			
						anon_customer_id = false;
					}
	    		}
	    	});
			return false;
		}
	});

	$(".tab").click(function(){
		if (current_userid) {
			if ($(this).attr('id') == 'show_tab2') {
				showTab($("#show_tab3"));
			} else {		
				showTab($(this));
			}
		}
		return false;
	});

	$("#show_register_form").click(function(){
		$("#ticketing_register_form").toggle();
		if ($("#grey_container :h5").hasClass("greyed_out")) {
			//$("#login_form :input").removeAttr('disabled');
			$("#grey_container :h5").removeClass("greyed_out");
			$("#ticketing_login_submit").show();
			$("#ticketing_login_submit_disabled").hide();
		} else {
			//$("#login_form :input").attr("disabled", true);
			$("#grey_container :h5").addClass("greyed_out");
			$("#ticketing_login_submit").hide();
			$("#ticketing_login_submit_disabled").show();
		}
		return false;
	});
	
	$("#login_form").validate({
		rules: {
			email: {required:true},
			password: {required:true}
		},
		messages: {
			email: "Dit veld is verplicht!",
			password: "Dit veld is verplicht!"
		},
		submitHandler: function(form) {
			$("#ticketing_loader").show();
			var ts = new Date().getTime();
	    	$.ajax({
	    		url: '../view/login.php?email='+$("#email").attr("value")+'&password='+$("#password").attr("value")+'&ts='+ts+'&anon_customer_id='+anon_customer_id,
				dataType: 'xml',
	    		success: function(xml) {
					var userid = $(xml).find('userid').text();
					current_userid = userid;
					if (userid == "error") {
						$("#login_error").html("Ongeldige gebruikersnaam / wachtwoord combinatie");
						$("#login_error").show();
						$("#ticketing_loader").hide();
					} else {
						handleLogin(userid);
						anon_customer_id = false;
						$("#payup").show();
						$("#loginanonymous").hide();
					}
	    		}
	    	});
			return false;
		}
	});
	
	$("#register_form").validate({
		rules: {
			email: {
				required:true,
				email: true
			},
			email_confirm: {
				required: true,
				equalTo: "#email_register"
			},
			password: {
				required:true,
				minlength:6
			},
			confirm: {
				required: true,
				equalTo: "#password_register"
			},
			day: {
				number: true,
				minlength: 2,
				maxlength: 2
			},
			month: {
				number: true,
				minlength: 2,
				maxlength: 2
			},
			year: {
				number: true,
				minlength: 4,
				maxlength: 4
			},
			firstname: {required:true},
			lastname: {required:true},
			street: {required:true},
			number: {required:true},
			zipcode: {required:true},
			city: {required:true}
		},
		messages: {
			email: {
				required: "Dit veld is verplicht!",
				email: "Vul a.u.b. een geldig e-mailadres in!"
			},
			email_confirm: {
				required: "Dit veld is verplicht!",
				equalTo: "Vul a.u.b. hetzelfde e-mail adres in als hierboven!"
			},
			password: {
				required: "Dit veld is verplicht!",
				minlength: "Het wachtwoord moet minimaal 6 tekens lang zijn!"
			},
			confirm: {
				required: "Dit veld is verplicht!",
				equalTo: "Vul dezelfde waarde in als voor het wachtwoord!"
			},
			day: {
				number: "Vul a.u.b. een geldig nummer in!",
				minlength: "Vul minimaal 2 cijfer in!",
				maxlength: "Vul maximaal 2 cijfers in!"
			},
			month: {
				number: "Vul a.u.b. een geldig nummer in!",
				minlength: "Vul minimaal 2 cijfer in!",
				maxlength: "Vul maximaal 2 cijfers in!"
			},
			year: {
				number: "Vul a.u.b. een geldig nummer in!",
				minlength: "Vul minimaal 4 cijfers in!",
				maxlength: "Vul maximaal 4 cijfers in!"
			},
			firstname: "Dit veld is verplicht!",
			lastname: "Dit veld is verplicht!",
			street: "Dit veld is verplicht!",
			number: "Dit veld is verplicht!",
			zipcode: "Dit veld is verplicht!",
			city: "Dit veld is verplicht!"
		},
		submitHandler: function(form) {
			$("#ticketing_loader").show();
			var notifications = '';
			var interests = '';
			if ($('input[name=snailmail]:checked').attr("value") == 1 || $('input[name=digitaal]:checked').attr("value") == 1) {
				var notifications = '<is-send-promotions>true</is-send-promotions>';
			}
			if ($('input[name=snailmail]:checked').attr("value") == 1) {
				interests += '3,';
			}
			if ($('input[name=digitaal]:checked').attr("value") == 1) {
				interests += '4';
			}			
			if ($('input[name=sex]:checked').attr("value") == 'female') {
				var gender = 'f';
			} else {
				var gender = 'm';
			}
			if ($("#birthdate_year").attr("value") && $("#birthdate_month").attr("value") && $("#birthdate_date").attr("value")) {
				var birthdate = '<date-of-birth type="date">'+$("#birthdate_year").attr("value")+'-'+$("#birthdate_month").attr("value")+'-'+$("#birthdate_date").attr("value")+'</date-of-birth>';
			} else {
				var birthdate = '';
			}
			var data = '<customer><password>'+$("#password_register").attr('value')+'</password><first-name>'+$("#firstname").attr('value')+'</first-name><last-name>'+$("#lastname").attr('value')+'</last-name><login>'+$("#email_register").attr('value')+'</login><password-confirmation>'+$("#password_register").attr('value')+'</password-confirmation><address-1>'+$("#street").attr('value')+'</address-1><address-number>'+$("#number").attr('value')+'</address-number><zip-code>'+$("#zipcode").attr('value')+'</zip-code><country-id>'+$("#country :selected").attr('value')+'</country-id><city>'+$("#city").attr('value')+'</city><mobile-phone>'+$("#telephone").attr('value')+'</mobile-phone>'+birthdate+'<gender>'+gender+'</gender><email-address>'+$("#email_register").attr('value')+'</email-address><email-address-confirmation>'+$("#email_confirm").attr("value")+'</email-address-confirmation>'+notifications+'</customer>';
			if (anon_customer_id) {
				var url = "../view/registreer.php?anon_customer_id="+anon_customer_id+'&data='+data;
			} else {
				var url = '../view/registreer.php?data='+data;
			}			
			var ts = new Date().getTime();
			$.ajax({
				url: url,
				dataType: 'xml',
				async: false,
				success: function(xml) {
					var error = $(xml).find('error');
					if (error.length) {
						if (error.text() == 'Login has already been taken') {
							var displayerror = "Er bestaat al een gebruiker met dit e-mail adres!";
						} else {
							var displayerror = error.text();
						}
						$("#register_error").html(displayerror);
						$("#register_error").show();
						$("#ticketing_loader").hide();
					} else {
						var userid = $(xml).find("id:first").text();
						current_userid = userid;
						if (interests) {
							$.ajax({
								url: '../view/set_interests.php?customer_id='+userid+'&interests='+interests+'&ts='+ts+''
							});
						}
						handleLogin(userid);
						anon_customer_id = false;
					}
				}
			});
			return false;
		}
	});
	
});

function handleLogin(userid, showcartafter) {
	var ts = new Date().getTime();
	$.ajax({
		url: 'set_session.php?var=userid&value='+userid+'&ts='+ts,
		success: function(html) {
		}
	});
	$.ajax({
		url: '../view/customer.php?customer_id='+userid+'&ts='+ts+'',
		dataType: 'json',
		success: function(json) {
			current_customer = json.customer;
			user_check();
			$("#user_details").html(json.customer.first_name+' '+json.customer.last_name+'<br />'+json.customer.address_1+' '+json.customer.address_number+'<br />'+json.customer.zip_code+' '+json.customer.city);
			//$("#logged_in").show();
			$("#logout").show();
			$("#login").hide();
			$("#logged_in").html("Ingelogd als " + json.customer.first_name + ' ' + json.customer.last_name);
			if (json.customer.gender == "m") {
				var gender = "man";
			} else {
				var gender = "vrouw";
			}
			$("#more_user_details").html('Email adres: '+json.customer.email_address+'<br />');
			$("ticket_popup_controle_besteller").show();
		}
	});
	var ts = new Date().getTime();
	$.ajax({
		url: '../view/invoice.php?customer_id='+userid+'&ts='+ts+'',
		dataType: 'json',
		async: false,
		success: function(json) {
			updateOrderform(json.invoice, current_showid);
			updateCart(json.invoice);
			current_invoice = json.invoice;
		}
	});
	if (anon_customer_id) {
		anon_customer_id = false;
		showTab($("#show_tab4"));
	} else {
		showTab($("#show_tab2"));
	}
	$("#show_tab1").parent().hide();
	if (typeof showcartafter != "undefined" && showcartafter != false && !emptycart) {
		$("#cart").show();
	}
	return emptycart;
}

function bestel(id) {
	$("#ticketing_loader").show();
	current_showid = id;
	if (!id) {
		showall = true;
		showTab($("#show_tab3"));
		if (anon_customer_id) {
			$("#payup").hide();
			$("#loginanonymous").show();		
		} else {
			$("#payup").show();
			$("#loginanonymous").hide();
		}			
	} else {	
		$(".order_box").hide();
		$("#"+id).show();
		if (!current_userid) {
			$("#payup").hide();
			$("#loginanonymous").show();
			var ts = new Date().getTime();
			var data = "<customer></customer>";
			$.ajax({
				url: '../view/registreer.php?ts='+ts+'&data='+data+'',
				dataType: 'xml',
				async: false,
				success: function(xml) {
					var userid = $(xml).find("id:first").text();
					current_userid = userid;
					anon_customer_id = userid;
				}
			});
		} else {
			$("#payup").show();
			$("#loginanonymous").hide();
		}
		showTab($("#show_tab2"));
		var ts = new Date().getTime();
		$.ajax({
			url: '../view/invoice.php?customer_id='+current_userid+'&ts='+ts+'',
			dataType: 'json',
			success: function(json) {
				updateOrderform(json.invoice, id);
				updateCart(json.invoice);
			}
		});	
	}
	centerPopup();
	$("#cart").hide();
	$("#ticketing_popup").show();
	Cufon.refresh();
	return false;
}


function bestelling(id) {
	$("#ticketing_loader").show();
	current_showid = id;
	if (!id) {
		showall = true;
		showTab($("#show_tab3"));
		if (anon_customer_id) {
			$("#payup").hide();
			$("#loginanonymous").show();		
		} else {
			$("#payup").show();
			$("#loginanonymous").hide();
		}			
	} else {	
		$(".order_box").hide();
		$("#"+id).show();
		if (!current_userid) {
			$("#payup").hide();
			$("#loginanonymous").show();
			var ts = new Date().getTime();
			var data = "<customer></customer>";
			$.ajax({
				url: '../view/registreer.php?ts='+ts+'&data='+data+'',
				dataType: 'xml',
				async: false,
				success: function(xml) {
					var userid = $(xml).find("id:first").text();
					current_userid = userid;
					anon_customer_id = userid;
				}
			});
		} else {
			$("#payup").show();
			$("#loginanonymous").hide();
		}
		showTab($("#show_tab2"));
		var ts = new Date().getTime();
		$.ajax({
			url: '../view/invoice.php?customer_id='+current_userid+'&ts='+ts+'',
			dataType: 'json',
			success: function(json) {
				updateOrderform(json.invoice, id);
				updateCart(json.invoice);
			}
		});	
	}
	centerPopup();
	$("#cart").hide();
	$("#ticketing_popup").show();
}

function showTab(object) {	
	var parent = object.parent();
	var id = object.attr("id");
	var parts = id.split("_");
	if (parts[1] == 'tab4' && anon_customer_id) {
		$("#login_error").html("U moet eerst inloggen voor u kunt betalen");
		$("#login_error").show();	
		showTab($("#show_tab1"));
		return;
	}
	if (parts[1] == 'tab4') {
		$("#ticketing_loader").show();
		var ts = new Date().getTime();
		$.ajax({
			url: '../view/invoice.php?customer_id='+current_userid+'&ts='+ts+'',
			dataType: 'json',
			success: function(json) {
				if (!emptycart && json.invoice.tickets.length > 0 && json.invoice.total_amount == 0) {
					var html = '<table class="ticketing_payment_method" text-align="left"><tr><td><h5 class="black">U heeft gratis tickets geselecteerd, <a href="../view/betaal.php?customer='+current_userid+'&type=7" onclick="$(\'#payment_frame\').attr(\'src\', \'../view/betaal.php?customer='+current_userid+'&type=7\'); $(\'#payment_content\').hide(); return false;">klik hier</a> om de bestelling af te ronden.</h5></td></tr></table>';
					$("#choose_payment_method").hide();
				} else if (json.invoice.tickets.length == 0) {
					var html = '<table class="ticketing_payment_method" text-align="left"><tr><td><h5 class="black">U heeft nog geen tickets besteld.</h5></td></tr></table>';
					$("#choose_payment_method").hide();
				} else {
					var html = '<table class="ticketing_payment_method" text-align="left"><tr><td width="60"><a href="../view/betaal.php?customer='+current_userid+'&type=7" onclick="handlePayment(\''+current_userid+'\', \'7\'); return false;" target="_blank"><img src="img/ticketing/payment-logo-creditcard-visa.png" alt="" /></a></td><td><h5 class="black"><a href="../view/betaal.php?customer='+current_userid+'&type=7" onclick="handlePayment(\''+current_userid+'\', \'7\'); return false;">visa</a></h5></td></tr><tr><td><a href="../view/betaal.php?customer='+current_userid+'&type=8" onclick="handlePayment(\''+current_userid+'\', \'8\'); return false;" target="_blank"><img src="img/ticketing/payment-logo-creditcard-amex.png" alt="" /></a></td><td><h5 class="black"><a href="../view/betaal.php?customer='+current_userid+'&type=8" onclick="handlePayment(\''+current_userid+'\', \'8\'); return false;">american express</a></h5></td></tr><tr><td><a href="../view/betaal.php?customer='+current_userid+'&type=9" onclick="handlePayment(\''+current_userid+'\', \'9\'); return false;" target="_blank"><img src="img/ticketing/payment-logo-ideal-80x75.png" alt="" /></td><td><h5 class="black"><a href="../view/betaal.php?customer='+current_userid+'&type=9" onclick="handlePayment(\''+current_userid+'\', \'9\'); return false;">ideal</a></h5></td></tr><tr><td><a href="../view/betaal.php?customer='+current_userid+'&type=3" onclick="handlePayment(\''+current_userid+'\', \'3\'); return false;" target="_blank"><img src="img/ticketing/mastercard-brand.jpg" alt="" /></td><td><h5 class="black"><a href="../view/betaal.php?customer='+current_userid+'&type=3" onclick="handlePayment(\''+current_userid+'\', \'3\'); return false;">Mastercard</a></h5></td></tr></table>';
					$("#choose_payment_method").show();
				}
				$("#payment_content").html(html);
				$("#ticketing_loader").hide();
			}
		});
	}
	$(".ticketing_tab_active").addClass("ticketing_tab_nonactive");
	$(".ticketing_tab_active").removeClass("ticketing_tab_active");
	parent.addClass("ticketing_tab_active");
	parent.removeClass("ticketing_tab_nonactive");
	$(".tabje").hide();
	if (parts[1] == 'tab3') {
		$("#ticketing_loader").show();
		$("#show_tab2").parent().addClass("ticketing_tab_active");
		$("#show_tab2").parent().removeClass("ticketing_tab_nonactive");
		updateOverview(current_userid);
	}
	Cufon.refresh();	
	$("#"+parts[1]).show();
}

function handlePayment(userid, typeid) {
	$('#payment_frame').attr('src', '../view/betaal.php?customer='+userid+'&type='+typeid); 
	$('#payment_frame').show(); 
	$('#payment_content').hide(); 
	return false;
}

function updateOrderform(invoice, showid) {	
	$("#ticketing_loader").show();
	$("#payment_error").hide();
	var result = '';
	var exists = false;
	emptycart = true;
	if (typeof invoice.tickets != "undefined") {
		var shows = parseInvoice(invoice.tickets);
		for (var i in shows) {
			emptycart = false;
			var show = shows[i];
			var badges_handled = new Array();
			if (show.id == showid || typeof showid == "undefined") {
				exists = true;
			}
			var style = '';
			if (showall == false && show.id != showid) {
				var style="display:none;";
				continue;
			} 
			var html = 	'<div class="ticketing_popup_kader order_box" id="'+show.id+'" style="'+style+'"><p class="ticketing_popup_voorstelling_maker" id="current_maker">'+show.name+'</p><p class="ticketing_popup_voorstelling_datum" id="current_date">'+TimeStampToDate(show.starts_at)+'</p><table><tr>';
			var ts = new Date().getTime();
			$.ajax({
				url: '../view/badges.php?customer_id='+current_userid+'&showid='+show.id+'&ts='+ts+'',
				dataType: 'xml',
				async: false,
				success: function(xml) {
					var last = "";
					$(xml).find("badge-type").each(function() {
						if (typeof show[$(this).find("id").text()] != "undefined") {
							var quantity = show[$(this).find("id").text()];
						} else {
							var quantity = 0;
						}
						badges_handled[badges_handled.length] = $(this).find("id").text();
						lastkey = 'last_'+$(this).find("id").text();
						if ($(this).find("id").text() == 22 || $(this).find("id").text() == 23 || $(this).find("id").text() == 26) {
							last = '<td><p>'+$(this).find("name").text()+'</p><ul><li><a href="#" class="less" onclick="removeticket(\''+show.id+'\', \''+show[lastkey]+'\'); return false;"><img src="img/ticketing/button-minus-11x11.png" class="ticketing_popup_voorstelling_ticketcounter_less" alt="less" /></a></li><li class="cart_voorstelling_counter_count" id="regular_amount_'+show.id+'">'+quantity+'</li><li><a href="#" class="more" onclick="addticket(\''+show.id+'\', \''+$(this).find("id").text()+'\'); return false;"><img src="img/ticketing/button-plus-11x11.png" class="ticketing_popup_voorstelling_ticketcounter_more" alt="more" /></a></li></ul></td>';
						} else {
							html += '<td><p>'+$(this).find("name").text()+'</p><ul><li><a href="#" class="less" onclick="removeticket(\''+show.id+'\', \''+show[lastkey]+'\'); return false;"><img src="img/ticketing/button-minus-11x11.png" class="ticketing_popup_voorstelling_ticketcounter_less" alt="less" /></a></li><li class="cart_voorstelling_counter_count" id="regular_amount_'+show.id+'">'+quantity+'</li><li><a href="#" class="more" onclick="addticket(\''+show.id+'\', \''+$(this).find("id").text()+'\'); return false;"><img src="img/ticketing/button-plus-11x11.png" class="ticketing_popup_voorstelling_ticketcounter_more" alt="more" /></a></li></ul></td>';
						}
					});
					for (var i=0; i < show['badges'].length; i++) {
						if (typeof show['badges'][i] != "undefined") {
							if (!in_array(show['badges'][i], badges_handled)) {
								var missing_name = 'missing';
								var id = show['badges'][i];
								lastkey = 'last_'+id;
								if (typeof show[id] != "undefined") {
									var quantity = show[id];
								} else {
									var quantity = 0;
								}
								$.ajax({
									url: '../view/badge.php?badge_id='+id+'&ts='+ts,
									dataType: 'json',
									async: false,
									success: function(json) {
										myname = json.badge_type.name;
										html += '<td><p>'+myname+'</p><ul><li><a href="#" class="less" onclick="removeticket(\''+show.id+'\', \''+show[lastkey]+'\'); return false;"><img src="img/ticketing/button-minus-11x11.png" class="ticketing_popup_voorstelling_ticketcounter_less" alt="less" /></a></li><li class="cart_voorstelling_counter_count" id="regular_amount_'+show.id+'">'+quantity+'</li><li style="display:none;"><a href="#" class="more" onclick="addticket(\''+show.id+'\', \''+id+'\'); return false;"><img src="img/ticketing/button-plus-11x11.png" class="ticketing_popup_voorstelling_ticketcounter_more" alt="more" /></a></li></ul></td>';
									}
								});
							}
						}
					}
					if (typeof show['regular'] != "undefined") {
						var quantity = show['regular'];
						var lastticket = show.last_ticket.id;
					} else {
						var quantity = 0;
						var lastticket = 0;
					}
					html += last;
					html += '<td><p>Regulier</p><ul><li><a href="#" class="less" onclick="removeticket(\''+show.id+'\', \''+lastticket+'\'); return false;"><img src="img/ticketing/button-minus-11x11.png" class="ticketing_popup_voorstelling_ticketcounter_less" alt="less" /></a></li><li class="cart_voorstelling_counter_count" id="regular_amount_'+show.id+'">'+quantity+'</li><li><a href="#" class="more" onclick="addticket(\''+show.id+'\', false); return false;"><img src="img/ticketing/button-plus-11x11.png" class="ticketing_popup_voorstelling_ticketcounter_more" alt="more" /></a></li></ul></td><td><p>Totaal</p><ul><li></li><li class="cart_voorstelling_counter_count_total" id="total_'+show.id+'">'+show.quantity+'</li><li></li></ul></td><tr></table></div>';
					result += html;				
				}
			});
		}
	}
	if (!exists) {
		$.ajax({
			url: '../view/show.php?show_id='+showid+'&ts='+ts+'',
			dataType: 'json',
			success: function(json) {
				var show = json.show;
				var html = 	'<div class="ticketing_popup_kader order_box" id="'+show.id+'"><p class="ticketing_popup_voorstelling_maker" id="current_maker">'+show.name+'</p><p class="ticketing_popup_voorstelling_datum" id="current_date">'+TimeStampToDate(show.starts_at)+'</p><table><tr>';
				var ts = new Date().getTime();
				var last = "";
				$.ajax({
					url: '../view/badges.php?customer_id='+current_userid+'&showid='+show.id+'&ts='+ts+'',
					dataType: 'xml',
					async: false,
					success: function(xml) {
						$(xml).find("badge-type").each(function() {
							if (typeof show[$(this).find("id").text()] != "undefined") {
								var quantity = show[$(this).find("id").text()];
							} else {
								var quantity = 0;
							}
							if ($(this).find("id").text() == 22 || $(this).find("id").text() == 23 || $(this).find("id").text() == 26) {
								last = '<td><p>'+$(this).find("name").text()+'</p><ul><li><a href="#" class="less" onclick="removeticket(\''+show.id+'\', \'0\'); return false;"><img src="img/ticketing/button-minus-11x11.png" class="ticketing_popup_voorstelling_ticketcounter_less" alt="less" /></a></li><li class="cart_voorstelling_counter_count" id="regular_amount_'+show.id+'">0</li><li><a href="#" class="more" onclick="addticket(\''+show.id+'\', \''+$(this).find("id").text()+'\'); return false;"><img src="img/ticketing/button-plus-11x11.png" class="ticketing_popup_voorstelling_ticketcounter_more" alt="more" /></a></li></ul></td>';
							} else {
								html += '<td><p>'+$(this).find("name").text()+'</p><ul><li><a href="#" class="less" onclick="removeticket(\''+show.id+'\', \'0\'); return false;"><img src="img/ticketing/button-minus-11x11.png" class="ticketing_popup_voorstelling_ticketcounter_less" alt="less" /></a></li><li class="cart_voorstelling_counter_count" id="regular_amount_'+show.id+'">0</li><li><a href="#" class="more" onclick="addticket(\''+show.id+'\', \''+$(this).find("id").text()+'\'); return false;"><img src="img/ticketing/button-plus-11x11.png" class="ticketing_popup_voorstelling_ticketcounter_more" alt="more" /></a></li></ul></td>';
							}
						});
						html += last;
						html += '<td><p>Regulier</p><ul><li><a href="#" class="less" onclick="removeticket(\''+show.id+'\', \'0\'); return false;"><img src="img/ticketing/button-minus-11x11.png" class="ticketing_popup_voorstelling_ticketcounter_less" alt="less" /></a></li><li class="cart_voorstelling_counter_count" id="regular_amount_'+show.id+'">0</li><li><a href="#" class="more" onclick="addticket(\''+show.id+'\'); return false;"><img src="img/ticketing/button-plus-11x11.png" class="ticketing_popup_voorstelling_ticketcounter_more" alt="more" /></a></li></ul></td><td><p>Totaal</p><ul><li></li><li class="cart_voorstelling_counter_count" id="total_'+show.id+'">0</li><li></li></ul></td><tr></table></div>';
						result += html;
						$("#tab2_content").html(result);
						$("#ticketing_loader").hide();
						$("#login_loader").hide();
						$("#login_popup").hide();
					}
				});
			},
			error: function() {
				$("#ticketing_loader").hide();
				$("#login_loader").hide();
				$("#login_popup").hide();
			}
		});
	} else {
		$("#tab2_content").html(result);
		$("#ticketing_loader").hide();
		$("#login_loader").hide();
		$("#login_popup").hide();
	}
	$("#total_price").html(number_format(invoice.total_amount, 2, ",", "."));
}

function parseInvoice(tickets) {
	var exists = new Array();
	var shows = new Object();
	for (var i=0; i < tickets.length; i++) {
		var ticket = tickets[i];
		if (!in_array(ticket.ticket_show.id, exists)) {
			exists[exists.length] = ticket.ticket_show.id;
			shows[ticket.ticket_show.id] = ticket.ticket_show;
			shows[ticket.ticket_show.id]['badges'] = new Array();
			if (ticket.badge_id != null) {
				shows[ticket.ticket_show.id]['badges'][ticket.badge.badge_type_id+""] = ticket.badge.badge_type_id;
				shows[ticket.ticket_show.id][ticket.badge.badge_type_id] = 1;
				shows[ticket.ticket_show.id]['price_'+ticket.badge.badge_type_id] = ticket.sales_price;
				shows[ticket.ticket_show.id]['last_'+ticket.badge.badge_type_id] = ticket.id;
			} else {
				shows[ticket.ticket_show.id]['regular'] = 1;
				shows[ticket.ticket_show.id]['ticket_price'] = ticket.sales_price;
				shows[ticket.ticket_show.id]['last_ticket'] = ticket;
			}
			shows[ticket.ticket_show.id]['quantity'] = 1;
			shows[ticket.ticket_show.id]['calculated_price'] = ticket.sales_price;
		} else {
			if (ticket.badge_id != null) {
				shows[ticket.ticket_show.id]['badges'][ticket.badge.badge_type_id+""] = ticket.badge.badge_type_id;
				shows[ticket.ticket_show.id]['price_'+ticket.badge.badge_type_id] = ticket.sales_price;
				if (typeof shows[ticket.ticket_show.id][ticket.badge.badge_type_id] != "undefined") {
					shows[ticket.ticket_show.id][ticket.badge.badge_type_id] += 1;
				} else {
					shows[ticket.ticket_show.id][ticket.badge.badge_type_id] = 1;
				}
				shows[ticket.ticket_show.id]['last_'+ticket.badge.badge_type_id] = ticket.id;
			} else {
				if (typeof shows[ticket.ticket_show.id]['regular'] != "undefined") {
					shows[ticket.ticket_show.id]['regular'] += 1;
				} else {
					shows[ticket.ticket_show.id]['regular'] = 1;
				}
				shows[ticket.ticket_show.id]['last_ticket'] = ticket;
				shows[ticket.ticket_show.id]['ticket_price'] = ticket.sales_price;
			}
			shows[ticket.ticket_show.id]['quantity'] += 1;		
			shows[ticket.ticket_show.id]['calculated_price'] += ticket.sales_price;
		}
	}
	return shows;
}

function updateOverview(userid) {
	$("#payment_error").hide();
	var ts = new Date().getTime();
	$.ajax({
		url: '../view/invoice.php?customer_id='+userid+'&ts='+ts+'',
		dataType: 'json',
		success: function(json) {
			var result = '';
			var shows = parseInvoice(json.invoice.tickets);
			for (var i in shows) {
				emptycart = false;
				var show = shows[i];
				var badges_handled = new Array();
				$.ajax({
					url: '../view/badges.php?customer_id='+current_userid+'&showid='+show.id+'&ts='+ts+'',
					dataType: 'xml',
					async: false,
					success: function(xml) {
						var display = '<div class="ticket_popup_controle_voorstelling"><h5 class="black">'+show.name+'</h5><p class="besteller_groen">'+TimeStampToDate(show.starts_at)+'</p>';
						$(xml).find("badge-type").each(function() {
							if (typeof show[$(this).find("id").text()] != "undefined") {
								var myid = $(this).find("id").text();
								var myprice = 'price_'+myid;
								var myname = $(this).find("name").text();
								badges_handled[badges_handled.length] = $(this).find("id").text();
								display += '<p class="controle">'+show[myid]+' x &euro; '+number_format(show[myprice], 2, ",", ".")+' ('+myname+')</p>';
							}
						});
						for (var i=0; i < show['badges'].length; i++) {
							if (typeof show['badges'][i] != "undefined") {
								if (!in_array(show['badges'][i], badges_handled)) {
									var myid = show['badges'][i];
									var myprice = 'price_'+myid;
									var myname = "";
									$.ajax({
										url: '../view/badge.php?badge_id='+myid+'&ts='+ts,
										dataType: 'json',
										async: false,
										success: function(json) {
											myname = json.badge_type.name;
											display += '<p class="controle">'+show[myid]+' x &euro; '+number_format(show[myprice], 2, ",", ".")+' ('+myname+')</p>';
										}
									});
								}
							}
						}						
						if (typeof show['regular'] != "undefined") {
							display += '<p class="controle">'+show['regular']+' x &euro; '+number_format(show.ticket_price, 2, ",", ".")+' (Normaal tarief)</p>';
						}
						display += '<p class="controle"><strong>'+show.quantity+' kaarten, &euro; '+number_format(show.calculated_price, 2, ",", ".")+'</strong></p></div>';			
						result += display;
					}
				});	
			}
			$("#total_price").html(number_format(json.invoice.total_amount, 2, ",", "."));
			if (result == "") {
				result = "<div id='jehebtietsfoutgedaan'>U heeft nog geen tickets besteld. Klik op de knop 'aanpassen' hieronder om tickets te bestellen.</div>";
			}
			$("#overview_content").html(result);
			$("#ticketing_loader").hide();
			updateCart(json.invoice);
		}
	});
}

function updateCart(invoice) {
	var shows = parseInvoice(invoice.tickets);
	var result = '';
	emptycart = true;
	for (var i in shows) {
		var show = shows[i];
		var start = TimeStampToDate(show.starts_at);
		var display = '<div class="cart_voorstelling"><p class="cart_voorstelling_delete" style="display:none;"><a href=""><img src="img/ticketing/button-delete-red-8x8.png" alt="" /></a></p><p class="cart_voorstelling_maker">'+show.name+'</p><p class="cart_voorstelling_datum">'+start+'</p><div class="cart_voorstelling_counter"><ul><li class="cart_voorstelling_counter_label">aantal</li><li></li><li class="cart_voorstelling_counter_count">'+show.quantity+'</li><li></li></ul></div></div>';
		result += display;
		emptycart = false;
	}
	$("#cart_content").html(result);
	$("#total_price").html(number_format(invoice.total_amount, 2, ",", "."));
	if (shows) {
		//$("#cart").show();
	}
}

function in_array (needle, haystack, argStrict) { 
    var key = '', strict = !!argStrict;
 
    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;
            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {
                return true;
            }
        }
    }
 
    return false;
}

function TimeStampToDate(myStringDate)
{
    var myStringDate = myStringDate.replace(/\D/g, " ");
	var dObj = myStringDate.split(" ");
	var myDate = new Date(dObj[0], (dObj[1]-1), dObj[2], dObj[3], dObj[4], dObj[5]);
	var days = new Array();
	days[0] = 'Zondag';
	days[1] = 'Maandag';
	days[2] = 'Dinsdag';
	days[3] = 'Woensdag';
	days[4] = 'Donderdag';
	days[5] = 'Vrijdag';
	days[6] = 'Zaterdag';
	var months = new Array();
	months[0] = 'januari';
	months[1] = 'februari';
	months[2] = 'maart';
	months[3] = 'april';
	months[4] = 'mei';
	months[5] = 'juni';
	months[6] = 'juli';
	months[7] = 'augustus';
	months[8] = 'september';
	months[9] = 'oktober';
	months[10] = 'november';
	months[11] = 'december';
	var minutes = myDate.getMinutes() + "";
	if (minutes.length == 1) {
		minutes = "0" + minutes;
	}
	
	return days[myDate.getDay()]  + ' ' + myDate.getDate() + ' ' + months[myDate.getMonth()] + ', ' + myDate.getHours() + ':' + minutes + ' uur';
}

function addticket(showid, badgeid) {
	$("#ticketing_loader").show();
	var ts = new Date().getTime();
	var url = '../view/add.php?customer='+current_userid+'&show='+showid+'&quantity=1&ts='+ts;
	if (typeof badgeid != "undefined" && badgeid) {
		url += '&badge_type_id='+badgeid+'';
	}
	$.ajax({
		url: url,
		dataType: 'json',
		success: function(json) {
			if (typeof json.error != "undefined") {
				$("#ticketing_loader").hide();
				if (json.error == "The maximum allowed number of tickets for a single show is 6") {
					var displayerror = "U mag maximaal 6 kaartjes voor een show bestellen!";
				} else if (json.error == "Not enough tickets available") {
					var displayerror = "Deze kaartjes voor deze voorstelling zijn uitverkocht!";
				} else {
					var displayerror = json.error;
				}
				alert(displayerror);
			} else {
				$("#total_price").html(number_format(json.invoice.total_amount, 2, ",", "."));
				for (var i=0; i<json.invoice.tickets.length; i++) {
					var ticket = json.invoice.tickets[i];
					if (ticket.ticket_show.id == showid) {
						var current_ticket = ticket;
					}
				}
				updateOrderform(json.invoice, showid);
				updateCart(json.invoice);
			}
		}
	});
	return false;
}

function removeticket(showid, ticketid) {
	$("#ticketing_loader").show();
	var ts = new Date().getTime();
	$.ajax({
		url: '../view/remove.php?customer='+current_userid+'&ticket='+ticketid+'&ts='+ts+'',
		dataType: 'json',
		success: function(json) {
			if (typeof json.error != "undefined") {
				$("#ticketing_loader").hide();
				alert(json.error);
			} else {		
				$("#total_price").html(number_format(json.invoice.total_amount, 2, ",", "."));
				updateOrderform(json.invoice, showid);
				updateCart(json.invoice);
			}
		}
	});
	$("#ticketing_loader").hide();
	return false;
}

function adjust() {
	$("#ticketing_loader").show();
	$('.order_box').show(); 
	showall=true; 
	var ts = new Date().getTime();
	$.ajax({
		url: '../view/invoice.php?customer_id='+current_userid+'&ts='+ts+'',
		dataType: 'json',
		success: function(json) {
			if (typeof json.error != "undefined") {
				$("#ticketing_loader").hide();
				alert(json.error);
			} else {		
				updateOrderform(json.invoice);
				updateCart(json.invoice);
				showTab($('#show_tab2'));
			}
		}
	});		
}

function number_format (number, decimals, dec_point, thousands_sep) {
    var n = number, prec = decimals;
 
    var toFixedFix = function (n,prec) {
        var k = Math.pow(10,prec);
        return (Math.round(n*k)/k).toString();
    };
 
    n = !isFinite(+n) ? 0 : +n;
    prec = !isFinite(+prec) ? 0 : Math.abs(prec);
    var sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep;
    var dec = (typeof dec_point === 'undefined') ? '.' : dec_point;
 
    var s = (prec > 0) ? toFixedFix(n, prec) : toFixedFix(Math.round(n), prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;
 
    var abs = toFixedFix(Math.abs(n), prec);
    var _, i;
 
    if (abs >= 1000) {
        _ = abs.split(/\D/);
        i = _[0].length % 3 || 3;
 
        _[0] = s.slice(0,i + (n < 0)) +
              _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
        s = _.join(dec);
    } else {
        s = s.replace('.', dec);
    }
 
    var decPos = s.indexOf(dec);
    if (prec >= 1 && decPos !== -1 && (s.length-decPos-1) < prec) {
        s += new Array(prec-(s.length-decPos-1)).join(0)+'0';
    }
    else if (prec >= 1 && decPos === -1) {
        s += dec+new Array(prec).join(0)+'0';
    }
    return s;
}

function getScrollXY() { 
	var scrOfX = 0, scrOfY = 0; 
	if( typeof( window.pageYOffset ) == 'number' ) { 
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) { 
		//DOM compliant
		scrOfY = document.body.scrollTop; 
		scrOfX = document.body.scrollLeft; 
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) { 
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop; 
		scrOfX = document.documentElement.scrollLeft; 
	} 
	return {X:scrOfX, Y:scrOfY}; 
}

function getWindowSize() { 
	 var myWidth = 0, myHeight = 0; 
	 if( typeof( window.innerWidth ) == 'number' ) { 
	   //Non-IE 
	   myWidth = window.innerWidth; 
	   myHeight = window.innerHeight; 
	 } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { 
	   //IE 6+ in 'standards compliant mode' 
	   myWidth = document.documentElement.clientWidth; 
	   myHeight = document.documentElement.clientHeight; 
	 } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { 
	   //IE 4 compatible 
	   myWidth = document.body.clientWidth; 
	   myHeight = document.body.clientHeight; 
	 } 
	 return{X:myWidth, Y:myHeight}
}

function centerPopup(){
	//request data for centering 
	var windowDim = getWindowSize(); 
	var popupHeight = $("#ticketing_popup").height(); 
	var popupWidth = $("#ticketing_popup").width(); 
	var scroll = getScrollXY();
	//centering
	$("#ticketing_popup").css({ 
		"position": "absolute", 
		"top": windowDim.Y/2-popupHeight/2 + scroll.Y-15
	}); 
}

function paymentsuccessful() {
	$("#payment_frame").hide();
	$("#payment_content").show();
	$("#tab4").hide();
	$("#tab5").show();
	$("#ticketing_loader").hide();
	$("#payment_error").hide();
	emptycart = true;
}

function paymentfailed() {
	$("#payment_frame").hide();
	$("#payment_content").show();
	$("#payment_error").html("Helaas, er is iets fout gegaan bij het betalen. Probeer het nogmaals.");
	$("#payment_error").show();
	$("#payment_content").show();	
	$("#ticketing_loader").hide();
}

function resetpayment() {
	$("#payment_frame").attr("src", "");
	$("#payment_frame").hide();
	$("#payment_content").show();
	$("#payment_error").hide();
}

function logout() {
	current_userid = false;
	current_customer = false;
	user_check();
	var ts = new Date().getTime();
	$.ajax({
		url: 'set_session.php?var=userid&value=0&ts='+ts,
		success: function(html) {
		}
	});	
	$("#ticketing_popup").hide();
	$("#logged_in").hide();
	$("#logout").hide();
	$("#login").show();
	$("#show_tab1").parent().show();
	showTab($("#show_tab1"));
	$("#cart").hide();
	return false;
}

function closeticketingpopup() {
	$("#ticketing_popup").hide();
	showall = false;
	if (!emptycart && current_userid) {
		$("#cart").show();
	}
	$("#ticketing_register_form").hide();
	$("#login_form :input").removeAttr('disabled');
	$("#grey_container :h5").removeClass("greyed_out");
	$("#email").attr("value", "");
	$("#password").attr("value", "");
	$("#login_error").hide();
	$("#ticketing_login_submit").show();
	$("#ticketing_login_submit_disabled").hide();	
	$("#payment_error").hide();
	resetpayment();
	return false;
}

