// Copyright (C) 2009 Jub Jub
// Original: Robert Wallis - 2009-07-26 - robert@jubjub.com

function my_account_show()
{
	$('#first_name').html(member.first_name);
	$('#last_name').html(member.last_name);
	$('#email').html(member.email);
	$('#phone_primary').html(member.phone_primary);
	$('#phone_mobile').html(member.phone_mobile);
	$('#address').html(member.address+"<br/>"+member.city+",&nbsp;"+member.state+"&nbsp;&nbsp;"+member.zip);
	$('#my_account_info td').siblings().next().css('font-size', '15px');
	$('#edit').html('<input type="button" class="input_button" value="Edit" id="edit_button" />');
	$('#edit_button').click(function(){
		my_account_form();
	});
}

function my_account_form()
{
	var edit_fields = ['first_name', 'last_name', 'email', 'phone_primary', 'phone_mobile'];
	var elements = document.forms.my_account.elements;
	for(var i=0; i<edit_fields.length; i++) {
		var field = edit_fields[i];
		$('#'+field).html('<input type="text" name="'+field+'" value="">');
		elements[field].value=member[field];
	}
	$('#email_verify_tr').css('display', 'block');
	$('#email_verify').html('<input type="text" name="email_verify" value="">');	
	$('#password_tr').css('display', 'block');
	$('#password_verify_tr').css('display', 'block');
	$('#password').html('<input type="password" name="password" value="">');
	$('#password_verify').html('<input type="password" name="password_verify" value="">');
	$('#address').html(
		'<textarea cols="30" rows="2" name="address"></textarea><br />' +
		'<input type="text" name="city" value="" />' +
		'&nbsp' +
		'<input type="text" name="state" value="" size="2" />' + 
		'&nbsp' +
		'&nbsp' +
		'<input type="text" name="zip" value="" size="10" />'
	);
	$(elements.address).text(member.address);
	elements.city.value = member.city;
	elements.state.value = member.state;
	elements.zip.value = member.zip;
	$('#edit').html('<input type="hidden" name="info_edit" value="true" /><input type="submit" class="input_button" value="Save" id="save_button" />');
	elements.first_name.focus();
}

function my_account_students()
{
	$('#my_account_students tfoot:first').html('<tr id="student_new"><td><input type="text" name="s_first_name" value="" size="10" /></td><td><input type="text" name="s_last_name" value="" size="10" /></td><td>Add another student</td><td>&nbsp;</td><td>&nbsp;</td></tr>');
	$('#my_account_students tfoot input').focus(function() {
		var focused = this;
		var id = $('#my_account_students tbody tr').length + 1;
		document.forms.my_account.elements.top_student_id.value = id;
		$('#student_new').hide();
		$('#my_account_students tbody').append('<tr id="student_'+id+'_new"><td><input type="text" name="s_first_name_'+id+'" value="" size="10" /></td><td><input type="text" name="s_last_name_'+id+'" value="" size="10" /></td><td></td><td><select name="s_grade_'+id+'"></select></td><td></td></tr>');
		var schools_select = $('<select name="s_school_'+id+'"></select>');
		$('#student_'+id+'_new td:eq(2)').html(schools_select);
		for (var i in schools) {
			$('<option></option>')
				.attr('value', schools[i].id)
				.text(schools[i].name)
				.appendTo(schools_select);
		}
		schools_select.data('student_id', id);
		schools_select.change(function() {
			var student_id = $(this).data('student_id');
			var school_id = this.options[this.selectedIndex].value;
			var grades_select = $('select[name=s_grade_'+student_id+']:first');
			grades_select.empty();
			grades_select.show();
			$('<option value="">(grade)</option>').appendTo(grades_select);
			for (var g in schools[school_id].grades) {
				var grade = schools[school_id].grades[g];
				$('<option></option>')
					.text(grade)
					.appendTo(grades_select)
				;
			}
		});
		
		schools_select.change();
		$('input[name='+focused.name+'_'+id+']').focus();
		$('#student_new').fadeIn(200);
	});
}

function my_account_schools()
{
	var school_names = [];
	for(var i in schools) {
		school_names.push(schools[i].name);
	}
	$('#school_names').text(school_names.join(', '));
}

