var belaqua_spa = {
	
	/**
	 * recalculate the basket 
	 */
	recalc: function() {
		//Find all the spans with st_price
		var total = 0;
		$(".spa-package .st_price").each(function() {
			total += parseFloat($(this).html());
		});

		$("#treatment-price").html($.sprintf("%.2f", total));
		//Check we can add the spa-price
		if ((parseFloat($("#spa-price").html())))
		{
			$("#subtotal-price").html($.sprintf("%.2f", total+parseFloat($("#spa-price").html())));
		}
		else
		{
			$("#subtotal-price").html($.sprintf("%.2f", total));
		}
		
	},
	initNewLine: function() {
		$(".remove_treatment").click(function() {
			var theId = $(this).parent().parent().parent().attr('id').replace(/[^0-9]*/, '');
			//Uncheck box
			$("#treatment-"+theId).attr("checked", false);
			
			$(this).parent().parent().parent().remove();
			
			belaqua_spa.recalc();
		});
		belaqua_spa.recalc();
		
	},
	initAccommLine: function() {
		$(".remove_accomm").click(function() {
			
			var theId = $(this).parents('li').attr('id').replace(/[^0-9]*/, '');

			//Uncheck box
			$("#accomm-"+theId).attr("checked", false);
			
			$(this).parent().parent().parent().remove();
			
			belaqua_spa.recalc();
		});
		belaqua_spa.recalc();
		
	},
	initPagination: function() {
		$('a.paginate-but').click(function() {
			$('#package-details').load($(this).attr('href'),null, belaqua_spa.initPagination);
			return false;
		});
	},
	checkBoxes: function(targetList) {
		$(targetList).each(function() {
			var selId = this.id;
			//check that option
			if (this.id.length>3) {
				var targetCheckBox = this.id.substring(4);
				$("#"+targetCheckBox).attr("checked", true);
			}
		});
	},
	closeButton: function() {
		$('.close-but').click(function() {
			$(".panel_content").hide();
			$(".background_fade").hide();
		});
	},
	
	friendShareSuccess: function(data) {
		//success
		$('.friend-share').html(data);
	},
	
	friendShare: function() {
		
		
		$('#friendshare-form').validate({
			errorPlacement: function(error, element) {
			        element.addClass("error");
					$('.error_headline').show();
			    },
			
			debug: false
		});
		
		$('#friendshare-but').click( function() {
			
			if (!$("#friendshare-form").valid())
			{
				return false;
			}
			var output = '';
			
			output = $('#user_message').attr('name')+"="+encodeURIComponent($('#user_message').attr('value'));
			//Add all text field data
			$("#friendshare-form input[type=text], #friendshare-form input[type=hidden]").each(function() {
				output += '&'+$(this).attr("name")+'=' + encodeURIComponent($(this).attr("value"));
			});
			//Add radio box
			if ($('#send_copy').attr("checked"))
			{
				output += '&'+$('#send_copy').attr("name")+'=' + $('#send_copy').attr("value");
			}
			
			
			
			$.ajax({  
			  type: "POST",  
			  url: "/spas/friendSharePost",  
			  data: output,  
			  success: belaqua_spa.friendShareSuccess
			});
			
			
			return false;
		});
	},
	registerSuccess: function(data, status) {
		$('.login_panel').html(data);
		//Just in case we come back to reg page again
		belaqua_spa.initSaveShare();
		belaqua_spa.friendShare();
		belaqua_spa.addFriend();
	},
	shareButton: function() {
		$('#share-but').click(function() {
			$('.friend-share').load("/spas/friendShare", null, function() {
				belaqua_spa.closeButton();
				belaqua_spa.friendShare();
				belaqua_spa.addFriend();
			})
		});	
	},
	/** 
	 * Init add friend button
	 */
	addFriend: function() {
		$(".add-friend").unbind();
		
		$(".add-friend").click(function() {
			
			var copy = $('div.name_email:last').html();
			//rename fields
			var id = $('div.name_email:last').attr("id");
			id = Number(id.replace("name_email_", ""));
			var newId = id+1;
			
			copy = copy.replace("UserName"+id, "UserName"+newId);
			copy = copy.replace("UserName"+id, "UserName"+newId);
			copy = copy.replace("data[User][Name_"+id, "data[User][Name_"+newId);
			copy = copy.replace("UserEmail"+id, "UserEmail"+newId);
			copy = copy.replace("UserEmail"+id, "UserEmail"+newId);
			copy = copy.replace("data[User][Email_"+id, "data[User][Email_"+newId);
			
			$('div.name_email:last').after("<div class='name_email' id='name_email_"+newId+"'>"+copy+"</div>");
			
			$('div.name_email:last input').each(function() {
				$(this).attr('value', '');
			})
			
			//remove any errors
			$('div.name_email:last label.error').each(function() {
				$(this).remove();
			})
			
			//add remove link
			$('div.name_email:last span.right' ).html("<a class='remove_name' href='javascript:void(0)'>Remove</a>");
			
			$(".remove_name").one('click', function() {
				$(this).parents("div.name_email").remove();
			});
			
		});
	},
	
	/**
	 * Called when the login has been successful
	 */
	loginSuccess: function(data, status) {
		$('.login_panel').html(data);
		belaqua_spa.closeButton();
		belaqua_spa.shareButton();
	},
	/**
	 * Init the save and share panel functionality
	 */
	initSaveShare: function(data) {
		$(".panel_content").html(data);
		belaqua_spa.closeButton();
		belaqua_spa.shareButton();
		
		$('#login-but').click(function() {
			//Ajax submit
			var dataString = 'data[User][username]='+ $('#UserUsername').val() + 
				'&data[User][password]=' + $('#UserPassword').val() +
				'&data[returnLocation]=/spas/loginPanel';

			//alert (dataString);return false;  
			$.ajax({  
			  type: "POST",  
			  url: "/account/users/ajaxLogin",  
			  data: dataString,  
			  success: belaqua_spa.loginSuccess
			});
			
			return false;
		});
		
		$('#register-but').click(function() {
			//Ajax submit
			var dataString = 'data[User][username]='+ $('#Reg_UserUsername').val() + 
				'&data[User][password]=' + $('#Reg_UserPassword').val()+
				'&data[User][password_confirm]=' + $('#UserPasswordConfirm').val()+
				'&data[Customer][first_name]=' + $('#CustomerFirstName').val()+
				'&data[Customer][last_name]=' + $('#CustomerLastName').val()+
				'&data[Customer][phone_contact]=' + $('#CustomerPhoneContact').val()+
				'&data[Address][line1]=' + $('#AddressLine1').val()+
				'&data[Address][line2]=' + $('#AddressLine2').val()+
				'&data[Address][line3]=' + $('#AddressLine3').val()+
				'&data[Address][town]=' + $('#AddressTown').val()+
				'&data[Address][locality]=' + $('#AddressLocality').val()+
				'&data[Address][postcode]=' + $('#AddressPostcode').val()+
				'&data[renderFail]=/spas/login_panel'+
				'&data[returnLocation]=/spas/welcomeNew';

			//alert (dataString);return false;  
			$.ajax({  
			  type: "POST",  
			  url: "/account/register",  
			  data: dataString,  
			  success: belaqua_spa.registerSuccess
			});
			
			return false;
		})
		
		belaqua_spa.addFriend();
	},
	/*
	 * Called once the Order Summary page appears
	 */
	initOrderSummary: function() {
		//Init treatment checkboxes
		$(".treatment-opt").each(function() {
			$(this).attr("checked", false);
		});
		
		//Init Accom checkboxes
		$(".accomm-opt").each(function() {
			$(this).attr("checked", false);
		});
		
		//Now check any that are selected in the list (e.g when we edit a reservation)
		belaqua_spa.checkBoxes("#treatment_list li");
		//Set accom checkboxes
		belaqua_spa.checkBoxes("#accomm_list li");
		
		//Test whether to handle Blank Package treatment click or Normal Style and Edit
		if ($("#add-review-but").length>0)
		{
			//We are editing a package
			//Click handler for treatment checkboxes
			$(".treatment-opt").unbind("click");
			$(".treatment-opt").click(function(e) {
				//Add or delete
				if ($(this).is(':checked')) {
					//Double check we dont have one selected already
					var dup = $("#sel-"+this.id);
					if (dup.length==0) {
						//Adding
						var target = $("#treatment_list li:last");

						target.after("<li id='sel-"+this.id+"'><img src='/img/loading.gif' alt='Loading'/></li>");
						//Now call ajax to return full details
						var theId = $(this).attr("id").replace(/[^0-9]*/,"");
						$("#sel-"+this.id).load('/spaTreatments/view/'+theId, null, belaqua_spa.initNewLine);
					}	
				} else {
					//Remove
					$("#sel-"+this.id).remove();
					belaqua_spa.recalc();
				}
			});
			
			$(".accomm-opt").unbind("click");
			$(".accomm-opt").click(function(e) {
				//Add or delete
				if ($(this).is(':checked')) {
					//Adding
					var target = $("#accomm_list li:last");

					target.after("<li id='sel-"+this.id+"'><img src='/img/loading.gif' alt='Loading'/></li>");
					//Now call ajax to return full details
					var theId = $(this).attr("id").replace(/[^0-9]*/,"");
					$("#sel-"+this.id).load('/accommodations/view/'+theId, null, belaqua_spa.initAccommLine);

				} else {
					//Remove
					$("#sel-"+this.id).remove();
					belaqua_spa.recalc();
				}
			});
		}
		else
		{
			//We are editing a blank package
			//Check for empty package clicks
			$(".treatment-opt").unbind().click(function(e) {
				var treatmentId = $(this).attr('id');
				treatmentId = treatmentId.replace(/[^0-9]*/, '');

				var dataString = 'data[CustomerPackage][spa_id]='+$('#CustomerPackageSpaId').attr('value')+
					'&data[CustomerPackage][package_id]=0'+
					'&data[CustomerPackage][type]='+$('#CustomerPackageType').attr('value')+
					'&data[CustomerPackage][status]='+$('#CustomerPackageStatus').attr('value')+
					'&data[CustomerPackageSpaTreatment][0]='+treatmentId

				$.ajax({  
				  type: "POST",  
				  url: "/customer_packages/add",  
				  data: dataString,  
				  success: belaqua_spa.loadOrderSummary
				});
			});
			
			//Check for empty package clicks
			$(".accomm-opt").unbind().click(function(e) {
				var accommId = $(this).attr('id');
				accommId = accommId.replace(/[^0-9]*/, '');

				var dataString = 'data[CustomerPackage][spa_id]='+$('#CustomerPackageSpaId').attr('value')+
					'&data[CustomerPackage][package_id]=0'+
					'&data[CustomerPackage][type]='+$('#CustomerPackageType').attr('value')+
					'&data[CustomerPackage][status]='+$('#CustomerPackageStatus').attr('value')+
					'&data[Accommodation][0]='+accommId

				$.ajax({  
				  type: "POST",  
				  url: "/customer_packages/add",  
				  data: dataString,  
				  success: belaqua_spa.loadOrderSummary
				});
			});
		}
		
		
		
		
		
		
		
		$("#add_treatments").click(function() {
			$spaTabs.tabs('select', 2);
			return false;
		});
		$("#choose_accomm").click(function() {
			$spaTabs.tabs('select', 3);
			return false;
		});
		/*$('.remove-package-but').click(function() {
			var item = $(this).attr('id'); // ??? where do we get this from?
			item = item.replace(/[^0-9]/, '');
		
		/*
			if(isNaN(item))
			{
				item = 0;
			}
			$.ajax({  
			  type: "POST",  
			  url: '/customer_packages/remove/'+item,  
			  data: '',  
			  success: function()
			  {
			$('.spa-package').load('/spas/panel/academy_spa/belaqua-blissful/0');
			  }
			});
		});*/

		//Set ajax call on type buttons - except disabled ones
		$('.package-type-but:not(.disabled)').click(function() {
			$("#package-details").load($(this).attr('href'), null, belaqua_spa.initPagination);
			
			//remove and existing chosens
			$(".package-type-but.chosen").removeClass('chosen');
			$(this).addClass("chosen");
			return false;	
		});

		//Set save and share action
		$(".save_and_share").click(function() {

			$(".panel_content").html('').show();
			$(".background_fade").show();
			
			var data = 'data[Price]='+$('#subtotal-price').html();
			$("#spa-package-submit input").each(function() {
				data += '&'+$(this).attr('name')+"="+encodeURIComponent($(this).attr('value'));
				
			});
			$.post("/spas/loginPanel", data, belaqua_spa.initSaveShare);
			return false;
		});
		
		//init pagination
		belaqua_spa.initPagination();
		
		
	},
	
	loadOrderSummary: function(data, status)
	{
		$('#spa-booking').html(data);
		belaqua_spa.initOrderSummary();
		belaqua_spa.recalc();
		belaqua_spa.initNewLine();
	},
    init: function() {
        $spaTabs = $("#spa-info").tabs();
	    $("#spa-treatment-list").tabs();
		belaqua_spa.initOrderSummary();
		belaqua_spa.initNewLine();
		belaqua_spa.initAccommLine();
    }
};
$(document).ready(belaqua_spa.init);

