(function(c,m,n){function l(a){if("string"==typeof a){var a=c.trim(a),b=a.substr(0,1);return"+"==b||"-"==b?parseInt(a):!1}return!1}function k(a){return k.instances[a]?k.instances[a]:h[a]?k.instances[a]=new h[a]:!1}var o={drivers:"dict,juhai,abbr,shh,gdh,ename,han".split(","),url:"http://dict.cn/apis/suggestion.php",height:350,driver:"dict",inline:!0,focusOnKeypress:!1},h={proto:{hasSugg:!0,data:{},add:function(a){return a&&a.q&&a.s?(this.data[a.q]=a.s,!0):!1},cached:function(a){return this.data&&
this.data[a]},getList:function(a,b){var d=this.data[a];if(c.isArray(d)&&0<d.length){var e=RegExp("("+a+")","ig"),f="";if(b)for(var g=0,h=d.length;g<h;g++)var j=d[g].g.replace(e,"<b>$1</b>"),f=f+('<dl data="'+d[g].g+'"><dt>'+j+"&nbsp;&nbsp;&nbsp;&nbsp;<span>"+d[g].e+"</span></dt><dd></dd></dl>");else{g=0;for(h=d.length;g<h;g++)j=d[g].g.replace(e,"<b>$1</b>"),f+='<dl data="'+d[g].g+'"><dt>'+j+"</dt><dd>"+d[g].e+"</dd></dl>"}return f}return!1},query:function(a){m.location.href="/"+myEncodeURI(a)}},juhai:function(){this.data=
{};this.query=function(a){m.location.href="/sent.php?q="+encodeURIComponent(a)}},han:function(){this.hasSugg=!1;this.data={};this.query=function(a){m.location.href="/d/han.php?q="+encodeURIComponent(a)};this.getList=function(){return!1}}};h.juhai.prototype=h.proto;h.han.prototype=h.proto;var p=function(){this.init.apply(this,arguments)};k.instances={};p.prototype={q:null,driver:h.proto,options:{},list:null,ctrlbar:null,container:null,disabled:!1,listHeight:0,containerHeight:0,repositionTimer:0,showing:!1,
forbidKeycodes:[13,27,37,38,39,40],hoverMutex:!1,init:function(a){var b=this,a=c.extend(o,a);b.options=a;if(-1!=c.inArray(a.driver,a.drivers)){var d=k(a.driver);d?b.driver=d:(a.driver="dict",b.driver=h.proto);var e=c(a.input);if(!(1>e.length)){e.bind("keyup",{self:b},b._keyup).bind("keydown",function(a){b.hoverMutex=!0;if(b.showing||40==a.which)switch(a.which){case 38:b.moveup();break;case 40:b.showing||(a=e.val())&&b.showPrompt(a),b.movedown()}});d=function(a){if(!a.ctrlKey&&a.target!=e.get(0)&&
"TEXTAREA"!=a.target.tagName&&"INPUT"!=a.target.tagName){var b=a.which;64<b&&91>b?(e.focus(),a.shiftKey||(b+=32),e.val(String.fromCharCode(b)),e.setSelectionRange?(e.focus(),e.setSelectionRange(1,1)):e.createTextRange&&(a=e.createTextRange(),a.collapse(!0),a.moveEnd("character",1),a.moveStart("character",1),a.select())):32==b?e.focus().select():27==b&&(e.focus().select(),e.val(""))}};a.focusOnKeypress&&(!0===a.focusOnKeypress?c(n).keyup(d):c(a.focusOnKeypress).keyup(d));b.container=c('<div class="input-prompt-container"></div>');
b.list=c('<div class="input-prompt-list"></div>');b.ctrlbar=c('<div class="input-prompt-ctrl"></div>');c(function(){var a=Math.max.apply(null,c.map(c("body > *"),function(a){return"absolute"==c(a).css("position")?parseInt(c(a).css("z-index"))||99:0}));b.container.css({zIndex:a+99})});var f;a.width?(f=l(a.width),d=!1!==f?e.width()+f:a.width):d=e.width();var g=a.height,i=e.offset(),j;j=i.top+e.height();a.top&&(f=l(a.top),j=!1!==f?j+f:a.top);j++;-1!=navigator.userAgent.indexOf("MSIE")&&(j+=5);a.left?
(f=l(a.left),f=!1!==f?i.left+f:a.left):f=i.left;b.list.css("overflowY","auto");i=c('<a class="close" href="javascript:void(0)">关闭输入提示</a>').click(function(){b.disablePrompt()});b.containerHeight=g;b.listHeight=g-20;b.ctrlbar.append(i);b.container.width(d).height(g).append(b.list).append(b.ctrlbar).css({position:"absolute",top:j,left:f}).hide().prependTo(n.body);if(1==getCookie("suggOff"))b.disabled=!0;c(window).bind("resize",function(){b.reposition()});c(a.trigger).bind("click",function(){e.focus();
b.enable();b.query(e.val())})}}},disablePrompt:function(){this.hidePrompt();setCookie("suggOff",1);this.disabled=!0},reposition:function(){var a=this;a.repositionTimer&&clearTimeout(a.repositionTimer);a.repositionTimer=setTimeout(function(){a._reposition()},200)},_reposition:function(){var a=this.options,b=c(a.input),d=b.offset(),b=d.top+b.height();a.top&&(offset=l(a.top),b=!1!==offset?b+offset:a.top);b++;-1!=navigator.userAgent.indexOf("MSIE")&&(b+=5);a.left?(offset=l(a.left),a=!1!==offset?d.left+
offset:a.left):a=d.left;this.container.css({top:b,left:a})},_keyup:function(a){if(!a.ctrlKey&&16!=a.which&&17!=a.which){var b=a.data.self;if(b.hoverMutex)b.hoverMutex=!1;if(13==a.which)b.choose(c(b.options.input).val());else if(27==a.which&&b.showing){b.hidePrompt();return}-1===c.inArray(a.which,b.forbidKeycodes)&&(b.disabled||b.query(a.target.value))}},query:function(a){var b=this;b.q=a;(a=c.trim(a))&&b.driver.hasSugg?b.driver.cached(a)?b.showPrompt(a):c.ajax({url:b.options.url,type:"GET",dataType:"jsonp",
data:{q:a,dict:b.options.driver},success:function(c){b.driver.add(c)&&b.showPrompt(a)},error:function(){}}):b.hidePrompt()},movedown:function(){var a=this.list.children("[data]"),b=a.filter(".hover"),a=1>b.length?a.eq(0):b.next();0<a.length&&(b.removeClass("hover"),a.addClass("hover"),this.scrollIntoView(a))},moveup:function(){this.hoverMutex=!0;var a=this.list.children(".hover");if(0<a.length){var b=a.prev();0<b.length&&(a.removeClass("hover"),b.addClass("hover"),this.scrollIntoView(b))}},scrollIntoView:function(a){var b=
a.attr("data");c(this.options.input).val(b);if(0<a.length){var b=this.list.innerHeight(),d=this.list.position(),e=a.outerHeight(),a=a.position(),f=0;a.top<d.top?f=a.top-d.top:a.top+e>d.top+b&&(f=a.top+e-(d.top+b));0!==f&&this.list.scrollTop(this.list.scrollTop()+f)}},hidePrompt:function(){this.container.hide();this.showing=!1},attachListBar:function(){var a=this,b=a.list.children(["data"]);b.css("cursor","pointer").hover(function(){a.hoverMutex||(a.restoreInput(),b.removeClass("hover"),c(this).addClass("hover"))},
function(){a.hoverMutex||c(this).removeClass("hover")}).click(function(){a.choose(c(this).attr("data"))})},showPrompt:function(a){this._reposition();if(a=this.driver.getList(a,this.options.inline))return this.list.height("auto"),this.list.html(a),this.attachListBar(),this.container.show(),this.list.height()>=this.listHeight?(this.list.height(this.listHeight).scrollTop(0),this.container.height(this.containerHeight)):(this.list.height("auto"),this.container.height("auto")),this.showing=!0;this.list.html("");
this.hidePrompt();return!1},restoreInput:function(){this.q&&c(this.options.input).val(this.q)},choose:function(a){if(c.isFunction(this.options.onchoose))this.options.onchoose(a);this.hidePrompt()},attemptHide:function(a){if(this.showing){var b=this.container.get(0);!c.contains(b,a)&&this.options.trigger&&c(this.options.trigger).get(0)!=a&&a!=c(this.options.input).get(0)&&this.hidePrompt()}},enable:function(){if(this.disabled)unsetCookie("suggOff"),this.disabled=!1},setDriver:function(a){if(this.options.driver!=
a){var b=k(a);b?(this.driver=b,this.options.driver=a):(this.driver=h.proto,this.options.driver=o.driver)}}};var i=[];c.fn.inputPrompt=function(a){var b=[];this.each(function(){b.push(new p(c.extend(a,{input:this})))});i=i.concat(b);return b};c(m).bind("click",function(a){if(0<i.length)for(var b=0,c=i.length;b<c;b++)i[b].attemptHide(a.target)});return i})(jQuery,window,document);

