AJS.Labels=(function(a){return{operationInProgress:false,updateStatus:function(b){a("#labelOperationStatus").html(b);if(b!=""){a("#waitImageAndStatus").addClass("open")}else{a("#waitImageAndStatus").removeClass("open")}},startOperation:function(b){AJS.Labels.operationInProgress=true;a("#errorSpan").html("");AJS.Labels.labelOperationError("");AJS.Labels.updateStatus(b)},finishOperation:function(){AJS.Labels.updateStatus("");AJS.Labels.operationInProgress=false},handleError:function(b){AJS.Labels.operationInProgress=false;AJS.Labels.updateStatus("");a("#errorSpan").html(b)},labelOperationError:function(b){a("#labelOperationErrorMessage").html(b);if(b!=""){AJS.setVisible("#labelOperationErrorContainer",true)}else{AJS.setVisible("#labelOperationErrorContainer",false)}},addLabelFromInput:function(){return AJS.Labels.addLabel(a("#labelsString").val())},addLabel:function(b){if(a("#labelsString").val()!=""){AJS.setVisible("#labels-section-title-none",false)}if(!AJS.Labels.operationInProgress&&b&&b!=""){AJS.Labels.startOperation("Adding label...");var c={entityIdString:AJS.params.pageId,labelString:b};AJS.safe.ajax({type:"POST",url:AJS.params.contextPath+"/json/addlabelactivity.action",data:c,success:AJS.Labels.addLabelCallback,error:AJS.Labels.addLabelErrorHandler,dataType:"json"})}return false},addLabelCallback:function(b){if(b.success){a("#labelsList").html(a("#labelsList").html()+b.response);a(".labels-editor .remove-label").unbind("click");a(".labels-editor .remove-label").click(AJS.Labels.removeLabel);a("#labelsString").val("")}else{AJS.Labels.labelOperationError(b.response)}a("#labelsString").focus();AJS.safe.ajax({url:AJS.params.contextPath+"/json/suggestlabelsactivity.action",data:{entityIdString:AJS.params.pageId},success:AJS.Labels.suggestedLabelsCallback,error:AJS.Labels.suggestedLabelsErrorHandler,dataType:"json"});AJS.Labels.finishOperation()},addLabelErrorHandler:function(){AJS.Labels.handleError("[41a] Error connecting to the server. The labels have not been updated.")},removeLabel:function(){if(!AJS.Labels.operationInProgress){AJS.Labels.startOperation("Removing label ...");var c=AJS.$(this).parent().attr("id").replace(/^label-/,"");var b={entityIdString:AJS.params.pageId,labelIdString:c};AJS.safe.ajax({type:"POST",url:AJS.params.contextPath+"/json/removelabelactivity.action",data:b,success:AJS.Labels.removeLabelCallback(c),error:AJS.Labels.removeLabelErrorHandler,dataType:"json"})}return false},removeLabelCallback:function(b){return function(c){if(c.success){var d=a("#label-"+b);d.fadeOut("normal",function(){d.remove();if(a("#labelsList").children().length==0){AJS.setVisible("#labels-section-title-none",true)}})}else{AJS.Labels.labelOperationError(c.response)}AJS.Labels.finishOperation()}},removeLabelErrorHandler:function(b){var c="Error connecting to the server. The labels have not been updated";if(b){c+=": "+b}AJS.Labels.handleError(c)},suggestedLabelsCallback:function(b){if(!b.success){return}a("#suggestedLabelsSpan").html(b.response);a("#suggestedLabelsSpan .suggested-label").click(function(d){var f=a("#labelsString").val();if(f.length>0){f+=" "}f+=a(this).text();a("#labelsString").val(f);var c=this;if(a(this).parent().find("a").length==1){c=a(this).parent()}a(c).fadeOut(function(){a(this).remove()});d.preventDefault()})},suggestedLabelsErrorHandler:function(b){var c="Error finding suggested labels. The labels have not been updated";if(b){c+=": "+b}AJS.Labels.handleError(c)},bindAutocomplete:function(){var g=a("#labelsString"),f=g.parents("#add-labels-form").length;if(!g.length){return}var d=function(h){a("#labelsAutocompleteList").append(h)};var e=function(p){if(p.find("a.label-suggestion").length){var q=a("span",p);var m=a.data(q[0],"properties");if(f){AJS.Labels.addLabel(m.name)}else{var o=g.val();var n=AJS.Labels.queryTokens;var s=-1,k="";for(var l=0;l<n.length;l++){k=n[l];var j=o.lastIndexOf(k);if(j>s){s=j}}if(s!=-1){var r=o.substr(0,s);var h=o.substr(s+k.length).match(/^\s+/);if(h){r+=h[0]}g.val(r+m.name)}else{g.val(m.name)}}}};var b=function(){if(!a("#labelsAutocompleteList .label-suggestion").length){this.hide()}else{if(!f){var k=a("#labelsAutocompleteList a.label-suggestion");for(var h=0,j=k.length;h<j;h++){k.get(h).href="#"}}}};var c="/labels/autocompletelabel.action";a(window).bind("quicksearch.ajax-success",function(i,h){if(h.url==c){AJS.Labels.queryTokens=(h.json&&h.json.queryTokens)||[];return false}});a(window).bind("quicksearch.ajax-error",function(i,h){if(h.url==c){AJS.Labels.queryTokens=[];return false}});g.quicksearch(c,b,{makeParams:function(h){return{query:h,contentId:AJS.params.pageId||""}},dropdownPlacement:d,ajsDropDownOptions:{selectionHandler:function(i,h){e(h);this.hide();i.preventDefault()}}})},TagExtractor:function(b,c){this.tagPrefix=b;this.extractFromUrls=c;this.TAG_END=" ";this.parseTagsTo=function(j,g){var i=function(l,n){var m=l;while(m>0){switch(n[m]){case"/":case"&":return true;case" ":return false;default:m--}}return false};var f=0;while(f<j.length){var e=j.indexOf(this.tagPrefix,f);if(e==-1){return}if(!this.extractFromUrls&&i(e,j)){f=e+1}else{var h=e+this.tagPrefix.length;var d=j.indexOf(this.TAG_END,h);var k=j.indexOf(this.tagPrefix,h);if(k!=-1&&(d==-1||k<d)){d=k}if(d==-1){d=j.length}if(d!=e+this.tagPrefix.length){g(j.substring(h,d),h,d)}f=d}}}}}})(AJS.$);AJS.toInit(function(){AJS.Labels.bindAutocomplete()});
AJS.toInit(function(c){var b=function(d){c("#labels_div").toggleClass("hidden");c("#labels_info").toggleClass("hidden");if(c("#labels_div").hasClass("hidden")){c("#labels_info").html(c("#labelsString").val().toLowerCase());c("#labels_edit_link").html("Edit")}else{AJS.safe.ajax({url:AJS.Data.get("context-path")+"/json/suggestlabelsactivity.action",data:{entityIdString:AJS.params.pageId},success:AJS.Labels.suggestedLabelsCallback,error:AJS.Labels.suggestedLabelsErrorHandler,dataType:"json"});c("#labels_edit_link").html("Done")}if(d){d.preventDefault()}};var a=c("#labelsShowing");if(a.length&&a.val()=="true"){b()}c("#labels_edit_link").click(b)});

