var tagQuery=new YAHOO.widget.DS_XHR("/services/Tags",["results","name","id"]);tagQuery.responseType=YAHOO.widget.DS_XHR.TYPE_JSON;tagQuery.scriptQueryParam="name";function TagSelector(A,D,C,B){this.tagField=A;this.optionalTagArea=C;this.entityType=B;this.selector=new YAHOO.widget.AutoComplete(A,D,tagQuery);this.selector.useShadow=true;this.selector.delimChar=",";this.selector.queryDelay=0.3;this.selector.maxResultsDisplayed=20;this.selector.tagSelector=this;this.selectedTags=new Array();this.selector.formatResult=function(E,F){return E[0]};this.selector.doBeforeExpandContainer=function(E,F,I,H){var G=YAHOO.util.Dom.getXY(E);G[1]+=YAHOO.util.Dom.get(E).offsetHeight;YAHOO.util.Dom.setXY(F,G);return true};this.selector.itemSelectEvent.subscribe(function(H,G){var E=G[0];var F=E.tagSelector;if(F.autoSubmit){F.autoSubmit();return }if(F.isSingleSelect){return }F.lastTagCount++;if(F.optionalTagArea){F.loadOptionalRelatedTags()}});this.selector.dataReturnEvent.subscribe(function(H,G){var E=G[0];var F=E.tagSelector;F.resultCount=G[2].length;if(F.matchCallback){F.matchCallback(F.resultCount)}});if(this.entityType!=11){this.updateListingType()}YAHOO.util.Event.addListener(this.tagField,"keypress",this.checkTagsKeyed,this,true);this.lastTagCount=this.tagField.value.split(/,/).length}TagSelector.prototype.setSingleSelect=function(A){this.isSingleSelect=A;if(this.isSingleSelect){this.selector.delimChar=""}};TagSelector.prototype.useShortlist=function(){tagQuery.scriptQueryAppend+="&shortlist=true"};TagSelector.prototype.setAutoSubmit=function(A){this.autoSubmit=A};TagSelector.prototype.setMatchCallback=function(A){this.matchCallback=A};TagSelector.prototype.checkTagsKeyed=function(){if(this.isSingleSelect){return }var A=this.tagField.value;A=A.replace(/\n/,",");A=A.replace(/, *,/,",");this.tagField.value=A;var B=this.tagField.value.split(/,/).length;if(B!=this.lastTagCount){this.lastTagCount=B;if(this.optionalTagArea){this.loadOptionalRelatedTags()}}};TagSelector.prototype.updateListingType=function(B){this.listingType=B;var A="event=getTagsWithSimilarName&entityType="+this.entityType;if(B){A+="&listingType="+B}tagQuery.scriptQueryAppend=A};TagSelector.prototype.loadOptionalRelatedTags=function(){var B=this;var A="/services/Tags?event=getRelatedTags&entityType="+this.entityType+"&listingType="+this.listingType+"&tags="+this.tagField.value;YAHOO.util.Connect.asyncRequest("GET",A,{success:B.renderOptionalRelatedTags,failure:function(C){},scope:B})};TagSelector.prototype.renderOptionalRelatedTags=function(B){var G=", "+this.tagField.value.toLowerCase()+", ";var E=JSON.parse(B.responseText);var L=new Array();for(var D=0;D<E.length;D++){var M=E[D];var K=RegExp(", "+M.name+", ");if(G.indexOf(", "+M.name.toLowerCase()+", ")>=0){continue}for(var C=0;C<L.length;C++){if(L[C].name==M.name){break}}if(C==L.length){L.push(M)}}var H=this.tagField.value;L.sort(function(O,N){if(O.mainName!=N.mainName){return H.indexOf(O.mainName)-H.indexOf(N.mainName)}else{if(O.name<N.name){return -1}else{if(O.name>N.name){return 1}else{return 0}}}});var F="<div style='font-weight:bold'>Related Tags:</div><div>";var I=null;for(var D=0;D<L.length;D++){var M=L[D];if(I!=null&&I!=M.mainName){F+="<div style='width:100px;height:1px;background-color:#000;margin:5px 0px;'></div>"}F+="<input type='checkbox' name='tag"+encode(M.name)+"' value='"+encode(M.name)+"' class='radioCheck'>"+M.name+"<BR>";I=M.mainName}F+="</div>";var A=document.getElementById(this.optionalTagArea);A.innerHTML=F;if(L.length==0){A.style.display="none"}else{A.style.display="";var J=YAHOO.util.Dom.getXY(this.tagField);J[0]+=this.tagField.offsetWidth+20;YAHOO.util.Dom.setXY(A,J);for(var D=0;D<L.length;D++){YAHOO.util.Event.addListener(A.childNodes[D+1],"click",this.selectRelatedTag,this,true)}}};TagSelector.prototype.selectRelatedTag=function(A){var C=YAHOO.util.Event.getTarget(A);if(!C.checked){return }var D=C.name.substring(3);var B=decode(C.value);if(!this.tagField.value.match(/, *$/)){this.tagField.value+=", "}this.tagField.value+=B+", ";this.loadOptionalRelatedTags();this.tagField.focus()};TagSelector.prototype.toggleTag=function(B){var C=this.tagField.value;var A=(C.indexOf(B)<0);if(A){tagSelector.addTag(B)}else{tagSelector.removeTag(B)}return A};TagSelector.prototype.addTag=function(B){var A=this.tagField.value;if(A.length>0){if(!this.tagField.value.match(/, *$/)){A+=", "}}A+=B;this.tagField.value=A+", ";this.tagField.focus();this.loadOptionalRelatedTags()};TagSelector.prototype.removeTag=function(B){var A=this.tagField.value;A=A.replace(B,"");A=A.replace(/,\s*,/,",");A=A.replace(/^,\s*/,"");A=A.replace(/,\s*$/,"");this.tagField.value=A;this.tagField.focus();this.loadOptionalRelatedTags()};
