// JavaScript Document
$(document).ready(function(){
						   
	$("ul#math-aids").each(function() {
		var list, listItems, listItems;
		list = $(this);
		listItems = $(this).find("li");
		listItems.each(function(intIndex) {
			listItem = $(this);
			listItemID = $(this).attr("id");

			if (intIndex == 0) listItem.attr("class", "selected");

			listItem.listen('click', "a", function() {
				var listLink = $(this);
				$("ul#math-aids li").each(function() { $(this).attr("class", ""); });
				
				$("div#question").fadeOut("slow", function() {
				  	$(this).text(listLink.text());
					$(this).fadeIn("slow");
			    });
				
				$("div#problem").fadeOut("slow", function() {
					$(this).load("questions/" + listLink.parent().attr("id") + ".html", function() {
						$(this).fadeIn("slow");																								 
					});
				});
				$(this).parent().attr("class", "selected");
				return false;
			});
		});
		
	})
	
	// Problem 1
	$.listen('click', "input#problem1Submit", function() {
		var numberToReach = parseInt($("input#problemX").val());
		var firstMultiple = parseInt($("input#problemY").val());
		var secondMultiple = parseInt($("input#problemZ").val());
	
		var total = 0;
	
		for (var i = 1; i < numberToReach; i++) {
			if ((firstMultiple != NaN) && (secondMultiple != NaN)) {
				if (((i / firstMultiple) % 1 === 0 ) || ((i / secondMultiple) % 1 === 0 )) {
					total = total + i;
				}
			} else {
				alert("Please enter integers.");
			}
		}
		
		showAnswer("div#solution span", total);
		
		return false;
	});
	
	// Problem 2
	$.listen('click', "input#problem2Submit", function() {
		var numberToReach = parseInt($("input#problemX").val());
	
		var combinedNumber = 0;
		var currentNumber = 1;
		var previousNumber = 0;
		var total = 0;
		
		// 0, 1, 2, 3, 5, 8, 13
		while (currentNumber <= numberToReach) {
			combinedNumber = currentNumber + previousNumber;
			if (combinedNumber % 2 === 0) total = total + combinedNumber;
			previousNumber = currentNumber;
			currentNumber = combinedNumber;
		}
		
		showAnswer("div#solution span", total);
		
		return false;
	});
	
	// Problem 3
	$.listen('click', "input#problem3Submit", function() {
		var numberToReach = parseInt($("input#problemX").val());
		var numbersSquared = 0;
		var totalSquared = 0;
		
		// (1 * 1) + (2 * 2) + (3 * 3) etc.
		for (var i = 1; i <= numberToReach; i++) {
			numbersSquared = numbersSquared + (i * i);
			totalSquared = totalSquared + i;
		}
		
		totalSquared = totalSquared * totalSquared;
		
		showAnswer("div#solution span", totalSquared - numbersSquared);
		
		return false;
	});
	
	// Problem 4
	$.listen('click', "input#problem4Submit", function() {
		var countdown = parseInt($("input#problemX").val());
		var numberToReach = 2;
		var found = false;
	
		for (var i = countdown; found == false; i = i + countdown) {
			for (var j = countdown; j >= numberToReach; j--) {
				if ((i % j) !== 0) {
					break;
				} else if (j == numberToReach) {
					found = true;
					var countdown = i;
				}
			}
		}
		
		showAnswer("div#solution span", countdown);
		
		return false;
	});
	
	// Problem 5
	$.listen('click', "input#problem5Submit", function() {
		$("p#primeFactors").html("");
		var numberToReach = parseInt($("input#problemX").val());
		var largestPrime = 0;
		var found = false;
		
	
		//var startTime = new Date().getTime();				
		// Loop through every number up to numberToReach
		for (var i = parseInt(Math.sqrt(numberToReach)); i >= 2; i--) {
			
			// If the number is evenly divisible by numberToReach
			if ((numberToReach % i) === 0) {
				// Then check that number down to 2 for whether it is a prime number
				if (largestPrime = isPrimeNumber(i)) found = true;
			}
			
			if (found) break;
		}
		//var timeElapsed = new Date().getTime() - startTime;
		//alert(timeElapsed);
	
		showAnswer("div#solution span", largestPrime);
		
		return false;
	});
	
	// Problem 6
	$.listen('click', "input#problem6Submit", function() {
		var numberToMultiply = parseInt($("input#problemX").val());
		var startingNumber = "";
		var result = 0;
		var storeAnswer = 0;
		
		for (var i = 1; i <= numberToMultiply; i++) {
			startingNumber += "9";
		}
		
		startingNumber = parseInt(startingNumber);
	
		for (var i = startingNumber; i > 1; i--) {
			for (var j = i; j > 1; j--) {	
				result = isPalindrome(i, j);
				
				if (result > storeAnswer) {
					storeAnswer = result;
				}
			}
		}
	
		showAnswer("div#solution span", storeAnswer);
		
		return false;
	});
	
	// Problem 7
	$.listen('click', "input#problem7Submit", function() {
		var numberToReach = parseInt($("input#problemX").val());
		var found = false;
		var primeCount = 0;

		// Loop through all primeNumbers until you come to the number to reach
		for (var i = 2; found = true; i++) {
			
			if (isPrimeNumber(i)) {
				primeCount++;
			}
			if (primeCount == numberToReach) break;
		}
	
		showAnswer("div#solution span", i);
		
		return false;
	});
	
	// Problem 8
	$.listen('click', "input#problem8Submit", function() {
		var numberToReach = parseInt($("input#problemX").val());
		var found = false;
		var primeSum = 2;
	
		//var startTime = new Date().getTime();				
		// Loop through all primeNumbers until you come to the number to reach
		for (var i = 3; i < numberToReach; i = i + 2) {
			
			if (isPrimeNumber(i)) {
				primeSum = primeSum + i;
			}
		}
		//var timeElapsed = new Date().getTime() - startTime;
		//alert(timeElapsed);
	
		showAnswer("div#solution span", primeSum);
		
		return false;
	});
});