function my_account_edit_student(id)
{
	var row = $('#student_'+id+'_edit');
	if (!row)
		return alert('The student was not found on this page to edit.');
		
	var student = students[id];
	if (!student)
		return alert('The student record was not found to edit.');

	row.html('<td><input type="text" name="e_first_name_'+id+'" value="'+student.first_name+'" size="10" /></td><td><input type="text" name="e_last_name_'+id+'" value="'+student.last_name+'" size="10" /></td><td>&nbsp;</td><td>&nbsp;</td><td></td>');
	
	// build select and select the right one
	var schools_select = $('<select name="e_school_'+id+'"></select>');
	$('#student_'+id+'_edit td:eq(2)').html(schools_select);
	for(var i in schools) {
		var o = $('<option>')
			.attr('value', schools[i].id)
			.text(schools[i].name);
		if (schools[i].id == student.school_id)
			o.attr('selected', 'selected');
		o.appendTo(schools_select);
	}
	
	// build selects
	var td = $('#student_'+id+'_edit td:eq(3)');
	td.empty();
	var grade_select = $('<select name="e_grade_'+id+'"></select>');
	td.append(grade_select);
	
	schools_select.data('student_id', id);
	schools_select.change(function() {
		// each school has different grades
		var student_id = $(this).data('student_id');
		var student = students[id];
		var school_id = this.options[this.selectedIndex].value;
		var grades_select = $('select[name=e_grade_'+student_id+']:first');
		grades_select.empty();
		grades_select.show();
		for (var g in schools[school_id].grades) {
			var grade = schools[school_id].grades[g];
			var o = $('<option></option>').text(grade);
			if (grade == student.grade)
				o.attr('selected', 'selected');
			o.appendTo(grade_select);
		}
	});
	schools_select.change();
}

function calendar_edit_day(year, month, day)
{
	var date = new Date();

	document.forms.calendar.year.value = year;
	document.forms.calendar.month.value = month;
	document.forms.calendar.day.value = day;

	$('#calendar_edit_popup h1:first').text('Editing '+year+'/'+month+'/'+day+' for '+student.first_name);
	
	$.post('/parents/menu/day/'+year+'/'+month+'/'+day+'/'+student.uri+'/'+date.getTime(),
		null,
		function (data) {
			$('#calendar_edit_popup').data('day', data);
			if (!data || !data.school_menu)
				return alert('The day\'s menu for '+day+'/'+month+'/'+year+' has not been set.  You can\'t order from it yet.');
			// build html
			
			// headers
			$('#extras h2:first').text('');
			if (data.school_menu.pricing_method=='day') {
				$('#meals h2:first').text('Entrée Meal ($'+data.school_menu.price_entree+')');
				if (data.school_menu.price_extra_entree > 0.0)
					$('#extras h2:first').text('Extra Entrée ($'+data.school_menu.price_extra_entree+')');
			} else {
				$('#meals h2:first').text('Entrée S=Small, R=Regular, L=Large');
			}
			$('#meals div').remove();
			$('#extras div').remove();
			// render the meals and extras sections
			
			var entree_set = false;
			
			for (var meal_id in data.school_menu.meals) {
				var meal = data.school_menu.meals[meal_id];
				if (data.school_menu.pricing_method=='day') {
					// meal side
					var checked = '';
					if (data.student_menu && data.student_menu.meals && meal_id in data.student_menu.meals && data.student_menu.meals[meal_id].quantity_meal > 0) {
						checked = 'checked="checked"';
						entree_set = true;
						}
					var meal_text = meal.entree+', '+meal.side+', '+meal.dessert;
					if (data.school_menu.pricing_method=='meal')
						meal_text = '($'+meal.price_entree+') '+meal_text;
					$('#meals').append('<div><label><input type="radio" name="entree" value="'+meal_id+'" '+checked+'/>'+meal_text+'</label></div>');
					// extra side
					if (data.school_menu.price_extra_entree <= 0.00)
						continue;
					var quantity = 0;
					if (data.student_menu && data.student_menu.meals && meal_id in data.student_menu.meals) {
						quantity = data.student_menu.meals[meal_id].quantity_extra;
					}
					var options = '';
					for (var q = 0; q <= 5; q++) {
						if (quantity == q)
							options += '<option selected="selected">'+q+'</option>';
						else
							options += '<option>'+q+'</option>';
					}
					var extra_text = meal.entree;
					if (data.school_menu.pricing_method=='meal')
						extra_text = '($'+meal.price_extra_entree+') '+extra_text;
					$('#extras').append('<div><label><select name="extra_'+meal_id+'">'+options+'</select>'+extra_text+'</label></div>');
				} else if (data.school_menu.pricing_method=='meal') {
					// meal side
					var quantity = 0;
					if (data.student_menu && data.student_menu.meals && meal_id in data.student_menu.meals) {
						quantity = data.student_menu.meals[meal_id].quantity_meal;
					}
					var options = '';
					for (var q = 0; q <= 5; q++) {
						if (quantity == q)
							options += '<option selected="selected">'+q+'</option>';
						else
							options += '<option>'+q+'</option>';
					}
					var meal_text = meal.entree+', '+meal.side+', '+meal.dessert;
					if (data.school_menu.pricing_method=='meal')
						meal_text = '($'+meal.price_entree+') '+meal_text;
					$('#meals').append('<div><label><select name="meal_'+meal_id+'">'+options+'</select>'+meal_text+'</label></div>');
				}
			}
			if (data.school_menu.pricing_method=='day') {
				if (entree_set) 
					$('#meals').append('<div><label><input type="radio" name="entree" value="0">Skip Entrée</label></div>');
				else
					$('#meals').append('<div><label><input type="radio" name="entree" value="0" checked="checked">Skip Entrée</label></div>');
			}
			$('#drinks div').remove();
			if (data.school_menu.drink_status == 'serving') {
				for (var drink_id in data.school_menu.drinks) {
					var drink = data.school_menu.drinks[drink_id];
					var quantity = 0;
					if (data.student_menu && data.student_menu.drinks && drink_id in data.student_menu.drinks) {
						quantity = data.student_menu.drinks[drink_id].quantity;
					}
					var options = '';
					for (var q = 0; q <= 5; q++) {
						if (q == quantity)
							options += '<option selected="selected">'+q+'</option>';
						else
							options += '<option>'+q+'</option>';
					}
					$('#drinks').append('<div><label><select name="drink_'+drink_id+'">'+options+'</select>($'+drink.price+') '+drink.name+'</label></div>');
				}
				$('#drinks').show();
			} else {
				$('#drinks').append('<div><input type="radio" name="drink" value="0" id="drink_0" checked="checked" /><label for="drink_0">Skip Drink</label></div>');
				$('#drinks').hide();
			}
			$('#calendar_edit_popup #notes h2:first').text('Add a Special Note to '+student.first_name);
			if (data.student_menu && data.student_menu.note && data.student_menu.note.special_note && data.student_menu.note.special_note.length) {
				$('#use_note_no').attr('checked', '');
				$('#use_note_yes').attr('checked', 'checked');
				$('#calendar_edit_popup #notes textarea').attr('disabled', '').css('background-color', '#FFFFFF').text(data.student_menu.note.special_note);
			} else {
				$('#use_note_no').attr('checked', 'checked');
				$('#use_note_yes').attr('checked', '');
				$('#calendar_edit_popup #notes textarea').attr('disabled', 'disabled').css('background-color', '#CCCCCC').empty();
			}
			
	
			
			// show form
			$('#calendar_edit_popup').fadeIn(200);
			
		},
		'json'
	);
} // calendar_edit_day


