String.prototype.entityify = function () {
    return this.replace(/&/g, "&amp;").replace(/</g,
        "&lt;").replace(/>/g, "&gt;");
};


//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("mysprites.php");
			}
			else{
				$("#tempAccountForm .cssspritegenerator_status").html('gick inte att logga in');
			}
        });
		return false;
	});
	
	$('.cssspritegenerator_minify').live('click', function() {
		if($(this).hasClass('cssspritegenerator_active')){
	    	$(this).html('--').removeClass('cssspritegenerator_active');
        	$(this).closest('#fsUploadProgress li').find(".cssspritegenerator_tabContent").css('height', 'auto');
      	}
		else{
      		$(this).html('+').addClass('cssspritegenerator_active');
      		$(this).closest('#fsUploadProgress li').find(".cssspritegenerator_tabContent").css('height', 0);
        }
		return false;
	});

		
	$(".cssspritegenerator_tabContent").hide();
	$('#fsUploadProgress li').find(".cssspritegenerator_tabContent:eq(0)").show();
	$('#fsUploadProgress a').live('click', function() {
				
		$(this).closest('#fsUploadProgress li').find(".cssspritegenerator_tabContent").hide();
		$(this).closest('#fsUploadProgress li').find(".cssspritegenerator_" + $(this).attr('lang')).show();
    	$(this).closest('#fsUploadProgress li').find(".cssspritegenerator_tabContent").css('height', 'auto');
    	$(this).closest('#fsUploadProgress li').find(".cssspritegenerator_active").removeClass('cssspritegenerator_active').html('--');

		
		  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 .cssspritegenerator_status").html('email is changed.');
				}
				else{
					$("#registerEmailForm .cssspritegenerator_status").html(data.error);
				}
	        });
		}
		else {
			$('#registerEmailForm input[name=email]').addClass("cssspritegenerator_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) {
    				$('.cssspritegenerator_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 .cssspritegenerator_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;
	});
	
	
	$(".cssspritegenerator_btnForgot").click(function(){
		$('div.cssspritegenerator_login').hide();
		$('div.cssspritegenerator_forget').show();
	});
	$(".cssspritegenerator_btnLogin").click(function(){
		$('div.cssspritegenerator_login').show();
		$('div.cssspritegenerator_forget').hide();
	});
	
	
	
	
	$("#forgotPassword").submit(function(){
		var email = $("#forgotPassword input[name=email]").val();
		$("#forgotPassword input[name=email]").addClass("cssspritegenerator_spining");
		$.getJSON(baseURL + "services/rpc.php?cmd=forgotPassword&email="+email+"&format=jsonp&jsoncallback=?",
        function(data){
			$("#forgotPassword input[name=email]").removeClass("cssspritegenerator_spining");
			if(data.succesfull) {
				$("#forgotPassword .cssspritegenerator_status").html("A mail has been sent to: "+email);
				$("#forgotPassword input[name=email]").html("");
			}
			else{
				$("#forgotPassword .cssspritegenerator_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("cssspritegenerator_invalid");
		}
		if ($("#registration input[name=username]").hasClass('cssspritegenerator_valid') && $("#registration input[name=email]").hasClass('cssspritegenerator_valid')) {
			$.getJSON(baseURL + "services/rpc.php?cmd=register&username="+username+"&email="+email+"&format=jsonp&jsoncallback=?",
            function(data){
    			if(data.succesfull) {
    				$("#registration .cssspritegenerator_status").html("Activation mail has been sent <br />to: "+email);
    			}
    			else{
    				$("#registration .cssspritegenerator_status").html("username is alredy taken")
    			}
            });
		}
		else{
			$("#registration .cssspritegenerator_status").html("Please fill the registration<br/>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("cssspritegenerator_spining").removeClass("cssspritegenerator_valid").removeClass("cssspritegenerator_invalid");
        	}
        	else{
        		$(this).removeClass("cssspritegenerator_spining").removeClass("cssspritegenerator_valid").addClass("cssspritegenerator_invalid");
        	}
        }
        else{	        	
        	$(this)
        		.removeClass("cssspritegenerator_invalid")
        		.removeClass("cssspritegenerator_valid")
        		.addClass("cssspritegenerator_spining");
        	if(in_array(this.value, validUsernames)){
        		$("#registration input[name=username]").addClass("cssspritegenerator_valid").removeClass("cssspritegenerator_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("cssspritegenerator_invalid").removeClass("cssspritegenerator_valid");
        }
        else{	        	
        	$("#registration input[name=email]").removeClass("cssspritegenerator_invalid").addClass("cssspritegenerator_valid");
        }
	}
	
	function userValidateComplete(data) {
		$(this).removeClass("spining");
		if(!data.isUsernameAvailible) {
			$("#registration input[name=username]").addClass("cssspritegenerator_invalid").removeClass("cssspritegenerator_spining");
		}
		else{
			validUsernames.push(data.username);
			$("#registration input[name=username]").addClass("cssspritegenerator_valid").removeClass("cssspritegenerator_spining");
		}
		if(nextCall != '') {
			$.getJSON(nextCall, userValidateComplete);
			nextCall = '';
		}
		else {
			isWorking = false;
		}		
	};
	

	$("#registration input[name=email]").keyup(validateRegistration);
	
	//TODO tror inte detta används? vi tog ju bort UI
	$('.fg-button').hover(
    		function(){ $(this).removeClass('ui-state-default').addClass('ui-state-focus'); },
    		function(){ $(this).removeClass('ui-state-focus').addClass('ui-state-default'); }
    );
	
});
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)
}
