var usercfc = "http://"+window.location.hostname+"/common/cfc/user_data_account/user_gateway.cfc?method=";

// ------------------------------------------------------
// Name: Registration
// Desc: Functions for the registration of a new user for
//		 the National Marine Mammal Database
// ------------------------------------------------------
var registration = {
	// Initalize the event handling
	init: function(){
		var eStatus = $('#emailStatus');
		var uStatus = $('#userNameStatus');
		var uEmail = $('#userEmail');
		var uName = $('#userName');
	
		uEmail.change(function(){
			eStatus.empty().removeClass("successMsg, errorMsg");
			$.validity.setup({outputMode:" "});
			$.validity.start();
			
			uEmail.match('email');
					
			if($.validity.end().valid){
				if (this.value.length > 0) {
					eStatus.html('<img src="/common/images/roller.gif"/><span>Checking email avaliability...<span>').removeClass('errorMsg').addClass("progressMsg");
					
					$.post(
						usercfc+'checkEmailAddress',
						{email: this.value.toLowerCase()}, 
						function(response){
							if (response > 0) {
								eStatus.html('Sorry, email address already in use').addClass("errorMsg").removeClass("successMsg progressMsg");
							}
							else {
								eStatus.html('Email address available').addClass("successMsg").removeClass("errorMsg progressMsg");
							}
						}
					);
				}
			}
		});
		
		uName.change(function(){
			uStatus.empty().removeClass("successMsg, errorMsg");
			if (this.value.length > 0) {
				uStatus.html('<img src="/common/images/roller.gif"/><span>Checking username avaliability...<span>').removeClass('errorMsg').addClass("progressMsg");
				
				$.post(
					usercfc + 'checkUserName', 
					{username: this.value.toLowerCase()}, 
					function(response){
						if (response > 0) {
							uStatus.html('Sorry, user name already in use').addClass("errorMsg").removeClass("successMsg progressMsg");
						}
						else {
							uStatus.html('User name available').addClass("successMsg").removeClass("errorMsg progressMsg");
						}
					}
				);
			}
		});
		
		$("#submitEdit").click(function(){
			$("input[type='text'], select").removeAttr("disabled");
			$("#confirm").hide();
			$("#edit").fadeIn('slow');
		});
		
		$("#buttonCancel").click(function(){
			location.reload(true);
		});
				
		$('#registerForm').submit(function(e) {
	    	if (!registration.validate()) {
				e.preventDefault();
	        }
    	});
	},
	// Client side validation
	validate: function(){
		$("#message").hide();
		
		$.validity.start();

		$(".require").require();
		$("#userEmail").match('email');
		$("#userName, #userPassword, #confirmPassword, #userPhone, #userMobile").maxLength(20);
		$("#userFirstName, #userLastname, #userCountry").maxLength(40);
		$("#userAddressLine1, #userAddressLine2").maxLength(50);
		$("#captcha, #hiddenTC").require();
		
		if ($("#userPassword").val().length > 0 && $("#confirmPassword").val().length > 0) {
			$("#userPassword, #confirmPassword").minLength(6).equal("Password's don't match");
		}
		
		var result = $.validity.end();
	    
	    return result.valid;
	}
};

// ------------------------------------------------------
// Name: Recover username
// Desc: Functions for the recovery of a username
// ------------------------------------------------------
var recoverUsername = {
	// Initalize the event handling
	init: function(){
		$("#submitUsername").click(function(event){
			var m = $("#usernameMsg");
			var e = $("#E");
			
			if(recoverUsername.validate()){
				m.show().html('<img src="/common/images/roller.gif"/>Submitting...').removeClass('errorMsg').addClass("progressMsg");
				
			    $.post( 
			        usercfc+"recoverUsername&E=" + e.val(),  
			        function(data){
			        	var d = JSON.parse(data);
			        	
			        	if (d[0].SUCCESS) {
							e.val("");
							m.html(d[0].MESSAGE).addClass("successMsg").removeClass("errorMsg");
						}
						else {
							m.html(d[0].MESSAGE).addClass("errorMsg").removeClass("successMsg");
						}
			        } 
			    ); 
			}
			else {
				m.show().html('<b>Email address</b> required').removeClass('progressMsg').addClass('errorMsg');
			}
		}).button();;
	},
	// Client side validation
	validate: function(){
		var e = $("#E");
		
		if (e.val() === "") {
			e.addClass("error");
		}
		else {
			e.removeClass("error");
		}

		if (e.val() !== "") {
			return true;
		}
			
		return false;
	}
};

