/*!
 * Plugin do jQuery para verificação d strings e emails
 * Arrisco - Publicidade e Design, Lda
 * Copyright (c) Arrisco - Publicidade e Design, Lda
 * Version: 0.01 (14-10-2010)
 * Licenciado em MIT e GPL3.
 * Testado: jQuery v1.2.6 ou superior
 */



(function($){
	jQuery.fn.validacoes = function(settings){
		// Settings default
		
	
		
		var elemento 	  = $(this);
		var email         = jQuery.trim(elemento.val());
		var ponto         = '.';
		var arroba        = '@';
		var tamanhoString = email.length;
		var localArroba   = email.indexOf(arroba);
		var localUltimaArroba = email.lastIndexOf(arroba);
		var localPonto    = email.indexOf(ponto);
		var localUltimoPonto = email.lastIndexOf(ponto);
		var localEspaco      = email.indexOf(' ');
		var haErro;
		
		settings = jQuery.extend({
										tipo:          'string',
										mensagemErro:  '',
										destinoErro:   'erroEmail',
										classErro:     'erroForm',
										stringMinimo:  '5',
										stringMaximo:  '256',
										stringMensagem: 'Deve ter entre {STRINGMINIMO} e {STRINGMAXIMO} caracteres'
											
									}, 
								settings);

		
		
		// Loop por todos os elementos seleccionados
		jQuery(elemento).each(function(intIndex){
			
			$('#'+settings.destinoErro).removeClass(settings.classErro);
			$('#'+settings.destinoErro).html('&nbsp;');
			
		});

		
		var validarEmail = function(){
	
			
			
			settings.mensagemErro = settings.stringMensagem;
			
						
			if(localArroba < 1 || localArroba == tamanhoString -1 || localArroba != localUltimaArroba || localArroba >= parseInt(localUltimoPonto -1)){
				haErro();
				return false;
			}
			
			if(localUltimoPonto >= parseInt(tamanhoString -1)){
				haErro();
				return false;
			}
			
			if(localEspaco > -1){
				haErro();
				return false;
			}
			
			return true;
			
		}
		
		
		
		var validarString = function(){

			
			
			
            if(tamanhoString < settings.stringMinimo || tamanhoString > settings.stringMaximo){
            	
            	settings.mensagemErro = settings.stringMensagem;
            	settings.mensagemErro = settings.mensagemErro.replace("{STRINGMINIMO}", settings.stringMinimo);
            	settings.mensagemErro = settings.mensagemErro.replace("{STRINGMAXIMO}", settings.stringMaximo);
            	
            	haErro();
				return false;
            }
            
            return true;

		}

		
		
		
		var haErro = function(){
			
			
			
			elemento.parent().append('<div class="erroFormulario">'+settings.mensagemErro+'</div>');
			
			
			
		}
		
		
		switch(settings.tipo){
		
		case 'email':
			return validarEmail();
			break;
	
		case 'string':
			return validarString();
			break;
			
	}
		
		// Return
		return jQuery;
	};
})(jQuery);

