/*
By:      Daniel Bueno da Silva
Data:    03/02/2011
Version: 0.3
*/

(function($){

	$.fn.Legenda = function(){
		var parent = $(this).parent() //Guardo a parent do elemento em uma variável		
		/*
		Guardar os valores dos inputs no array e
		definir ações do evento focus e blur do campo
		*/		
		$(this).each(function(){
			var target = $(this);			
			/*
			Caso seja um campo senha troca o elemento
			por um tipo text
			*/
			if(target.attr('type') == 'password'){
				var browserName=navigator.appName; //Pega Navegador
				element_orig = target; //Guardo o elemento original em uma variável				
				//target.remove(); //Remove o elemento original
				if (browserName=="Microsoft Internet Explorer"){ //Caso seja I.E.
					init_val = element_orig.val(); //Guarda value em variável
					element_clone = $(element_orig[0].outerHTML.replace('password','text')); //Clona o elemento usando html e muda o type por replace
					element_clone.val(init_val); //Insere valor
					element_clone.attr('field','senha'); //Insere atributo field=senha
				}else{
					element_clone = element_orig.clone(); //Cria um clone do elemento				
					element_clone.attr({'type':'text','field':'senha'}); //muda seu type e insere um atributo marcador 'field=senha'
				}				
				//parent.append(element_clone); //Insere o novo elemento
				target.after(element_clone);
				target.remove(); //Remove o elemento original
				target = element_clone;
			}
			//Caso o campo tenha valor inicial				
			if(target.val() != ""){
				target.attr('init_val',target.val()); //Insere atributo com valor inicial			
				onFocus(target);
			}
		})
		
		function onFocus(target){
			target.focus(function(){					
				limparLegenda($(this)); //Chama função limparLegenda
			}).blur(function(){
				retornarLegenda($(this)); //Chama função retornarLegenda
			})			
		}
		
		//Função que limpa a legenda
		function limparLegenda(field){
			if(field.val() == field.attr('init_val')){
				if(field.attr('field') == 'senha'){ //Caso o elemento tenha o atributo 'field=senha'
					field.after(element_orig); //Insere o elemento original (password)
					field.remove(); //Remove o elemento atual (clone)					
					field = element_orig; //Guarda o novo elemento na variavel field
					field.focus(); //Coloca o foco no novo elemento
					onFocus(field) //Chama a função onFocus para o novo elemento
				}
				field.val("");
			}
		}
		/*
		Função que volta a legenda inicial de acordo com o
		novo atributo init_val
		*/
		function retornarLegenda(field){
			if(field.val() == ""){
				if(field.attr('type') == 'password'){ //Caso o elemento seja type password					
					field.after(element_clone); //Insere o elemento clone (text,field=senha)
					field.remove(); //Remove o elemento atual (original)
					field = element_clone; //Guarda o novo elemento na variavel field
					onFocus(field) //Chama a função onFocus para o novo elemento
				}
				field.val(field.attr('init_val'));
			}			
		}	
	}

})(jQuery);
