$(document).ready(function() {
	$("#invitation").click(function() { $("#form").fadeIn(); $("#invitation").unbind(); });
	
	$("#linkteacher").click(function() { $("#formteacher").fadeIn(); $("#linkteacher").unbind(); });
		
	$("#linkmore").click(function() { $("#more").fadeIn(1000); });
	$("#linkevenmore").click(function() { $("#evenmore").fadeIn(1000); });
	$("#form").submit(
		function() {
			function calculate_time_zone() {
				var rightNow = new Date();
				var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);  // jan 1st
				var june1 = new Date(rightNow.getFullYear(), 6, 1, 0, 0, 0, 0); // june 1st
				var temp = jan1.toGMTString();
				var jan2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
				temp = june1.toGMTString();
				var june2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
				var std_time_offset = (jan1 - jan2) / (1000 * 60 * 60);
				var daylight_time_offset = (june1 - june2) / (1000 * 60 * 60);
				var dst;
				if (std_time_offset == daylight_time_offset) {
					dst = "0"; // daylight savings time is NOT observed
				} else {
					// positive is southern, negative is northern hemisphere
					var hemisphere = std_time_offset - daylight_time_offset;
					if (hemisphere >= 0)
						std_time_offset = daylight_time_offset;
					dst = "1"; // daylight savings time is observed
				}
				return convert(std_time_offset)+","+dst;
			}
	
			function convert(value) {
				var hours = parseInt(value);
			   	value -= parseInt(value);
				value *= 60;
				var mins = parseInt(value);
			   	value -= parseInt(value);
				value *= 60;
				var secs = parseInt(value);
				var display_hours = hours;
				// handle GMT case (00:00)
				if (hours == 0) {
					display_hours = "00";
				} else if (hours > 0) {
					// add a plus sign and perhaps an extra 0
					display_hours = (hours < 10) ? "+0"+hours : "+"+hours;
				} else {
					// add an extra 0 if needed 
					display_hours = (hours > -10) ? "-0"+Math.abs(hours) : hours;
				}
				
				mins = (mins < 10) ? "0"+mins : mins;
				return display_hours+":"+mins;
			}
	
			var error = false;
			if ($("#email").val() == "" || $("#email").val().length < 5 || 
					$("#email").val().indexOf("@") < 1) {
				$("#email").addClass("error");
				error = true;
			}  else {
				$("#email").removeClass("error");
			}
			if ($("#country").val() == "") {
				$("#country").addClass("error");
				error = true;
			} else {
				$("#country").removeClass("error");
			}
			if ($("#language").val() == "") {
				$("#language").addClass("error");
				error = true;
			} else {
				$("#language").removeClass("error");
			}
			if ($("#flanguage").val() == "") {
				$("#flanguage").addClass("error");	
				error = true;
			} else {
				$("#flanguage").removeClass("error");
			}
			
			if ($("#language").val() == $("#flanguage").val()) {
				$("#language").addClass("error");
				$("#flanguage").addClass("error");	
				error = true;
			} else {
				$("#language").removeClass("error");
				$("#flanguage").removeClass("error");
			}
			
			if ($("#level").val() == "") {
				$("#level").addClass("error");	
				error = true;
			} else {
				$("#level").removeClass("error");
			}
			
			if (error == false) {
				var data = {
					email: $("#email").val(),
					country: $("#country").val(),
					language: $("#language").val(),
					flanguage: $("#flanguage").val(),
					level: $("#level").val(),
					phone: $("#phone").attr("checked"),
					skype: $("#skype").attr("checked"),
					gvoice: $("#gvoice").attr("checked"),
					tz: calculate_time_zone()
				}

				$("#apply").attr("value", "sending data...");
				$("#apply").attr("disabled", "true");
				$.ajax({
					  type: 'POST',
					  url: "/invitations",
					  data: data,
					  success: function(data) {
						  $("#form").hide();
						  $("#legend").html("Thank you! You'll receive an invitation as soon as your profile is selected. <a href='/'>go back</a>").fadeIn(1000);
						  $("#apply").attr("disabled", false);
						  $("#apply").attr("value", "apply >>");
					  },
					  error: function(XMLHttpRequest, textStatus, errorThrown) {
						  $("#apply").attr("disabled", false);
						  $("#apply").attr("value", "apply again >>");
						  $("#placeholder_error").text("please retry. did you already applied for it?");
					  },
					  dataType: "text"
				});
			} else {
				$("#placeholder_error").text("please review the information");
			}
			
			return false;		
		}
	);
});
