$.fn.id = function(attribute) {
	if (!attribute) attribute = 'id';
	var id = this.eq(0).attr(attribute);
	return id ? parseInt(id.match(/(\d+)$/)[1], 10) : null;
};

$(function(){

	$.validator.addMethod("ticketNumbers", 
		function() {
			if($('#badtickets').val() > 0 || $('#nonbadtickets').val() > 0){
				return true;
			} else {
				return false;			
			}
		}
	);
	
	var options={
		rules: {
			ticketNumbers: {
				ticketNumbers: true
			},
			"data[Ticket][contact_number]": {
				required: true,
	      digits: true
			}
		},
		messages: {
			name: "Please specify a name.",
			address: "Please specify a valid postal address.",
			ticketNumbers: {
				required: 'You must buy at least one ticket.',
				ticketNumbers: 'You must buy at least one ticket.'
			}
		},
		errorElement: "div"
	};
	
	$('FORM').submit(function(){
		
		$('.ticketSelector').each(function(){
			var val = $(this).val();
			$('.'+this.id).filter(function(){
				return $(this).id() > val
			}).remove();
		});
		
		return true;
	});
	
	$("#Ticket").validate(options);
	
	
	for(i=1; i<=10; i++){
		$("#badticketingarea").append("<div id='badtickets"+i+"' class='badtickets'><label for='badtickets" + i + "'>Bad Member "+i+" Name:</label> <input type='text' size='20' name='data[Ticket][badticketsmembers]["+i+"][name]' class='inputfield' /></div>");
	}
	
	for(i=1; i<=10; i++){
		$("#nonbadticketingarea").append("<div id='nonbadtickets"+i+"' class='nonbadtickets'><label for='nonbadtickets" + i + "'>Non Bad Member "+i+" Name:</label> <input type='text' size='20' name='data[Ticket][nonbadticketsmembers]["+i+"][name]' class='inputfield' /></div>");
	}
	
	$('badtickets, nonbadtickets').hide();
	
	
	$('.ticketSelector').bind('change', function(){
		var number = $(this).val();
		if(number > 0){
			$('#'+this.id+'title').show();
		} else {
			$('#'+this.id+'title').hide();
		}
		
		var price = ($('#badtickets').val() * $('#badprice').val()) + ($('#nonbadtickets').val() * $('#nonbadprice').val());
		
		$("#price").text('Total: $'+price.toFixed(2)); 
		
		$('.'+this.id).show()
			.find('INPUT').addClass('required').end()
			.filter(function(){
			return  $(this).id() > number;
		}).hide()
			.find('INPUT').removeClass('required');
	}).trigger('change');
	
});