jQuery.autocomplete=function(D,S){var N=this;
var W=$(D).attr("autocomplete","off");
if(S.inputClass){W.addClass(S.inputClass)
}var O=document.createElement("div");
var H=$(O);
H.hide().addClass(S.resultsClass).css("position","absolute");
if(S.width>0){H.css("width",S.width)
}$("body").append(O);
D.autocompleter=N;
var f=null;
var V="";
var g=-1;
var I={};
var Y=false;
var J=false;
var A=null;
function K(){I={};
I.data={};
I.length=0
}K();
if(S.data!=null){var Q="",o={},L=[];
if(typeof S.url!="string"){S.cacheLength=1
}for(var m=0;
m<S.data.length;
m++){L=((typeof S.data[m]=="string")?[S.data[m]]:S.data[m]);
if(L[0].length>0){Q=L[0].substring(0,1).toLowerCase();
if(!o[Q]){o[Q]=[]
}o[Q].push(L)
}}for(var l in o){S.cacheLength++;
E(l,o[l])
}}W.keydown(function(i){A=i.keyCode;
switch(i.keyCode){case 38:i.preventDefault();
b(-1);
break;
case 40:i.preventDefault();
b(1);
break;
case 9:case 13:if(d()){W.get(0).blur();
i.preventDefault();
P4.maps.submitSearch()
}break;
default:g=-1;
if(f){clearTimeout(f)
}f=setTimeout(function(){R()
},S.delay);
break
}}).focus(function(){J=true
}).blur(function(){J=false;
C()
});
T();
function R(){if(A==46||(A>8&&A<32)){return H.hide()
}var i=W.val();
if(i==V){return 
}V=i;
if(i.length>=S.minChars){W.addClass(S.loadingClass);
a(i)
}else{W.removeClass(S.loadingClass);
H.hide()
}}function b(k){var i=$("li",O);
if(!i){return 
}g+=k;
if(g<0){g=0
}else{if(g>=i.size()){g=i.size()-1
}}i.removeClass("ac_over");
$(i[g]).addClass("ac_over")
}function d(){var i=$("li.ac_over",O)[0];
if(!i){var k=$("li",O);
if(S.selectOnly){if(k.length==1){i=k[0]
}}else{if(S.selectFirst){i=k[0]
}}}if(i){P(i);
return true
}else{return false
}}function P(i){if(!i){i=document.createElement("li");
i.extra=[];
i.selectValue=""
}var k=$.trim(i.selectValue?i.selectValue:i.innerHTML);
D.lastSelected=k;
V=k;
H.html("");
W.val(k);
T();
if(S.onItemSelect){setTimeout(function(){S.onItemSelect(i)
},1)
}}function B(q,k){var p=W.get(0);
if(p.createTextRange){var i=p.createTextRange();
i.collapse(true);
i.moveStart("character",q);
i.moveEnd("character",k);
i.select()
}else{if(p.setSelectionRange){p.setSelectionRange(q,k)
}else{if(p.selectionStart){p.selectionStart=q;
p.selectionEnd=k
}}}p.focus()
}function U(i){if(A!=8){W.val(W.val()+i.substring(V.length));
B(V.length,i.length)
}}function c(){var k=X(D);
var i=(S.width>0)?S.width:W.width();
H.css({width:parseInt(i)+"px",top:(k.y+D.offsetHeight)+"px",left:k.x+"px"}).show()
}function C(){if(f){clearTimeout(f)
}f=setTimeout(T,200)
}function T(){if(f){clearTimeout(f)
}W.removeClass(S.loadingClass);
if(H.is(":visible")){H.hide()
}if(S.mustMatch){var i=W.val();
if(i!=D.lastSelected){P(null)
}}}function G(k,i){if(i){W.removeClass(S.loadingClass);
O.innerHTML="";
if(!J||i.length==0){return T()
}if($.browser.msie){H.append(document.createElement("iframe"))
}O.appendChild(h(i));
if(S.autoFill&&(W.val().toLowerCase()==k.toLowerCase())){U(i[0][0])
}c()
}else{T()
}}function F(r){if(!r){return null
}var k=[];
var q=r.split(S.lineSeparator);
for(var p=0;
p<q.length;
p++){var s=$.trim(q[p]);
if(s){k[k.length]=s.split(S.cellSeparator)
}}return k
}function h(u){var t=document.createElement("ul");
var r=u.length;
if((S.maxItemsToShow>0)&&(S.maxItemsToShow<r)){r=S.maxItemsToShow
}for(var s=0;
s<r;
s++){var v=u[s];
if(!v){continue
}var p=document.createElement("li");
if(S.formatItem){p.innerHTML=S.formatItem(v,s,r);
p.selectValue=v[0]
}else{p.innerHTML=v[0];
p.selectValue=v[0]
}var k=null;
if(v.length>1){k=[];
for(var q=1;
q<v.length;
q++){k[k.length]=v[q]
}}p.extra=k;
t.appendChild(p);
$(p).hover(function(){$("li",t).removeClass("ac_over");
$(this).addClass("ac_over");
g=$("li",t).indexOf($(this).get(0))
},function(){$(this).removeClass("ac_over")
}).click(function(i){i.preventDefault();
i.stopPropagation();
P(this)
})
}return t
}function a(k){if(!S.matchCase){k=k.toLowerCase()
}var i=S.cacheLength?n(k):null;
if(i){G(k,i)
}else{if((typeof S.url=="string")&&(S.url.length>0)){P4.maps.geocoder.getLocations(k+" pl",function(q){i=[];
var p,r;
if(q.Status.code==G_GEO_SUCCESS){p=P4.maps.filterResults(q.Placemark);
if(p.length>0){for(j=0;
j<p.length;
j++){r=P4.maps.getDisplayAddress(p[j]);
i[j]=[r]
}}}G(k,i)
})
}else{W.removeClass(S.loadingClass)
}}}function M(r){var k=S.url+"?q="+encodeURI(r);
for(var p in S.extraParams){k+="&"+p+"="+encodeURI(S.extraParams[p])
}return k
}function n(v){if(!v){return null
}if(I.data[v]){return I.data[v]
}if(S.matchSubset){for(var t=v.length-1;
t>=S.minChars;
t--){var p=v.substr(0,t);
var w=I.data[p];
if(w){var u=[];
for(var r=0;
r<w.length;
r++){var k=w[r];
var s=k[0];
if(Z(s,v)){u[u.length]=k
}}return u
}}}return null
}function Z(q,p){if(!S.matchCase){q=q.toLowerCase()
}var k=q.indexOf(p);
if(k==-1){return false
}return k==0||S.matchContains
}this.flushCache=function(){K()
};
this.setExtraParams=function(i){S.extraParams=i
};
this.findValue=function(){var k=W.val();
if(!S.matchCase){k=k.toLowerCase()
}var i=S.cacheLength?n(k):null;
if(i){e(k,i)
}else{if((typeof S.url=="string")&&(S.url.length>0)){$.get(M(k),function(p){p=F(p);
E(k,p);
e(k,p)
})
}else{e(k,null)
}}};
function e(v,u){if(u){W.removeClass(S.loadingClass)
}var s=(u)?u.length:0;
var p=null;
for(var t=0;
t<s;
t++){var w=u[t];
if(w[0].toLowerCase()==v.toLowerCase()){p=document.createElement("li");
if(S.formatItem){p.innerHTML=S.formatItem(w,t,s);
p.selectValue=w[0]
}else{p.innerHTML=w[0];
p.selectValue=w[0]
}var k=null;
if(w.length>1){k=[];
for(var r=1;
r<w.length;
r++){k[k.length]=w[r]
}}p.extra=k
}}if(S.onFindValue){setTimeout(function(){S.onFindValue(p)
},1)
}}function E(k,i){if(!i||!k||!S.cacheLength){return 
}if(!I.length||I.length>S.cacheLength){K();
I.length++
}else{if(!I[k]){I.length++
}}I.data[k]=i
}function X(k){var p=k.offsetLeft||0;
var i=k.offsetTop||0;
while(k=k.offsetParent){p+=k.offsetLeft;
i+=k.offsetTop
}return{x:p,y:i}
}};
jQuery.fn.autocomplete=function(B,A,C){A=A||{};
A.url=B;
A.data=((typeof C=="object")&&(C.constructor==Array))?C:null;
A.inputClass=A.inputClass||"ac_input";
A.resultsClass=A.resultsClass||"ac_results";
A.lineSeparator=A.lineSeparator||"\n";
A.cellSeparator=A.cellSeparator||"|";
A.minChars=A.minChars||1;
A.delay=A.delay||400;
A.matchCase=A.matchCase||0;
A.matchSubset=A.matchSubset||1;
A.matchContains=A.matchContains||0;
A.cacheLength=A.cacheLength||1;
A.mustMatch=A.mustMatch||0;
A.extraParams=A.extraParams||{};
A.loadingClass=A.loadingClass||"ac_loading";
A.selectFirst=A.selectFirst||false;
A.selectOnly=A.selectOnly||false;
A.maxItemsToShow=A.maxItemsToShow||-1;
A.autoFill=A.autoFill||false;
A.width=parseInt(A.width,10)||0;
this.each(function(){var D=this;
new jQuery.autocomplete(D,A)
});
return this
};
jQuery.fn.autocompleteArray=function(B,A){return this.autocomplete(null,A,B)
};
jQuery.fn.autocompleteCallback=function(B,A){return this.autocomplete(null,A,B())
};
jQuery.fn.indexOf=function(B){for(var A=0;
A<this.length;
A++){if(this[A]==B){return A
}}return -1
};