(function($){$.floatTips=function(settings){if(settings){this.settings=$.extend({},$.floatTips.defaults,settings)}this.init();return this};$.floatTips.defaults={className:"float-tip",elements:null,content:null,template:'<div class="$className"><div class="$className-arrow"></div><div class="$className-content"></div></div>',marginLeft:0,marginTop:0};$.floatTips.prototype={init:function(){var instance=this;var element=null;var html=this.settings.template.replace(/\$className/ig,this.settings.className);this.el=$(html);this.el.hide();this.content=this.el.find("."+this.settings.className+"-content");if(!this.settings.elements){return}if(typeof this.settings.elements=="string"){this.elements=$(this.settings.elements)}else{this.elements=this.settings.elements}if(typeof this.settings.onShow=="function"){this._onShow=this.settings.onShow}if(typeof this.settings.onHide=="function"){this._onHide=this.settings.onHide}$.each(this.elements,function(k,v){var el,tips;if(typeof k=="string"){el=$("#"+k);tips=v}else{el=$(v);if(!el.attr("tips")||(el.attr("type")!="text"&&el.attr("type")!="password")){return}tips=instance.formatTips(el.attr("tips"))}el.focus(function(){var target=tips.target?$(tips.target):$(this);var offset=target.offset();var left=target.width()+offset.left;var top=target.height()+offset.top;var css={left:left,top:top};instance.element=$(this);if(instance.settings.marginLeft||tips.marginLeft){css.marginLeft=tips.marginLeft?tips.marginLeft:instance.settings.marginLeft}if(instance.settings.marginTop||tips.marginTop){css.marginLeft=tips.marginTop?tips.marginTop:instance.settings.marginTop}instance.show({text:tips.text,css:css})});el.blur(function(){instance.clear();instance.hide()})})},clear:function(){this.content.html("")},render:function(){$("body").append(this.el);this.rendered=true},show:function(params){if(!this.rendered){this.render()}if(params.css){this.el.css(params.css)}if(params.text){this.content.html(params.text)}this._onShow();this.el.show()},hide:function(){this._onHide();this.el.hide()},text:function(text){this.content.html(text)},_onShow:function(){},_onHide:function(){},formatTips:function(tips){if(typeof tips=="object"){return tips}eval("var ret = "+tips+";");return ret}};$.fn.floatTips=function(settings){if(!settings){settings={}}settings.elements=this;return new $.floatTips(settings)}})(jQuery);

