(function(){var jql_operators=[{value:"=",displayName:"="},{value:"!=",displayName:"!="},{value:"~",displayName:"~"},{value:"<=",displayName:"&lt;="},{value:">=",displayName:"&gt;="},{value:">",displayName:"&gt;"},{value:"<",displayName:"&lt;"},{value:"!~",displayName:"!~"},{value:"is not",displayName:"is not"},{value:"is",displayName:"is"},{value:"not in",displayName:"not in"},{value:"in",displayName:"in"}];var jql_logical_operators=[{value:"AND",displayName:"AND"},{value:"OR",displayName:"OR"}];var jql_logical_operators_and_order_by=[{value:"AND",displayName:"AND"},{value:"OR",displayName:"OR"},{value:"ORDER BY",displayName:"ORDER BY"}];var jql_order_by_direction=[{value:"ASC",displayName:"ASC"},{value:"DESC",displayName:"DESC"}];var empty_operand=[{value:"EMPTY",displayName:"EMPTY",types:["java.lang.Object"]}];var jql_not_logical_operator=[{value:"NOT",displayName:"NOT"}];jira.widget.autocomplete.JQL=function(options){var that=begetObject(jira.widget.autocomplete);var parser=options.parser;var result;var jql_field_names=jQuery.grep(options.jqlFieldNames,function(arrValue){return arrValue.searchable});var jql_order_by_field_names=jQuery.grep(options.jqlFieldNames,function(arrValue){return arrValue.orderable});var jql_function_names=options.jqlFunctionNames;var errorID=options.errorID;var suggestionCount=0;that.renderSuggestions=function(suggestions,moreSuggestions){var suggestionNodes=[];this.clearResponseContainer();if(suggestions instanceof Array){if(suggestions.length<1&&(moreSuggestions&&moreSuggestions.length<1)){return suggestionNodes}else{var length=(suggestions.length>15)?15:suggestions.length;for(var i=0;i<length;i++){var actualValueSug;var displayNameSug;if(suggestions[i].value){var resultSug=suggestions[i];if(result){actualValueSug=((result.getNeedsOpenParen())?"(":"")+resultSug.value}else{actualValueSug=resultSug.value}displayNameSug=resultSug.displayName}else{displayNameSug=suggestions[i];actualValueSug=displayName}suggestionNodes.push([jQuery("<li id='jql_value_suggest_"+i+"'>").html(displayNameSug).appendTo(this.responseContainer),actualValueSug])}if(moreSuggestions&&moreSuggestions.length>0){length=(moreSuggestions.length>15)?15:moreSuggestions.length;for(var j=0;j<length;j++){var actualValue;var displayName;if(moreSuggestions[j].value){var resultSug2=moreSuggestions[j];actualValue=resultSug2.value;displayName=resultSug2.displayName}else{displayName=moreSuggestions[j];actualValue=displayName}var suggestionEl=jQuery("<li id='jql_func_suggest_"+j+"'>").html(displayName);if(j===0&&suggestions.length!==0){suggestionEl.addClass("groupmarker")}suggestionNodes.push([suggestionEl.appendTo(this.responseContainer),actualValue])}}}}if(suggestionNodes.length>0){that.addSuggestionControls(suggestionNodes)}return suggestionNodes};that.completeField=function(value){var start=that.getReplacementStartIndex(result);var end=that.getReplacementEndIndex(result,start);that.replaceValue(start,end,value);var newToken=parser.parse(this.field.val());that.updateParseIndicator(newToken)};that.dispatcher=function(val){var that=this;var selectionRange=jQuery(that.field).selectionRange();var parseValue=val.substring(0,selectionRange.start);result=parser.parse(parseValue).getResult();suggestionCount++;if(result.getNeedsField()){that.renderSuggestionsFromMap(that.stripEscapeCharacters(result.getLastFieldName()),jql_field_names,jql_not_logical_operator,true)}else{if(result.getNeedsOperator()){that.renderSuggestionsForOperators(result.getLastOperator(),jql_operators)}else{if(result.getNeedsLogicalOperator()){if(result.getNeedsOrderBy()){var value=(result.getLastOrderBy()===null)?result.getLastLogicalOperator():result.getLastOrderBy();that.renderSuggestionsFromMap(value,jql_logical_operators_and_order_by,false)}else{that.renderSuggestionsFromMap(result.getLastLogicalOperator(),jql_logical_operators,false)}}else{if(result.getNeedsOrderByField()){that.renderSuggestionsFromMap(that.stripEscapeCharacters(result.getLastOrderByFieldName()),jql_order_by_field_names,true)}else{if(result.getNeedsOrderByDirection()){that.renderSuggestionsFromMap(result.getLastOrderByDirection(),jql_order_by_direction,false)}else{if(result.getNeedsOperand()){var fieldName=result.getLastFieldName();var canAutoComplete=false;if(!that.isEmptyOnlyOperator(result.getLastOperator())){for(var i=0;i<jql_field_names.length;i++){if(that.equalsIgnoreCase(result.getUnquotedString(jql_field_names[i].value),fieldName)||(jql_field_names[i].cfid&&that.equalsIgnoreCase(jql_field_names[i].cfid,fieldName))){canAutoComplete=jql_field_names[i].auto;break}}}var functionSuggestions=(that.isEmptyOnlyOperator(result.getLastOperator()))?empty_operand:jql_function_names;if(canAutoComplete){var currentSuggestionCount=suggestionCount;var fieldValue=(result.getLastOperand()===null)?"":that.stripEscapeCharacters(result.getLastOperand());var fieldNameValueKey=fieldName+":"+fieldValue;var data={fieldName:that.stripEscapeCharacters(fieldName)};if(result.getLastOperand()!==null){data.fieldValue=fieldValue}if(!that.getSavedResponse(fieldNameValueKey)){this.delay(function(){jQuery.ajax({url:contextPath+"/rest/api/1.0/jql/autocomplete",dataType:"json",data:data,success:function(response){var results;if(response!==null&&response.results!==null){results=response.results}else{results=[]}that.saveResponse(fieldNameValueKey,results);that.renderSuggestionsForOperands(fieldValue,results,functionSuggestions,currentSuggestionCount)},error:function(){that.renderSuggestionsForOperands(fieldValue,[],functionSuggestions,currentSuggestionCount)}})},that.queryDelay)}else{that.renderSuggestionsForOperands(fieldValue,that.getSavedResponse(fieldNameValueKey),functionSuggestions,currentSuggestionCount)}}else{that.renderSuggestionsForOperands(that.stripEscapeCharacters(result.getLastOperand()),[],functionSuggestions,suggestionCount)}}else{that.dropdownController.hideDropdown()}}}}}}that.parse(val)};that.stripEscapeCharacters=function(val){if(val==null){return val}var newVal="";var strArr=val.split("");for(var i=0;i<strArr.length;i++){if(strArr[i]=="\\"){if(!val.substring(i,val.length).match(/^u[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]/)){i++;if(i>=val.length){break}}}newVal+=strArr[i]}return newVal};that.parse=function(val){var newToken=parser.parse(val);that.updateParseIndicator(newToken);that.updateColumnLineCount();return newToken.getResult()};that.renderSuggestionsFromMap=function(stringVal,list,otherSuggestions,showFull){if(!otherSuggestions){otherSuggestions={}}var suggestions=that.slimListForMapResults(stringVal,list,showFull);var relevantOtherSuggestions=that.slimListForMapResults(stringVal,otherSuggestions,showFull);that.boldMatchingString(stringVal,relevantOtherSuggestions);that.boldMatchingString(stringVal,suggestions);that.renderSuggestions(suggestions,relevantOtherSuggestions);if(suggestions.length===0&&relevantOtherSuggestions.length===0){that.dropdownController.hideDropdown()}};that.renderSuggestionsForOperators=function(stringVal,list){var suggestions=that.slimListForMapResults(stringVal,list,false);var fieldName=result.getLastFieldName();var supportedOperators;for(var i=0;i<jql_field_names.length;i++){if(that.equalsIgnoreCase(result.getUnquotedString(jql_field_names[i].value),fieldName)||(jql_field_names[i].cfid&&that.equalsIgnoreCase(jql_field_names[i].cfid,fieldName))){supportedOperators=jql_field_names[i].operators;break}}if(supportedOperators){suggestions=jQuery.grep(suggestions,function(arrValue){return jQuery.inArray(arrValue.value,supportedOperators)>-1})}that.boldMatchingString(stringVal,suggestions);that.renderSuggestions(suggestions);if(suggestions.length===0){that.dropdownController.hideDropdown()}};that.renderSuggestionsForOperands=function(stringVal,ajaxSuggestions,functions,providedSuggestionCount){if(providedSuggestionCount===suggestionCount){var fucntionsSuggestions=that.slimListForFunctionResults(stringVal,functions,result.getLastOperator());that.boldMatchingString(stringVal,fucntionsSuggestions);that.renderSuggestions(ajaxSuggestions,fucntionsSuggestions);if(ajaxSuggestions.length===0&&fucntionsSuggestions.length===0){that.dropdownController.hideDropdown()}}};that.boldMatchingString=function(stringVal,list){if(stringVal==null||list.length===0){return}var stringValArr=stringVal.split("");var boldLength=stringValArr.length;for(var j=0;j<stringValArr.length;j++){if(stringValArr[j]==="<"||stringValArr[j]===">"){boldLength=boldLength+3}else{if(stringValArr[j]==="&"){boldLength=boldLength+4}else{if(stringValArr[j]==='"'){boldLength=boldLength+5}}}}for(var i=0;i<list.length;i++){if(list[i].displayName){var origVal=list[i].displayName;list[i]={value:list[i].value,displayName:"<b>"+origVal.substring(0,boldLength)+"</b>"+origVal.substring(boldLength)}}else{list[i]={value:list[i],displayName:"<b>"+list[i].substring(0,boldLength)+"</b>"+list[i].substring(boldLength)}}}};that.htmlEscape=function(stringVal){if(stringVal==null){return null}var escapedVal="";var strArr=stringVal.split("");for(var j=0;j<strArr.length;j++){if(strArr[j]==="<"){escapedVal+="&lt;"}else{if(strArr[j]===">"){escapedVal+="&gt;"}else{if(strArr[j]==="&"){escapedVal+="&amp;"}else{if(strArr[j]==='"'){escapedVal+="&quot;"}else{escapedVal+=strArr[j]}}}}}return escapedVal},that.getReplacementStartIndex=function(result){var jQueryReference=jQuery(this.field);var start;if(result.getNeedsField()){start=result.getLastFieldNameStartIndex()}else{if(result.getNeedsOperator()){start=result.getLastOperatorStartIndex()}else{if(result.getNeedsOperand()){start=result.getLastOperandStartIndex()}else{if(result.getNeedsOrderByField()){start=result.getLastOrderByFieldNameStartIndex()}else{if(result.getNeedsOrderByDirection()){start=result.getLastOrderByDirectionStartIndex()}else{if(result.getNeedsLogicalOperator()){if(result.getLastLogicalOperatorStartIndex()!==null&&result.getLastLogicalOperatorStartIndex()!==0){start=result.getLastLogicalOperatorStartIndex()}else{if(result.getLastOrderBy()!==null&&result.getLastOrderByStartIndex()!==0){start=result.getLastOrderByStartIndex()}else{start=jQueryReference.selectionRange().start-1}}}else{start=jQueryReference.selectionRange().start-1}}}}}}return start};that.getReplacementEndIndex=function(result,start){var jQueryReference=jQuery(this.field);var selectionRange=jQueryReference.selectionRange();var end=null;if(selectionRange.start===selectionRange.end&&selectionRange.end!==this.field.val().length){var currentTokenIdx=result.getTokens().length-1;var token=parser.parse(this.field.val());if(!token.getParseError()){var fullTokenValue=token.getResult().getTokens()[currentTokenIdx];if(fullTokenValue!==null&&fullTokenValue!=="("&&fullTokenValue!==")"){var fullTextVal=this.field.val();var remainingString=fullTextVal.substring(start,fullTextVal.length);var remainingStringArr=remainingString.split("");var whitespaceCount=0;for(var i=0;i<remainingStringArr.length;i++){if(remainingStringArr[i].match(/^\s/)){whitespaceCount++}else{break}}end=start+fullTokenValue.length+whitespaceCount}}}if(end===null){end=selectionRange.end}return end};that.replaceValue=function(start,end,newValue){var jQueryReference=jQuery(this.field);jQueryReference.selectionRange(start,end);jQueryReference.selection(newValue);var newEnd=jQueryReference.selectionRange().end;jQueryReference.selectionRange(newEnd,newEnd)};that.slimListForMapResults=function(stringVal,list,showFull){var escString=that.htmlEscape(stringVal);var slimedList=jQuery.grep(list,function(arrValue){return that.startsWithIgnoreCaseNullsMeanAll(escString,arrValue.displayName)});if(!showFull){if(slimedList.length===1&&!that.startsWithNotEqualsIgnoreCaseNullMeansAll(escString,slimedList[0].displayName)){return{}}}return slimedList};that.slimListForFunctionResults=function(stringVal,list,operator){var fieldName=result.getLastFieldName();var supportedTypes;for(var i=0;i<jql_field_names.length;i++){if(that.equalsIgnoreCase(result.getUnquotedString(jql_field_names[i].value),fieldName)||(jql_field_names[i].cfid&&that.equalsIgnoreCase(jql_field_names[i].cfid,fieldName))){supportedTypes=jql_field_names[i].types;break}}var slimedList=jQuery.grep(list,function(arrValue){if((arrValue.isList&&!that.isListSupportingOperator(operator))||(!arrValue.isList&&that.isListSupportingOperator(operator))){return false}if(supportedTypes){var supportsFunction=jQuery.inArray("java.lang.Object",arrValue.types)>-1||jQuery.inArray("java.lang.Object",supportedTypes)>-1;for(var i=0;i<supportedTypes.length&&!supportsFunction;i++){supportsFunction=jQuery.inArray(supportedTypes[i],arrValue.types)!==-1}if(!supportsFunction){return false}}else{return false}return that.startsWithIgnoreCaseNullsMeanAll(stringVal,arrValue.value)||that.startsWithIgnoreCaseNullsMeanAll(stringVal,arrValue.displayName)});if(slimedList.length===1&&!that.startsWithNotEqualsIgnoreCaseNullMeansAll(stringVal,slimedList[0].displayName)){return{}}return slimedList};that.isListSupportingOperator=function(operator){return operator==="in"||operator==="not in"};that.isEmptyOnlyOperator=function(operator){return operator==="is"||operator==="is not"};that.startsWithIgnoreCaseNullsMeanAll=function(startStr,str){if(str===null||startStr===null){return true}if(str.length<startStr.length){return false}else{return startStr.toLowerCase()==str.substr(0,startStr.length).toLowerCase()}};that.startsWithNotEqualsIgnoreCaseNullMeansAll=function(startStr,str){if(str===null||startStr===null){return true}if(str.length<startStr.length){return false}else{var subStrEquals=startStr.toLowerCase()==str.substr(0,startStr.length).toLowerCase();if(subStrEquals){var equalsString=null;if(str.substr(startStr.length,str.length).match(/^\s-\scf\[\d\d\d\d\d\]/)){equalsString=str.substr(0,startStr.length)}else{equalsString=str}return startStr.toLowerCase()!=equalsString.toLowerCase()}return false}};that.equalsIgnoreCase=function(str1,str2){if(str1===null&&str2===null){return true}else{if(str1===null||str1===null){return false}else{return str1.toLowerCase()===str2.toLowerCase()}}};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}};that.startsWithIgnoreCase=function(startStr,str){if(str===null||startStr===null||str.length<startStr.length){return false}else{return startStr.toLowerCase()==str.substr(0,startStr.length).toLowerCase()}};that.updateParseIndicator=function(token){if(token.getParseError()){jQuery("#"+errorID).attr("title",token.getResult().getParseErrorMsg()).removeClass("jqlgood").addClass("jqlerror")}else{jQuery("#"+errorID).attr("title","").removeClass("jqlerror").addClass("jqlgood")}};that.updateColumnLineCount=function(){var jQueryReference=jQuery(this.field);var selectionRange=jQueryReference.selectionRange();var totalCharCountToCursor=selectionRange.start;var rowCount=1;var colCount=1;var fieldValue=this.field.val();for(var i=0;i<totalCharCountToCursor;i++){if(fieldValue.charAt(i).match(/[\r\n]/)){rowCount++;colCount=1}else{colCount++}}jQuery("#jqlcolumnnum").html(colCount);jQuery("#jqlrownum").html(rowCount)};that.init(options);return that};jQuery.namespace("jira.jql.parser");jira.jql.parser.MyParser=function(jqlReservedWords){var jql_reserved_words=jqlReservedWords;return{parse:function(input){var token=jira.jql.parser.Token();token.init(input);this.jql(token);return token},orderByClause:function(token){var remainingString=token.remainingString();var matchArray=remainingString.match(/^order\s+by/i);if(matchArray){var orderByString=remainingString.substring(0,matchArray[0].length);token.consumeCharacters(orderByString.length);token.getResult().setLastOrderBy(orderByString,token);if(!token.isComplete()){remainingString=token.remainingString();if(remainingString.match(/^\s/)){this.chewWhitespace(token);this.orderByFields(token)}else{token.getResult().resetLogicalOperators();token.setParseError()}}else{token.getResult().resetLogicalOperators();token.setParseError()}}else{token.consumeCharacters(remainingString.length);token.getResult().setLastOrderBy(remainingString,token);token.setParseError()}},orderByFields:function(token){this.orderByField(token);this.chewWhitespace(token);if(token.isComplete()){if(!token.getResult().getNeedsOrderByField()){token.getResult().setLastOrderByDirection("",token)}}else{var remainingString=token.remainingString();if(this.startsWithIgnoreCase(",",remainingString)){token.consumeCharacter();this.orderByFields(token);this.chewWhitespace(token)}else{remainingString=token.remainingString();if(remainingString!==null){token.consumeCharacters(remainingString.length)}token.getResult().setNeedsOrderByDirection();token.getResult().setLastOrderByDirection(remainingString,token);token.setParseError()}}},orderByField:function(token){this.chewWhitespace(token);var fieldName=this.fieldName(token);if(fieldName.length!==0){token.getResult().setLastOrderByFieldName(fieldName,token);var remainingString=token.remainingString();if(!token.isComplete()&&!remainingString.match(/^\s*,/)){if(remainingString.match(/^\s+asc/i)){this.chewWhitespace(token);token.consumeCharacters(3);token.getResult().setLastOrderByDirection("asc",token);token.getResult().setNeedsOrderByComma()}else{if(remainingString.match(/^\s+desc/i)){this.chewWhitespace(token);token.consumeCharacters(4);token.getResult().setLastOrderByDirection("desc",token);token.getResult().setNeedsOrderByComma()}else{token.getResult().setNeedsOrderByDirection()}}}else{token.getResult().setNeedsOrderByField();this.chewWhitespace(token)}}else{token.getResult().setLastOrderByFieldName("",token);token.getResult().setNeedsOrderByField();token.setParseError()}},jql:function(token){this.orClause(token);var remainingString=token.remainingString();if(this.startsWithIgnoreCase("ord",remainingString)){this.orderByClause(token)}},orClause:function(token){var remainingString=token.remainingString();while(!token.isComplete()&&!this.startsWithIgnoreCase(")",remainingString)){if(this.startsWithIgnoreCase("ord",remainingString)){break}token.getResult().resetLogicalOperators();this.chewWhitespace(token);this.andClause(token);if(!token.isComplete()&&token.getResult().getLastLogicalOperator()===null){this.chewWhitespace(token);remainingString=token.remainingString();if(this.startsWithIgnoreCase("ord",remainingString)){break}else{if(remainingString!==null&&(remainingString.match(/^OR\s/i)||this.startsWithIgnoreCase("|",remainingString)||this.startsWithIgnoreCase("||",remainingString))){if(this.startsWithIgnoreCase("||",remainingString)){token.getResult().setLastLogicalOperator("||",token.getTokenStringIdx());token.consumeCharacters(2)}else{if(remainingString.match(/^OR\s/i)){token.getResult().setLastLogicalOperator("OR",token.getTokenStringIdx());token.consumeCharacters(3)}else{token.getResult().setLastLogicalOperator("|",token.getTokenStringIdx());token.consumeCharacters(1)}}token.getResult().resetTerminalClause();if(token.isComplete()){token.setParseError()}token.getResult().setNeedsField()}else{if(!this.startsWithIgnoreCase(")",remainingString)||!token.getInParens()){var errorIdx=(remainingString===null)?token.getMaxTokenStringIdx():token.getMaxTokenStringIdx()-remainingString.length;token.getResult().setLastLogicalOperator(remainingString,errorIdx);token.getResult().setNeedsLogicalOperator(token);token.setParseError()}}}}}},andClause:function(token){this.chewWhitespace(token);this.notClause(token);if(!token.isComplete()&&token.getResult().getLastLogicalOperator()===null){this.chewWhitespace(token);var remainingString=token.remainingString();if(remainingString!==null&&(remainingString.match(/^AND\s/i)||this.startsWithIgnoreCase("&",remainingString)||this.startsWithIgnoreCase("&&",remainingString))){if(this.startsWithIgnoreCase("&&",remainingString)){token.getResult().setLastLogicalOperator("&&",token.getTokenStringIdx());token.consumeCharacters(2)}else{if(this.startsWithIgnoreCase("&",remainingString)){token.getResult().setLastLogicalOperator("&",token.getTokenStringIdx());token.consumeCharacters(1)}else{token.getResult().setLastLogicalOperator("AND",token.getTokenStringIdx());token.consumeCharacters(4)}}token.getResult().resetTerminalClause();if(token.isComplete()){token.setParseError()}token.getResult().setNeedsField()}else{token.getResult().setNeedsLogicalOperator(token);if(token.isComplete()){token.getResult().setLastLogicalOperator(null,token.getMaxTokenStringIdx())}}}},notClause:function(token){this.chewWhitespace(token);if(!token.isComplete()){this.chewWhitespace(token);var remainingString=token.remainingString();if(remainingString!==null&&(remainingString.match(/^NOT\s/i)||this.startsWithIgnoreCase("!",remainingString))){token.getResult().needsField=false;if(this.startsWithIgnoreCase("!",remainingString)){token.getResult().setLastLogicalOperator("!",token.getTokenStringIdx());token.consumeCharacters(1)}else{token.getResult().setLastLogicalOperator("NOT",token.getTokenStringIdx());token.consumeCharacters(4)}token.getResult().resetTerminalClause();if(token.isComplete()){token.setParseError()}token.getResult().setNeedsField()}else{this.terminalClause(token)}}else{this.terminalClause(token);token.setParseError()}},terminalClause:function(token){token.getResult().resetTerminalClause();this.chewWhitespace(token);var remainingString=token.remainingString();if(this.startsWithIgnoreCase("(",remainingString)){token.getResult().addToken("(");token.setInParens();token.consumeCharacter();this.orClause(token);this.chewWhitespace(token);remainingString=token.remainingString();if(this.startsWithIgnoreCase(")",remainingString)){token.getResult().addToken(")");token.consumeCharacter();token.setOutOfParens();if(token.isComplete()){token.getResult().resetLogicalOperators()}}else{token.setParseError()}}else{this.field(token);if(!token.isComplete()){this.oper(token);if(!token.isComplete()){this.operand(token);if(token.getResult().getOperandComplete()){token.getResult().setNeedsNothing()}else{if(token.isComplete()&&!token.getResult().getNeedsListComma()){token.getResult().setNeedsOperand()}}}else{token.getResult().setNeedsOperator();token.setParseError()}}else{token.getResult().setNeedsField();token.setParseError()}}},field:function(token){var fieldName=this.fieldName(token);if(fieldName.length!==0){token.getResult().setLastFieldName(fieldName,token)}else{if(token.getResult().getLastFieldName()===null){remainingString=token.remainingString();token.getResult().setNeedsField();token.getResult().setLastFieldName(remainingString,token);token.setParseError()}}},fieldName:function(token){this.chewWhitespace(token);var remainingString=token.remainingString();if(this.startsWithIgnoreCase("cf",remainingString)){var origIdx=token.getTokenStringIdx();var origString=token.remainingString();token.consumeCharacters(2);this.chewWhitespace(token);remainingString=token.remainingString();if(this.startsWithIgnoreCase("[",remainingString)){token.consumeCharacter();remainingString=token.remainingString();var custFieldId=this.numberValue(token);if(custFieldId.length!==0){this.chewWhitespace(token);remainingString=token.remainingString();if(this.startsWithIgnoreCase("]",remainingString)){token.consumeCharacter();return origString.substring(0,token.getTokenStringIdx()-origIdx)}}}token.setParseError();return origString}else{return this.fieldOrFunctionName(token)}},oper:function(token){this.chewWhitespace(token);var remainingString=token.remainingString();var operator=this.getLongestOperatorMatch(remainingString,jql_operators);if(operator!==null){token.getResult().setLastOperator(operator,token.getTokenStringIdx());token.consumeCharacters(operator.length);if(operator=="in"||operator=="is"||operator=="is not"||operator=="not in"){var currentChar=token.currentCharacter();if(currentChar!==null&&!currentChar.match(/[\s(]/)){token.setParseError()}}token.getResult().setNeedsOperand()}else{if(token.getResult().getLastOperator()===null){var errorIdx=(remainingString===null)?token.getMaxTokenStringIdx():token.getMaxTokenStringIdx()-remainingString.length;token.getResult().setLastOperator(remainingString,errorIdx);token.getResult().setNeedsOperator();token.setParseError()}}},operand:function(token){this.chewWhitespace(token);if(token.getResult().getLastOperator()==="in"||token.getResult().getLastOperator()==="not in"){token.getResult().setNeedsOpenParen(true)}var operand=this.listOperand(token,true);if(operand.length===0){operand=this.functionOperand(token);if(operand.length===0){operand=this.singleValueOperand(token)}else{token.getResult().setNeedsOpenParen(false)}}else{token.getResult().setNeedsOpenParen(false)}if(operand===null||operand.length===0){var remainingString=token.remainingString();token.getResult().setLastOperand(remainingString,token);token.getResult().setNeedsOperand();token.setParseError()}if(operand.length!==0){return operand}return""},singleValueOperand:function(token){var operand=this.stringValue(token);if(operand.length!==0){token.getResult().setLastOperand(operand,token);if(operand.toLowerCase()!="empty"&&operand.toLowerCase()!="null"&&this.isReservedWord(operand.toLowerCase())){token.setParseError()}return operand}return""},functionOperand:function(token){var startIdx=token.getTokenStringIdx();var functionName=this.fieldOrFunctionName(token);this.chewWhitespace(token);var listArguments=this.listOperand(token,false);if(functionName.length!==0&&listArguments.length!==0){var operand=functionName+listArguments;token.getResult().setLastOperand(operand,token);return operand}else{token.backTrackToIdx(startIdx);return""}},listOperand:function(token,treatAsOperands){if(token.currentCharacter()=="("){token.consumeCharacter();var listValue=this.collectListValues(token,treatAsOperands);var operandVal="("+listValue;this.chewWhitespace(token);if(token.currentCharacter()==")"){token.consumeCharacter();operandVal+=")";if(operandVal=="()"&&treatAsOperands){token.getResult().setLastOperand(operandVal,token)}if(treatAsOperands){token.getResult().setOperandComplete()}}else{token.setParseError()}return operandVal}else{return""}},collectListValues:function(token,treatAsOperands){if(treatAsOperands){token.getResult().setNeedsOperand()}this.chewWhitespace(token);var currentOperand=(treatAsOperands)?this.operand(token):this.stringValue(token);if(currentOperand.length!==0){if(this.chewWhitespace(token)&&treatAsOperands){token.getResult().setNeedsListComma()}if(token.currentCharacter()==","){token.consumeCharacter();var nextValue=this.collectListValues(token,treatAsOperands);if(nextValue.length===0){token.setParseError()}return currentOperand+", "+nextValue}else{return currentOperand}}else{return""}},startsWithIgnoreCase:function(startStr,str){if(str===null||startStr===null||str.length<startStr.length){return false}else{return startStr.toLowerCase()==str.substr(0,startStr.length).toLowerCase()}},chewWhitespace:function(token){var foundWhiteSpace=false;var currentChar=token.currentCharacter();while(currentChar!==null&&currentChar.match(/\s/)){token.consumeCharacter();currentChar=token.currentCharacter();foundWhiteSpace=true}return foundWhiteSpace},getLongestOperatorMatch:function(value,listOfValues){var longestMatch=null;if(this.startsWithIgnoreCase("is",value)){var matchArray=value.substring(2).match(/^\s+not/i);if(matchArray){longestMatch=value.substring(0,matchArray[0].length+2)}else{longestMatch="is"}}else{if(this.startsWithIgnoreCase("not",value)){var matchArrayNot=value.substring(3).match(/^\s+in/i);if(matchArrayNot){longestMatch=value.substring(0,matchArrayNot[0].length+3)}}else{for(var i=0;i<listOfValues.length;i++){if(this.startsWithIgnoreCase(listOfValues[i].value,value)){if(longestMatch===null||jql_operators[i].value.length>longestMatch){longestMatch=jql_operators[i].value}}}}}return longestMatch},getValueMinusExtraWhitespace:function(value){if(value===null){return null}var newValue="";var firstWhitespace=true;var valueArr=value.split("");for(var i=0;i<valueArr.length;i++){var currentChar=valueArr[i];if(currentChar.match(/[\s]/)){if(firstWhitespace){firstWhitespace=false;newValue=newValue+currentChar}}else{firstWhitespace=true;newValue=newValue+currentChar}}return newValue},fieldOrFunctionName:function(token){var stringValue=this.stringValue(token);if(stringValue==='""'||stringValue==="''"){token.setParseError()}if(this.isReservedWord(stringValue.toLowerCase())){token.setParseError()}return stringValue},isReservedWord:function(word){return jQuery.inArray(word,jql_reserved_words)!==-1},stringValue:function(token){var stringValue="";var inQuote=false;var inSingleQuote=false;var currentChar=token.currentCharacter();while(currentChar!==null&&(inQuote||inSingleQuote||currentChar.match(/[^=!~<>(),\s&|]/))){stringValue=stringValue+currentChar;token.consumeCharacter();if(currentChar=="\\"){currentChar=token.currentCharacter();if(currentChar===null){token.setParseError();break}else{if(currentChar.match(/[^trn"'\\\s]/)){var remainingString=token.remainingString();if(!remainingString.match(/^u[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]/)){token.setParseError();break}}}stringValue=stringValue+currentChar;token.consumeCharacter()}else{if(currentChar.match(/[{}*\/%+$#@?.;\][]/)&&!(inQuote||inSingleQuote)){token.setParseError();break}else{if(currentChar=='"'&&!inSingleQuote){inQuote=!inQuote}else{if(currentChar=="'"&&!inQuote){inSingleQuote=!inSingleQuote}}}}currentChar=token.currentCharacter()}if(token.isComplete()&&(inQuote||inSingleQuote)){token.setParseError()}return stringValue},numberValue:function(token){var numberVal="";this.chewWhitespace(token);var currentChar=token.currentCharacter();while(currentChar!==null){if(currentChar.match(/[\d]/)){numberVal=numberVal+currentChar;token.consumeCharacter()}else{break}currentChar=token.currentCharacter()}return numberVal}}};jira.jql.parser.ParseResult=function(){var tokens=[];var tokenIdx=0;return{getTokens:function(){return tokens},addToken:function(token){tokens[tokenIdx++]=token},setLastFieldName:function(lastFieldName,token){this.fieldNameStartIndex=(lastFieldName===null)?token.getMaxTokenStringIdx():(token.getTokenStringIdx()-lastFieldName.length);this.lastFieldName=this.getUnquotedString(lastFieldName);tokens[tokenIdx++]=lastFieldName},getLastFieldName:function(){return this.lastFieldName},getLastFieldNameStartIndex:function(){return this.fieldNameStartIndex},setLastOrderByFieldName:function(lastFieldName,token){this.orderByFieldNameStartIndex=(lastFieldName===null)?token.getMaxTokenStringIdx():(token.getTokenStringIdx()-lastFieldName.length);this.lastOrderByFieldName=this.getUnquotedString(lastFieldName);this.lastOrderByDirection=null;tokens[tokenIdx++]=lastFieldName},getLastOrderByFieldName:function(){return this.lastOrderByFieldName},getLastOrderByFieldNameStartIndex:function(){return this.orderByFieldNameStartIndex},setLastOrderByDirection:function(lastDirection,token){this.orderByDirectionStartIndex=(lastDirection===null)?token.getMaxTokenStringIdx():(token.getTokenStringIdx()-lastDirection.length);this.lastOrderByDirection=lastDirection;tokens[tokenIdx++]=lastDirection},getLastOrderByDirection:function(){return this.lastOrderByDirection},getLastOrderByDirectionStartIndex:function(){return this.orderByDirectionStartIndex},setNeedsField:function(){this.needsOperator=false;this.needsOperand=false;this.needsLogicalOperator=false;this.needsOrderBy=false;this.needsField=true;this.needsOrderByField=false;this.needsOrderByDirection=false;this.needsListComma=false},getNeedsField:function(){return this.needsField},setNeedsOrderByField:function(){this.needsOperator=false;this.needsOperand=false;this.needsLogicalOperator=false;this.needsOrderBy=false;this.needsField=false;this.needsOrderByField=true;this.needsOrderByDirection=false;this.lastOrderByDirection=null;this.needsListComma=false},getNeedsOrderByField:function(){return this.needsOrderByField},setNeedsOrderByDirection:function(){this.needsOperator=false;this.needsOperand=false;this.needsLogicalOperator=false;this.needsOrderBy=false;this.needsField=false;this.needsOrderByField=false;this.needsOrderByDirection=true;this.needsListComma=false},getNeedsOrderByDirection:function(){return this.needsOrderByDirection},setNeedsOrderByComma:function(){this.needsOperator=false;this.needsOperand=false;this.needsLogicalOperator=false;this.needsOrderBy=false;this.needsField=false;this.needsOrderByField=false;this.needsOrderByDirection=false;this.needsListComma=false},setNeedsListComma:function(){this.needsOperator=false;this.needsOperand=false;this.needsLogicalOperator=false;this.needsOrderBy=false;this.needsField=false;this.needsOrderByField=false;this.needsOrderByDirection=false;this.needsListComma=true},getNeedsListComma:function(){return this.needsListComma},setLastOperator:function(lastOperator,startIndex){this.lastOperator=lastOperator;this.operatorStartIndex=startIndex;tokens[tokenIdx++]=lastOperator},getLastOperator:function(){return this.lastOperator},getLastOperatorStartIndex:function(){return this.operatorStartIndex},setLastOperand:function(lastOperand,token){this.operandStartIndex=(lastOperand===null)?token.getMaxTokenStringIdx():(token.getTokenStringIdx()-lastOperand.length);this.lastOperand=this.getUnquotedString(lastOperand);tokens[tokenIdx++]=lastOperand},getLastOperand:function(){return this.lastOperand},setNeedsOperand:function(){this.needsField=false;this.needsOperator=false;this.needsLogicalOperator=false;this.needsOperand=true;this.needsOrderBy=false;this.needsOrderByField=false;this.needsOrderByDirection=false;this.needsListComma=false},getNeedsOperand:function(){return this.needsOperand},getLastOperandStartIndex:function(){return this.operandStartIndex},setLastLogicalOperator:function(lastLogicalOperator,startIndex){this.lastLogicalOperator=lastLogicalOperator;this.logicalOperatorStartIndex=startIndex;tokens[tokenIdx++]=lastLogicalOperator},setNeedsOperator:function(){this.needsField=false;this.needsOperand=false;this.needsLogicalOperator=false;this.needsOrderBy=false;this.needsOperator=true;this.needsOrderByField=false;this.needsOrderByDirection=false;this.needsListComma=false},getNeedsOperator:function(){return this.needsOperator},getLastLogicalOperator:function(){return this.lastLogicalOperator},getLastLogicalOperatorStartIndex:function(){return this.logicalOperatorStartIndex},setNeedsLogicalOperator:function(token){this.needsLogicalOperator=true;this.needsOperator=false;this.needsOperand=false;this.needsField=false;this.needsOrderByField=false;this.needsOrderByDirection=false;this.needsListComma=false;this.needsOrderBy=!token.getInParens()},setNeedsOpenParen:function(value){this.needsOpenParen=value},getNeedsOpenParen:function(){return this.needsOpenParen},getNeedsLogicalOperator:function(){return this.needsLogicalOperator},getNeedsOrderBy:function(){return this.needsOrderBy},setLastOrderBy:function(lastOrderBy,token){this.orderByStartIndex=(lastOrderBy===null)?token.getMaxTokenStringIdx():(token.getTokenStringIdx()-lastOrderBy.length);this.lastOrderBy=lastOrderBy;tokens[tokenIdx++]=lastOrderBy},getLastOrderBy:function(){return this.lastOrderBy},getLastOrderByStartIndex:function(){return this.orderByStartIndex},resetLogicalOperators:function(){this.lastLogicalOperator=null;this.logicalOperatorStartIndex=null;this.needsLogicalOperator=null},getUnquotedString:function(value){var secondToLastNotEsacape=value!=null&&value.length>=3&&value.charAt(value.length-2)!="\\";if(value!=null&&value.charAt(0)=='"'){value=value.substring(1,value.length);if(value.charAt(value.length-1)=='"'&&secondToLastNotEsacape){value=value.substring(0,value.length-1)}}else{if(value!=null&&value.charAt(0)=="'"){value=value.substring(1,value.length);if(value.charAt(value.length-1)=="'"&&secondToLastNotEsacape){value=value.substring(0,value.length-1)}}}return value},setParseError:function(message){this.parseError=true;this.parseErrorMsg=message},getParseError:function(){return this.parseError},getParseErrorMsg:function(){return this.parseErrorMsg},setNeedsNothing:function(){this.needsOperator=false;this.needsOperand=false;this.needsLogicalOperator=false;this.needsOrderBy=false;this.needsField=false;this.needsOrderByField=false;this.needsOrderByDirection=false;this.needsOpenParen=false;this.needsListComma=false},setOperandComplete:function(){this.operandComplete=true},getOperandComplete:function(){return this.operandComplete},resetTerminalClause:function(){this.lastFieldName=null;this.fieldNameStartIndex=null;this.needsField=null;this.lastOperator=null;this.operatorStartIndex=null;this.needsOperator=null;this.lastOperand=null;this.operandStartIndex=null;this.needsOperand=null;this.operandComplete=null;this.needsOpenParen=null;this.needsListComma=false},init:function(){this.lastFieldName=null;this.fieldNameStartIndex=null;this.needsField=null;this.lastOperator=null;this.operatorStartIndex=null;this.needsOperator=null;this.lastOperand=null;this.operandStartIndex=null;this.needsOperand=null;this.lastLogicalOperator=null;this.logicalOperatorStartIndex=null;this.lastOrderByFieldName=null;this.lastOrderByFieldNameStartIndex=null;this.lastOrderByDirection=null;this.lastOrderByDirectionStartIndex=null;this.orderByStartIndex=null;this.lastOrderBy=null;this.needsOrderBy=null;this.needsOrderByField=null;this.needsOrderByDirection=null;this.operandComplete=null;this.needsOpenParen=null;this.needsListComma=null}}};jira.jql.parser.Token=function(){return{init:function(tokenString){this.tokenStringIdx=0;this.tokenString=tokenString;this.parseError=false;this.parseErrorMsg=null;this.result=jira.jql.parser.ParseResult();this.result.init();this.inParens=0},consumeCharacter:function(){this.tokenStringIdx++},consumeCharacters:function(numChars){this.tokenStringIdx=this.tokenStringIdx+numChars},backTrackToIdx:function(backTrackIdx){this.tokenStringIdx=backTrackIdx;this.parseError=false;this.parseErrorMsg=null;this.result.parseError=false;this.result.parseErrorMsg=null},getTokenStringIdx:function(){return this.tokenStringIdx},currentCharacter:function(){if(this.tokenStringIdx>=this.tokenString.length){return null}return this.tokenString.charAt(this.tokenStringIdx)},remainingString:function(){if(this.tokenStringIdx>=this.tokenString.length){return null}return this.tokenString.substr(this.tokenStringIdx,this.tokenString.length)},getMaxTokenStringIdx:function(){return this.tokenString.length},isComplete:function(){if(this.parseError){return true}return this.tokenStringIdx>=this.tokenString.length},setInParens:function(){this.inParens++},setOutOfParens:function(){if(this.inParens!==0){this.inParens--}},getInParens:function(){return this.inParens!==0},setParseError:function(){this.parseError=true;var preFixIdx=((this.tokenStringIdx-9)<0)?0:this.tokenStringIdx-9;var errorPrefix=this.tokenString.substring(preFixIdx,this.tokenStringIdx-1);this.result.setParseError("..."+errorPrefix+"^"+this.tokenString.substring(this.tokenStringIdx,this.tokenString.length))},getParseError:function(){return this.parseError},getResult:function(){return this.result}}};jQuery(function(){restore("jqlHistory");jQuery(".jql-autocomplete-params").each(function(){var params={};jQuery(this).find("input").each(function(){var $this=jQuery(this);params[$this.attr("id")]=$this.val()});var jqlFieldNames=JSON.parse(jQuery("#jqlFieldz").text());var jqlFunctionNames=JSON.parse(jQuery("#jqlFunctionNamez").text());var jqlReservedWords=JSON.parse(jQuery("#jqlReservedWordz").text());var jqlAutoComplete=jira.widget.autocomplete.JQL({fieldID:"jqltext",parser:jira.jql.parser.MyParser(jqlReservedWords),queryDelay:0.65,jqlFieldNames:jqlFieldNames,jqlFunctionNames:jqlFunctionNames,minQueryLength:0,allowArrowCarousel:true,autoSelectFirst:false,errorID:"jqlerrormsg"});var jQueryRef=jQuery("#jqltext");jQueryRef.unbind("keypress",submitOnEnter).keypress(function(e){if(jqlAutoComplete.dropdownController===null||!jqlAutoComplete.dropdownController.displayed||jqlAutoComplete.selectedIndex<0){if(e.keyCode==13&&!e.ctrlKey&&!e.shiftKey){jQuery("#jqlform").submit();return false}else{return true}}});jqlAutoComplete.buildResponseContainer();jqlAutoComplete.parse(jQueryRef.text());jqlAutoComplete.updateColumnLineCount();jQueryRef.click(function(){jqlAutoComplete.dropdownController.hideDropdown()})})})})();
