/**
	Search for matching schools and return a drop down box

	Test postcodes
	SO21 1HA - 2 matches
	YO30 6AB - 3 matches
	PL9 9RG - one match
*/

function lookUpSchools(postcode) {
	var schooNameTextBox = $("input[id='register_schoolname']");

	$.ajax({
		type: "GET",
		url: 'lookupschool.php',
		data: "postcode=" + postcode,
		dataType: "json",
		success: function(jsonData){
			var postcodeTextBox = $("input[id='register_schoolpostcode']");
			var schoolSelectBox = $("div[id='schoolname_container'] .dropdown_options ul");
			var schoolSelectBoxText = $("#schoolname_container .dropdown");

			// Found matching schools
			if (typeof jsonData == "object") {

				var schoolData = jsonData["schools"];
				
				schoolSelectBox.empty();
				
				// loop through schools
				for (school in schoolData) {
					schoolSelectBox.append("<li><a id=\"school_" + schoolData[school][1] + "\" href=\"#\">" + schoolData[school][0] + "</a></li>");
				}
				
				if (schoolData.length > 1) {
					schoolSelectBoxText.html("Select school");
				} else {
					singleSchoolName = schoolData[0][0];
					singleConsID = schoolData[0][1];
					$("input[name='schoolname']").attr("value", singleSchoolName);
					$("input[name='hiddenschoolname']").attr("value", singleSchoolName);
					$("input[name='consid']").attr("value", singleConsID);
					schoolSelectBoxText.html(singleSchoolName).css('color','#333').addClass('success');
				}
				
				postcodeTextBox.val(jsonData["postcode"]);

				// register click events
				$("div[id='schoolname_container'] .dropdown_options a").click(function() {
					var consid = $(this).attr("id").split("_");
					$("div[id='schoolname_container'] .dropdown_options").fadeOut('fast');
					text = $(this).html();
					$("input[name='hiddenschoolname']").attr("value",$(this).html());
					$("input[name='schoolname']").attr("value",$(this).html());
					$("input[name='consid']").attr("value", consid[1]);
					schoolSelectBoxText.html(text).css('color','#333').addClass('success');
					return false;
				});
				
				schooNameTextBox.hide();
				$("div[id='schoolname_container']").show();
				$("div[id='enterSchoolName']").html("<a href=\"#\">Edit school name</a>").show();

				// bind edit school name link
				$("div[id='enterSchoolName'] a").click(function() {
					$("input[id='register_schoolname']").show().removeClass('error').css({'color':'#333'});
					$("div[id='schoolname_container']").hide();
					$("input[name='consid']").val("");
					$(this).parent().hide();
					return false;
				});
			} else {
				// no schools found
				postcodeTextBox.val(jsonData);
				
				$("div[id='enterSchoolName']").html("<div style=\"padding-top:30px;\"><strong>No schools found, enter your school name</strong></div>").show();
				// display the textbox
				schooNameTextBox.val("School name").show();
				$("div[id='schoolname_container']").hide();
			}
		},
		error: function(){
			$("input[id='register_schoolname']").val("School name");
			$("input[id='register_schoolname']").show(); 
		}
	});

} // end lookUpSchools

