(function($){
 
  function stage_click() {
 	
 }
	function  build_form(options,id, title) {
		var method = options.form.method;
		var date = new Date();
	
		method = method.replace('{ID}',id);
 			return '<form method="'+method+'" action="'+options.form.action+'">'
				+'<div class="stage stage1">'
				+'<span class="ti">Stage 1</span><a href="/ajax/events/'+id+'" rel="date_finder_fancybox"><img src="/assets/img/available-dates.png" alt="Check available dates" /></a>'
				+'<span class="selected">test</span>'
				
				+'<input type="hidden" class="hidden event_date_id" name="event_date_id" value="0" />'
				
				+'</div>'
				+'<div class="stage stage2 disabled" >'
					+'<span class="ti">Stage 2</span>'
					+'<span class="stage-select">'
						+'<select name="spaces" class="sselect">'
							+'<option value="0">Spaces Required</option>'
							+'<option>1</option>'
						+'</select>'
						+'<span class="selected">3 spaces</span>'
						+'<br/><br/>'
					+'</span>'
				+'</div>'
		
				+'<div class="stage stage3 disabled" >'
					+'<span class="ti">Stage 3</span><img src="/assets/img/add-course.png" alt="add course to basket" />'
				+'</div>'
				+'<input type="hidden" name="event_id" value="'+id+'" />'
				+'</form>';
 
 	};
 	
 	
 	var started = false; 
 	
 	
 	function set_up_fancybox(obj, form,id) {
 		form.fancybox = obj.find("a[rel^='date_finder_fancybox']").each(function() {
 			
 		
 			$(this).fancybox({
 				overlayOpacity		:	0.8,
 				hideOnContentClick	:	false,
 				padding				:	20,
 				frameWidth			:	325,
				frameHeight			:	305,
 				callbackOnShow		:	function() {
 				
 					set_up_calendar(obj,form,id);
 				}
 			});
		});
 	}
 	
 	function set_up_calendar(obj,form,id) {
 		$('a.fancbox').fancybox({
			overlayOpacity		:	0.8,
			hideOnContentClick	:	false,
			padding				:	20,
			frameWidth			:	325,
			frameHeight			:	305,
			callbackOnShow		:	function() {
				set_up_calendar(obj,form,id);
			}
		});
		
		
		$('a.has-day').each(function() {
			$(this).click(function() {
				url=$(this).attr('href');
				url = url.split('&');
				chosen_id = url[0].split('?');
				url[0] = chosen_id[1];
				chosen_id = url[0].replace('id=','');
				chosen_spaces = url[1].replace('spaces=','');
				complete_stage_one($(this).attr('title'), chosen_spaces, chosen_id, obj, id, form)
				return false;
			});
		});
			
	}
 		
 	function set_up_form(obj,id) {

 	
 	
 	
 		var form = {
 			stylish_select: undefined,
 			fancybox: undefined,
 			date_picker: undefined
 		};
 		
 		form.stylish_select = obj.find('.sselect').sSelect();
 		set_up_fancybox(obj,form,id);

 		
 		return form;
 	}
 	
 	function test(data) {
 		alert('heidi');
 	}
 	
 	function complete_stage_one(text, spaces, chosen_id, obj, id, form) {
 		var self = obj.find('.stage1');
		self.find('.selected').html(text);
		self.find('.event_date_id').val(chosen_id);
		var html = '<option value="0">Spaces Required</option>';
		for (i=1; i<= spaces; i++)
			html += '<option>'+i+'</option>';
		form.stylish_select.html(html).resetSS();
		complete_stage(self,1);
		$.fn.fancybox.close();
 	}
 	 	
 	var current_stage = 1;
 	function set_up_stages(obj,id,form) {
 		obj.find('.stage1').click(function(){
 			
 			started = true;
 			var self = $(this);			
			if (self.hasClass('disabled'))
				return false;
 			
 			var chosen = choose_date(obj,id)
 			if (chosen.text) {
 				self.find('.selected').html(chosen.text);
 				self.find('.event_date_id').val(chosen.id);
 				var html = '<option value="0">Spaces Required</option>';
 				for (i=1; i<= chosen.spaces; i++)
 					html += '<option>'+i+'</option>';
 				form.stylish_select.html(html).resetSS();
				complete_stage(self,1);
			}
			return false;
 		})
 		obj.find('.stage2').click(function(){
 			var self = $(this);			
			if (self.hasClass('disabled'))
				return false;
			val = $(this).find('select').val();
			
			
 			if (val > 0) {
 				self.find('.selected').html(val+" spaces");
				complete_stage(self,2);
			}
			return false;
 		})
 		obj.find('.stage3').click(function(){
 			var self = $(this);			
			if (self.hasClass('disabled'))
				return false;
			if (form_valid(self.parent())) {
				complete_stage(self,3);
			}
			return false;
 		})
 	}
 	
 	function choose_date(obj,id) {
 		
 		var event = {text: 'test',id: 3,spaces:12}
 		return event;
 	}
 	
 	function form_valid(obj) {
 		var stage1 = obj.find('.stage1');
 		var stage2 = obj.find('.stage2');
 		var event_input = obj.find('.event_date_id');
 		
 		if (stage1.hasClass('success') && stage2.hasClass('success')  && (event_input.attr('value') != 0) )
 			return true;
 		if (!stage1.hasClass('success') || (event_input.attr('value') !== 0)) {
			stage1.removeClass('success');
			stage1.removeClass('fail');
		}
		if (!stage2.hasClass('success')) {
			stage2.removeClass('success');
			stage2.removeClass('fail');
		}	
					
 		return false;
 	}
 	
 	function complete_stage(obj, id) {
 		current_stage = id+1;
 		
 		switch (id) {
 			case 1:
 				
 				break;
 			case 2:
 			
 			
 				break;
 			case 3:
 				obj.parents('form').submit();
 				break;
 		
 		
 		}
 		obj.addClass('success');
 		obj.siblings('.stage'+(id+1)).removeClass('disabled');	
 	}
 	
 	$.fn.bookingForm = function(options) {

	 var obj;
	 var parent;

	 var defaults = {
	 id_prefix:'event_',
	 form: {
	 		action: '',
	 		method: 'post'
	 	},
	 	calendar_dates_url : ''
	 };
	 var options = $.extend(defaults, options);
	 	 
	 return this.each(function() {
	 	
		var obj = $(this);
		var parent = $(this).parent();
		var id = parent.attr('id');
		var title = parent.siblings('h2').html();
		id = id.replace(options.id_prefix,'');
		obj.html(build_form(options,id, title));
		form = set_up_form(obj);
		set_up_stages(obj,id,form);
	 });
	
 };
 	

})(jQuery);