// ------------------------------------------------------
// Name: Reset password
// Desc: Functions for reseting a password
// ------------------------------------------------------
var resetPassword = {
	// Initalize the event handling 
	init: function(){
		
		$("#submitPassword").click(function(event){
			var m = $("#passwordMsg");
			var u = $("#U");
			
			if(resetPassword.validate()){
				m.show().html('<img src="/common/images/roller.gif"/><span>Submitting...<span>').removeClass('errorMsg, successMsg').addClass("progressMsg");
				
			    $.post( 
			        usercfc+"resetPassword&U=" + u.val(), 
			        function(data){
			        	var d = JSON.parse(data);
			        	
			        	if (d[0].SUCCESS) {
							u.val("");
							m.html(d[0].MESSAGE).addClass("successMsg").removeClass("errorMsg, progressMsg");
						}
						else {
							m.html(d[0].MESSAGE).addClass("errorMsg").removeClass("successMsg, progressMsg");
						}
			        } 
			    ); 
			}
			else {
				m.show().html('<b>User name</b> required').removeClass('progressMsg, successMsg').addClass('errorMsg');
			}
		}).button();
	},
	// Client side validation
	validate: function(){
		var e = $("#U");
		
		if (e.val() === "") {
			e.addClass("error");
		}
		else {
			e.removeClass("error");
		}

		if (e.val() !== "") {
			return true;
		}
			
		return false;
	}
};	

// ------------------------------------------------------
// Name: Simple login
// Desc: Functions for the validation and authenticating
//		 of a user into the National Marine Mammal 
//		 Database	
// ------------------------------------------------------
var simpleLogin = {
	// Initalize the event handling
	init: function(){
		$("#breadLoginNotification").empty().hide();
		$("#breadLoginUsername, #breadLoginPassword").removeClass("error").val("");
		
		// Detect if the enter key has been pressed while the focus is in this form
		$('#breadLogin').keyup(function(e) {
		    if (e.keyCode === 13) {
				simpleLogin.login();
			}
		});

		$('#breadLoginSubmit').click(function(){
			simpleLogin.login();
		});
	},
	// Handles the authentication
	login: function(){
		var n = $("#breadLoginNotification");
		var u = $("#breadLoginUsername");
		var p = $("#breadLoginPassword");
		
		if (simpleLogin.validate()) {
			n.show().html('<img src="/common/images/roller.gif"/><span>Authenticating...<span>').removeClass('errorMsg').addClass("progressMsg");
			$.post(
				usercfc + 'simpleLogin', 
				{
					u: u.val(),
					p: p.val()
				}, 
				function(r){
					if (r == "true") {
						window.location = "/portal";
					}
					else {
						n.fadeOut('slow',function(){
							p.val('');
							n.show().html("Authentication failed!").removeClass('progressMsg').addClass("errorMsg");
						});
					}
				}
			);
		}
		else {
			n.show().html("* Required fields!").removeClass('progressMsg').addClass("errorMsg");
		}
	},
	// Client side validation
	validate: function(){
		var u = $("#breadLoginUsername");
		var p = $("#breadLoginPassword");
		
		if (u.val() === "") {
			u.addClass("error");
		}
		else {
			u.removeClass("error");
		}
		
		if (p.val() === "") {
			p.addClass("error");
		}
		else {
			p.removeClass("error");
		}
		
		if (u.val() !== "" && p.val() !== "") {
			return true;
		}
			
		return false;
	}
};

// ------------------------------------------------------
// Name: Help
// Desc: Functions for the Help system; loading of the
//		 contents from the file system, populating 
//		 breadcurmbs and showing HTML content
// ------------------------------------------------------
var help = {
	init: function(){
		$("#helpBreadcrumbs").empty().append('Help home');
		
		$(".helpNav ul:first").attr("id", "navTree").addClass("filetree");
		$("#navTree").treeview({
			control: "#treecontrol",
			collapsed: true
		});
		
		$(".load").click(function(){
			var loc = $("span", this).html();
			$('.helpContent').load(loc);
			help.loadBreadcrumbs(loc);
		});
	},
	loadBreadcrumbs: function(contentName){
		$("#helpBreadcrumbs").empty().append('Help home');
		
		var locations = contentName.split('/');
		
		for(var i = 0; i < locations.length; i++){
			if (locations[i] != ' ' && locations[i] != 'common' && locations[i] != 'custom_tags' && locations[i] != 'help' && locations[i] != 'home.html'){
				$("#helpBreadcrumbs").append(' >> ' + ReplaceAll(locations[i].replace(".html", ""), "_", " "));
			}
		}
	}
};
