var code_number     = "";
var computer_number = "";
var licence_number  = "";
var unlock_code     = "";

var process_url     = "process.asp";

$(document).ready(function(){
	$("#button_generate_unlock").click(function(){
		// Get user input
		code_number     = trim($("#field_code_number").attr("value"));
		computer_number = trim($("#field_computer_number").attr("value"));
		licence_number  = trim($("#field_licence_number").attr("value"));
		
		var okayToProceed = true;
		
		$("#div_feedback_area").html("");
		
		// Check input and give feedback appropriately
		
		if (code_number == "") {
			showError("You must enter a code number");
			okayToProceed = false;
		}
		
		// Removed so that unlock codes aren't date-restricted
		//else if (code_number != creatDateCode()) {
			//showError("You have entered an invalid code number - this number will change daily so make sure you are using one generated today");
			//okayToProceed = false;
		//}				
		
		if (computer_number == "") {
			showError("You must enter a computer number - note that this number is unique to each computer");
			okayToProceed = false;
		}
		
		if (licence_number == "") {
			showError("You must enter a licence number - this number should be on your CD packaging");
			okayToProceed = false;
		}
		
		var serverResponse = "";
		
		// If no errors have been detected
		if (okayToProceed) {
			// Contact server
			serverResponse = contactServer();

			// Give any further error messages
			if (serverResponse == "") {
				showError("Error during unlock process!");
			}

			else if (serverResponse == "-1") showError("Problem with code number");
			
			else if (serverResponse == "-2") showError("Problem with licence number");
			
			else if (serverResponse == "-3") showError("Problem with publication ID");
			
			else if (serverResponse == "-4") showError("Problem with computer number");

			else if (serverResponse == "-5") showError("Failed authentication with unlock process");

			else if (serverResponse == "-6") showError("You have entered an invalid licence number");

			else if (serverResponse == "-7") showError("You have exceed your allocated number of unlocks for this licence");
			
			// Show the actual unlock code!
			else {
				$("#field_unlock_code").attr("value", serverResponse);
				$("#div_feedback_area").html("Your unlock code has been succesfully generated. Note that this code is unique and cannot be reused!");

				$("#field_code_number").attr("disabled", "true");
				$("#field_computer_number").attr("disabled", "true");
				$("#button_generate_unlock").attr("disabled", "true");
				$("#button_clear_form").attr("disabled", "true");
			}
		}
	});
	
	$("#field_licence_number").change(function(){ // Make sure licence number is in uppercase
		$(this).attr("value", $(this).attr("value").toUpperCase());
	});
	
	$("#field_computer_number").change(function(){ // Make sure computer number is in uppercase
		$(this).attr("value", $(this).attr("value").toUpperCase());
	});
	
	// Clear the form
	$("#button_clear_form").click(function(){
		$("#field_code_number").attr("value", "");
		$("#field_computer_number").attr("value", "");
		$("#field_licence_number").attr("value", "");
		$("#div_feedback_area").html("");
	});
});

// Fetch the unlock code using AJAX
function contactServer() {
	var response = $.ajax({
		type:   "GET",
		url:    process_url,
		data:   {
			code_number:     code_number,
			computer_number: computer_number,
			licence_number:  licence_number
		},
		async:  false
	}).responseText;
	
	return response;
}


// Create a unique code based on the current date
function creatDateCode() {
	var theDate = new Date();

	var day   = theDate.getDay();
	var date  = theDate.getDate();
	var month = theDate.getMonth();

	if (day   < 10) day   = "0" + day;
	if (date  < 10) date  = "0" + date
	if (month < 10) month = "0" + month;

	var oldDateCode = day + "" + date + "" + month;

	var dateConversion = new Array("7", "5", "1", "9", "6", "4", "2", "4", "0", "3");

	var dateCode = "";

	for (var x = 0; x < oldDateCode.length; x++) {
		dateCode += dateConversion[parseInt(oldDateCode.charAt(x))];
	}

	return dateCode;
}


// Add an error message to the screen
function showError(str) {
	$("#div_feedback_area").append("<li>" + str + "</li>");
}