jQuery.namespace("jira.widget.autocomplete");jira.widget.autocomplete=function(){var inFocus;var delay=function(callback,l){if(delay.t){clearTimeout(delay.t);delay.t=undefined}delay.t=setTimeout(callback,l*1000)};var isValidKey=function(keyCode){var invalidKeys=[13,38,14,25,27,40,9,224];for(var i=0;i<invalidKeys.length;i++){if(invalidKeys[i]===keyCode){return false}}return true};return{dispatcher:function(){},getSavedResponse:function(){},saveResponse:function(){},renderSuggestions:function(){},disable:function(){this.disabled=true},enable:function(){this.disabled=false},set:function(options){for(var name in options){if(options.hasOwnProperty(name)){this[name]=options[name]}}},completeField:function(value){if(value){this.field.val(value).focus()}},addSuggestionControls:function(suggestionNodes){var that=this;var evaluateIndex=function(idx,max){var minBoundary=(that.autoSelectFirst===false)?-1:0;if(that.allowArrowCarousel){if(idx>max){return minBoundary}else{if(idx<minBoundary){return max}else{return idx}}}else{if(idx>max){return max}else{if(idx<minBoundary){that.responseContainer.scrollTop(0);return minBoundary}else{return idx}}}};var setActive=function(idx){if(that.selectedIndex!==undefined&&that.selectedIndex>-1){that.suggestionNodes[that.selectedIndex][0].removeClass("active")}that.selectedIndex=evaluateIndex(idx,that.suggestionNodes.length-1);if(that.selectedIndex>-1){that.suggestionNodes[that.selectedIndex][0].addClass("active")}};var evaluateIfActive=function(){return that.suggestionNodes&&that.suggestionNodes[that.selectedIndex]&&that.suggestionNodes[that.selectedIndex][0].hasClass("active")};var keyPressHandler=function(e){if(that.responseContainer.is(":visible")){if(e.keyCode===13){if(evaluateIfActive()){that.completeField(that.suggestionNodes[that.selectedIndex][1])}e.preventDefault()}}};var keyboardNavigateHandler=function(e){if(that.responseContainer.is(":visible")){that.field.focus();if(e.keyCode===40){setActive(that.selectedIndex+1);if(that.selectedIndex>=0){var containerHeight=that.responseContainer.height();var bottom=that.suggestionNodes[that.selectedIndex][0].position().top+that.suggestionNodes[that.selectedIndex][0].outerHeight();if(bottom-containerHeight>0){that.responseContainer.scrollTop(that.responseContainer.scrollTop()+bottom-containerHeight+2)}}else{that.responseContainer.scrollTop(0)}e.preventDefault()}else{if(e.keyCode===38){setActive(that.selectedIndex-1);if(that.selectedIndex>=0){var top=that.suggestionNodes[that.selectedIndex][0].position().top;if(top<0){that.responseContainer.scrollTop(that.responseContainer.scrollTop()+top-2)}}e.preventDefault()}else{if(e.keyCode===9&&evaluateIfActive()){that.completeField(that.suggestionNodes[that.selectedIndex][1]);e.preventDefault()}}}}};if(suggestionNodes.length){this.selectedIndex=0;this.suggestionNodes=suggestionNodes;for(var i=0;i<that.suggestionNodes.length;i++){(function(idx){that.suggestionNodes[idx][0].mouseover(function(){if(that.dropdownController.displayed){setActive(idx)}}).mouseout(function(){if(idx===0){that.selectedIndex=-1}jQuery(this).removeClass("active")}).click(function(){that.completeField(that.suggestionNodes[idx][1])})})(i)}if(!this.keyboardHandlerBinded){jQuery(this.field).keypress(keyPressHandler);if(jQuery.browser.mozilla){jQuery(this.field).keypress(keyboardNavigateHandler)}else{jQuery(this.field).keydown(keyboardNavigateHandler)}this.keyboardHandlerBinded=true}if(that.autoSelectFirst===false){setActive(-1)}else{setActive(0)}inFocus=this}},clearResponseContainer:function(){this.responseContainer.empty();this.suggestionNodes=undefined},delay:delay,buildResponseContainer:function(){var inputParent=this.field.parent().addClass("atlassian-autocomplete");this.responseContainer=jQuery(document.createElement("div"));this.responseContainer.addClass("suggestions").css({top:this.field.outerHeight()+"px"}).appendTo(inputParent)},keyUpHandler:function(e){if(this.field.val().length>this.minQueryLength-1){if((this.responseContainer&&!this.responseContainer.is(":visible")&&(e.keyCode==38||e.keyCode==40))||isValidKey(e.keyCode)){if(!this.responseContainer){this.buildResponseContainer()}this.dispatcher(this.field.val())}}return e},addMultiSelectAdvice:function(delim){var that=this;var alertUserValueAlreadyExists=function(val){if(!alertUserValueAlreadyExists.isAlerting){alertUserValueAlreadyExists.isAlerting=true;var userAlert=jQuery(document.createElement("div")).css({"float":"left",display:"none"}).addClass("warningBox").html("Oops! You have already entered the value <em>"+val+"</em>").appendTo(that.field.parent()).show("fast",function(){that.delay(function(){userAlert.hide("fast",function(){userAlert.remove();alertUserValueAlreadyExists.isAlerting=false})},4)})}};jQuery.aop.before({target:this,method:"dispatcher"},function(innvocation){innvocation[0]=jQuery.trim(this.field.val().match(new RegExp("[^"+delim+"]*$"))[0]);return innvocation});jQuery.aop.before({target:this,method:"completeField"},function(arguments){var valueToAdd=arguments[0],untrimmedVals=this.field.val().split(delim);var trimmedVals=jQuery(untrimmedVals).map(function(){return jQuery.trim(this)}).get();if(!this.allowDuplicates&&this.field.val().match(new RegExp("((^)|(\\s+)|("+delim+"))"+valueToAdd+"\\s*"+delim))){alertUserValueAlreadyExists(valueToAdd);trimmedVals[trimmedVals.length-1]=""}else{trimmedVals[trimmedVals.length-1]=valueToAdd;trimmedVals[trimmedVals.length]=""}arguments[0]=trimmedVals.join(delim.replace(/([^\s]$)/,"$1 "));return arguments})},addDropdownAdvice:function(){jQuery.aop.after({target:this,method:"buildResponseContainer"},function(args){this.dropdownController=jira.widget.dropdown.Autocomplete({target:this,method:"renderSuggestions"},this.responseContainer);return args});jQuery.aop.after({target:this,method:"renderSuggestions"},function(args){if(this.responseContainer.outerWidth()<460){this.responseContainer.css({width:"460px"})}if(args&&args.length>0){this.dropdownController.displayDropdown()}else{this.dropdownController.hideDropdown()}return args});jQuery.aop.after({target:this,method:"completeField"},function(args){this.dropdownController.hideDropdown();return args});jQuery.aop.after({target:this,method:"keyUpHandler"},function(e){if((!(this.field.val().length>this.minQueryLength-1)||e.keyCode===27)&&this.dropdownController&&this.dropdownController.displayed){this.dropdownController.hideDropdown();if(e.keyCode===27){e.stopPropagation()}}return e})},init:function(options){var that=this;this.set(options);this.field=jQuery("#"+this.fieldID).attr("autocomplete","off").keyup(function(e){if(!that.disabled){that.keyUpHandler(e)}}).keydown(function(e){var ESC_KEY=27;if(e.keyCode===ESC_KEY&&that.responseContainer&&that.responseContainer.is(":visible")){e.preventDefault()}}).click(function(e){if(inFocus===that){e.stopPropagation()}});this.addDropdownAdvice();if(options.delimChar){this.addMultiSelectAdvice(options.delimChar)}}}}();jira.widget.autocomplete.REST=function(){var that=begetObject(jira.widget.autocomplete);that.dispatcher=function(reqFieldVal){var that=this;if(reqFieldVal.length<this.minQueryLength){return}if(!this.getSavedResponse(reqFieldVal)){this.delay(function(){var params=that.getAjaxParams();params.data.query=reqFieldVal;params.success=function(data){that.saveResponse(reqFieldVal,data);that.responseContainer.scrollTop(0);that.renderSuggestions(data)};AJS.$.ajax(params)},that.queryDelay)}else{that.renderSuggestions(that.getSavedResponse(reqFieldVal));that.responseContainer.scrollTop(0)}};that.getAjaxParams=function(){};that.getSavedResponse=function(val){if(!this.requested){this.requested={}}return this.requested[val]};that.saveResponse=function(val,response){if(typeof val==="string"&&typeof response==="object"){if(!this.requested){this.requested={}}this.requested[val]=response}};return that}();jira.widget.autocomplete.Users=function(options){var that=begetObject(jira.widget.autocomplete.REST);that.getAjaxParams=function(){return{url:contextPath+"/rest/api/1.0/users/picker",data:{fieldName:options.fieldID},dataType:"json",type:"GET"}};that.renderSuggestions=function(response){var resultsContainer,suggestionNodes=[];this.clearResponseContainer();if(response&&response.users&&response.users.length>0){resultsContainer=jQuery("<ul/>").appendTo(this.responseContainer);jQuery(response.users).each(function(){suggestionNodes.push([jQuery("<li/>").html(this.html).appendTo(resultsContainer),this.name])})}if(response.footer){this.responseContainer.append(jQuery("<div/>").addClass("yui-ac-ft").html(response.footer).css("display","block"))}if(suggestionNodes.length>0){that.addSuggestionControls(suggestionNodes)}return suggestionNodes};options.minQueryLength=2;options.queryDelay=0.25;that.init(options);return that};jira.widget.autocomplete.Issues=function(options){var that=begetObject(jira.widget.autocomplete.REST);that.getAjaxParams=function(){return{url:contextPath+"/rest/api/1.0/issues/picker",data:options.ajaxData,dataType:"json",type:"GET"}};that.renderSuggestions=function(response){var resultsContainer,suggestionNodes=[];this.clearResponseContainer();if(response&&response.sections&&response.sections.length>0){resultsContainer=AJS.$("<ul/>").appendTo(this.responseContainer);AJS.$(response.sections).each(function(){var section=this;var subSection=AJS.$("<div/>").attr("id",options.fieldID+"_s_"+section.id).addClass("yag").text(section.label);if(section.sub){subSection.append(AJS.$("<span/>").addClass("yagt").text("("+section.sub+")"))}resultsContainer.append(AJS.$("<li/>").append(subSection).mouseover(function(){AJS.$(this).addClass("active")}).mouseout(function(){AJS.$(this).removeClass("active")}));if(section.msg){var msg=AJS.$("<div/>").attr("id",options.fieldID+"_i_"+section.id+"_n").addClass("yad").text(section.msg);resultsContainer.append(AJS.$("<li/>").append(msg).mouseover(function(){AJS.$(this).addClass("active")}).mouseout(function(){AJS.$(this).removeClass("active")}))}if(section.issues&&section.issues.length>0){AJS.$(section.issues).each(function(){var imgUrl;if(/^http/.test(this.img)){imgUrl=this.img}else{imgUrl=contextPath+this.img}var issueNode=AJS.$("<li/>").append(AJS.$("<div/>").attr("id",options.fieldID+"_i_"+section.id+"_"+this.key).addClass("yad").append(AJS.$("<table/>").addClass("yat").attr({cellpadding:"0",cellspacing:"0"}).append(AJS.$("<tr/>").append(AJS.$("<td/>").append(AJS.$("<img/>").attr("src",imgUrl))).append(AJS.$("<td/>").append(AJS.$("<div/>").addClass("yak").html(this.keyHtml))).append(AJS.$("<td/>").css("width","100%").html(this.summary)))));resultsContainer.append(issueNode);suggestionNodes.push([issueNode,this.key])})}});that.addSuggestionControls(suggestionNodes);return suggestionNodes}};options.minQueryLength=1;options.queryDelay=0.25;that.init(options);return that};jira.widget.autocomplete.Users.init=function(parent){AJS.$(".user-picker-params",parent).each(function(){var params={};AJS.$(this).find("input").each(function(){var $this=AJS.$(this);params[$this.attr("id")]=$this.val()});AJS.$("#"+params.fieldName+"_container a.popup-trigger").click(function(e){if(!params.formName){params.formName=AJS.$(":input[name='"+params.fieldName+"']").parents("form").attr("name")}var url=contextPath;if(params.actionToOpen){url=url+params.actionToOpen}else{url=url+"/secure/popups/UserPickerBrowser.jspa"}url+="?formName="+params.formName+"&";url+="multiSelect="+params.multiSelect+"&";url+="element="+params.fieldName;var vWinUsers=window.open(url,"UserPicker","status=yes,resizable=yes,top=100,left=200,width=580,height=750,scrollbars=yes");vWinUsers.opener=self;vWinUsers.focus();e.preventDefault()});if(params.userPickerEnabled==="true"){jira.widget.autocomplete.Users({fieldID:params.fieldName,delimChar:params.multiSelect==="false"?undefined:",",ajaxData:{fieldName:params.fieldName}})}})};jira.widget.autocomplete.Issues.init=function(){AJS.$(".issue-picker-params").each(function(){var params={};AJS.$(this).find("input").each(function(){var $this=AJS.$(this);params[$this.attr("id")]=$this.val()});AJS.$("#"+params.fieldName+"_container a.popup-trigger").click(function(e){var url=contextPath+"/secure/popups/IssuePicker.jspa?";url+="formName="+params.formName+"&";url+="linkFieldName="+params.fieldName+"&";url+="currentIssue="+params.currentIssue+"&";url+="singleSelectOnly="+params.singleSelectOnly+"&";url+="showSubTasks="+params.showSubTasks+"&";url+="showSubTasksParent="+params.showSubTaskParent;if(params.selectedProjectId&&params.selectedProjectId!=""){url+="&selectedProjectId="+params.selectedProjectId}var vWinUsers=window.open(url,"IssueSelectorPopup","status=no,resizable=yes,top=100,left=200,width=620,height=500,scrollbars=yes,resizable");vWinUsers.opener=self;vWinUsers.focus();e.preventDefault()});if(params.issuePickerEnabled==="true"){jira.widget.autocomplete.Issues({fieldID:params.fieldName,delimChar:params.singleSelectOnly==="true"?undefined:",",ajaxData:params})}})};AJS.$(function(){jira.widget.autocomplete.Users.init();jira.widget.autocomplete.Issues.init()});AJS.$(function(){AJS.$(".user-searcher-params").each(function(){var params={};AJS.$(this).find("input").each(function(){var $this=AJS.$(this);params[$this.attr("id")]=$this.val()});if(params.userPickerEnabled==="true"){var autocompleter=jira.widget.autocomplete.Users({fieldID:params.fieldName,delimChar:params.multiSelect==="true"?",":undefined,ajaxData:{fieldName:params.fieldName}})}var setupFields=function(related){var field=AJS.$("#"+params.fieldName);var userImage=AJS.$("#"+params.fieldName+"Image");var groupImage=AJS.$("#"+params.fieldName+"GroupImage");var fieldDesc=AJS.$("#"+params.fieldName+"_desc");if(related==="select.list.none"){field.val("").attr("disabled","true");userImage.hide();groupImage.hide();fieldDesc.hide()}else{field.removeAttr("disabled");if(related==="select.list.group"){userImage.hide();groupImage.show();if(params.userPickerEnabled==="true"){autocompleter.disable();fieldDesc.hide()}}else{userImage.show();groupImage.hide();if(params.userPickerEnabled==="true"){autocompleter.enable();fieldDesc.show()}}}};AJS.$("#"+params.userSelect).change(function(){var related=AJS.$(this).find("option:selected").attr("rel");setupFields(related)}).find("option:selected").each(function(){setupFields(AJS.$(this).attr("rel"))});AJS.$("#"+params.fieldName+"_container a.user-popup-trigger").click(function(e){var url=contextPath+"/secure/popups/UserPickerBrowser.jspa?";url+="formName="+params.formName+"&";url+="multiSelect="+params.multiSelect+"&";url+="element="+params.fieldName;var vWinUsers=window.open(url,"UserPicker","status=yes,resizable=yes,top=100,left=200,width=580,height=750,scrollbars=yes");vWinUsers.opener=self;vWinUsers.focus();e.preventDefault()});AJS.$("#"+params.fieldName+"_container a.group-popup-trigger").click(function(e){var url=contextPath+"/secure/popups/GroupPickerBrowser.jspa?";url+="formName="+params.formName+"&";url+="multiSelect="+params.multiSelect+"&";url+="element="+params.fieldName;var vWinUsers=window.open(url,"GroupPicker","status=yes,resizable=yes,top=100,left=200,width=580,height=750,scrollbars=yes");vWinUsers.opener=self;vWinUsers.focus();e.preventDefault()})})});

