// Initialize quote request form and links
jQuery.fn.quoteForm = function(option){
	var ob = $(this);
	
	// Get form init values
	$.ajax({
	  url: '/getActivities',
	  dataType: 'json',
	  success: function(data, textStatus){
			ob.data("activities", data);
			var templActs = ob.find(".litemplate :input[name='activity']");
			var es = templActs.hasClass("es");
			$.each(data, function(i, item){
				var op = $("<option>");
				var act = item.activity;
				op.val(act.id);
				op.html((es ? act.titleEs : act.title));
				templActs.append(op);
			});
		}
	});
	
	// Initialize datepickers
	ob.find(".datepicker").datepicker({ showOn: 'focus', showAnim: 'fadeIn', minDate: (new Date()) });
	ob.find(".datepicker[name='startDate']").datepicker('option', 'onSelect', function(dateText, inst){ob.find(".datepicker[name='endDate']").datepicker('option', 'minDate', new Date(dateText));});

	ob.data("activityCount", 0);
	ob.find(".addActivity").bind('click', addActivity);


	// Row functions
	function getLocations(e){
		var el = $(e.target);
		if(el.val() == -1) return;
		var locs = $(el.parents(".activity")).find(":input.locationSelect");
		var es = locs.hasClass("es");
		locs.html("");
		var acts = ob.data("activities");
		$.each(acts, function(i, item){
			if(item.activity.id == el.val()){
				$.each(item.locations, function(j, loc){
					var op = $("<option>");
					op.val(loc.id);
					op.html((es ? loc.titleEs : loc.title));
					locs.append(op);
				});
				return;
			}
		});
	}
	
	function acceptActivity(e){
		e.preventDefault();
		var el = $(e.target).parents(".activity");
		var actSel = el.find(":input.activitySelect");
		var locSel = el.find(":input.locationSelect");
		
		if(actSel.val() == -1) return;
		
		var acts = ob.data("activities");
		$.each(acts, function(i, item){
			var act = item.activity;
			if(act.id == actSel.val()){
				$.each(item.locations, function(j, loc){
					if(loc.id == locSel.val()){
						var actionLine = ob.find(".template").clone().removeClass("template");
						var inp = actionLine.find(":input");
						inp.val(loc.id);
						inp.attr("name", inp.attr("name") + "_" + loc.id);
						actionLine.find("img.thumb").attr("src", act.photo);
						actionLine.find("h3").html(actionLine.find("h3").html().replace("[ACTIVITY]", act.title).replace("[LOCATION]",loc.title));
						actionLine.find("p").html(actionLine.find("p").html().replace("[PEOPLE]", loc.people).replace("[DIFFICULTY]", loc.difficultyName).replace("[DIFFICULTY_ES]", loc.difficultyNameEs).replace("[DURATION]", (loc.duration == 0 ? "N/A" : loc.duration + "h")));
						actionLine.find(".removeActivity").bind('click', removeActivity);
						actionLine.hide()
						el.fadeOut('fast', function(){
							el.replaceWith(actionLine);
							actionLine.fadeIn();
							$.fancybox.resize();
						})
						return;
					}
				});
			}
		});
		$.fancybox.resize();
	}

	function addActivity(e){
		e.preventDefault();
		$(e.target).parents(".activity").find(":input").attr('disabled', true);
		var newAction = ob.find(".litemplate").clone();
		newAction.removeClass("litemplate");
		ob.find(".activitiesList").append(newAction);
		newAction.find(".acceptActivity").bind('click', acceptActivity);
		newAction.find(".removeActivity").bind('click', removeActivity);
		ob.data("activityCount", ob.data("activityCount")+1);
		ob.find(":input.activitySelect").bind("change", getLocations);
		$.fancybox.resize();
	}

	function removeActivity(e){
		e.preventDefault();
		$(e.target).parents(".activity").remove();
		$.fancybox.resize();
	}
	
	var origSubmitVal = ob.find('.submit').html();
	
	// Add submit button action
	ob.find('form').ajaxForm({dataType: 'json', beforeSubmit: function(arr, jqForm, options){if(formValidate(arr, jqForm, options)){ob.find('.submit').html("Sending Request..."); return true;}else{ob.find('.submit').html(origSubmitVal); return false;}}, error:function(e,d,e,$form){ob.find('.submit').html(origSubmitVal);alert("Error");},success: function(responseText, statusText, xhr, $form){
		$form.fadeOut('slow', function(){
			ob.find(".success").fadeIn();
			setTimeout(function(){$.fancybox.close();}, 100000);
		});
		ob.find('.submit').html(origSubmitVal);
	}});
}
