var Spry;if(!Spry){Spry={}}if(!Spry.Widget){Spry.Widget={}}Spry.Widget.BrowserSniff=function(){var c=navigator.appName.toString();var a=navigator.platform.toString();var f=navigator.userAgent.toString();this.mozilla=this.ie=this.opera=r=false;var i=/Opera.([0-9\.]*)/i;var e=/MSIE.([0-9\.]*)/i;var h=/gecko/i;var g=/safari\/([\d\.]*)/i;if(f.match(i)){r=f.match(i);this.opera=true;this.version=parseFloat(r[1])}else{if(f.match(e)){r=f.match(e);this.ie=true;this.version=parseFloat(r[1])}else{if(f.match(g)){this.safari=true;this.version=1.4}else{if(f.match(h)){var d=/rv:\s*([0-9\.]+)/i;r=f.match(d);this.mozilla=true;this.version=parseFloat(r[1])}}}}this.windows=this.mac=this.linux=false;this.Platform=f.match(/windows/i)?"windows":(f.match(/linux/i)?"linux":(f.match(/mac/i)?"mac":f.match(/unix/i)?"unix":"unknown"));this[this.Platform]=true;this.v=this.version;if(this.safari&&this.mac&&this.mozilla){this.mozilla=false}};Spry.is=new Spry.Widget.BrowserSniff();Spry.Widget.AutoSuggest=function(f,a,e,d,c){if(!this.isBrowserSupported()){return}c=c||{};this.init(f,a,e,d);Spry.Widget.Utils.setOptions(this,c);if(Spry.Widget.AutoSuggest.onloadDidFire){this.attachBehaviors()}else{Spry.Widget.AutoSuggest.loadQueue.push(this)}this.dataset.addObserver(this);var g=Spry.Widget.Utils.getElementID(a);var b=this;this._notifyDataset={onPostUpdate:function(){b.attachClickBehaviors()},onPreUpdate:function(){b.removeClickBehaviours()}};Spry.Data.Region.addObserver(g,this._notifyDataset);Spry.Widget.Utils.addEventListener(window,"unload",function(){b.destroy()},false);this.attachClickBehaviors();this.handleKeyUp(null);this.showSuggestions(false)};Spry.Widget.AutoSuggest.prototype.init=function(d,a,c,b){this.region=Spry.Widget.Utils.getElement(d);if(!this.region){return}this.minCharsType=false;this.containsString=false;this.loadFromServer=false;this.urlParam="";this.suggestionIsVisible=false;this.stopFocus=false;this.hasFocus=false;this.showSuggestClass="showSuggestClass";this.hideSuggestClass="hideSuggestClass";this.hoverSuggestClass="hoverSuggestClass";this.movePrevKeyCode=Spry.Widget.AutoSuggest.KEY_UP;this.moveNextKeyCode=Spry.Widget.AutoSuggest.KEY_DOWN;this.textElement=Spry.Widget.Utils.getFirstChildWithNodeNameAtAnyLevel(this.region,"INPUT");this.textElement.setAttribute("AutoComplete","off");this.suggestRegion=Spry.Widget.Utils.getElement(a);Spry.Widget.Utils.makePositioned(this.suggestRegion);Spry.Widget.Utils.addClassName(this.suggestRegion,this.hideSuggestClass);this.timerID=null;if(typeof c=="string"){this.dataset=window[c]}else{this.dataset=c}this.field=b;if(typeof b=="string"&&b.indexOf(",")!=-1){b=b.replace(/\s*,\s*/ig,",");this.field=b.split(",")}};Spry.Widget.AutoSuggest.prototype.isBrowserSupported=function(){return Spry.is.ie&&Spry.is.v>=5&&Spry.is.windows||Spry.is.mozilla&&Spry.is.v>=1.4||Spry.is.safari||Spry.is.opera&&Spry.is.v>=9};Spry.Widget.AutoSuggest.prototype.getValue=function(){if(!this.textElement){return""}return this.textElement.value};Spry.Widget.AutoSuggest.prototype.setValue=function(a){if(!this.textElement){return}this.textElement.value=a;this.showSuggestions(false)};Spry.Widget.AutoSuggest.prototype.focus=function(){if(!this.textElement){return}this.textElement.focus()};Spry.Widget.AutoSuggest.prototype.showSuggestions=function(a){if(this.region&&this.isVisibleSuggestion()!=a){if(a&&this.hasFocus){Spry.Widget.Utils.addClassName(this.region,this.showSuggestClass);if(Spry.is.ie&&Spry.is.version<7){this.createIframeLayer(this.suggestRegion)}}else{if(Spry.is.ie&&Spry.is.version<7){this.removeIframeLayer()}Spry.Widget.Utils.removeClassName(this.region,this.showSuggestClass)}}this.suggestionIsVisible=Spry.Widget.Utils.hasClassName(this.region,this.showSuggestClass)};Spry.Widget.AutoSuggest.prototype.isVisibleSuggestion=function(){return this.suggestionIsVisible};Spry.Widget.AutoSuggest.prototype.onDataChanged=function(a){var b=a.getData(true);var c=this.getValue();this.showSuggestions(b&&(!this.minCharsType||c.length>=this.minCharsType)&&(b.length>1||(b.length==1&&this.childs[0]&&this.childs[0].attributes.getNamedItem("spry:suggest").value!=this.getValue())))};Spry.Widget.AutoSuggest.prototype.nodeMouseOver=function(d,c){var a=this.childs.length;for(var b=0;b<a;b++){if(this.childs[b]!=c&&Spry.Widget.Utils.hasClassName(this.childs[b],this.hoverSuggestClass)){Spry.Widget.Utils.removeClassName(this.childs[b],this.hoverSuggestClass);break}}};Spry.Widget.AutoSuggest.prototype.nodeClick=function(b,a){if(a){this.setValue(a)}};Spry.Widget.AutoSuggest.prototype.handleKeyUp=function(c){if(this.timerID){clearTimeout(this.timerID);this.timerID=null}if(c&&this.isSpecialKey(c)){this.handleSpecialKeys(c);return}var a=this;var b=function(){a.timerID=null;a.loadDataSet()};if(!this.loadFromServer){b=function(){a.timerID=null;a.filterDataSet()}}this.timerID=setTimeout(b,200)};Spry.Widget.AutoSuggest.prototype.scrollVisible=function(c){if(typeof this.scrolParent=="undefined"){var a=c;this.scrolParent=false;while(!this.scrolParent){var d=Spry.Widget.Utils.getStyleProp(a,"overflow");if(!d||d.toLowerCase()=="scroll"){this.scrolParent=a;break}if(a==this.region){break}a=a.parentNode}}if(this.scrolParent!=false){var b=parseInt(Spry.Widget.Utils.getStyleProp(this.scrolParent,"height"),10);if(c.offsetTop<this.scrolParent.scrollTop){this.scrolParent.scrollTop=c.offsetTop}else{if(c.offsetTop+c.offsetHeight>this.scrolParent.scrollTop+b){this.scrolParent.scrollTop=c.offsetTop+c.offsetHeight-b+5;if(this.scrolParent.scrollTop<0){this.scrolParent.scrollTop=0}}}}};Spry.Widget.AutoSuggest.KEY_UP=38;Spry.Widget.AutoSuggest.KEY_DOWN=40;Spry.Widget.AutoSuggest.prototype.handleSpecialKeys=function(i){switch(i.keyCode){case this.moveNextKeyCode:case this.movePrevKeyCode:if(!(this.childs.length>0)||!this.getValue()){return}var f=this.childs.length-1;var d=false;var h=false;var g=this.dataset.getData();if(this.childs.length>1||(g&&g.length==1&&this.childs[0]&&this.childs[0].attributes.getNamedItem("spry:suggest").value!=this.getValue())){this.showSuggestions(true)}else{return}var b=Spry.Widget.Utils;for(var c=0;c<this.childs.length;c++){if(d){b.addClassName(this.childs[c],this.hoverSuggestClass);this.scrollVisible(this.childs[c]);break}if(b.hasClassName(this.childs[c],this.hoverSuggestClass)){b.removeClassName(this.childs[c],this.hoverSuggestClass);h=true;if(i.keyCode==this.moveNextKeyCode){d=true;continue}else{b.addClassName(this.childs[f],this.hoverSuggestClass);this.scrollVisible(this.childs[f]);break}}f=c}if(!h||(d&&c==this.childs.length)){b.addClassName(this.childs[0],this.hoverSuggestClass);this.scrollVisible(this.childs[0])}b.stopEvent(i);break;case 27:this.showSuggestions(false);break;case 13:if(!this.isVisibleSuggestion()){return}for(var c=0;c<this.childs.length;c++){if(Spry.Widget.Utils.hasClassName(this.childs[c],this.hoverSuggestClass)){var a=this.childs[c].attributes.getNamedItem("spry:suggest");if(a){this.setValue(a.value);this.handleKeyUp(null)}Spry.Widget.Utils.stopEvent(i);return false}}break;case 9:this.showSuggestions(false)}return};Spry.Widget.AutoSuggest.prototype.filterDataSet=function(){var d=this.containsString;var b=this.field;var g=this.getValue();if(this.previousString&&this.previousString==g){return}this.previousString=g;if(!g||(this.minCharsType&&this.minCharsType>g.length)){this.dataset.filter(function(i,j,h){return null});this.showSuggestions(false);return}var a=Spry.Widget.Utils.escapeRegExp(g);if(!d){a="^"+a}var c=new RegExp(a,"ig");if(this.maxListItems>0){this.dataset.maxItems=this.maxListItems}var f=function(m,o,j){if(m.maxItems>0&&m.maxItems<=m.data.length){return null}if(typeof b=="object"){var h=b.length;for(var k=0;k<h;k++){var n=o[b[k]];if(n&&n.search(c)!=-1){return o}}}else{var n=o[b];if(n&&n.search(c)!=-1){return o}}return null};this.dataset.filter(f);var e=this.dataset.getData();this.showSuggestions(e&&(!this.minCharsType||g.length>=this.minCharsType)&&(e.length>1||(e.length==1&&this.childs[0]&&this.childs[0].attributes.getNamedItem("spry:suggest").value!=g)))};Spry.Widget.AutoSuggest.prototype.loadDataSet=function(){var d=this.getValue();var c=this.dataset;c.cancelLoadData();c.useCache=false;if(!d||(this.minCharsType&&this.minCharsType>d.length)){this.showSuggestions(false);return}if(this.previousString&&this.previousString==d){var b=c.getData();this.showSuggestions(b&&(b.length>1||(b.length==1&&this.childs[0].attributes.getNamedItem("spry:suggest").value!=d)));return}this.previousString=d;var a=Spry.Widget.Utils.addReplaceParam(c.url,this.urlParam,d);c.setURL(a);c.loadData()};Spry.Widget.AutoSuggest.prototype.addMouseListener=function(c,d){var a=this;var b=Spry.Widget.Utils.addEventListener;b(c,"click",function(f){return a.nodeClick(f,d);a.handleKeyUp(null)},false);b(c,"mouseover",function(f){Spry.Widget.Utils.addClassName(c,a.hoverSuggestClass);a.nodeMouseOver(f,c)},false);b(c,"mouseout",function(f){Spry.Widget.Utils.removeClassName(c,a.hoverSuggestClass);a.nodeMouseOver(f,c)},false)};Spry.Widget.AutoSuggest.prototype.removeMouseListener=function(c,d){var a=this;var b=Spry.Widget.Utils.removeEventListener;b(c,"click",function(f){a.nodeClick(f,d);a.handleKeyUp(null)},false);b(c,"mouseover",function(f){Spry.Widget.Utils.addClassName(c,a.hoverSuggestClass);a.nodeMouseOver(f,c)},false);b(c,"mouseout",function(f){Spry.Widget.Utils.removeClassName(c,a.hoverSuggestClass);a.nodeMouseOver(f,c)},false)};Spry.Widget.AutoSuggest.prototype.attachClickBehaviors=function(){var b=this;var a=Spry.Utils.getNodesByFunc(this.region,function(d){if(d.nodeType==1){var c=d.attributes.getNamedItem("spry:suggest");if(c){b.addMouseListener(d,c.value);return true}}return false});this.childs=a};Spry.Widget.AutoSuggest.prototype.removeClickBehaviours=function(){var b=this;var a=Spry.Utils.getNodesByFunc(this.region,function(d){if(d.nodeType==1){var c=d.attributes.getNamedItem("spry:suggest");if(c){b.removeMouseListener(d,c.value);return true}}return false})};Spry.Widget.AutoSuggest.prototype.destroy=function(){this.removeClickBehaviours();Spry.Data.Region.removeObserver(Spry.Widget.Utils.getElementID(this.suggestRegion),this._notifyDataset);if(this.event_handlers){for(var b=0;b<this.event_handlers.length;b++){Spry.Widget.Utils.removeEventListener(this.event_handlers[b][0],this.event_handlers[b][1],this.event_handlers[b][2],false)}}for(var a in this){if(typeof this[a]!="function"){try{delete this[a]}catch(c){}}}};Spry.Widget.AutoSuggest.onloadDidFire=false;Spry.Widget.AutoSuggest.loadQueue=[];Spry.Widget.AutoSuggest.processLoadQueue=function(c){Spry.Widget.AutoSuggest.onloadDidFire=true;var d=Spry.Widget.AutoSuggest.loadQueue;var a=d.length;for(var b=0;b<a;b++){d[b].attachBehaviors()}};Spry.Widget.AutoSuggest.addLoadListener=function(a){if(typeof window.addEventListener!="undefined"){window.addEventListener("load",a,false)}else{if(typeof document.addEventListener!="undefined"){document.addEventListener("load",a,false)}else{if(typeof window.attachEvent!="undefined"){window.attachEvent("onload",a)}}}};Spry.Widget.AutoSuggest.addLoadListener(Spry.Widget.AutoSuggest.processLoadQueue);Spry.Widget.AutoSuggest.prototype.attachBehaviors=function(){this.event_handlers=[];var b=this;var a=function(f){b.handleKeyUp(f)};this.event_handlers.push([this.textElement,"keydown",a]);this.event_handlers.push([this.textElement,"focus",function(f){if(b.stopFocus){b.handleKeyUp(f)}b.hasFocus=true;b.stopFocus=false}]);this.event_handlers.push([this.textElement,"drop",a]);this.event_handlers.push([this.textElement,"dragdrop",a]);var d=false;if(Spry.is.opera){d=function(f){setTimeout(function(){if(!b.clickInList){b.showSuggestions(false)}else{b.stopFocus=true;b.textElement.focus()}b.clickInList=false;b.hasFocus=false},100)}}else{d=function(f){if(!b.clickInList){b.showSuggestions(false)}else{b.stopFocus=true;b.textElement.focus()}b.clickInList=false;b.hasFocus=false}}this.event_handlers.push([this.textElement,"blur",d]);this.event_handlers.push([this.suggestRegion,"mousedown",function(f){b.clickInList=true}]);for(var c=0;c<this.event_handlers.length;c++){Spry.Widget.Utils.addEventListener(this.event_handlers[c][0],this.event_handlers[c][1],this.event_handlers[c][2],false)}};Spry.Widget.AutoSuggest.prototype.createIframeLayer=function(b){if(typeof this.iframeLayer=="undefined"){var a=document.createElement("iframe");a.tabIndex="-1";a.src='javascript:"";';a.scrolling="no";a.frameBorder="0";a.className="iframeSuggest";b.parentNode.appendChild(a);this.iframeLayer=a}this.iframeLayer.style.left=b.offsetLeft+"px";this.iframeLayer.style.top=b.offsetTop+"px";this.iframeLayer.style.width=b.offsetWidth+"px";this.iframeLayer.style.height=b.offsetHeight+"px";this.iframeLayer.style.display="block"};Spry.Widget.AutoSuggest.prototype.removeIframeLayer=function(){if(this.iframeLayer){this.iframeLayer.style.display="none"}};if(!Spry.Widget.Utils){Spry.Widget.Utils={}}Spry.Widget.Utils.specialSafariNavKeys=",63232,63233,63234,63235,63272,63273,63275,63276,63277,63289,";Spry.Widget.Utils.specialCharacters=",9,13,27,38,40,";Spry.Widget.Utils.specialCharacters+=Spry.Widget.Utils.specialSafariNavKeys;Spry.Widget.AutoSuggest.prototype.isSpecialKey=function(a){return Spry.Widget.Utils.specialCharacters.indexOf(","+a.keyCode+",")!=-1||this.moveNextKeyCode==a.keyCode||this.movePrevKeyCode==a.keyCode};Spry.Widget.Utils.getElementID=function(a){if(typeof a=="string"&&a){return a}return a.getAttribute("id")};Spry.Widget.Utils.getElement=function(a){if(a&&typeof a=="string"){return document.getElementById(a)}return a};Spry.Widget.Utils.addReplaceParam=function(c,h,g){var f="";var e="";var d=c.indexOf("?");if(d!=-1){f=c.slice(0,d);e=c.slice(d+1)}else{f=c}e=e.replace("?","");var a=e.split("&");if(h.lastIndexOf("/")!=-1){h=h.slice(h.lastIndexOf("/")+1)}for(d=0;d<a.length;d++){var b=a[d].split("=");if((b[0]&&b[0]==decodeURI(h))||a[d]==decodeURI(h)){a[d]=null}}a[a.length]=encodeURI(h)+"="+encodeURI(g);e="";for(d=0;d<a.length;d++){if(a[d]){e+="&"+a[d]}}e=e.slice(1);c=f+"?"+e;return c};Spry.Widget.Utils.addClassName=function(a,b){if(!a){return}if(!a.className){a.className=""}if(!a||a.className.search(new RegExp("\\b"+b+"\\b"))!=-1){return}a.className+=" "+b};Spry.Widget.Utils.removeClassName=function(b,a){if(!b){return}if(!b.className){b.className="";return}b.className=b.className.replace(new RegExp("\\s*\\b"+a+"\\b","g"),"")};Spry.Widget.Utils.hasClassName=function(b,a){if(!b||!a){return false}if(!b.className){b.className=""}return b.className.search(new RegExp("\\s*\\b"+a+"\\b"))!=-1};Spry.Widget.Utils.addEventListener=function(d,b,c,a){try{if(d.addEventListener){d.addEventListener(b,c,a)}else{if(d.attachEvent){d.attachEvent("on"+b,c,a)}}}catch(f){}};Spry.Widget.Utils.removeEventListener=function(d,b,c,a){try{if(d.removeEventListener){d.removeEventListener(b,c,a)}else{if(d.detachEvent){d.detachEvent("on"+b,c,a)}}}catch(f){}};Spry.Widget.Utils.stopEvent=function(a){a.cancelBubble=true;a.returnValue=false;try{this.stopPropagation(a)}catch(b){}try{this.preventDefault(a)}catch(b){}};Spry.Widget.Utils.stopPropagation=function(a){if(a.stopPropagation){a.stopPropagation()}else{a.cancelBubble=true}};Spry.Widget.Utils.preventDefault=function(a){if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}};Spry.Widget.Utils.setOptions=function(d,c,a){if(!c){return}for(var b in c){if(typeof a!="undefined"&&a&&typeof c[b]=="undefined"){continue}d[b]=c[b]}};Spry.Widget.Utils.firstValid=function(){var a=null;for(var b=0;b<Spry.Widget.Utils.firstValid.arguments.length;b++){if(typeof Spry.Widget.Utils.firstValid.arguments[b]!="undefined"){a=Spry.Widget.Utils.firstValid.arguments[b];break}}return a};Spry.Widget.Utils.camelize=function(a){var e=a.split("-");var b=true;var c="";for(var d=0;d<e.length;d++){if(e[d].length>0){if(b){c=e[d];b=false}else{var f=e[d];c+=f.charAt(0).toUpperCase()+f.substring(1)}}}return c};Spry.Widget.Utils.getStyleProp=function(c,g){var d;var b=Spry.Widget.Utils.camelize(g);try{d=c.style[b];if(!d){if(document.defaultView&&document.defaultView.getComputedStyle){var a=document.defaultView.getComputedStyle(c,null);d=a?a.getPropertyValue(g):null}else{if(c.currentStyle){d=c.currentStyle[b]}}}}catch(f){}return d=="auto"?null:d};Spry.Widget.Utils.makePositioned=function(a){var b=Spry.Widget.Utils.getStyleProp(a,"position");if(!b||b=="static"){a.style.position="relative";if(window.opera){a.style.top=0;a.style.left=0}}};Spry.Widget.Utils.escapeRegExp=function(a){return a.replace(/([\.\/\]\[\{\}\(\)\\\$\^\?\*\|\!\=\+\-])/g,"\\$1")};Spry.Widget.Utils.getFirstChildWithNodeNameAtAnyLevel=function(a,c){var b=a.getElementsByTagName(c);if(b){return b[0]}return null};