var app = 
{ 

	//Login box functions----------------------
	login:
	{
		init:function() {
			var schoolLookup = false;
			var inputTextbox = $('#login_container input.login_text');
			var inputSubmit = $('#form_register .login_submit');
			var inputSelectbox = $('#login_container select');
			var inputLookupSubmit = $("input[id='schoolLookup']");
			var inputSelectSchool = $(".dropdown_container[id='schoolname_container']");
			var inputSchoolName = $("input[id='register_schoolname']");
			var inputPostcode = $("input[id='register_schoolpostcode']");

			var regex_email = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
			var regex_postcode = /^([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {1,2}[0-9][ABD-HJLN-UW-Z]{2}|GIR 0AA)$/i;

			// reset the postcode values and associated boxes
			inputPostcode.val("School postcode");
			inputSelectSchool.hide();
			inputSchoolName.hide();
			$("div[id='enterSchoolName']").hide();
			inputLookupSubmit.removeClass('error');
			$("div[class='dropdown_options']").hide();

			// School look up button
			inputLookupSubmit.click(function() {
				var postcode = $(this).siblings('#register_schoolpostcode').val();
				postcode = $.trim(postcode);
				
				if(regex_postcode.test(postcode)) {
					$(this).siblings('#register_schoolpostcode').removeClass('error').addClass('success');
					lookUpSchools(postcode);
					inputLookupSubmit.removeClass('error');
					schoolLookup = true;
				} else {
					$(this).siblings('#register_schoolpostcode').removeClass('success').addClass('error');
					inputLookupSubmit.addClass('error');
					schoolLookup = false;
				}
				
				return false;
			});
			
			//Input box behaviour
			//Tried a more elegant solution, now going for brute force.
			
			inputTextbox.focus(function() {
				var $this = $(this).val();
				if($this=='Email address of teacher' || $this=='Surname' || $this=='Email' || $this=='Name' || $this=='School name' || $this=='School postcode' ) {
					$(this).val('').css({'color':'#333'});
				}
			});
			
			$("input[name='name']").blur(function() { //id'ed by name, some problem with the lightbox/php include on the homepage
				if($(this).val()=='') {
					$(this).val('Name').removeClass('success').addClass('error');
				} else {
					$(this).removeClass('error').addClass('success');
				}
			});

			$("input[name='surname']").blur(function() {
				if($(this).val()=='') {
					$(this).val('Surname').removeClass('success').addClass('error');
				} else {
					$(this).removeClass('error').addClass('success');
				}
			});
			
			$("input[name='email']").blur(function() {
				if(regex_email.test($(this).val())) {
					$(this).removeClass('error').addClass('success');
				} else {
					$(this).removeClass('success').addClass('error');
				}
				if($(this).val()=='') { $(this).val('Email address of teacher'); }
			}); 
			
			$("input[name='schoolname']").blur(function() {
				if($(this).val()=='') {
					$(this).val('School name').removeClass('success').addClass('error');
				} else {
					$("#form_register input[name='hiddenschoolname']").val($(this).val());
					$(this).removeClass('error').addClass('success');
				}
			});
			
			$("input[name='schoolpostcode']").blur(function() {
				if(regex_postcode.test($(this).val())) {
					$(this).removeClass('error').addClass('success');
				} else {
					$(this).removeClass('success').addClass('error');
				}
				if($(this).val()=='') { $(this).val('School postcode'); }
			});
			
			
			// Drop-down events
			$('div.dropdown_container').bind('click',function() {
				$(this).children('.dropdown_options').fadeIn('fast');
			});
			
			$('div.dropdown_container').bind('mouseleave',function() {
				$(this).children('.dropdown_options').fadeOut('fast');
			});
			
			$('div.dropdown_container .dropdown_options a').click(function() {
				text = $(this).html();
				$(this).parents('.dropdown_options').fadeOut('fast')
				.siblings('input').attr('value',text)
				.siblings('.dropdown').html(text).addClass('success');
				
				if($(this).attr('name')) {
					$('.dropdown_container.opt').hide();
					$('#'+$(this).attr('name')+'_container').slideDown();
				}
				
				return false;
			});
			
			
			
			

			inputSubmit.click(function() {
				var validated = true;
				var thisFields = $(this).siblings('.login_text:visible');
				var thisSelect = $('#register_hear');
				
				thisFields.each(function() {
					if(!$(this).hasClass('success')) {
						$(this).addClass('error');
						validated = false;
					}
				});

				// ensure that the user has searched for a school
				if (!schoolLookup) {
					inputLookupSubmit.addClass('error');
					validated = false;
				}
				
				if (inputSelectSchool.is(":visible") && $("#schoolname_container .dropdown").html() == "Select school") {
					$("#schoolname_container .dropdown").addClass('error');
					validated = false;
				}
				
				if($("#wherehear_container .dropdown").html() == "Where did you hear about us?") { 
					$("#wherehear_container .dropdown").addClass('error');
					validated = false;
				}
				
				if($("#level_container .dropdown").html() == "What level do you work in?") { 
					$("#level_container .dropdown").addClass('error');
					validated = false;
				}
				
				if($("#position_container .dropdown").html() == "Position:") { 
					$("#position_container .dropdown").addClass('error');
					validated = false;
				}
				
				if ($("#subject_container").is(":visible") && $("#subject_container .dropdown").html() == "Main subject:") {
					$("#subject_container .dropdown").addClass('error');
					validated = false;
				}
				
				if ($("#admin_container").is(":visible") && $("#admin_container .dropdown").html() == "Specify:") {
					$("#admin_container .dropdown").addClass('error');
					validated = false;
				}

				if(validated==false) {
					$(this).animate({'left':'4px'},50).animate({'left':'-4px'},50).animate({'left':'4px'},50).animate({'left':'0px'},25);
					return false;
				}
			});
			
		}
	},
	//--------------------------------------------

	//Logged in dialog functions----------------------
	loggedin:
	{
		init:function() {
			var messageBox = $('#message');
			
			switch(document.getElementById('message').className) {
				case "true": //User logged in successfully
					messageBox.css({'display' : 'block'}).html('Thank you for logging in!').slideDown().animate({opacity: 1.0}, 3000).slideUp(); 
					break;
				case "registered": //User registered in successfully
					messageBox.css({'display' : 'block'}).html('Thank you for registering! You can now login with this email address').slideDown().animate({opacity: 1.0}, 3000).slideUp(); 
					break;
				case "usernotfound": //No username found
					messageBox.css({'background-color' : '#e52828', 'display' : 'block', 'color' : '#EEE'}).html('Email address not found, please try again').slideDown().animate({opacity: 1.0}, 3000).slideUp(); 
					break;
				case "failedtoconnect": //Failed to connect to database
					messageBox.css({'background-color' : '#e52828', 'display' : 'block', 'color' : '#EEE'}).html('Database connection error :(').slideDown().animate({opacity: 1.0}, 3000).slideUp(); 
					break;
				case "userexists": //User exists
					messageBox.css({'background-color' : '#e52828', 'display' : 'block', 'color' : '#EEE'}).html('Username already exists').slideDown().animate({opacity: 1.0}, 3000).slideUp(); 
					break;
				case "feedbackcomplete": //User exists
					messageBox.css({'display' : 'block'}).html('Thanks for the feedback!').slideDown().animate({opacity: 1.0}, 3000).slideUp(); 
					break;
				case "feedback": //User hasn't actioned feedback form
					var currentEmail = $('#store_email').val();
					messageBox.css({'display' : 'block'}).html('<div id="closemessage"></div><a href="feedback.php?email=' + currentEmail + '" id="openfeedback">Help us improve the Classroom Kit by filling in our feedback form!</a>').slideDown().animate({opacity: 1.0}, 3000); 
					$('#closemessage').click(function() {
						$.ajax({url:'feedback_decline.php',
								type:'GET',
								dataType:'html',
								data:{ email:currentEmail }
						});
						messageBox.slideUp();	
						return false;
					});
					
					break;
			}
		}
	},
	//--------------------------------------------


	//Slide show functions----------------------
	slideshow:
	{
		init:function() {
			$('#body_container').css('width',760);
			var buttonContainer = $('#app_controls');
			var slideInfo = [];
			var slides = $('#app_container div.slide');
			var sCounter = 0;
			
			if ($('.slide').hasClass('unviewed')){ 
				$('.slide ul').hide();
			}
			
			$('a.pointsToConsider').click(function(){
			   $(this).prev('ul, ul ul').fadeIn("fast");
			   $(this).fadeOut("fast");
			   $(this).parents(".slide").removeClass("unviewed");
			   $(this).parents(".slide").addClass("viewed");
			});
			
			slides.hide();
			slides.eq(sCounter).show();
			$('h4').remove();
			updateSlideInfo();
			
			function updateSlideInfo() {
				$('#slideCounter').remove();
				var c = 0;
				slideInfo[c++] = "<span id='slideCounter'>Slide ";
				slideInfo[c++] = sCounter + 1;
				slideInfo[c++] = "/";
				slideInfo[c++] = slides.length;
				slideInfo[c++] = "</span>";
				buttonContainer.append(slideInfo.join(''));
			}
			
			buttonContainer.bind('click', function(e) {
				var $this = $(e.target).attr('id');
				if ($this=="next") {
				slides.eq(sCounter).hide();
					if (sCounter < slides.length-1){ //increase
						sCounter++;
					} else { //loop
						sCounter = 0; }
				slides.eq(sCounter).fadeIn();
				} 
				if ($this=="previous") {
				slides.eq(sCounter).hide();
					if (sCounter <= 0) { //loop
						sCounter = slides.length-1;
					} else { //decrease
						sCounter--; } 
				slides.eq(sCounter).fadeIn();
				}
				updateSlideInfo();
			});
		}
	},
	//-------------------------------------------- 


	//Slide show functions----------------------
	budgetgame:
	{
	init:function() {
		$(function() {
     	  $(".item").draggable();
		});
		}
	},

	
	
	
	
	
	
	
	
	
	
	
	//Citizen debate Slide show functions----------------------
/*	cit_slideshow:
	{
		init:function() {
			$('#body_container').css('width',760);
			var buttonContainer = $('#app_controls');
			var slideInfo = [];
			var slides = $('#app_container div.slide');
			var sCounter = 0;
						
			slides.hide();
			slides.eq(sCounter).show();
			$('h4').remove();
			updateSlideInfo();
			
			function updateSlideInfo() {
				$('#slideCounter').remove();
				var c = 0;
				slideInfo[c++] = "<span id='slideCounter'>Slide ";
				slideInfo[c++] = sCounter + 1;
				slideInfo[c++] = "/";
				slideInfo[c++] = slides.length;
				slideInfo[c++] = "</span>";
				buttonContainer.append(slideInfo.join(''));
			}
			
			buttonContainer.bind('click', function(e) {
				var $this = $(e.target).attr('id');
				if ($this=="next") {
				slides.eq(sCounter).hide();
					if (sCounter < slides.length-1){ //increase
						sCounter++;
					} else { //loop
						sCounter = 0; 
					}
				slides.eq(sCounter).fadeIn();
				} 
				if ($this=="previous") {
				slides.eq(sCounter).hide();
					if (sCounter <= 0) { //loop
						sCounter = slides.length-1;
					} else { //decrease
						sCounter--;} 
				slides.eq(sCounter).fadeIn();
				}
				updateSlideInfo();
			});
		}
	},
*/	//-------------------------------------------- 

	
	//Hide and reveal functions----------------------
	hideandreveal:
	{
		init:function() {
			var buttonContainer = $('#app_container div.hidereveal_controls button');
			var answers = $('#app_container div.hidereveal_controls span');
			
			answers.hide();
			
			buttonContainer.bind('click', function() {
				var $this = $(this);
				$this.next().fadeIn();
			});
		}
	}
	//-------------------------------------------- 
}









