if(typeof jQuery != 'undefined') {
	jQuery(function($) {
		$.fn.extend({
			extraBooking: function(options) {
				var setting = $.extend({}, $.fn.extraBooking.defaults, options);
				
				return this.each(
					function() {
						var $t = $(this);
						var o = $.metadata ? $.extend({}, setting, $t.metadata()) : setting;
						
						if(typeof o.duplicate === 'undefined') {
							o.duplicate = $t;
						}
						if(typeof o.after === 'undefined') {
							o.after = $t;
						}
						
						$div = $('<div></div>');
						$a = $('<a></a>').attr('href',o.add.href).text(o.add.text);
						$p = $('<p></p>').addClass(o.add.classname).append($a);
												
						o.after.after($div).next().append($p).find('p:first a').click(function(){
							$a = $(this); var $div = $a.parent().parent();
							$.fn.extraBooking.person($a, $div, o);
							return false;
						});
					}
				);
			}
		});
		
		/**
		* Create Add Person Group
		*/
		$.fn.extraBooking.person = function($a, $div, o) {
			var howmany = $('div.group.extra').length + 1;
			
			var $group = $('<div></div>').addClass('group').addClass('extra').addClass('person').css('opacity', 0).css('height', 0);
			var $heading = $('<h2></h2>').text(o.person.title);
			
			var $name_f = $('<fieldset></fieldset>').addClass('col').addClass('one');
			var $number_f = $('<fieldset></fieldset>').addClass('col').addClass('two');
			var $checkbox_f = $('<fieldset></fieldset>').addClass('col').addClass('three');
			
			var $name_s = $('<span></span>').text(o.person.name);
			var $number_s = $('<span></span>').text(o.person.number);
			
			var name_name_id = o.person.form.name.replace(/person\[+[0-9]+\]/,'person').replace('[','').replace(']','') + o.person.form.delimiter + howmany;
			var name_name = o.person.form.name.replace(/person\[+[0-9]+\]/,'person['+howmany+']');
			var number_name_id = o.person.form.number.replace(/person\[+[0-9]+\]/,'person') + o.person.form.delimiter + howmany;
			var number_name = o.person.form.number.replace(/person\[+[0-9]+\]/,'person['+howmany+']');
			var checkbox_name_id = o.person.form.checkbox.replace(/person\[+[0-9]+\]/,'person') + o.person.form.delimiter + howmany;
			var checkbox_name = o.person.form.checkbox.replace(/person\[+[0-9]+\]/,'person['+howmany+']');
			
			var $name_i = $('<input type="text"></input>').attr('name',name_name).attr('id',name_name_id);
			var $number_i = $('<input type="text"></input>').attr('name',number_name).attr('id',number_name_id);
			var $checkbox_i = $('<input type="checkbox" checked="checked"></input>').attr('name',checkbox_name).attr('id',checkbox_name_id).attr('checked',true);
			
			$name_f.append($name_s).append($name_i).wrapInner('<label for="' + name_name_id + '"></label>');
			$number_f.append($number_s).append($number_i).wrapInner('<label for="' + number_name_id + '"></label>');
			$checkbox_f.append($checkbox_i).append(o.person.checkbox).wrapInner('<label for="' + checkbox_name_id + '"></label>').find('label').css('padding-top', '2em');
						
			$group.children('fieldset:last-child');
			$group.css('margin-bottom',0);
			$group.append($heading).append($name_f).append($number_f).append($checkbox_f);
			
			if($div.parent().is('.group')) {
				$div = $div.parent();
				$div.after($group);
			}
			else {
				$div.before($group);
			}
			
			//$div.next().slideDown(
			$group.animate({opacity: 1, height: 118}, o.person.speed, function(){
				$a.blur();
				$(this).css('height','');
				$.fn.extraBooking.addevent($group, $checkbox_i, o, howmany);
			});
		};
		
		/**
		* Check the Checkbox
		*/
		$.fn.extraBooking.addevent = function($group, $checkbox, o, howmany) {
			$checkbox.click(function(){
				$c = $(this);
				
				if($c.is(':checked')) {
					$('div.services', $group).slideUp(o.service.speed, function(){
						$(this).remove();
					});
					if($group.is('.person')) {
						$('div', $group).wrapAll('<div></div>').parent().css('clear','left').slideUp(o.service.speed, function(){
							$(this).remove();
						});
					}
				}
				else {
					$services = $(o.duplicate).clone(true).attr('id','').hide();
					$(':input[name]', $services).each(function(i){
						var name = $(this).attr('name');
						//var new_name = name + o.service.form.delimiter + howmany;
						var new_name = name.replace(/\[+[0-9]+\]/,'['+howmany+']');
						$(this).attr('name',new_name);
					});
					$(':checkbox', $services).attr('checked',false);
					$('h3 a.hide', $services).trigger('click');
					$services.appendTo($group).css('clear','left').slideDown(o.service.speed);
				}
			});
		};
		
		/**
		* Defaults
		*/
		$.fn.extraBooking.defaults = {
			add : {
				text : 'Add another person',
				classname : 'action add-person',
				href : '#add'
			},
			person : {
				title : 'Add another person',
				name : 'First name',
				number : 'Family name',
				checkbox : 'Course information same as first person',
				speed : 1000,
				form : {
					name : 'person[0][first_name]',
					number : 'person[0][std_family_name]',
					checkbox : 'person[0][std_course]',
					delimiter: '-'
				}
			},
			service : {
				speed : 1000,
				form : {
					delimiter: '-'
				}
			}
		};
		
	});
}
