


//TODO ändra så alla dina dokument blir utf-8 istället för mac roman!

$(function(){
	
	$("#tempAccountForm").submit(function() {
		$.getJSON(baseURL + "services/rpc.php?cmd=useTempAccount&format=jsonp&jsoncallback=?",
        function(data){
			if(data.succesfull) {
				window.location.replace("myfonts.php");
			}
			else{
				$("#tempAccountForm .status").html('gick inte att logga in');
			}
        });
		return false;
	});
	
	
	$("#registerEmailForm").submit(function() {
		var email = $('#registerEmailForm input[name=email]').val(); 
		if(isValidEmail(email)) {
			$.getJSON(baseURL + "services/rpc.php?cmd=regiterEmail&email=" + email + "&format=jsonp&jsoncallback=?",
	        function(data){
				if(data.succesfull) {
					$('#registerEmailForm input[name=email]').val(''); 
					$("#registerEmailForm .status").html('email is changed.');
				}
				else{
					$("#registerEmailForm .status").html(data.error);
				}
	        });
		}
		else {
			$('#registerEmailForm input[name=email]').addClass("invalid");
		}
		return false;
	});
	
	
	
	$('#changePassword').submit(function() {
		var pwd = $('#changePassword input[name=password]').val();
		var pwdConfirm = $('#changePassword input[name=passwordConfirm]').val();
		if(pwd != pwdConfirm) {
			$('#changePassword .status').html('Password dos not match');
		}
		else if(pwd.length < 6) {
			$('#changePassword .status').html('Password to short');
		}
		else {
			$.getJSON(baseURL + "services/rpc.php?cmd=changePassword&password="+pwd+"&format=jsonp&jsoncallback=?",
            function(data){
    			if(data.succesfull) {
    				$('.status').html('Password is changed');
    				$('#changePassword input[name=password]').val('');
    				$('#changePassword input[name=passwordConfirm]').val('');
    			}
    			else{
    				$('.status').html(data.error);
    			}
            });
		}
		return false;
	});
	
	
	
	$('#loginForm').submit(function() {
		var username = $('#loginForm input[name=username]').val();
		var pwd = $('#loginForm input[name=password]').val();
		if(pwd.length < 6) {
			$('#loginForm .status').html('Password to short');
		}
		else {
			$.getJSON(baseURL + "services/rpc.php?cmd=login&username="+username+"&password="+pwd+"&format=jsonp&jsoncallback=?",
            function(data){
    			if(data.succesfull) {
    				window.location.replace(data.url);
    			}
    			else{
    				$('#loginForm .status').html('gick inte att logga in');
    			}
            });
		}
		return false;
	});
	
	
	$(".btnForgot").click(function(){
		$('div.login').hide();
		$('div.forget').show();
	});
	$(".btnLogin").click(function(){
		$('div.login').show();
		$('div.forget').hide();
	});
	
	
	
	
	$("#forgotPassword").submit(function(){
		var email = $("#forgotPassword input[name=email]").val();
		$("#forgotPassword input[name=email]").addClass("spining");
		$.getJSON(baseURL + "services/rpc.php?cmd=forgotPassword&email="+email+"&format=jsonp&jsoncallback=?",
        function(data){
			$("#forgotPassword input[name=email]").removeClass("spining");
			if(data.succesfull) {
				$("#forgotPassword .status").html("A mail has been sent to: "+email);
				$("#forgotPassword input[name=email]").html("");
			}
			else{
				$("#forgotPassword .status").html(data.error);
			}
        });
		return false;
	});
	


	
	$("#registration").submit(function(){
		var username = $("#registration input[name=username]").val();
		var email = $("#registration input[name=email]").val();
		validateRegistration();
		if(username == "" ) {
			$("#registration input[name=username]").addClass("invalid");
		}
		if ($("#registration input[name=username]").hasClass('valid') && $("#registration input[name=email]").hasClass('valid')) {
			$.getJSON(baseURL + "services/rpc.php?cmd=register&username="+username+"&email="+email+"&format=jsonp&jsoncallback=?",
            function(data){
    			if(data.succesfull) {
    				$("#registration .status").html("Activation mail and password has been sent to"+email);
    			}
    			else{
    				$("#registration .status").html("username is alredy taken")
    			}
            });
		}
		else{
			$("#registration .status").html("Please fill the registration form");
		}
		return false;
	});
	
	var isWorking = false;
	var nextCall = '';
	var validUsernames = new Array();
	$("#registration input[name=username]").keyup(function() {
        if(!isValidUsername(this.value)){
        	if(this.value == 0){        		
        		$(this).removeClass("spining").removeClass("valid").removeClass("invalid");
        	}
        	else{
        		$(this).removeClass("spining").removeClass("valid").addClass("invalid");
        	}
        }
        else{	        	
        	$(this)
        		.removeClass("invalid")
        		.removeClass("valid")
        		.addClass("spining");
        	if(in_array(this.value, validUsernames)){
        		$("#registration input[name=username]").addClass("valid").removeClass("spining");
        	}
        	else {
        		if(isWorking) {
        			nextCall = baseURL + "services/rpc.php?cmd=isUsernameAvailible&username="+escape(this.value)+"&format=jsonp&jsoncallback=?";
        		}
        		else {
	        		isWorking = true;
		    		$.getJSON(baseURL + "services/rpc.php?cmd=isUsernameAvailible&username="+escape(this.value)+"&format=jsonp&jsoncallback=?",userValidateComplete);
        		}
        	}
        }
	});
	
	function validateRegistration() {
        if( !isValidEmail($("#registration input[name=email]").val()) ){
        	$("#registration input[name=email]").addClass("invalid").removeClass("valid");
        }
        else{	        	
        	$("#registration input[name=email]").removeClass("invalid").addClass("valid");
        }
	}
	
	function userValidateComplete(data) {
		$(this).removeClass("spining");
		if(!data.isUsernameAvailible) {
			$("#registration input[name=username]").addClass("invalid").removeClass("spining");
		}
		else{
			validUsernames.push(data.username);
			$("#registration input[name=username]").addClass("valid").removeClass("spining");
		}
		if(nextCall != '') {
			$.getJSON(nextCall, userValidateComplete);
			nextCall = '';
		}
		else {
			isWorking = false;
		}		
	};
	

	$("#registration input[name=email]").keyup(validateRegistration);
	
	
});
function in_array (needle, haystack, argStrict) {
    // Checks if the given value exists in the array  
    // 
    // version: 911.718
    // discuss at: http://phpjs.org/functions/in_array    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: vlado houba
    // +   input by: Billy
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);    // *     returns 1: true
    // *     example 2: in_array('vlado', {0: 'Kevin', vlado: 'van', 1: 'Zonneveld'});
    // *     returns 2: false
    // *     example 3: in_array(1, ['1', '2', '3']);
    // *     returns 3: true
	// *     example 3: in_array(1, ['1', '2', '3'], false);
    // *     returns 3: true
    // *     example 4: in_array(1, ['1', '2', '3'], true);
    // *     returns 4: false
    var key = '', strict = !!argStrict; 
    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {
            	return true;
            }
        }
    }
     return false;
}
function isValidEmail(email){  
	var ck_email = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i 
	return ck_email.test(email)
}

function isValidUsername(username){  
	var ck_name = /^[A-Za-z0-9-_]{3,20}$/;
	return ck_name.test(username)
}