function check_entree_extras()
{

	data = $('#calendar_edit_popup').data('day');
	
	if (data.school_menu.pricing_method=='day') {
	
		var inputs = document.forms.calendar.elements;
		
		if (inputs.entree.length) {
			// last entree is skip
			if (inputs.entree[inputs.entree.length-1].checked) {
				
				var extras_selected = false;
				
				for (var meal_id in data.school_menu.meals) {
					var extra = inputs['extra_'+meal_id];
					if (extra.selectedIndex != 0) {
						extra.selectedIndex = 0;
						extras_selected = true;
					}
				}
				
				if (extras_selected) {
					alert('You must select an entree meal to order extra entrees.');
					return false;
				}
				else 
					return true;
			} 
			
			else
				return true;
		}
		
		else
			return true;
	}
	else
		return true;
	
} // check_entree_extras

function calendar_setup()
{
	var date = new Date();
	$('#student').change(function() {
		var matches = (document.location+'').match(/^(.*\/\d{4}\/\d{1,2}).*$/);
		if (matches == null)
		 	return;
		document.location = matches[1]+'/'+this.options[this.selectedIndex].value;
	});

	// note toggle
	$('#notes input[name=use_note]').click(function() {
		// enforce meal chosen first
		if (true==$('#meals input:last')[0].checked) {
			$('#use_note_no')[0].checked = true;
			$('#calendar_edit_popup #notes textarea').attr('disabled', 'disabled').css('background-color', '#CCCCCC').empty();
			return;
		}
		if (this.value=='yes') {
			$('#calendar_edit_popup #notes textarea').attr('disabled', '').css('background-color', '#FFFFFF');
		} else {
			$('#calendar_edit_popup #notes textarea').attr('disabled', 'disabled').css('background-color', '#CCCCCC').empty();
		}
	});
	
	// note length
	$('#notes textarea:first').keyup(function(event) {
		// dont allow text over 100 chars
		if (this.value.length > 100) {
			this.value = this.value.substr(0, 100);
		}
	});
	
	// setup buttons
	$('#edit_popup_cancel').click(function() {
		$('#calendar_edit_popup').hide();
	});
	$('#edit_popup_skip').click(function() {
		$('#meals input:last').click();
		$('#drinks input:last').click();
		$.post(
			'/parents/menu/day_save/skip/'+date.getTime(),
			$("form[name=calendar]").serialize(), // although skip, need student name
			function(data, status) {
				$('#day_'+document.forms.calendar.day.value).replaceWith(data);
			},
			'html'
		);
		$('#calendar_edit_popup').hide();
	});
	$('#edit_popup_save').click(function() {
		if(check_entree_extras())
		{
		$.post(
			'/parents/menu/day_save/'+date.getTime(),
			$("form[name=calendar]").serialize(), 
			function(data, status) {
				$('#day_'+document.forms.calendar.day.value).replaceWith(data);
			},
			'html'
		);
		$('#calendar_edit_popup').hide();
		}
	});
}
