(function($) {
	$.fn.login = function(options){
		
		var wgt = $(this);
						
		if (wgt.hasClass("login")){
			options = $.extend($.fn.login.defaults, options);					
			run();
		}
		
		function run(){			
			if (wgt.hasClass("hide")){						
				wgt.hide("fast", function(){
					wgt.removeClass("hide");
					show(options.show);
				});
			}else{
				if (options.show && wgt.filter(":visible").size()) return;
				if (!options.show && wgt.filter(":hidden").size()) return;
				show(options.show);
			}			
		};
		
		function show(value){
			/*
			zk.log("value: " + value);			
			zk.log("offeset : " + $(options.position.of));
			zk.log("offeset left: " + $(options.position.of).offset().left);
			zk.log("offeset top: " + $(options.position.of).offset().top);
			zk.log("offeset width: " + $(options.position.of).width());
			*/
			var left = $(options.position.of).offset().left + ($(options.position.of).width() - wgt.width());
			var top = $(options.position.of).offset().top;
			wgt.css({ "left": left + "px", "top": top + "px" });
			
			if (value){				
				wgt.show("normal");
			}
			else wgt.hide("normal");
		};
	};
	
	$.fn.login.defaults = {				
		show : false,
		position : {of : null, at : null}
	};
	
	$.fn.validate = function(options, callback) {
		var wgt = $(this);		
		if (!wgt.filter(":input").size()) return false;
		
		if ($.isFunction(options)){
			callback = options;
			options = null;
		}
		
		options = $.extend($.fn.validate.defaults, options);
		
		$("span.addedtext").remove();										
		if (!wgt.val().trim().length){													
			$(options.at).append("<span class='addedtext default red uppercase strong'>" + options.msg + "</span>");
			if ($.isFunction(callback)) callback.call(this);
			//jq.Event.zk(event, zk.Widget.$(this))
			return false;
		}
		return true;
	};
	
	$.fn.validate.defaults = {				
			msg : null,
			at : null
	};
	
})(jQuery);	
