/**
 * jQuery gComplete v0.1.2 - autocomplete using "Google Web API"
 *
 * Terms of Use - jQuery gComplete
 * under the MIT (http://www.opensource.org/licenses/mit-license.php) License.
 *
 * Copyright 2010 xlune.com All rights reserved.
 * (http://blog.xlune.com/2010/02/jquerygcomplete.html)
 */
(function(e){e.fn.extend({gcomplete:function(v){var c=e(this);if(c.get(0).tagName.toLowerCase()=="input"&&c.attr("type")=="text"){var d,f,p,q={style:"default",url:"http://google.com/complete/search",query_key:"q",param:{output:"json"},limit:10,cycle:500,effect:false,oneword:false,callbackUseOnlyString:false,parseFunc:function(a){return a[1]}};function w(){p=setInterval(x,h("cycle"));e.browser.mozilla?c.keypress(l):c.keydown(l);if(typeof c.mousewheel=="function"){c.mousedown(r);e(window).mousewheel(s)}}
function o(){clearInterval(p);d.param[d.query_key]="";m();e.browser.mozilla?c.unbind("keypress",l):c.unbind("keydown",l);if(typeof c.mousewheel=="function"){c.unbind("mousedown",r);e(window).unbind("mousewheel",s)}}function x(){var a=c.val();if(a.length>0&&a.replace(/ +$/,"")!=d.param[d.query_key].replace(/ +$/,""))y(a);else a.length<=0&&m()}function y(a){var b={};d.param[d.query_key]=a;for(var g in d.param)b[g]=d.param[g];if(h("oneword")){b[d.query_key]=a.split(" ").pop();if(!b[d.query_key]){m();
return false}}if(h("callbackUseOnlyString")){a=e("#__gcompleteaccess");g="gcompletef"+z();b.callback=g;window[g]=t;a.size()>0?a.attr("src",d.url+"?"+e.param(b)):e("<script />").attr("type","text/javascript").attr("id","__gcompleteaccess").attr("src",d.url+"?"+e.param(b)).appendTo("body")}else e.get(d.url,b,t,"jsonp")}function z(){var a=[],b="abcdefghij".split(""),g=(new Date).getTime().toString().split("");a.push(b[Math.floor(Math.random()*b.length)]);for(var j=0,A=g.length;j<A;j++)a.push(b[g[j]]);
return a.join("")}function t(a){try{var b=h("parseFunc")(a);b.length>0?B(b):m()}catch(g){o()}}function B(a){if(a){f.empty();var b;b=h("limit");for(var g=0,j=Math.min(a.length,b);g<j;g++){b=e("<dl />").appendTo(f);if(typeof a[g]=="string"){b.append(e("<dt />").text(a[g]));b.data("text",a[g])}else{b.append(e("<dt />").text(a[g][0]));b.append(e("<dd />").text(a[g][1]));b.data("text",a[g][0])}b.hover(function(){i(this)},function(){u(this)}).mousedown(function(){i(this);n()})}}h("effect")&&f.css("display")==
"none"?f.fadeIn(300):f.show()}function m(){h("effect")?f.fadeOut(100):f.hide()}function i(a){u(f.find("dl"));e(a).addClass("over").attr("rel","select")}function u(a){e(a).removeClass("over").removeAttr("rel")}function n(){var a=f.find("dl[rel=select]");if(a.size()){if(h("oneword")){var b=c.val().split(" ");b.pop();b.push(a.data("text"));b.push("");c.val(b.join(" "))}else c.val(a.data("text"));return true}return false}function C(a){d=a||{};for(var b in q)d.hasOwnProperty(b)||(d[b]=q[b]);d.param[d.query_key]=
"";c.data("_gcomp",d)}function D(){f=e("<div />").addClass("gcomplete-"+h("style")+"-box").css({position:"absolute",left:E(),top:F(),"z-index":"9999"}).insertAfter(c);f.hide()}function E(){return c.position().left}function F(){var a=c.position().top+c.height();a+=k(c.css("margin-top"))+k(c.css("padding-top"))+k(c.css("border-top-width"))+k(c.css("padding-bottom"))+k(c.css("border-bottom-width"));return a}function k(a){var b=Number(a.replace("px",""));return isNaN(a)?1:b}function h(a){if(d.hasOwnProperty(a))return d[a];
return null}function r(a){switch(a.button){case 1:if(!e.browser.msie&&n())return false;break;case 4:if(e.browser.msie&&n())return false;break;default:break}return true}function l(a){var b=f.find("dl[rel=select]");switch(a.keyCode){case 27:o();break;case 38:i(b.prev().size()?b.prev():f.find("dl:last"));return false;case 40:i(b.next().size()?b.next():f.find("dl:first"));return false;case 13:if(n())return false;break;default:break}return true}function s(a,b){if(f.find("dl").size()){a=f.find("dl[rel=select]");
b=b<0;a.size()?i(b?a.next().size()?a.next():f.find("dl:first"):a.prev().size()?a.prev():f.find("dl:last")):i(b?f.find("dl:first"):f.find("dl:last"))}return false}C(v);D();c.focus(function(){w()});c.blur(function(){o()})}return c}})})(jQuery);



