if (typeof(Hingepoint) == "undefined") Hingepoint = {};

Hingepoint.Form = function() {
	var _this = this;
	
	this.init = function(args) {
		this.sel = args.selector;
		this.obs = args.observe;
		this.ins = args.insert_into;
		this.ajax_url = args.ajax_url;
	};
	
	this.start = function() {
		$(this.obs).change(this.addSubtractAttendees);
		
		$(this.sel+" .button a").click(function() {
			_this.send();
			return false;
		});
	};
	
	this.addSubtractAttendees = function() {
		var curr_attendees = $(_this.sel+" :input").size() - 1;
		var option = $(this).val();
		var new_attendees = (option.indexOf("+") == "-1") ? option : 10;
		var add = (new_attendees >= curr_attendees);
		var diff = new_attendees - curr_attendees;

		
		if (add) {
			for (var i = 0; i < diff; ++i) {
				var p = document.createElement("p");
				var label = document.createElement("label");
				var input = document.createElement("input");
				$(label).attr("for", "new_person_"+i);
				$(label).attr("class", "hidden");
				$(input).attr("type", "text");
				$(input).attr("name", "new_person_"+i);
				$(input).attr("id", "new_person_"+i);
				$(input).attr("value", "");

				$(p).append(label);
				$(p).append(input);

				$(_this.ins).append(p);
			}
		}
		else {
			for (var i = curr_attendees; i > new_attendees; --i) {
				$(_this.sel+" :input:last").remove();
			}
		}
	};
	
	this.send = function() {
		var inputs = $(_this.sel+" :text");
		var attendees = "";
		var sending = document.createElement("p");
		sending.innerHTML = "Your message is being sent...";
		sending.className = "sending";
		sending.style.display = "none";
		
		for (var i = 0; i < inputs.size(); ++i) {
			attendees += jQuery.trim($(inputs[i]).val()).replace("/\s/g", "%20");
			if (i != inputs.size()-1) attendees += ",";
		}
		
		$(this.sel).ajaxStart(function() {
			$(_this.sel+" :input").attr("disabled", "disabled");
			
			$(_this.sel+" .button").hide();
			$(this).append(sending);
			$(sending).fadeIn("slow");
		});

		$(this.sel).ajaxStop(function() {
			$(_this.sel+" :input").attr("disabled", "");

			$(sending).remove();
			$(_this.sel+" .button").fadeIn("fast");
		});
		
		$.post(this.ajax_url,
			{ attendees: attendees },
			function(data, textStatus) {
				_this.handleResponse(data, textStatus);
			},
			"json"
		);
		
	};
	
	this.handleResponse = function(d, t) {
		if (t == "success" && d.sent == "1")
			this.success();
		else
			this.error();
	};
	
	this.success = function() {
		var p = document.createElement("p");
		p.className = "success";
		p.innerHTML = "Thanks!";
		
		$(_this.sel+" :input").val("");
		$(_this.sel).append(p);
		
		setTimeout(function() {
			$(_this.sel+" .success").fadeOut();
			$(_this.sel+" .success").remove();
		}, 4000);
	};
	
	this.error = function() {
		var p = document.createElement("p");
		p.className = "error";
		p.innerHTML = "We were unable to process your request. Please try again.";
		
		$(_this.sel).append($(p));
	};
		
};

$(document).ready(function() {
	
	var form = new Hingepoint.Form();
	form.init({ 
		selector: "form",
		observe: "#quantity",
		insert_into: "#attendees",
		ajax_url: "/send_contact.php"
	});
	form.start();

	$("a[rel='external']").attr("target", "_blank");
	
});
