Lint at line 1 character 356: Use '===' to compare with 'null'.
(function(){AJS.$.fn.serializeArray=function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();if(val==null){val="";}return val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();};AJS.$.extend({put:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"PUT",url:url,data:data,success:callback,dataType:type});},del:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"delete",url:url,data:data,success:callback,dataType:type});},ajax:function(ajax){var activeReq=0,dressResponse=function(xhr){var res={};res.rc=xhr.status;if(xhr.responseText!==""){res.data=gadgets.json.parse(xhr.responseText);}return res;};AJS.$.each("ajaxOpen,ajaxClosed,ajaxOauthApproval".split(","),function(i,o){AJS.$.fn[o]=function(f){return this.bind(o,f);};});AJS.$().ajaxSend(function(evt,req,options){if(++activeReq===1){AJS.$.event.trigger("ajaxOpen",[options]);}});AJS.$().ajaxComplete(function(evt,req,options){if(--activeReq===0){AJS.$.event.trigger("ajaxClosed",[options]);}});AJS.$.fn.ajaxComplete=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxComplete",f);};AJS.$.fn.ajaxError=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxError",f);};return function(usrOptions){var reqOptions={};if(typeof options==="string"){options={url:options};}var options=usrOptions;for(var name in AJS.$.ajaxSettings){if(!options[name]&&options[name]!==false){options[name]=AJS.$.ajaxSettings[name];}}if(options.baseUrl){if(!/^(http)|(https):\/\//.test(options.url)){options.url=options.baseUrl+options.url;}}if(typeof atlassian!=="undefined"&&atlassian.util){if(atlassian.util.getRendererBaseUrl()===options.baseUrl&&new RegExp(options.baseUrl).test(options.url)){if(options.error){options.error=function(error){return function(xhr,type){if(!xhr.responseText){options.success.apply(this,arguments);}else{error.call(this,dressResponse(xhr));}};}(options.error);}ajax.call(this,options);return;}}reqOptions[gadgets.io.RequestParameters.METHOD]=gadgets.io.MethodType[options.type.toUpperCase()];reqOptions[gadgets.io.RequestParameters.CONTENT_TYPE]=gadgets.io.ContentType[options.dataType.toUpperCase()];reqOptions.url=options.url;if(options.headers){reqOptions[gadgets.io.RequestParameters.HEADERS]=options.headers;}if(options.authorization){reqOptions[gadgets.io.RequestParameters.AUTHORIZATION]=gadgets.io.AuthorizationType[options.authorization.toUpperCase()];}if(options.useToken){reqOptions.OAUTH_USE_TOKEN=options.useToken;}if(options.summaries){reqOptions[gadgets.io.RequestParameters.GET_SUMMARIES]=options.summaries;}if(options.entries){reqOptions[gadgets.io.RequestParameters.NUM_ENTRIES]=options.entries;}if(options.data){if(options.type.toLowerCase()==="get"){if(typeof options.data==="string"){reqOptions.url+=("?"+options.data.replace(/^\?/,""));}else{reqOptions.url+=("?"+gadgets.io.encodeValues(options.data).replace(/^\?/,""));}}else{reqOptions[gadgets.io.RequestParameters.POST_DATA]=options.data;}}reqOptions.success=function(response){if(options.complete){options.complete(response,options);}if(options.global){AJS.$.event.trigger("ajaxComplete",[response,options]);}if(response.errors&&response.errors.length||response.oauthError){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.dataType.toLowerCase()==="json"&&typeof response.data==="string"){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(response.rc!==200){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.success&&(response||response.oauthApprovalUrl)){options.success(response.data||response);}if(options.global){AJS.$.event.trigger("ajaxSuccess",[response.data,options]);}};gadgets.io.makeRequest(reqOptions.url,reqOptions.success,reqOptions);if(options.ajaxSend){options.ajaxSend(options);}if(options.global){AJS.$.event.trigger("ajaxSend",[options]);}};}(AJS.$.ajax)});AJS.$.namespace("AJS.gadgets.templater");AJS.gadgets.templater.Base=function(){var cache,template,descriptor=function(args){return args;},callbacks=[],remoteArgs=[],args=[],renderTemplate=function(){var cache={};return function(str,data){var fn;if(!/\W/.test(str)){fn=cache[str];}else{var fnString="var p=[], print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+str.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');";fn=new Function("obj",fnString);}return data?fn(data):fn;};}();return{getDescriptorData:function(callback){var argLengthComparator=0,that=this,formattedArgs={};if(remoteArgs.length<1){AJS.$(args).each(function(){formattedArgs[this.key]=this.data;});if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}}AJS.$(remoteArgs).each(function(i,item){var reqOptions;if(typeof item.ajaxOptions==="string"){reqOptions={url:this.ajaxOptions};}else{if(AJS.$.isFunction(item.ajaxOptions)){reqOptions=item.ajaxOptions();}else{reqOptions=item.ajaxOptions;}}reqOptions.success=function(response){++argLengthComparator;formattedArgs[remoteArgs[i].key]=response;if(argLengthComparator===remoteArgs.length){var excuter=function(){if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}return arguments.callee;}();if(cache!==false){that.getDescriptorData=excuter;}}};AJS.$.ajax(reqOptions);});},disableCache:function(){cache=false;},setTemplate:function(templ){template=templ;},setDescriptor:function(desc){descriptor=desc;},addCallback:function(func){callbacks.push(func);},setRemoteDescriptorArg:function(key,ajaxOptions){remoteArgs.push({key:key,ajaxOptions:ajaxOptions});},setDescriptorArg:function(arg){args.push(arg);},build:function(data){var that=this;if(!data&&data!==false){this.getDescriptorData(this.build);}else{if(data!==false){if(typeof template==="string"&&document.getElementById(template)){that.build.template=AJS.$(template).html();var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(AJS.$.isFunction(template)){template(data);AJS.$(callbacks).each(function(){this.call(that,data);});}else{if(template.length>50){that.build.template=template;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(!that.build.template){AJS.$.ajax({url:template,dataType:"text",success:function(response){that.build.template=response;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}});}else{var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}}}}}}}};};AJS.gadgets.templater.Custom=function(options){var templater=AJS.gadgets.templater.Base();templater.setTemplate(options.template);if(options.descriptor){templater.setDescriptor(options.descriptor);}if(options.callback){templater.addCallback(options.callback);}if(options.cache===false){templater.disableCache();}AJS.$.extend(templater,{getTarget:function(){return options.target;}});if(options.args){AJS.$(options.args).each(function(){if(this.ajaxOptions){templater.setRemoteDescriptorArg(this.key,this.ajaxOptions);}else{templater.setDescriptorArg(this);}});}return templater;};AJS.gadgets.templater.Form=function(options){return AJS.gadgets.templater.Custom(AJS.$.extend({template:AJS.gadgets.templater.Form.template,baseUrl:AJS.gadget.getBaseUrl(),callback:function(response,data){if(options.target){options.target.html(response);if(options.submit){AJS.$("form",options.target).submit(options.submit);}if(options.cancel){AJS.$("input.cancel",options.target).click(options.cancel);}AJS.$(data.fields).each(function(){if(this.type==="callbackBuilder"){var targetDiv=AJS.$("div#"+this.id);this.callback(targetDiv);}});}else{return response;}}},options));};AJS.gadgets.templater.Table=function(options){var table,sortCol,sortOrd=[],sort=function(data,column,order){data.cols[column].theme=order;if(!data.cols[column].sorted){data.data.sort(function(item,compareItem){var dataItem=item[column].value,dataItemCompare=compareItem[column].value;if(!isNaN(parseFloat(dataItem))&&!isNaN(parseFloat(dataItemCompare))){dataItem=parseFloat(dataItem);dataItemCompare=parseFloat(dataItemCompare);}if(dataItem>dataItemCompare){return 1;}else{if(dataItem<% function createCheckboxGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %> <% for (var i=0; i < field.options.length; i++) { %> id="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> id="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> <% if ( field.value === "true" ) { %> checked = "checked" <% } %> <% if (field.value === "false") { field.value = "true"; } %> value="<%= field.value %>" name="<%= gadgets.util.escape(field.userpref) %>" /> <% if (field.options[i].label) { %> for="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> for="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> ><%= gadgets.util.escape(field.options[i].label) %> <% } %>
<% } %> <% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createRadioGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %><% for (var i=0; i < field.options.length; i++) { %>
id="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>id="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %><% if (field.selected === field.options[i].value || field.options[i].selected) { %>checked = "checked"<% } %> <% if ( field.options[i].value ) { %> value="<%= gadgets.util.escape(field.options[i].value) %>" <% } %>name="<%= gadgets.util.escape(field.userpref) %>"/>for="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>for="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %>><%= gadgets.util.escape(field.options[i].label) %>
<% } %>
<% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createHiddenInput (field) { %> <% } %><% function createTextInput (field) { %> class="<%= gadgets.util.escape(styleClass) %>"<% } else { %>class="<%= gadgets.util.escape(field.type) %>"<% } %> <% if (field.value) { %> value="<%= gadgets.util.escape(field.value) %>" <% } %> <% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"/> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createLabel (field) { %><%= gadgets.util.escape(field.label) %> <% } %><% function createTextarea (field) { %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %> value="<%= gadgets.util.escape(item.value) %>"<% if ( field.selected === item.value || item.selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %> <% if (field.options[i].group.options) { %> <% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %> <% createOption(field.options[i].group.options[x]); %> <% } %> <% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createMultiSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %>value="<%= gadgets.util.escape(item.value) %>"<% var selected = false;if(field.value !== undefined && field.value.length > 0) { for(var i = 0; i < field.value.length; i++) { if(field.value[i] === item.value) { selected = true; break; } }}if (selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="multi-select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %><% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %><% createOption(field.options[i].group.options[x]); %><% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createField(field, type) { %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %> <% } %><% if (field.type !== "radio" && field.type !== "checkbox"&& field.type !== "hidden") { %><% createLabel(field); %><% } %><% if (field.type == "select") { %><% createSelect(field); %> <% } else if (field.type == "multiselect") { %><% createMultiSelect(field); %><% } else if (field.type == "textarea") { %><% createTextarea(field); %><% } else if (field.type == "radio") { %><% createRadioGroup(field); %><% } else if (field.type == "checkbox") { %><% createCheckboxGroup(field); %><% } else if (field.type == "custom" && field.template) { %><%= field.template() %>
<% } else if (field.type == "callbackBuilder") { %> <% if (field.id){%>
<% } else { %>
<% } %>
<% } else if (field.type == "hidden") { %><% createHiddenInput(field); %><% } else { %><% createTextInput(field); %><% } %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %>
<% } %><% } %><% function createFieldset (fieldset, type) { %><% if (fieldset.title) { %><%= gadgets.util.escape(fieldset.title) %> <% } %><% if (fieldset.description) { %><%= gadgets.util.escape(fieldset.description) %>
<% } %><% for ( var i = 0; i < fieldset.fields.length; i++ ) { %><% createField(fieldset.fields[i], type); %><% } %> <% } %>';AJS.gadgets.templater.Table.template=' <% if (obj.cols) { %> <% AJS.$(obj.cols).each(function () { %> class="<%= this.theme %>" <% } %> ><%= this.header %>
<% }); %> <% } %> <% if (obj.data) { %> <% AJS.$(obj.data).each(function (i) { %> class="even" <% } %> > <% AJS.$(this).each(function () { %> <%= this.label %> <% }); %> <% }); %> <% } %>
';AJS.$.namespace("AJS.gadget");if(!console.warn){console.warn=function(){};}var Gadget=function(options){AJS.dropDown.Standard=function(dropDown){function canBeMovedToParentFrame(){return !AJS.$.browser.msie&&!AJS.$.browser.opera&&window.top.AJS;}function overflowsIframeHeight(){return parseInt(AJS.$("body").attr("scrollHeight"))>AJS.$("body").outerHeight();}function hideActiveDropdowns(e){if(AJS.$(e.target).parents(".aui-dropdown").length===0){window.top.AJS.$(window.top.document).trigger("click");AJS.$(document).trigger("click");}}function adjustDDPositioning(){if(AJS.dropDown.current&&AJS.dropDown.current.calculateDDPosition){AJS.dropDown.current.updateDDPosition();}}function parentAsContainerHandler(){var top;if(overflowsIframeHeight()){this.updateDDPosition();this.$.remove().addClass("gadget-dropdown");this.shadow.remove();this.shadow.appendTo(window.top.document.body);this.$.appendTo(window.top.document.body);arguments.callee=function(){this.$.css("top",top);this.shadow.css("top",top);};}}var iframeAsContainerHandler={show:function(){if(overflowsIframeHeight()&&gadgets.window.adjustHeight){iframeAsContainerHandler.restoreHeight=AJS.$("body").outerHeight();gadgets.window.adjustHeight(AJS.$("body").attr("scrollHeight"));}},hide:function(){if(iframeAsContainerHandler.restoreHeight){gadgets.window.adjustHeight(iframeAsContainerHandler.restoreHeight);iframeAsContainerHandler.restoreHeight=undefined;}}};if(window.top.AJS){AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);window.top.AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);}AJS.$(window).resize(adjustDDPositioning);return function(options){var dropdowns;options.selectionHandler=options.selectionHandler||function(e,item){if(item[0].nodeName==="A"){window.top.location.href=item.attr("href");}else{window.top.location.href=AJS.$("a",item).attr("href");}};dropdowns=dropDown.call(this,options);AJS.$.each(dropdowns,function(){if(canBeMovedToParentFrame()){this.updateDDPosition=function(){var dropdownOffsets;function getLeftInPercent(left){return left/window.top.AJS.$("body").width()*100+"%";}function calculateOffsets(){var dropdownOffset=this.trigger.offset(),iframeOffset=window.top.AJS.$("#"+window.name).offset();return{top:dropdownOffset.top+this.trigger.outerHeight()+iframeOffset.top,left:dropdownOffset.left+iframeOffset.left+this.trigger.outerWidth()-this.$.outerWidth(),width:this.$.outerWidth()};}if(!this.trigger.is(":visible")){this.hide();}else{dropdownOffsets=calculateOffsets.call(this);this.$.css({top:dropdownOffsets.top,margin:0,left:getLeftInPercent(dropdownOffsets.left),right:"auto"});this.shadow.css({left:getLeftInPercent(dropdownOffsets.left-7),top:dropdownOffsets.top,right:"auto"});}};this.addCallback("show",parentAsContainerHandler);}else{this.addCallback("show",iframeAsContainerHandler.show);this.addCallback("hide",iframeAsContainerHandler.hide);}});return dropdowns;};}(AJS.dropDown.Standard);var prefs=new gadgets.Prefs(),viewMode,message=function(){var popup;return{show:function(msg,classNm,dismissible){var messageEl,buttons,cancelButton,buttonPanel,targHeight;messageEl=AJS.$("
").addClass(classNm).css({width:260,visiblity:"hidden"}).html(msg).appendTo("body");buttons=AJS.$("button",messageEl);if(dismissible!==false){cancelButton=AJS.$("").text(prefs.getMsg("gadget.common.cancel")).click(message.hide);}if(buttons.length>0||cancelButton){buttonPanel=AJS.$("").append(buttons).append(cancelButton);messageEl.append(buttonPanel);}message.hide();popup=new AJS.popup(messageEl.outerWidth(),messageEl.outerHeight(),"message");popup.element.html(messageEl);popup.show();AJS.$(".blanket").show();},hide:function(){if(popup){popup.remove();AJS.$(".blanket").remove();AJS.dim.dim=undefined;}}};}(),gadget={createCookie:function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}else{var expires="";}document.cookie=window.name+name+"="+value+expires+"; path=/";},readCookie:function(name){var nameEQ=window.name+name+"=";var ca=document.cookie.split(";");for(var i=0;i
").addClass("gadget").appendTo("body");return function(){return gadget;};}(),resize:function(size){if(gadgets.window.adjustHeight){window.setTimeout(function(){gadgets.window.adjustHeight(size);},0);}},isLocal:function(){if(typeof atlassian!=="undefined"&&atlassian.util){return atlassian.util.getRendererBaseUrl()===options.baseUrl;}},showLoading:function(){if(gadgets.window.getViewportDimensions&&gadgets.window.getViewportDimensions().width<250){AJS.$("body").addClass("loading-small");}else{AJS.$("body").addClass("loading");}},hideLoading:function(){AJS.$("body").removeClass("loading").removeClass("loading-small");},ajaxErrorHandler:{handle500:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.500"),settings.url,settings.url));},handle503:function(evt,response,settings){gadget.showMessage("error",response.data.errorMessages);},handle404:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.404"),settings.url,settings.url));},execute:function(evt,response,settings){if(response&&gadget.ajaxErrorHandler["handle"+response.rc]){gadget.ajaxErrorHandler["handle"+response.rc].apply(gadget,arguments);}}}};AJS.$("a, area").live("mouseover",function(){if(!AJS.$(this).attr("target")){AJS.$(this).attr({target:"_parent"});}});AJS.gadget.getBaseUrl=function(){return options.baseUrl;};if(options.useOauth&&window.location.href.indexOf(options.baseUrl)!==0){AJS.$.ajax=function(ajax){var queue=[],trustedAppsDenied=function(){ajax({authorization:"oauth",url:options.useOauth,data:{cacheBuster:new Date().getTime()},useToken:"always",complete:function(response){if(response.oauthApprovalUrl||response.rc===403){gadget.approvalUrl=response.oauthApprovalUrl;if(response.oauthApprovalUrl){gadget.approvalRequest=queue[0];}handleOauthApproval();}else{if(response.data){gadget.appendApprovedButton();makeOAuthRequests();}}}});},trustedAppsAccepted=function(){AJS.$.ajax=ajax;AJS.$(queue).each(function(){AJS.$.ajax(this);});},makeOAuthRequests=function(){AJS.$.ajax=ajax;AJS.$.ajaxSetup({authorization:"oauth",useToken:"always"});AJS.$(queue).each(function(){AJS.$.ajax(this);});},handleOauthApproval=function(){AJS.$.ajaxSetup({authorization:"oauth",useToken:"if_available"});var attachApprovalAdvice=function(request,idx){var cacheBuster=new Date().getTime();request.complete=function(complete){return function(response){if(idx===queue.length-1&&gadget.approvalRequest){if(response.rc===200||response.rc===400&&response.data){if(gadget.appendFooterApproval){gadget.appendFooterApproval(request);}}else{if(gadget.appendViewApproval&&gadget.approvalRequest){gadget.appendViewApproval(request);}}}if(complete){complete.apply(AJS.$.ajax,arguments);}};}(request.complete);if(typeof request.data==="object"){request.data.cacheBuster=cacheBuster;}else{if(typeof request.data==="string"){request.data+="&cacheBuster="+cacheBuster;}else{request.data="cacheBuster="+cacheBuster;}}if(!gadget.approvalRequest){request.global=false;request.error=function(response){if(response.rc===400){AJS.$("body").addClass("login").append(gadget.getMsg("gadget.common.container.login"));if(window.top.document){AJS.$("#"+window.name+"-chrome",window.top.document).css("opacity",0.7);}gadget.resize();}};}return request;};AJS.$.ajax=ajax;AJS.$(queue).each(function(i){AJS.$.ajax(attachApprovalAdvice(this,i));});};return function(settings){if(options.useOauth==="always"){AJS.$.ajaxSetup({authorization:"oauth",useOauth:"always"});settings.success=function(success){return function(response){if(response.oauthApprovalUrl){gadget.approvalUrl=response.oauthApprovalUrl;gadget.appendViewApproval(settings);}else{if(success){gadget.appendApprovedButton();success.apply(AJS.$.ajax,arguments);}}};}(settings.success);AJS.$.ajax=ajax;settings.useToken="always";AJS.$.ajax(settings);}else{AJS.$.ajax=function(ajaxSettings){queue.push(ajaxSettings);return arguments.callee;}(settings);ajax({url:options.useOauth,data:{cacheBuster:new Date().getTime()},complete:function(response,settings){if(response.rc===401){trustedAppsDenied(response,settings);}else{if(response.data){trustedAppsAccepted();}}}});}};}(AJS.$.ajax);}AJS.$.ajaxSetup({dataType:"json",type:"get",baseUrl:options.baseUrl});AJS.$().ajaxError(gadget.ajaxErrorHandler.execute);AJS.$().ajaxOpen(gadget.showLoading);AJS.$().ajaxClosed(gadget.hideLoading);return gadget;};var Standard=function(options){var gadget=Gadget(options);AJS.$.extend(gadget,{constructor:Standard,getView:function(){var view=AJS.$("
").addClass("view").appendTo(gadget.getGadget());return function(){return view;};}(),getFooter:function(){var footer=AJS.$("
").addClass("footer").appendTo(gadget.getGadget());AJS.$("body").addClass("has-footer-options");this.getFooter=function(){return footer;};return footer;},getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){window.location.reload();};request.useToken="always";AJS.$.ajax(request);});},getApprovalButton:function(request){var popup=gadget.getOauthPopup(request);return AJS.$("
").html(""+gadget.getMsg("gadget.common.oauth.approve.button")+" ").click(popup.createOpenerOnClick());},appendApprovedButton:function(){AJS.$(" ").appendTo(gadget.getFooter());},appendViewApproval:function(request){var approvalButton=gadget.getApprovalButton(request).appendTo("body");AJS.$("body").addClass("oauth-view-approval");return approvalButton;},appendFooterApproval:function(request){var popup=gadget.getOauthPopup(request);return AJS.$(" ").addClass("oauth").click(popup.createOpenerOnClick()).appendTo(gadget.getFooter());},viewTemplate:AJS.gadgets.templater.Custom({template:function(args){if(gadgets.views){gadget.setViewMode(gadgets.views.getCurrentView().getName());}options.view.template.call(gadget,args);gadget.showView();},cache:false,args:function(){var args=[];AJS.$(options.view.args).each(function(){if(AJS.$.isFunction(this.ajaxOptions)){var that=this;args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}()})});gadget.showView=function(){gadget.viewTemplate.addCallback(gadget.resize);return function(refresh){if(refresh){gadget.viewTemplate.build();}else{gadget.getView().show();gadget.resize();}};}();if(options.view.onResizeReload){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){if(gadget.getView().is(":visible")){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.showView(true);width=newWidth;}}};}());}if(options.view.onResizeAdjustHeight){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.resize();width=newWidth;}};}());}return gadget;};var Configured=function(options){var gadget=Standard(options);gadget.constructor=Configured;gadget.ajaxErrorHandler.handle400=function(evt,response){if(AJS.$("body").hasClass("config-unavailable")){return;}var errorContainer=AJS.$("
").append(""+gadget.getMsg("gadget.common.config.unavailable")+"
").appendTo(gadget.getView()),errorList=AJS.$("").appendTo(errorContainer);AJS.$("body").addClass("config-unavailable");AJS.$(response.data.errors).each(function(){AJS.$(" ").append(""+gadget.getMsg(this.error,this.params)+" ").appendTo(errorList);});gadget.resize();};if(options.view.enableReload){if(gadget.getPref("refresh")!==""&&gadget.getPref("refresh")!=="false"){window.setInterval(function(){gadget.showView(true);},60000*gadget.getPref("refresh"));}AJS.$(" ").click(function(){gadget.showView(true);}).appendTo(gadget.getFooter());}return gadget;};var Configurable=function(options){var gadget=Configured(options);AJS.$.extend(gadget,{constructor:Configurable,appendFooterApproval:function(superAppendFooterApproval){return function(request){if(AJS.$(".info.footer-message").length<1){AJS.$("
").addClass("info footer-message").html(""+gadget.getMsg("gadget.common.oauth.approve.message")+"
").append(gadget.getApprovalButton(request)).insertBefore(AJS.$(":first",gadget.configTemplate.getTarget()));gadget.resize();}superAppendFooterApproval.apply(gadget,arguments);};}(gadget.appendFooterApproval),getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){function persistFormInHash(){window.location.href+="&"+AJS.$("form",gadget.configTemplate.getTarget()).serialize()+"}";}if(gadget.getPrefs().getBool("isConfigured")&&!/isConfigured=true/.test(window.location.href)){persistFormInHash();window.top.location.reload();}else{persistFormInHash();window.location.reload();}};request.useToken="always";AJS.$.ajax(request);});},configTemplate:AJS.gadgets.templater.Form({target:AJS.$("
").appendTo(document.body),descriptor:function(args){var descriptor=options.config.descriptor.call(gadget,args);if(options.view.enableReload){descriptor.fields.push({userpref:"refresh",label:gadget.getMsg("gadget.common.refresh.label"),description:gadget.getMsg("gadget.common.refresh.description"),selected:gadget.getPref("refresh"),options:[{value:"false",label:gadget.getMsg("gadget.common.refresh.never")},{value:"15",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),15)},{value:"30",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),30)},{value:"60",label:AJS.format(gadget.getMsg("gadget.common.refresh.hour"),1)},{value:"120",label:AJS.format(gadget.getMsg("gadget.common.refresh.hours"),2)}],type:"select"});}return descriptor;},args:function(){var args=[];if(AJS.$.isFunction(options.config.args)){options.config.args=options.config.args();}AJS.$(options.config.args).each(function(){var that=this;if(AJS.$.isFunction(this.ajaxOptions)){args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}(),cancel:function(e){gadget.showView();e.preventDefault();},submit:function(e){var form=AJS.$(this),save=function(){AJS.$(form.serializeArray()).each(function(){gadget.savePref(this.name,this.value);});gadget.showView(true);};if(form.attr("action")!==""){AJS.$.ajax({type:"get",url:form.attr("action"),data:form.serialize(),global:false,success:function(){var fieldValues={};AJS.$(form.serializeArray()).each(function(){var fieldVal=fieldValues[this.name];if(!fieldVal){fieldVal=this.value;}else{if(AJS.$.isArray(fieldVal)){fieldVal.push(this.value);}else{fieldVal=[fieldVal,this.value];}}fieldValues[this.name]=fieldVal;});AJS.$(":checkbox:not(:checked)",form).each(function(){fieldValues[this.name]="false";});for(var name in fieldValues){gadget.savePref(name,fieldValues[name]);}gadget.showView(true);},error:function(response,settings){gadget.ajaxErrorHandler.execute(null,response,AJS.$.extend(settings,{isConfig:true}));}});}else{save();}e.preventDefault();}}),getConfig:function(){return gadget.configTemplate.getTarget();}});gadget.showConfig=function(){var restoreValuesFromHash=function(){if(!/#rpctoken=[0-9]+$/.test(window.location.href)){var options,fields=window.location.href.replace(/.*?#/,"").split("&");AJS.$.each(fields,function(){var name=this.split("=")[0],val=this.split("=")[1],field=AJS.$(":input[name="+name+"]");if(field.length>0){if(field.is("select")){options=val.split(",");AJS.$.each(options,function(){AJS.$("option[value="+this+"]",field).attr("selected","selected");});}else{if(field.is(":radio,:checkbox")){field.attr("checked","checked");}else{field.val(val);}}}});window.location.href=window.location.href.replace(/(#rpctoken=[0-9]+).*/,"$1");}};gadget.configTemplate.addCallback(function(){AJS.$("body").addClass("config-active");gadget.configTemplate.getTarget().show();restoreValuesFromHash();if(gadget.approvalRequest){gadget.appendFooterApproval(gadget.approvalRequest);}AJS.$("button",gadget.getFooter()).hide();window.setTimeout(function(){gadget.resize();},0);});return function(){gadget.configTemplate.build();};}();gadget.showView=function(refresh){if(refresh){gadget.viewTemplate.build();}else{AJS.$("body").removeClass("config-active");gadget.configTemplate.getTarget().hide();gadget.resize();AJS.$("button",gadget.getFooter()).show();}};gadget.configTemplate.getTrigger=function(){var button=AJS.$("").appendTo(gadget.getFooter()).click(function(e){gadget.showConfig();e.preventDefault();});return function(){return button;};}();gadget.ajaxErrorHandler.handle400=function(superHandle400){var validationErrors,showFormErrors=function(){AJS.$(".error",gadget.configTemplate.getTarget()).hide();AJS.$(validationErrors).each(function(){var msg=gadget.getMsg(this.error,this.params);AJS.$(":input[name='"+this.field+"']").parent().find(".error").text(msg).show();AJS.$("#"+this.field+"-error").text(msg).show();});gadget.resize();validationErrors=null;};gadget.configTemplate.addCallback(function(){if(!gadget.getPrefs().getBool("isConfigured")||validationErrors){AJS.$("input.cancel",gadget.configTemplate.getTarget()).hide();}if(validationErrors){showFormErrors();}});return function(evt,response,settings){validationErrors=response.data.errors;if(!settings.isConfig){superHandle400.apply(gadget,arguments);}else{showFormErrors();}};}(gadget.ajaxErrorHandler.handle400);return gadget;};AJS.Gadget=function(options){var gadget,pubInterface,isWriteable=function(){if(gadgets.views){return gadgets.views.getParams().writable===undefined||gadgets.views.getParams().writable==="true";}},getStandardInterface=function(){return{showMessage:gadget.showMessage,savePref:gadget.savePref,setViewMode:gadget.setViewMode,getViewMode:gadget.getViewMode,getBaseUrl:gadget.getBaseUrl,getPrefs:gadget.getPrefs,getPref:gadget.getPref,getPrefArray:gadget.getPrefArray,getMsg:gadget.getMsg,getGadget:gadget.getGadget,resize:gadget.resize,showLoading:gadget.showLoading,hideLoading:gadget.hideLoading,createCookie:gadget.createCookie,readCookie:gadget.readCookie,eraseCookie:gadget.eraseCookie,isLocal:gadget.isLocal};},getConfiguredInterface=function(){return AJS.$.extend(getStandardInterface(),{getView:gadget.getView,showView:gadget.showView,getFooter:gadget.getFooter});},getConfigurableInterface=function(){return AJS.$.extend(getConfiguredInterface(),{showConfig:gadget.showConfig,getConfig:gadget.getConfig});};if(options.view&&!options.config){gadget=Standard(options);pubInterface=getStandardInterface();gadget.showView(true);}else{if(options.view&&options.config&&!isWriteable()){gadget=Configured(options);pubInterface=getConfiguredInterface();if(gadget.getPrefs().getBool("isConfigured")){gadget.showView(true);}}else{if(options.view&&options.config&&isWriteable()){gadget=Configurable(options);pubInterface=getConfigurableInterface();if(!gadget.getPrefs().getBool("isConfigured")){gadget.showConfig();}else{gadget.showView(true);}}}}return pubInterface;};AJS.gadget.Configurable=AJS.Gadget;})();
Lint at line 1 character 1996: 'options' was used before it was defined.
(function(){AJS.$.fn.serializeArray=function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();if(val==null){val="";}return val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();};AJS.$.extend({put:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"PUT",url:url,data:data,success:callback,dataType:type});},del:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"delete",url:url,data:data,success:callback,dataType:type});},ajax:function(ajax){var activeReq=0,dressResponse=function(xhr){var res={};res.rc=xhr.status;if(xhr.responseText!==""){res.data=gadgets.json.parse(xhr.responseText);}return res;};AJS.$.each("ajaxOpen,ajaxClosed,ajaxOauthApproval".split(","),function(i,o){AJS.$.fn[o]=function(f){return this.bind(o,f);};});AJS.$().ajaxSend(function(evt,req,options){if(++activeReq===1){AJS.$.event.trigger("ajaxOpen",[options]);}});AJS.$().ajaxComplete(function(evt,req,options){if(--activeReq===0){AJS.$.event.trigger("ajaxClosed",[options]);}});AJS.$.fn.ajaxComplete=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxComplete",f);};AJS.$.fn.ajaxError=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxError",f);};return function(usrOptions){var reqOptions={};if(typeof options==="string"){options={url:options};}var options=usrOptions;for(var name in AJS.$.ajaxSettings){if(!options[name]&&options[name]!==false){options[name]=AJS.$.ajaxSettings[name];}}if(options.baseUrl){if(!/^(http)|(https):\/\//.test(options.url)){options.url=options.baseUrl+options.url;}}if(typeof atlassian!=="undefined"&&atlassian.util){if(atlassian.util.getRendererBaseUrl()===options.baseUrl&&new RegExp(options.baseUrl).test(options.url)){if(options.error){options.error=function(error){return function(xhr,type){if(!xhr.responseText){options.success.apply(this,arguments);}else{error.call(this,dressResponse(xhr));}};}(options.error);}ajax.call(this,options);return;}}reqOptions[gadgets.io.RequestParameters.METHOD]=gadgets.io.MethodType[options.type.toUpperCase()];reqOptions[gadgets.io.RequestParameters.CONTENT_TYPE]=gadgets.io.ContentType[options.dataType.toUpperCase()];reqOptions.url=options.url;if(options.headers){reqOptions[gadgets.io.RequestParameters.HEADERS]=options.headers;}if(options.authorization){reqOptions[gadgets.io.RequestParameters.AUTHORIZATION]=gadgets.io.AuthorizationType[options.authorization.toUpperCase()];}if(options.useToken){reqOptions.OAUTH_USE_TOKEN=options.useToken;}if(options.summaries){reqOptions[gadgets.io.RequestParameters.GET_SUMMARIES]=options.summaries;}if(options.entries){reqOptions[gadgets.io.RequestParameters.NUM_ENTRIES]=options.entries;}if(options.data){if(options.type.toLowerCase()==="get"){if(typeof options.data==="string"){reqOptions.url+=("?"+options.data.replace(/^\?/,""));}else{reqOptions.url+=("?"+gadgets.io.encodeValues(options.data).replace(/^\?/,""));}}else{reqOptions[gadgets.io.RequestParameters.POST_DATA]=options.data;}}reqOptions.success=function(response){if(options.complete){options.complete(response,options);}if(options.global){AJS.$.event.trigger("ajaxComplete",[response,options]);}if(response.errors&&response.errors.length||response.oauthError){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.dataType.toLowerCase()==="json"&&typeof response.data==="string"){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(response.rc!==200){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.success&&(response||response.oauthApprovalUrl)){options.success(response.data||response);}if(options.global){AJS.$.event.trigger("ajaxSuccess",[response.data,options]);}};gadgets.io.makeRequest(reqOptions.url,reqOptions.success,reqOptions);if(options.ajaxSend){options.ajaxSend(options);}if(options.global){AJS.$.event.trigger("ajaxSend",[options]);}};}(AJS.$.ajax)});AJS.$.namespace("AJS.gadgets.templater");AJS.gadgets.templater.Base=function(){var cache,template,descriptor=function(args){return args;},callbacks=[],remoteArgs=[],args=[],renderTemplate=function(){var cache={};return function(str,data){var fn;if(!/\W/.test(str)){fn=cache[str];}else{var fnString="var p=[], print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+str.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');";fn=new Function("obj",fnString);}return data?fn(data):fn;};}();return{getDescriptorData:function(callback){var argLengthComparator=0,that=this,formattedArgs={};if(remoteArgs.length<1){AJS.$(args).each(function(){formattedArgs[this.key]=this.data;});if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}}AJS.$(remoteArgs).each(function(i,item){var reqOptions;if(typeof item.ajaxOptions==="string"){reqOptions={url:this.ajaxOptions};}else{if(AJS.$.isFunction(item.ajaxOptions)){reqOptions=item.ajaxOptions();}else{reqOptions=item.ajaxOptions;}}reqOptions.success=function(response){++argLengthComparator;formattedArgs[remoteArgs[i].key]=response;if(argLengthComparator===remoteArgs.length){var excuter=function(){if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}return arguments.callee;}();if(cache!==false){that.getDescriptorData=excuter;}}};AJS.$.ajax(reqOptions);});},disableCache:function(){cache=false;},setTemplate:function(templ){template=templ;},setDescriptor:function(desc){descriptor=desc;},addCallback:function(func){callbacks.push(func);},setRemoteDescriptorArg:function(key,ajaxOptions){remoteArgs.push({key:key,ajaxOptions:ajaxOptions});},setDescriptorArg:function(arg){args.push(arg);},build:function(data){var that=this;if(!data&&data!==false){this.getDescriptorData(this.build);}else{if(data!==false){if(typeof template==="string"&&document.getElementById(template)){that.build.template=AJS.$(template).html();var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(AJS.$.isFunction(template)){template(data);AJS.$(callbacks).each(function(){this.call(that,data);});}else{if(template.length>50){that.build.template=template;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(!that.build.template){AJS.$.ajax({url:template,dataType:"text",success:function(response){that.build.template=response;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}});}else{var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}}}}}}}};};AJS.gadgets.templater.Custom=function(options){var templater=AJS.gadgets.templater.Base();templater.setTemplate(options.template);if(options.descriptor){templater.setDescriptor(options.descriptor);}if(options.callback){templater.addCallback(options.callback);}if(options.cache===false){templater.disableCache();}AJS.$.extend(templater,{getTarget:function(){return options.target;}});if(options.args){AJS.$(options.args).each(function(){if(this.ajaxOptions){templater.setRemoteDescriptorArg(this.key,this.ajaxOptions);}else{templater.setDescriptorArg(this);}});}return templater;};AJS.gadgets.templater.Form=function(options){return AJS.gadgets.templater.Custom(AJS.$.extend({template:AJS.gadgets.templater.Form.template,baseUrl:AJS.gadget.getBaseUrl(),callback:function(response,data){if(options.target){options.target.html(response);if(options.submit){AJS.$("form",options.target).submit(options.submit);}if(options.cancel){AJS.$("input.cancel",options.target).click(options.cancel);}AJS.$(data.fields).each(function(){if(this.type==="callbackBuilder"){var targetDiv=AJS.$("div#"+this.id);this.callback(targetDiv);}});}else{return response;}}},options));};AJS.gadgets.templater.Table=function(options){var table,sortCol,sortOrd=[],sort=function(data,column,order){data.cols[column].theme=order;if(!data.cols[column].sorted){data.data.sort(function(item,compareItem){var dataItem=item[column].value,dataItemCompare=compareItem[column].value;if(!isNaN(parseFloat(dataItem))&&!isNaN(parseFloat(dataItemCompare))){dataItem=parseFloat(dataItem);dataItemCompare=parseFloat(dataItemCompare);}if(dataItem>dataItemCompare){return 1;}else{if(dataItem<% function createCheckboxGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %> <% for (var i=0; i < field.options.length; i++) { %> id="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> id="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> <% if ( field.value === "true" ) { %> checked = "checked" <% } %> <% if (field.value === "false") { field.value = "true"; } %> value="<%= field.value %>" name="<%= gadgets.util.escape(field.userpref) %>" /> <% if (field.options[i].label) { %> for="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> for="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> ><%= gadgets.util.escape(field.options[i].label) %> <% } %>
<% } %> <% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createRadioGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %><% for (var i=0; i < field.options.length; i++) { %>
id="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>id="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %><% if (field.selected === field.options[i].value || field.options[i].selected) { %>checked = "checked"<% } %> <% if ( field.options[i].value ) { %> value="<%= gadgets.util.escape(field.options[i].value) %>" <% } %>name="<%= gadgets.util.escape(field.userpref) %>"/>for="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>for="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %>><%= gadgets.util.escape(field.options[i].label) %>
<% } %>
<% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createHiddenInput (field) { %> <% } %><% function createTextInput (field) { %> class="<%= gadgets.util.escape(styleClass) %>"<% } else { %>class="<%= gadgets.util.escape(field.type) %>"<% } %> <% if (field.value) { %> value="<%= gadgets.util.escape(field.value) %>" <% } %> <% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"/> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createLabel (field) { %><%= gadgets.util.escape(field.label) %> <% } %><% function createTextarea (field) { %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %> value="<%= gadgets.util.escape(item.value) %>"<% if ( field.selected === item.value || item.selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %> <% if (field.options[i].group.options) { %> <% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %> <% createOption(field.options[i].group.options[x]); %> <% } %> <% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createMultiSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %>value="<%= gadgets.util.escape(item.value) %>"<% var selected = false;if(field.value !== undefined && field.value.length > 0) { for(var i = 0; i < field.value.length; i++) { if(field.value[i] === item.value) { selected = true; break; } }}if (selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="multi-select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %><% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %><% createOption(field.options[i].group.options[x]); %><% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createField(field, type) { %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %> <% } %><% if (field.type !== "radio" && field.type !== "checkbox"&& field.type !== "hidden") { %><% createLabel(field); %><% } %><% if (field.type == "select") { %><% createSelect(field); %> <% } else if (field.type == "multiselect") { %><% createMultiSelect(field); %><% } else if (field.type == "textarea") { %><% createTextarea(field); %><% } else if (field.type == "radio") { %><% createRadioGroup(field); %><% } else if (field.type == "checkbox") { %><% createCheckboxGroup(field); %><% } else if (field.type == "custom" && field.template) { %><%= field.template() %>
<% } else if (field.type == "callbackBuilder") { %> <% if (field.id){%>
<% } else { %>
<% } %>
<% } else if (field.type == "hidden") { %><% createHiddenInput(field); %><% } else { %><% createTextInput(field); %><% } %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %>
<% } %><% } %><% function createFieldset (fieldset, type) { %><% if (fieldset.title) { %><%= gadgets.util.escape(fieldset.title) %> <% } %><% if (fieldset.description) { %><%= gadgets.util.escape(fieldset.description) %>
<% } %><% for ( var i = 0; i < fieldset.fields.length; i++ ) { %><% createField(fieldset.fields[i], type); %><% } %> <% } %>';AJS.gadgets.templater.Table.template=' <% if (obj.cols) { %> <% AJS.$(obj.cols).each(function () { %> class="<%= this.theme %>" <% } %> ><%= this.header %>
<% }); %> <% } %> <% if (obj.data) { %> <% AJS.$(obj.data).each(function (i) { %> class="even" <% } %> > <% AJS.$(this).each(function () { %> <%= this.label %> <% }); %> <% }); %> <% } %>
';AJS.$.namespace("AJS.gadget");if(!console.warn){console.warn=function(){};}var Gadget=function(options){AJS.dropDown.Standard=function(dropDown){function canBeMovedToParentFrame(){return !AJS.$.browser.msie&&!AJS.$.browser.opera&&window.top.AJS;}function overflowsIframeHeight(){return parseInt(AJS.$("body").attr("scrollHeight"))>AJS.$("body").outerHeight();}function hideActiveDropdowns(e){if(AJS.$(e.target).parents(".aui-dropdown").length===0){window.top.AJS.$(window.top.document).trigger("click");AJS.$(document).trigger("click");}}function adjustDDPositioning(){if(AJS.dropDown.current&&AJS.dropDown.current.calculateDDPosition){AJS.dropDown.current.updateDDPosition();}}function parentAsContainerHandler(){var top;if(overflowsIframeHeight()){this.updateDDPosition();this.$.remove().addClass("gadget-dropdown");this.shadow.remove();this.shadow.appendTo(window.top.document.body);this.$.appendTo(window.top.document.body);arguments.callee=function(){this.$.css("top",top);this.shadow.css("top",top);};}}var iframeAsContainerHandler={show:function(){if(overflowsIframeHeight()&&gadgets.window.adjustHeight){iframeAsContainerHandler.restoreHeight=AJS.$("body").outerHeight();gadgets.window.adjustHeight(AJS.$("body").attr("scrollHeight"));}},hide:function(){if(iframeAsContainerHandler.restoreHeight){gadgets.window.adjustHeight(iframeAsContainerHandler.restoreHeight);iframeAsContainerHandler.restoreHeight=undefined;}}};if(window.top.AJS){AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);window.top.AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);}AJS.$(window).resize(adjustDDPositioning);return function(options){var dropdowns;options.selectionHandler=options.selectionHandler||function(e,item){if(item[0].nodeName==="A"){window.top.location.href=item.attr("href");}else{window.top.location.href=AJS.$("a",item).attr("href");}};dropdowns=dropDown.call(this,options);AJS.$.each(dropdowns,function(){if(canBeMovedToParentFrame()){this.updateDDPosition=function(){var dropdownOffsets;function getLeftInPercent(left){return left/window.top.AJS.$("body").width()*100+"%";}function calculateOffsets(){var dropdownOffset=this.trigger.offset(),iframeOffset=window.top.AJS.$("#"+window.name).offset();return{top:dropdownOffset.top+this.trigger.outerHeight()+iframeOffset.top,left:dropdownOffset.left+iframeOffset.left+this.trigger.outerWidth()-this.$.outerWidth(),width:this.$.outerWidth()};}if(!this.trigger.is(":visible")){this.hide();}else{dropdownOffsets=calculateOffsets.call(this);this.$.css({top:dropdownOffsets.top,margin:0,left:getLeftInPercent(dropdownOffsets.left),right:"auto"});this.shadow.css({left:getLeftInPercent(dropdownOffsets.left-7),top:dropdownOffsets.top,right:"auto"});}};this.addCallback("show",parentAsContainerHandler);}else{this.addCallback("show",iframeAsContainerHandler.show);this.addCallback("hide",iframeAsContainerHandler.hide);}});return dropdowns;};}(AJS.dropDown.Standard);var prefs=new gadgets.Prefs(),viewMode,message=function(){var popup;return{show:function(msg,classNm,dismissible){var messageEl,buttons,cancelButton,buttonPanel,targHeight;messageEl=AJS.$("
").addClass(classNm).css({width:260,visiblity:"hidden"}).html(msg).appendTo("body");buttons=AJS.$("button",messageEl);if(dismissible!==false){cancelButton=AJS.$("").text(prefs.getMsg("gadget.common.cancel")).click(message.hide);}if(buttons.length>0||cancelButton){buttonPanel=AJS.$("").append(buttons).append(cancelButton);messageEl.append(buttonPanel);}message.hide();popup=new AJS.popup(messageEl.outerWidth(),messageEl.outerHeight(),"message");popup.element.html(messageEl);popup.show();AJS.$(".blanket").show();},hide:function(){if(popup){popup.remove();AJS.$(".blanket").remove();AJS.dim.dim=undefined;}}};}(),gadget={createCookie:function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}else{var expires="";}document.cookie=window.name+name+"="+value+expires+"; path=/";},readCookie:function(name){var nameEQ=window.name+name+"=";var ca=document.cookie.split(";");for(var i=0;i
").addClass("gadget").appendTo("body");return function(){return gadget;};}(),resize:function(size){if(gadgets.window.adjustHeight){window.setTimeout(function(){gadgets.window.adjustHeight(size);},0);}},isLocal:function(){if(typeof atlassian!=="undefined"&&atlassian.util){return atlassian.util.getRendererBaseUrl()===options.baseUrl;}},showLoading:function(){if(gadgets.window.getViewportDimensions&&gadgets.window.getViewportDimensions().width<250){AJS.$("body").addClass("loading-small");}else{AJS.$("body").addClass("loading");}},hideLoading:function(){AJS.$("body").removeClass("loading").removeClass("loading-small");},ajaxErrorHandler:{handle500:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.500"),settings.url,settings.url));},handle503:function(evt,response,settings){gadget.showMessage("error",response.data.errorMessages);},handle404:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.404"),settings.url,settings.url));},execute:function(evt,response,settings){if(response&&gadget.ajaxErrorHandler["handle"+response.rc]){gadget.ajaxErrorHandler["handle"+response.rc].apply(gadget,arguments);}}}};AJS.$("a, area").live("mouseover",function(){if(!AJS.$(this).attr("target")){AJS.$(this).attr({target:"_parent"});}});AJS.gadget.getBaseUrl=function(){return options.baseUrl;};if(options.useOauth&&window.location.href.indexOf(options.baseUrl)!==0){AJS.$.ajax=function(ajax){var queue=[],trustedAppsDenied=function(){ajax({authorization:"oauth",url:options.useOauth,data:{cacheBuster:new Date().getTime()},useToken:"always",complete:function(response){if(response.oauthApprovalUrl||response.rc===403){gadget.approvalUrl=response.oauthApprovalUrl;if(response.oauthApprovalUrl){gadget.approvalRequest=queue[0];}handleOauthApproval();}else{if(response.data){gadget.appendApprovedButton();makeOAuthRequests();}}}});},trustedAppsAccepted=function(){AJS.$.ajax=ajax;AJS.$(queue).each(function(){AJS.$.ajax(this);});},makeOAuthRequests=function(){AJS.$.ajax=ajax;AJS.$.ajaxSetup({authorization:"oauth",useToken:"always"});AJS.$(queue).each(function(){AJS.$.ajax(this);});},handleOauthApproval=function(){AJS.$.ajaxSetup({authorization:"oauth",useToken:"if_available"});var attachApprovalAdvice=function(request,idx){var cacheBuster=new Date().getTime();request.complete=function(complete){return function(response){if(idx===queue.length-1&&gadget.approvalRequest){if(response.rc===200||response.rc===400&&response.data){if(gadget.appendFooterApproval){gadget.appendFooterApproval(request);}}else{if(gadget.appendViewApproval&&gadget.approvalRequest){gadget.appendViewApproval(request);}}}if(complete){complete.apply(AJS.$.ajax,arguments);}};}(request.complete);if(typeof request.data==="object"){request.data.cacheBuster=cacheBuster;}else{if(typeof request.data==="string"){request.data+="&cacheBuster="+cacheBuster;}else{request.data="cacheBuster="+cacheBuster;}}if(!gadget.approvalRequest){request.global=false;request.error=function(response){if(response.rc===400){AJS.$("body").addClass("login").append(gadget.getMsg("gadget.common.container.login"));if(window.top.document){AJS.$("#"+window.name+"-chrome",window.top.document).css("opacity",0.7);}gadget.resize();}};}return request;};AJS.$.ajax=ajax;AJS.$(queue).each(function(i){AJS.$.ajax(attachApprovalAdvice(this,i));});};return function(settings){if(options.useOauth==="always"){AJS.$.ajaxSetup({authorization:"oauth",useOauth:"always"});settings.success=function(success){return function(response){if(response.oauthApprovalUrl){gadget.approvalUrl=response.oauthApprovalUrl;gadget.appendViewApproval(settings);}else{if(success){gadget.appendApprovedButton();success.apply(AJS.$.ajax,arguments);}}};}(settings.success);AJS.$.ajax=ajax;settings.useToken="always";AJS.$.ajax(settings);}else{AJS.$.ajax=function(ajaxSettings){queue.push(ajaxSettings);return arguments.callee;}(settings);ajax({url:options.useOauth,data:{cacheBuster:new Date().getTime()},complete:function(response,settings){if(response.rc===401){trustedAppsDenied(response,settings);}else{if(response.data){trustedAppsAccepted();}}}});}};}(AJS.$.ajax);}AJS.$.ajaxSetup({dataType:"json",type:"get",baseUrl:options.baseUrl});AJS.$().ajaxError(gadget.ajaxErrorHandler.execute);AJS.$().ajaxOpen(gadget.showLoading);AJS.$().ajaxClosed(gadget.hideLoading);return gadget;};var Standard=function(options){var gadget=Gadget(options);AJS.$.extend(gadget,{constructor:Standard,getView:function(){var view=AJS.$("
").addClass("view").appendTo(gadget.getGadget());return function(){return view;};}(),getFooter:function(){var footer=AJS.$("
").addClass("footer").appendTo(gadget.getGadget());AJS.$("body").addClass("has-footer-options");this.getFooter=function(){return footer;};return footer;},getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){window.location.reload();};request.useToken="always";AJS.$.ajax(request);});},getApprovalButton:function(request){var popup=gadget.getOauthPopup(request);return AJS.$("
").html(""+gadget.getMsg("gadget.common.oauth.approve.button")+" ").click(popup.createOpenerOnClick());},appendApprovedButton:function(){AJS.$(" ").appendTo(gadget.getFooter());},appendViewApproval:function(request){var approvalButton=gadget.getApprovalButton(request).appendTo("body");AJS.$("body").addClass("oauth-view-approval");return approvalButton;},appendFooterApproval:function(request){var popup=gadget.getOauthPopup(request);return AJS.$(" ").addClass("oauth").click(popup.createOpenerOnClick()).appendTo(gadget.getFooter());},viewTemplate:AJS.gadgets.templater.Custom({template:function(args){if(gadgets.views){gadget.setViewMode(gadgets.views.getCurrentView().getName());}options.view.template.call(gadget,args);gadget.showView();},cache:false,args:function(){var args=[];AJS.$(options.view.args).each(function(){if(AJS.$.isFunction(this.ajaxOptions)){var that=this;args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}()})});gadget.showView=function(){gadget.viewTemplate.addCallback(gadget.resize);return function(refresh){if(refresh){gadget.viewTemplate.build();}else{gadget.getView().show();gadget.resize();}};}();if(options.view.onResizeReload){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){if(gadget.getView().is(":visible")){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.showView(true);width=newWidth;}}};}());}if(options.view.onResizeAdjustHeight){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.resize();width=newWidth;}};}());}return gadget;};var Configured=function(options){var gadget=Standard(options);gadget.constructor=Configured;gadget.ajaxErrorHandler.handle400=function(evt,response){if(AJS.$("body").hasClass("config-unavailable")){return;}var errorContainer=AJS.$("
").append(""+gadget.getMsg("gadget.common.config.unavailable")+"
").appendTo(gadget.getView()),errorList=AJS.$("").appendTo(errorContainer);AJS.$("body").addClass("config-unavailable");AJS.$(response.data.errors).each(function(){AJS.$(" ").append(""+gadget.getMsg(this.error,this.params)+" ").appendTo(errorList);});gadget.resize();};if(options.view.enableReload){if(gadget.getPref("refresh")!==""&&gadget.getPref("refresh")!=="false"){window.setInterval(function(){gadget.showView(true);},60000*gadget.getPref("refresh"));}AJS.$(" ").click(function(){gadget.showView(true);}).appendTo(gadget.getFooter());}return gadget;};var Configurable=function(options){var gadget=Configured(options);AJS.$.extend(gadget,{constructor:Configurable,appendFooterApproval:function(superAppendFooterApproval){return function(request){if(AJS.$(".info.footer-message").length<1){AJS.$("
").addClass("info footer-message").html(""+gadget.getMsg("gadget.common.oauth.approve.message")+"
").append(gadget.getApprovalButton(request)).insertBefore(AJS.$(":first",gadget.configTemplate.getTarget()));gadget.resize();}superAppendFooterApproval.apply(gadget,arguments);};}(gadget.appendFooterApproval),getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){function persistFormInHash(){window.location.href+="&"+AJS.$("form",gadget.configTemplate.getTarget()).serialize()+"}";}if(gadget.getPrefs().getBool("isConfigured")&&!/isConfigured=true/.test(window.location.href)){persistFormInHash();window.top.location.reload();}else{persistFormInHash();window.location.reload();}};request.useToken="always";AJS.$.ajax(request);});},configTemplate:AJS.gadgets.templater.Form({target:AJS.$("
").appendTo(document.body),descriptor:function(args){var descriptor=options.config.descriptor.call(gadget,args);if(options.view.enableReload){descriptor.fields.push({userpref:"refresh",label:gadget.getMsg("gadget.common.refresh.label"),description:gadget.getMsg("gadget.common.refresh.description"),selected:gadget.getPref("refresh"),options:[{value:"false",label:gadget.getMsg("gadget.common.refresh.never")},{value:"15",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),15)},{value:"30",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),30)},{value:"60",label:AJS.format(gadget.getMsg("gadget.common.refresh.hour"),1)},{value:"120",label:AJS.format(gadget.getMsg("gadget.common.refresh.hours"),2)}],type:"select"});}return descriptor;},args:function(){var args=[];if(AJS.$.isFunction(options.config.args)){options.config.args=options.config.args();}AJS.$(options.config.args).each(function(){var that=this;if(AJS.$.isFunction(this.ajaxOptions)){args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}(),cancel:function(e){gadget.showView();e.preventDefault();},submit:function(e){var form=AJS.$(this),save=function(){AJS.$(form.serializeArray()).each(function(){gadget.savePref(this.name,this.value);});gadget.showView(true);};if(form.attr("action")!==""){AJS.$.ajax({type:"get",url:form.attr("action"),data:form.serialize(),global:false,success:function(){var fieldValues={};AJS.$(form.serializeArray()).each(function(){var fieldVal=fieldValues[this.name];if(!fieldVal){fieldVal=this.value;}else{if(AJS.$.isArray(fieldVal)){fieldVal.push(this.value);}else{fieldVal=[fieldVal,this.value];}}fieldValues[this.name]=fieldVal;});AJS.$(":checkbox:not(:checked)",form).each(function(){fieldValues[this.name]="false";});for(var name in fieldValues){gadget.savePref(name,fieldValues[name]);}gadget.showView(true);},error:function(response,settings){gadget.ajaxErrorHandler.execute(null,response,AJS.$.extend(settings,{isConfig:true}));}});}else{save();}e.preventDefault();}}),getConfig:function(){return gadget.configTemplate.getTarget();}});gadget.showConfig=function(){var restoreValuesFromHash=function(){if(!/#rpctoken=[0-9]+$/.test(window.location.href)){var options,fields=window.location.href.replace(/.*?#/,"").split("&");AJS.$.each(fields,function(){var name=this.split("=")[0],val=this.split("=")[1],field=AJS.$(":input[name="+name+"]");if(field.length>0){if(field.is("select")){options=val.split(",");AJS.$.each(options,function(){AJS.$("option[value="+this+"]",field).attr("selected","selected");});}else{if(field.is(":radio,:checkbox")){field.attr("checked","checked");}else{field.val(val);}}}});window.location.href=window.location.href.replace(/(#rpctoken=[0-9]+).*/,"$1");}};gadget.configTemplate.addCallback(function(){AJS.$("body").addClass("config-active");gadget.configTemplate.getTarget().show();restoreValuesFromHash();if(gadget.approvalRequest){gadget.appendFooterApproval(gadget.approvalRequest);}AJS.$("button",gadget.getFooter()).hide();window.setTimeout(function(){gadget.resize();},0);});return function(){gadget.configTemplate.build();};}();gadget.showView=function(refresh){if(refresh){gadget.viewTemplate.build();}else{AJS.$("body").removeClass("config-active");gadget.configTemplate.getTarget().hide();gadget.resize();AJS.$("button",gadget.getFooter()).show();}};gadget.configTemplate.getTrigger=function(){var button=AJS.$("").appendTo(gadget.getFooter()).click(function(e){gadget.showConfig();e.preventDefault();});return function(){return button;};}();gadget.ajaxErrorHandler.handle400=function(superHandle400){var validationErrors,showFormErrors=function(){AJS.$(".error",gadget.configTemplate.getTarget()).hide();AJS.$(validationErrors).each(function(){var msg=gadget.getMsg(this.error,this.params);AJS.$(":input[name='"+this.field+"']").parent().find(".error").text(msg).show();AJS.$("#"+this.field+"-error").text(msg).show();});gadget.resize();validationErrors=null;};gadget.configTemplate.addCallback(function(){if(!gadget.getPrefs().getBool("isConfigured")||validationErrors){AJS.$("input.cancel",gadget.configTemplate.getTarget()).hide();}if(validationErrors){showFormErrors();}});return function(evt,response,settings){validationErrors=response.data.errors;if(!settings.isConfig){superHandle400.apply(gadget,arguments);}else{showFormErrors();}};}(gadget.ajaxErrorHandler.handle400);return gadget;};AJS.Gadget=function(options){var gadget,pubInterface,isWriteable=function(){if(gadgets.views){return gadgets.views.getParams().writable===undefined||gadgets.views.getParams().writable==="true";}},getStandardInterface=function(){return{showMessage:gadget.showMessage,savePref:gadget.savePref,setViewMode:gadget.setViewMode,getViewMode:gadget.getViewMode,getBaseUrl:gadget.getBaseUrl,getPrefs:gadget.getPrefs,getPref:gadget.getPref,getPrefArray:gadget.getPrefArray,getMsg:gadget.getMsg,getGadget:gadget.getGadget,resize:gadget.resize,showLoading:gadget.showLoading,hideLoading:gadget.hideLoading,createCookie:gadget.createCookie,readCookie:gadget.readCookie,eraseCookie:gadget.eraseCookie,isLocal:gadget.isLocal};},getConfiguredInterface=function(){return AJS.$.extend(getStandardInterface(),{getView:gadget.getView,showView:gadget.showView,getFooter:gadget.getFooter});},getConfigurableInterface=function(){return AJS.$.extend(getConfiguredInterface(),{showConfig:gadget.showConfig,getConfig:gadget.getConfig});};if(options.view&&!options.config){gadget=Standard(options);pubInterface=getStandardInterface();gadget.showView(true);}else{if(options.view&&options.config&&!isWriteable()){gadget=Configured(options);pubInterface=getConfiguredInterface();if(gadget.getPrefs().getBool("isConfigured")){gadget.showView(true);}}else{if(options.view&&options.config&&isWriteable()){gadget=Configurable(options);pubInterface=getConfigurableInterface();if(!gadget.getPrefs().getBool("isConfigured")){gadget.showConfig();}else{gadget.showView(true);}}}}return pubInterface;};AJS.gadget.Configurable=AJS.Gadget;})();
Lint at line 1 character 5358: The Function constructor is eval.
(function(){AJS.$.fn.serializeArray=function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();if(val==null){val="";}return val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();};AJS.$.extend({put:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"PUT",url:url,data:data,success:callback,dataType:type});},del:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"delete",url:url,data:data,success:callback,dataType:type});},ajax:function(ajax){var activeReq=0,dressResponse=function(xhr){var res={};res.rc=xhr.status;if(xhr.responseText!==""){res.data=gadgets.json.parse(xhr.responseText);}return res;};AJS.$.each("ajaxOpen,ajaxClosed,ajaxOauthApproval".split(","),function(i,o){AJS.$.fn[o]=function(f){return this.bind(o,f);};});AJS.$().ajaxSend(function(evt,req,options){if(++activeReq===1){AJS.$.event.trigger("ajaxOpen",[options]);}});AJS.$().ajaxComplete(function(evt,req,options){if(--activeReq===0){AJS.$.event.trigger("ajaxClosed",[options]);}});AJS.$.fn.ajaxComplete=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxComplete",f);};AJS.$.fn.ajaxError=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxError",f);};return function(usrOptions){var reqOptions={};if(typeof options==="string"){options={url:options};}var options=usrOptions;for(var name in AJS.$.ajaxSettings){if(!options[name]&&options[name]!==false){options[name]=AJS.$.ajaxSettings[name];}}if(options.baseUrl){if(!/^(http)|(https):\/\//.test(options.url)){options.url=options.baseUrl+options.url;}}if(typeof atlassian!=="undefined"&&atlassian.util){if(atlassian.util.getRendererBaseUrl()===options.baseUrl&&new RegExp(options.baseUrl).test(options.url)){if(options.error){options.error=function(error){return function(xhr,type){if(!xhr.responseText){options.success.apply(this,arguments);}else{error.call(this,dressResponse(xhr));}};}(options.error);}ajax.call(this,options);return;}}reqOptions[gadgets.io.RequestParameters.METHOD]=gadgets.io.MethodType[options.type.toUpperCase()];reqOptions[gadgets.io.RequestParameters.CONTENT_TYPE]=gadgets.io.ContentType[options.dataType.toUpperCase()];reqOptions.url=options.url;if(options.headers){reqOptions[gadgets.io.RequestParameters.HEADERS]=options.headers;}if(options.authorization){reqOptions[gadgets.io.RequestParameters.AUTHORIZATION]=gadgets.io.AuthorizationType[options.authorization.toUpperCase()];}if(options.useToken){reqOptions.OAUTH_USE_TOKEN=options.useToken;}if(options.summaries){reqOptions[gadgets.io.RequestParameters.GET_SUMMARIES]=options.summaries;}if(options.entries){reqOptions[gadgets.io.RequestParameters.NUM_ENTRIES]=options.entries;}if(options.data){if(options.type.toLowerCase()==="get"){if(typeof options.data==="string"){reqOptions.url+=("?"+options.data.replace(/^\?/,""));}else{reqOptions.url+=("?"+gadgets.io.encodeValues(options.data).replace(/^\?/,""));}}else{reqOptions[gadgets.io.RequestParameters.POST_DATA]=options.data;}}reqOptions.success=function(response){if(options.complete){options.complete(response,options);}if(options.global){AJS.$.event.trigger("ajaxComplete",[response,options]);}if(response.errors&&response.errors.length||response.oauthError){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.dataType.toLowerCase()==="json"&&typeof response.data==="string"){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(response.rc!==200){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.success&&(response||response.oauthApprovalUrl)){options.success(response.data||response);}if(options.global){AJS.$.event.trigger("ajaxSuccess",[response.data,options]);}};gadgets.io.makeRequest(reqOptions.url,reqOptions.success,reqOptions);if(options.ajaxSend){options.ajaxSend(options);}if(options.global){AJS.$.event.trigger("ajaxSend",[options]);}};}(AJS.$.ajax)});AJS.$.namespace("AJS.gadgets.templater");AJS.gadgets.templater.Base=function(){var cache,template,descriptor=function(args){return args;},callbacks=[],remoteArgs=[],args=[],renderTemplate=function(){var cache={};return function(str,data){var fn;if(!/\W/.test(str)){fn=cache[str];}else{var fnString="var p=[], print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+str.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');";fn=new Function("obj",fnString);}return data?fn(data):fn;};}();return{getDescriptorData:function(callback){var argLengthComparator=0,that=this,formattedArgs={};if(remoteArgs.length<1){AJS.$(args).each(function(){formattedArgs[this.key]=this.data;});if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}}AJS.$(remoteArgs).each(function(i,item){var reqOptions;if(typeof item.ajaxOptions==="string"){reqOptions={url:this.ajaxOptions};}else{if(AJS.$.isFunction(item.ajaxOptions)){reqOptions=item.ajaxOptions();}else{reqOptions=item.ajaxOptions;}}reqOptions.success=function(response){++argLengthComparator;formattedArgs[remoteArgs[i].key]=response;if(argLengthComparator===remoteArgs.length){var excuter=function(){if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}return arguments.callee;}();if(cache!==false){that.getDescriptorData=excuter;}}};AJS.$.ajax(reqOptions);});},disableCache:function(){cache=false;},setTemplate:function(templ){template=templ;},setDescriptor:function(desc){descriptor=desc;},addCallback:function(func){callbacks.push(func);},setRemoteDescriptorArg:function(key,ajaxOptions){remoteArgs.push({key:key,ajaxOptions:ajaxOptions});},setDescriptorArg:function(arg){args.push(arg);},build:function(data){var that=this;if(!data&&data!==false){this.getDescriptorData(this.build);}else{if(data!==false){if(typeof template==="string"&&document.getElementById(template)){that.build.template=AJS.$(template).html();var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(AJS.$.isFunction(template)){template(data);AJS.$(callbacks).each(function(){this.call(that,data);});}else{if(template.length>50){that.build.template=template;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(!that.build.template){AJS.$.ajax({url:template,dataType:"text",success:function(response){that.build.template=response;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}});}else{var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}}}}}}}};};AJS.gadgets.templater.Custom=function(options){var templater=AJS.gadgets.templater.Base();templater.setTemplate(options.template);if(options.descriptor){templater.setDescriptor(options.descriptor);}if(options.callback){templater.addCallback(options.callback);}if(options.cache===false){templater.disableCache();}AJS.$.extend(templater,{getTarget:function(){return options.target;}});if(options.args){AJS.$(options.args).each(function(){if(this.ajaxOptions){templater.setRemoteDescriptorArg(this.key,this.ajaxOptions);}else{templater.setDescriptorArg(this);}});}return templater;};AJS.gadgets.templater.Form=function(options){return AJS.gadgets.templater.Custom(AJS.$.extend({template:AJS.gadgets.templater.Form.template,baseUrl:AJS.gadget.getBaseUrl(),callback:function(response,data){if(options.target){options.target.html(response);if(options.submit){AJS.$("form",options.target).submit(options.submit);}if(options.cancel){AJS.$("input.cancel",options.target).click(options.cancel);}AJS.$(data.fields).each(function(){if(this.type==="callbackBuilder"){var targetDiv=AJS.$("div#"+this.id);this.callback(targetDiv);}});}else{return response;}}},options));};AJS.gadgets.templater.Table=function(options){var table,sortCol,sortOrd=[],sort=function(data,column,order){data.cols[column].theme=order;if(!data.cols[column].sorted){data.data.sort(function(item,compareItem){var dataItem=item[column].value,dataItemCompare=compareItem[column].value;if(!isNaN(parseFloat(dataItem))&&!isNaN(parseFloat(dataItemCompare))){dataItem=parseFloat(dataItem);dataItemCompare=parseFloat(dataItemCompare);}if(dataItem>dataItemCompare){return 1;}else{if(dataItem<% function createCheckboxGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %> <% for (var i=0; i < field.options.length; i++) { %> id="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> id="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> <% if ( field.value === "true" ) { %> checked = "checked" <% } %> <% if (field.value === "false") { field.value = "true"; } %> value="<%= field.value %>" name="<%= gadgets.util.escape(field.userpref) %>" /> <% if (field.options[i].label) { %> for="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> for="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> ><%= gadgets.util.escape(field.options[i].label) %> <% } %>
<% } %> <% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createRadioGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %><% for (var i=0; i < field.options.length; i++) { %>
id="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>id="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %><% if (field.selected === field.options[i].value || field.options[i].selected) { %>checked = "checked"<% } %> <% if ( field.options[i].value ) { %> value="<%= gadgets.util.escape(field.options[i].value) %>" <% } %>name="<%= gadgets.util.escape(field.userpref) %>"/>for="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>for="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %>><%= gadgets.util.escape(field.options[i].label) %>
<% } %>
<% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createHiddenInput (field) { %> <% } %><% function createTextInput (field) { %> class="<%= gadgets.util.escape(styleClass) %>"<% } else { %>class="<%= gadgets.util.escape(field.type) %>"<% } %> <% if (field.value) { %> value="<%= gadgets.util.escape(field.value) %>" <% } %> <% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"/> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createLabel (field) { %><%= gadgets.util.escape(field.label) %> <% } %><% function createTextarea (field) { %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %> value="<%= gadgets.util.escape(item.value) %>"<% if ( field.selected === item.value || item.selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %> <% if (field.options[i].group.options) { %> <% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %> <% createOption(field.options[i].group.options[x]); %> <% } %> <% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createMultiSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %>value="<%= gadgets.util.escape(item.value) %>"<% var selected = false;if(field.value !== undefined && field.value.length > 0) { for(var i = 0; i < field.value.length; i++) { if(field.value[i] === item.value) { selected = true; break; } }}if (selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="multi-select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %><% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %><% createOption(field.options[i].group.options[x]); %><% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createField(field, type) { %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %> <% } %><% if (field.type !== "radio" && field.type !== "checkbox"&& field.type !== "hidden") { %><% createLabel(field); %><% } %><% if (field.type == "select") { %><% createSelect(field); %> <% } else if (field.type == "multiselect") { %><% createMultiSelect(field); %><% } else if (field.type == "textarea") { %><% createTextarea(field); %><% } else if (field.type == "radio") { %><% createRadioGroup(field); %><% } else if (field.type == "checkbox") { %><% createCheckboxGroup(field); %><% } else if (field.type == "custom" && field.template) { %><%= field.template() %>
<% } else if (field.type == "callbackBuilder") { %> <% if (field.id){%>
<% } else { %>
<% } %>
<% } else if (field.type == "hidden") { %><% createHiddenInput(field); %><% } else { %><% createTextInput(field); %><% } %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %>
<% } %><% } %><% function createFieldset (fieldset, type) { %><% if (fieldset.title) { %><%= gadgets.util.escape(fieldset.title) %> <% } %><% if (fieldset.description) { %><%= gadgets.util.escape(fieldset.description) %>
<% } %><% for ( var i = 0; i < fieldset.fields.length; i++ ) { %><% createField(fieldset.fields[i], type); %><% } %> <% } %>';AJS.gadgets.templater.Table.template=' <% if (obj.cols) { %> <% AJS.$(obj.cols).each(function () { %> class="<%= this.theme %>" <% } %> ><%= this.header %>
<% }); %> <% } %> <% if (obj.data) { %> <% AJS.$(obj.data).each(function (i) { %> class="even" <% } %> > <% AJS.$(this).each(function () { %> <%= this.label %> <% }); %> <% }); %> <% } %>
';AJS.$.namespace("AJS.gadget");if(!console.warn){console.warn=function(){};}var Gadget=function(options){AJS.dropDown.Standard=function(dropDown){function canBeMovedToParentFrame(){return !AJS.$.browser.msie&&!AJS.$.browser.opera&&window.top.AJS;}function overflowsIframeHeight(){return parseInt(AJS.$("body").attr("scrollHeight"))>AJS.$("body").outerHeight();}function hideActiveDropdowns(e){if(AJS.$(e.target).parents(".aui-dropdown").length===0){window.top.AJS.$(window.top.document).trigger("click");AJS.$(document).trigger("click");}}function adjustDDPositioning(){if(AJS.dropDown.current&&AJS.dropDown.current.calculateDDPosition){AJS.dropDown.current.updateDDPosition();}}function parentAsContainerHandler(){var top;if(overflowsIframeHeight()){this.updateDDPosition();this.$.remove().addClass("gadget-dropdown");this.shadow.remove();this.shadow.appendTo(window.top.document.body);this.$.appendTo(window.top.document.body);arguments.callee=function(){this.$.css("top",top);this.shadow.css("top",top);};}}var iframeAsContainerHandler={show:function(){if(overflowsIframeHeight()&&gadgets.window.adjustHeight){iframeAsContainerHandler.restoreHeight=AJS.$("body").outerHeight();gadgets.window.adjustHeight(AJS.$("body").attr("scrollHeight"));}},hide:function(){if(iframeAsContainerHandler.restoreHeight){gadgets.window.adjustHeight(iframeAsContainerHandler.restoreHeight);iframeAsContainerHandler.restoreHeight=undefined;}}};if(window.top.AJS){AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);window.top.AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);}AJS.$(window).resize(adjustDDPositioning);return function(options){var dropdowns;options.selectionHandler=options.selectionHandler||function(e,item){if(item[0].nodeName==="A"){window.top.location.href=item.attr("href");}else{window.top.location.href=AJS.$("a",item).attr("href");}};dropdowns=dropDown.call(this,options);AJS.$.each(dropdowns,function(){if(canBeMovedToParentFrame()){this.updateDDPosition=function(){var dropdownOffsets;function getLeftInPercent(left){return left/window.top.AJS.$("body").width()*100+"%";}function calculateOffsets(){var dropdownOffset=this.trigger.offset(),iframeOffset=window.top.AJS.$("#"+window.name).offset();return{top:dropdownOffset.top+this.trigger.outerHeight()+iframeOffset.top,left:dropdownOffset.left+iframeOffset.left+this.trigger.outerWidth()-this.$.outerWidth(),width:this.$.outerWidth()};}if(!this.trigger.is(":visible")){this.hide();}else{dropdownOffsets=calculateOffsets.call(this);this.$.css({top:dropdownOffsets.top,margin:0,left:getLeftInPercent(dropdownOffsets.left),right:"auto"});this.shadow.css({left:getLeftInPercent(dropdownOffsets.left-7),top:dropdownOffsets.top,right:"auto"});}};this.addCallback("show",parentAsContainerHandler);}else{this.addCallback("show",iframeAsContainerHandler.show);this.addCallback("hide",iframeAsContainerHandler.hide);}});return dropdowns;};}(AJS.dropDown.Standard);var prefs=new gadgets.Prefs(),viewMode,message=function(){var popup;return{show:function(msg,classNm,dismissible){var messageEl,buttons,cancelButton,buttonPanel,targHeight;messageEl=AJS.$("
").addClass(classNm).css({width:260,visiblity:"hidden"}).html(msg).appendTo("body");buttons=AJS.$("button",messageEl);if(dismissible!==false){cancelButton=AJS.$("").text(prefs.getMsg("gadget.common.cancel")).click(message.hide);}if(buttons.length>0||cancelButton){buttonPanel=AJS.$("").append(buttons).append(cancelButton);messageEl.append(buttonPanel);}message.hide();popup=new AJS.popup(messageEl.outerWidth(),messageEl.outerHeight(),"message");popup.element.html(messageEl);popup.show();AJS.$(".blanket").show();},hide:function(){if(popup){popup.remove();AJS.$(".blanket").remove();AJS.dim.dim=undefined;}}};}(),gadget={createCookie:function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}else{var expires="";}document.cookie=window.name+name+"="+value+expires+"; path=/";},readCookie:function(name){var nameEQ=window.name+name+"=";var ca=document.cookie.split(";");for(var i=0;i
").addClass("gadget").appendTo("body");return function(){return gadget;};}(),resize:function(size){if(gadgets.window.adjustHeight){window.setTimeout(function(){gadgets.window.adjustHeight(size);},0);}},isLocal:function(){if(typeof atlassian!=="undefined"&&atlassian.util){return atlassian.util.getRendererBaseUrl()===options.baseUrl;}},showLoading:function(){if(gadgets.window.getViewportDimensions&&gadgets.window.getViewportDimensions().width<250){AJS.$("body").addClass("loading-small");}else{AJS.$("body").addClass("loading");}},hideLoading:function(){AJS.$("body").removeClass("loading").removeClass("loading-small");},ajaxErrorHandler:{handle500:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.500"),settings.url,settings.url));},handle503:function(evt,response,settings){gadget.showMessage("error",response.data.errorMessages);},handle404:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.404"),settings.url,settings.url));},execute:function(evt,response,settings){if(response&&gadget.ajaxErrorHandler["handle"+response.rc]){gadget.ajaxErrorHandler["handle"+response.rc].apply(gadget,arguments);}}}};AJS.$("a, area").live("mouseover",function(){if(!AJS.$(this).attr("target")){AJS.$(this).attr({target:"_parent"});}});AJS.gadget.getBaseUrl=function(){return options.baseUrl;};if(options.useOauth&&window.location.href.indexOf(options.baseUrl)!==0){AJS.$.ajax=function(ajax){var queue=[],trustedAppsDenied=function(){ajax({authorization:"oauth",url:options.useOauth,data:{cacheBuster:new Date().getTime()},useToken:"always",complete:function(response){if(response.oauthApprovalUrl||response.rc===403){gadget.approvalUrl=response.oauthApprovalUrl;if(response.oauthApprovalUrl){gadget.approvalRequest=queue[0];}handleOauthApproval();}else{if(response.data){gadget.appendApprovedButton();makeOAuthRequests();}}}});},trustedAppsAccepted=function(){AJS.$.ajax=ajax;AJS.$(queue).each(function(){AJS.$.ajax(this);});},makeOAuthRequests=function(){AJS.$.ajax=ajax;AJS.$.ajaxSetup({authorization:"oauth",useToken:"always"});AJS.$(queue).each(function(){AJS.$.ajax(this);});},handleOauthApproval=function(){AJS.$.ajaxSetup({authorization:"oauth",useToken:"if_available"});var attachApprovalAdvice=function(request,idx){var cacheBuster=new Date().getTime();request.complete=function(complete){return function(response){if(idx===queue.length-1&&gadget.approvalRequest){if(response.rc===200||response.rc===400&&response.data){if(gadget.appendFooterApproval){gadget.appendFooterApproval(request);}}else{if(gadget.appendViewApproval&&gadget.approvalRequest){gadget.appendViewApproval(request);}}}if(complete){complete.apply(AJS.$.ajax,arguments);}};}(request.complete);if(typeof request.data==="object"){request.data.cacheBuster=cacheBuster;}else{if(typeof request.data==="string"){request.data+="&cacheBuster="+cacheBuster;}else{request.data="cacheBuster="+cacheBuster;}}if(!gadget.approvalRequest){request.global=false;request.error=function(response){if(response.rc===400){AJS.$("body").addClass("login").append(gadget.getMsg("gadget.common.container.login"));if(window.top.document){AJS.$("#"+window.name+"-chrome",window.top.document).css("opacity",0.7);}gadget.resize();}};}return request;};AJS.$.ajax=ajax;AJS.$(queue).each(function(i){AJS.$.ajax(attachApprovalAdvice(this,i));});};return function(settings){if(options.useOauth==="always"){AJS.$.ajaxSetup({authorization:"oauth",useOauth:"always"});settings.success=function(success){return function(response){if(response.oauthApprovalUrl){gadget.approvalUrl=response.oauthApprovalUrl;gadget.appendViewApproval(settings);}else{if(success){gadget.appendApprovedButton();success.apply(AJS.$.ajax,arguments);}}};}(settings.success);AJS.$.ajax=ajax;settings.useToken="always";AJS.$.ajax(settings);}else{AJS.$.ajax=function(ajaxSettings){queue.push(ajaxSettings);return arguments.callee;}(settings);ajax({url:options.useOauth,data:{cacheBuster:new Date().getTime()},complete:function(response,settings){if(response.rc===401){trustedAppsDenied(response,settings);}else{if(response.data){trustedAppsAccepted();}}}});}};}(AJS.$.ajax);}AJS.$.ajaxSetup({dataType:"json",type:"get",baseUrl:options.baseUrl});AJS.$().ajaxError(gadget.ajaxErrorHandler.execute);AJS.$().ajaxOpen(gadget.showLoading);AJS.$().ajaxClosed(gadget.hideLoading);return gadget;};var Standard=function(options){var gadget=Gadget(options);AJS.$.extend(gadget,{constructor:Standard,getView:function(){var view=AJS.$("
").addClass("view").appendTo(gadget.getGadget());return function(){return view;};}(),getFooter:function(){var footer=AJS.$("
").addClass("footer").appendTo(gadget.getGadget());AJS.$("body").addClass("has-footer-options");this.getFooter=function(){return footer;};return footer;},getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){window.location.reload();};request.useToken="always";AJS.$.ajax(request);});},getApprovalButton:function(request){var popup=gadget.getOauthPopup(request);return AJS.$("
").html(""+gadget.getMsg("gadget.common.oauth.approve.button")+" ").click(popup.createOpenerOnClick());},appendApprovedButton:function(){AJS.$(" ").appendTo(gadget.getFooter());},appendViewApproval:function(request){var approvalButton=gadget.getApprovalButton(request).appendTo("body");AJS.$("body").addClass("oauth-view-approval");return approvalButton;},appendFooterApproval:function(request){var popup=gadget.getOauthPopup(request);return AJS.$(" ").addClass("oauth").click(popup.createOpenerOnClick()).appendTo(gadget.getFooter());},viewTemplate:AJS.gadgets.templater.Custom({template:function(args){if(gadgets.views){gadget.setViewMode(gadgets.views.getCurrentView().getName());}options.view.template.call(gadget,args);gadget.showView();},cache:false,args:function(){var args=[];AJS.$(options.view.args).each(function(){if(AJS.$.isFunction(this.ajaxOptions)){var that=this;args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}()})});gadget.showView=function(){gadget.viewTemplate.addCallback(gadget.resize);return function(refresh){if(refresh){gadget.viewTemplate.build();}else{gadget.getView().show();gadget.resize();}};}();if(options.view.onResizeReload){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){if(gadget.getView().is(":visible")){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.showView(true);width=newWidth;}}};}());}if(options.view.onResizeAdjustHeight){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.resize();width=newWidth;}};}());}return gadget;};var Configured=function(options){var gadget=Standard(options);gadget.constructor=Configured;gadget.ajaxErrorHandler.handle400=function(evt,response){if(AJS.$("body").hasClass("config-unavailable")){return;}var errorContainer=AJS.$("
").append(""+gadget.getMsg("gadget.common.config.unavailable")+"
").appendTo(gadget.getView()),errorList=AJS.$("").appendTo(errorContainer);AJS.$("body").addClass("config-unavailable");AJS.$(response.data.errors).each(function(){AJS.$(" ").append(""+gadget.getMsg(this.error,this.params)+" ").appendTo(errorList);});gadget.resize();};if(options.view.enableReload){if(gadget.getPref("refresh")!==""&&gadget.getPref("refresh")!=="false"){window.setInterval(function(){gadget.showView(true);},60000*gadget.getPref("refresh"));}AJS.$(" ").click(function(){gadget.showView(true);}).appendTo(gadget.getFooter());}return gadget;};var Configurable=function(options){var gadget=Configured(options);AJS.$.extend(gadget,{constructor:Configurable,appendFooterApproval:function(superAppendFooterApproval){return function(request){if(AJS.$(".info.footer-message").length<1){AJS.$("
").addClass("info footer-message").html(""+gadget.getMsg("gadget.common.oauth.approve.message")+"
").append(gadget.getApprovalButton(request)).insertBefore(AJS.$(":first",gadget.configTemplate.getTarget()));gadget.resize();}superAppendFooterApproval.apply(gadget,arguments);};}(gadget.appendFooterApproval),getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){function persistFormInHash(){window.location.href+="&"+AJS.$("form",gadget.configTemplate.getTarget()).serialize()+"}";}if(gadget.getPrefs().getBool("isConfigured")&&!/isConfigured=true/.test(window.location.href)){persistFormInHash();window.top.location.reload();}else{persistFormInHash();window.location.reload();}};request.useToken="always";AJS.$.ajax(request);});},configTemplate:AJS.gadgets.templater.Form({target:AJS.$("
").appendTo(document.body),descriptor:function(args){var descriptor=options.config.descriptor.call(gadget,args);if(options.view.enableReload){descriptor.fields.push({userpref:"refresh",label:gadget.getMsg("gadget.common.refresh.label"),description:gadget.getMsg("gadget.common.refresh.description"),selected:gadget.getPref("refresh"),options:[{value:"false",label:gadget.getMsg("gadget.common.refresh.never")},{value:"15",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),15)},{value:"30",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),30)},{value:"60",label:AJS.format(gadget.getMsg("gadget.common.refresh.hour"),1)},{value:"120",label:AJS.format(gadget.getMsg("gadget.common.refresh.hours"),2)}],type:"select"});}return descriptor;},args:function(){var args=[];if(AJS.$.isFunction(options.config.args)){options.config.args=options.config.args();}AJS.$(options.config.args).each(function(){var that=this;if(AJS.$.isFunction(this.ajaxOptions)){args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}(),cancel:function(e){gadget.showView();e.preventDefault();},submit:function(e){var form=AJS.$(this),save=function(){AJS.$(form.serializeArray()).each(function(){gadget.savePref(this.name,this.value);});gadget.showView(true);};if(form.attr("action")!==""){AJS.$.ajax({type:"get",url:form.attr("action"),data:form.serialize(),global:false,success:function(){var fieldValues={};AJS.$(form.serializeArray()).each(function(){var fieldVal=fieldValues[this.name];if(!fieldVal){fieldVal=this.value;}else{if(AJS.$.isArray(fieldVal)){fieldVal.push(this.value);}else{fieldVal=[fieldVal,this.value];}}fieldValues[this.name]=fieldVal;});AJS.$(":checkbox:not(:checked)",form).each(function(){fieldValues[this.name]="false";});for(var name in fieldValues){gadget.savePref(name,fieldValues[name]);}gadget.showView(true);},error:function(response,settings){gadget.ajaxErrorHandler.execute(null,response,AJS.$.extend(settings,{isConfig:true}));}});}else{save();}e.preventDefault();}}),getConfig:function(){return gadget.configTemplate.getTarget();}});gadget.showConfig=function(){var restoreValuesFromHash=function(){if(!/#rpctoken=[0-9]+$/.test(window.location.href)){var options,fields=window.location.href.replace(/.*?#/,"").split("&");AJS.$.each(fields,function(){var name=this.split("=")[0],val=this.split("=")[1],field=AJS.$(":input[name="+name+"]");if(field.length>0){if(field.is("select")){options=val.split(",");AJS.$.each(options,function(){AJS.$("option[value="+this+"]",field).attr("selected","selected");});}else{if(field.is(":radio,:checkbox")){field.attr("checked","checked");}else{field.val(val);}}}});window.location.href=window.location.href.replace(/(#rpctoken=[0-9]+).*/,"$1");}};gadget.configTemplate.addCallback(function(){AJS.$("body").addClass("config-active");gadget.configTemplate.getTarget().show();restoreValuesFromHash();if(gadget.approvalRequest){gadget.appendFooterApproval(gadget.approvalRequest);}AJS.$("button",gadget.getFooter()).hide();window.setTimeout(function(){gadget.resize();},0);});return function(){gadget.configTemplate.build();};}();gadget.showView=function(refresh){if(refresh){gadget.viewTemplate.build();}else{AJS.$("body").removeClass("config-active");gadget.configTemplate.getTarget().hide();gadget.resize();AJS.$("button",gadget.getFooter()).show();}};gadget.configTemplate.getTrigger=function(){var button=AJS.$("").appendTo(gadget.getFooter()).click(function(e){gadget.showConfig();e.preventDefault();});return function(){return button;};}();gadget.ajaxErrorHandler.handle400=function(superHandle400){var validationErrors,showFormErrors=function(){AJS.$(".error",gadget.configTemplate.getTarget()).hide();AJS.$(validationErrors).each(function(){var msg=gadget.getMsg(this.error,this.params);AJS.$(":input[name='"+this.field+"']").parent().find(".error").text(msg).show();AJS.$("#"+this.field+"-error").text(msg).show();});gadget.resize();validationErrors=null;};gadget.configTemplate.addCallback(function(){if(!gadget.getPrefs().getBool("isConfigured")||validationErrors){AJS.$("input.cancel",gadget.configTemplate.getTarget()).hide();}if(validationErrors){showFormErrors();}});return function(evt,response,settings){validationErrors=response.data.errors;if(!settings.isConfig){superHandle400.apply(gadget,arguments);}else{showFormErrors();}};}(gadget.ajaxErrorHandler.handle400);return gadget;};AJS.Gadget=function(options){var gadget,pubInterface,isWriteable=function(){if(gadgets.views){return gadgets.views.getParams().writable===undefined||gadgets.views.getParams().writable==="true";}},getStandardInterface=function(){return{showMessage:gadget.showMessage,savePref:gadget.savePref,setViewMode:gadget.setViewMode,getViewMode:gadget.getViewMode,getBaseUrl:gadget.getBaseUrl,getPrefs:gadget.getPrefs,getPref:gadget.getPref,getPrefArray:gadget.getPrefArray,getMsg:gadget.getMsg,getGadget:gadget.getGadget,resize:gadget.resize,showLoading:gadget.showLoading,hideLoading:gadget.hideLoading,createCookie:gadget.createCookie,readCookie:gadget.readCookie,eraseCookie:gadget.eraseCookie,isLocal:gadget.isLocal};},getConfiguredInterface=function(){return AJS.$.extend(getStandardInterface(),{getView:gadget.getView,showView:gadget.showView,getFooter:gadget.getFooter});},getConfigurableInterface=function(){return AJS.$.extend(getConfiguredInterface(),{showConfig:gadget.showConfig,getConfig:gadget.getConfig});};if(options.view&&!options.config){gadget=Standard(options);pubInterface=getStandardInterface();gadget.showView(true);}else{if(options.view&&options.config&&!isWriteable()){gadget=Configured(options);pubInterface=getConfiguredInterface();if(gadget.getPrefs().getBool("isConfigured")){gadget.showView(true);}}else{if(options.view&&options.config&&isWriteable()){gadget=Configurable(options);pubInterface=getConfigurableInterface();if(!gadget.getPrefs().getBool("isConfigured")){gadget.showConfig();}else{gadget.showView(true);}}}}return pubInterface;};AJS.gadget.Configurable=AJS.Gadget;})();
Lint at line 1 character 7170: 'fragment' is already defined.
(function(){AJS.$.fn.serializeArray=function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();if(val==null){val="";}return val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();};AJS.$.extend({put:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"PUT",url:url,data:data,success:callback,dataType:type});},del:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"delete",url:url,data:data,success:callback,dataType:type});},ajax:function(ajax){var activeReq=0,dressResponse=function(xhr){var res={};res.rc=xhr.status;if(xhr.responseText!==""){res.data=gadgets.json.parse(xhr.responseText);}return res;};AJS.$.each("ajaxOpen,ajaxClosed,ajaxOauthApproval".split(","),function(i,o){AJS.$.fn[o]=function(f){return this.bind(o,f);};});AJS.$().ajaxSend(function(evt,req,options){if(++activeReq===1){AJS.$.event.trigger("ajaxOpen",[options]);}});AJS.$().ajaxComplete(function(evt,req,options){if(--activeReq===0){AJS.$.event.trigger("ajaxClosed",[options]);}});AJS.$.fn.ajaxComplete=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxComplete",f);};AJS.$.fn.ajaxError=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxError",f);};return function(usrOptions){var reqOptions={};if(typeof options==="string"){options={url:options};}var options=usrOptions;for(var name in AJS.$.ajaxSettings){if(!options[name]&&options[name]!==false){options[name]=AJS.$.ajaxSettings[name];}}if(options.baseUrl){if(!/^(http)|(https):\/\//.test(options.url)){options.url=options.baseUrl+options.url;}}if(typeof atlassian!=="undefined"&&atlassian.util){if(atlassian.util.getRendererBaseUrl()===options.baseUrl&&new RegExp(options.baseUrl).test(options.url)){if(options.error){options.error=function(error){return function(xhr,type){if(!xhr.responseText){options.success.apply(this,arguments);}else{error.call(this,dressResponse(xhr));}};}(options.error);}ajax.call(this,options);return;}}reqOptions[gadgets.io.RequestParameters.METHOD]=gadgets.io.MethodType[options.type.toUpperCase()];reqOptions[gadgets.io.RequestParameters.CONTENT_TYPE]=gadgets.io.ContentType[options.dataType.toUpperCase()];reqOptions.url=options.url;if(options.headers){reqOptions[gadgets.io.RequestParameters.HEADERS]=options.headers;}if(options.authorization){reqOptions[gadgets.io.RequestParameters.AUTHORIZATION]=gadgets.io.AuthorizationType[options.authorization.toUpperCase()];}if(options.useToken){reqOptions.OAUTH_USE_TOKEN=options.useToken;}if(options.summaries){reqOptions[gadgets.io.RequestParameters.GET_SUMMARIES]=options.summaries;}if(options.entries){reqOptions[gadgets.io.RequestParameters.NUM_ENTRIES]=options.entries;}if(options.data){if(options.type.toLowerCase()==="get"){if(typeof options.data==="string"){reqOptions.url+=("?"+options.data.replace(/^\?/,""));}else{reqOptions.url+=("?"+gadgets.io.encodeValues(options.data).replace(/^\?/,""));}}else{reqOptions[gadgets.io.RequestParameters.POST_DATA]=options.data;}}reqOptions.success=function(response){if(options.complete){options.complete(response,options);}if(options.global){AJS.$.event.trigger("ajaxComplete",[response,options]);}if(response.errors&&response.errors.length||response.oauthError){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.dataType.toLowerCase()==="json"&&typeof response.data==="string"){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(response.rc!==200){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.success&&(response||response.oauthApprovalUrl)){options.success(response.data||response);}if(options.global){AJS.$.event.trigger("ajaxSuccess",[response.data,options]);}};gadgets.io.makeRequest(reqOptions.url,reqOptions.success,reqOptions);if(options.ajaxSend){options.ajaxSend(options);}if(options.global){AJS.$.event.trigger("ajaxSend",[options]);}};}(AJS.$.ajax)});AJS.$.namespace("AJS.gadgets.templater");AJS.gadgets.templater.Base=function(){var cache,template,descriptor=function(args){return args;},callbacks=[],remoteArgs=[],args=[],renderTemplate=function(){var cache={};return function(str,data){var fn;if(!/\W/.test(str)){fn=cache[str];}else{var fnString="var p=[], print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+str.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');";fn=new Function("obj",fnString);}return data?fn(data):fn;};}();return{getDescriptorData:function(callback){var argLengthComparator=0,that=this,formattedArgs={};if(remoteArgs.length<1){AJS.$(args).each(function(){formattedArgs[this.key]=this.data;});if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}}AJS.$(remoteArgs).each(function(i,item){var reqOptions;if(typeof item.ajaxOptions==="string"){reqOptions={url:this.ajaxOptions};}else{if(AJS.$.isFunction(item.ajaxOptions)){reqOptions=item.ajaxOptions();}else{reqOptions=item.ajaxOptions;}}reqOptions.success=function(response){++argLengthComparator;formattedArgs[remoteArgs[i].key]=response;if(argLengthComparator===remoteArgs.length){var excuter=function(){if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}return arguments.callee;}();if(cache!==false){that.getDescriptorData=excuter;}}};AJS.$.ajax(reqOptions);});},disableCache:function(){cache=false;},setTemplate:function(templ){template=templ;},setDescriptor:function(desc){descriptor=desc;},addCallback:function(func){callbacks.push(func);},setRemoteDescriptorArg:function(key,ajaxOptions){remoteArgs.push({key:key,ajaxOptions:ajaxOptions});},setDescriptorArg:function(arg){args.push(arg);},build:function(data){var that=this;if(!data&&data!==false){this.getDescriptorData(this.build);}else{if(data!==false){if(typeof template==="string"&&document.getElementById(template)){that.build.template=AJS.$(template).html();var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(AJS.$.isFunction(template)){template(data);AJS.$(callbacks).each(function(){this.call(that,data);});}else{if(template.length>50){that.build.template=template;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(!that.build.template){AJS.$.ajax({url:template,dataType:"text",success:function(response){that.build.template=response;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}});}else{var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}}}}}}}};};AJS.gadgets.templater.Custom=function(options){var templater=AJS.gadgets.templater.Base();templater.setTemplate(options.template);if(options.descriptor){templater.setDescriptor(options.descriptor);}if(options.callback){templater.addCallback(options.callback);}if(options.cache===false){templater.disableCache();}AJS.$.extend(templater,{getTarget:function(){return options.target;}});if(options.args){AJS.$(options.args).each(function(){if(this.ajaxOptions){templater.setRemoteDescriptorArg(this.key,this.ajaxOptions);}else{templater.setDescriptorArg(this);}});}return templater;};AJS.gadgets.templater.Form=function(options){return AJS.gadgets.templater.Custom(AJS.$.extend({template:AJS.gadgets.templater.Form.template,baseUrl:AJS.gadget.getBaseUrl(),callback:function(response,data){if(options.target){options.target.html(response);if(options.submit){AJS.$("form",options.target).submit(options.submit);}if(options.cancel){AJS.$("input.cancel",options.target).click(options.cancel);}AJS.$(data.fields).each(function(){if(this.type==="callbackBuilder"){var targetDiv=AJS.$("div#"+this.id);this.callback(targetDiv);}});}else{return response;}}},options));};AJS.gadgets.templater.Table=function(options){var table,sortCol,sortOrd=[],sort=function(data,column,order){data.cols[column].theme=order;if(!data.cols[column].sorted){data.data.sort(function(item,compareItem){var dataItem=item[column].value,dataItemCompare=compareItem[column].value;if(!isNaN(parseFloat(dataItem))&&!isNaN(parseFloat(dataItemCompare))){dataItem=parseFloat(dataItem);dataItemCompare=parseFloat(dataItemCompare);}if(dataItem>dataItemCompare){return 1;}else{if(dataItem<% function createCheckboxGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %> <% for (var i=0; i < field.options.length; i++) { %> id="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> id="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> <% if ( field.value === "true" ) { %> checked = "checked" <% } %> <% if (field.value === "false") { field.value = "true"; } %> value="<%= field.value %>" name="<%= gadgets.util.escape(field.userpref) %>" /> <% if (field.options[i].label) { %> for="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> for="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> ><%= gadgets.util.escape(field.options[i].label) %> <% } %>
<% } %> <% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createRadioGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %><% for (var i=0; i < field.options.length; i++) { %>
id="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>id="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %><% if (field.selected === field.options[i].value || field.options[i].selected) { %>checked = "checked"<% } %> <% if ( field.options[i].value ) { %> value="<%= gadgets.util.escape(field.options[i].value) %>" <% } %>name="<%= gadgets.util.escape(field.userpref) %>"/>for="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>for="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %>><%= gadgets.util.escape(field.options[i].label) %>
<% } %>
<% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createHiddenInput (field) { %> <% } %><% function createTextInput (field) { %> class="<%= gadgets.util.escape(styleClass) %>"<% } else { %>class="<%= gadgets.util.escape(field.type) %>"<% } %> <% if (field.value) { %> value="<%= gadgets.util.escape(field.value) %>" <% } %> <% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"/> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createLabel (field) { %><%= gadgets.util.escape(field.label) %> <% } %><% function createTextarea (field) { %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %> value="<%= gadgets.util.escape(item.value) %>"<% if ( field.selected === item.value || item.selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %> <% if (field.options[i].group.options) { %> <% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %> <% createOption(field.options[i].group.options[x]); %> <% } %> <% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createMultiSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %>value="<%= gadgets.util.escape(item.value) %>"<% var selected = false;if(field.value !== undefined && field.value.length > 0) { for(var i = 0; i < field.value.length; i++) { if(field.value[i] === item.value) { selected = true; break; } }}if (selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="multi-select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %><% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %><% createOption(field.options[i].group.options[x]); %><% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createField(field, type) { %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %> <% } %><% if (field.type !== "radio" && field.type !== "checkbox"&& field.type !== "hidden") { %><% createLabel(field); %><% } %><% if (field.type == "select") { %><% createSelect(field); %> <% } else if (field.type == "multiselect") { %><% createMultiSelect(field); %><% } else if (field.type == "textarea") { %><% createTextarea(field); %><% } else if (field.type == "radio") { %><% createRadioGroup(field); %><% } else if (field.type == "checkbox") { %><% createCheckboxGroup(field); %><% } else if (field.type == "custom" && field.template) { %><%= field.template() %>
<% } else if (field.type == "callbackBuilder") { %> <% if (field.id){%>
<% } else { %>
<% } %>
<% } else if (field.type == "hidden") { %><% createHiddenInput(field); %><% } else { %><% createTextInput(field); %><% } %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %>
<% } %><% } %><% function createFieldset (fieldset, type) { %><% if (fieldset.title) { %><%= gadgets.util.escape(fieldset.title) %> <% } %><% if (fieldset.description) { %><%= gadgets.util.escape(fieldset.description) %>
<% } %><% for ( var i = 0; i < fieldset.fields.length; i++ ) { %><% createField(fieldset.fields[i], type); %><% } %> <% } %>';AJS.gadgets.templater.Table.template=' <% if (obj.cols) { %> <% AJS.$(obj.cols).each(function () { %> class="<%= this.theme %>" <% } %> ><%= this.header %>
<% }); %> <% } %> <% if (obj.data) { %> <% AJS.$(obj.data).each(function (i) { %> class="even" <% } %> > <% AJS.$(this).each(function () { %> <%= this.label %> <% }); %> <% }); %> <% } %>
';AJS.$.namespace("AJS.gadget");if(!console.warn){console.warn=function(){};}var Gadget=function(options){AJS.dropDown.Standard=function(dropDown){function canBeMovedToParentFrame(){return !AJS.$.browser.msie&&!AJS.$.browser.opera&&window.top.AJS;}function overflowsIframeHeight(){return parseInt(AJS.$("body").attr("scrollHeight"))>AJS.$("body").outerHeight();}function hideActiveDropdowns(e){if(AJS.$(e.target).parents(".aui-dropdown").length===0){window.top.AJS.$(window.top.document).trigger("click");AJS.$(document).trigger("click");}}function adjustDDPositioning(){if(AJS.dropDown.current&&AJS.dropDown.current.calculateDDPosition){AJS.dropDown.current.updateDDPosition();}}function parentAsContainerHandler(){var top;if(overflowsIframeHeight()){this.updateDDPosition();this.$.remove().addClass("gadget-dropdown");this.shadow.remove();this.shadow.appendTo(window.top.document.body);this.$.appendTo(window.top.document.body);arguments.callee=function(){this.$.css("top",top);this.shadow.css("top",top);};}}var iframeAsContainerHandler={show:function(){if(overflowsIframeHeight()&&gadgets.window.adjustHeight){iframeAsContainerHandler.restoreHeight=AJS.$("body").outerHeight();gadgets.window.adjustHeight(AJS.$("body").attr("scrollHeight"));}},hide:function(){if(iframeAsContainerHandler.restoreHeight){gadgets.window.adjustHeight(iframeAsContainerHandler.restoreHeight);iframeAsContainerHandler.restoreHeight=undefined;}}};if(window.top.AJS){AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);window.top.AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);}AJS.$(window).resize(adjustDDPositioning);return function(options){var dropdowns;options.selectionHandler=options.selectionHandler||function(e,item){if(item[0].nodeName==="A"){window.top.location.href=item.attr("href");}else{window.top.location.href=AJS.$("a",item).attr("href");}};dropdowns=dropDown.call(this,options);AJS.$.each(dropdowns,function(){if(canBeMovedToParentFrame()){this.updateDDPosition=function(){var dropdownOffsets;function getLeftInPercent(left){return left/window.top.AJS.$("body").width()*100+"%";}function calculateOffsets(){var dropdownOffset=this.trigger.offset(),iframeOffset=window.top.AJS.$("#"+window.name).offset();return{top:dropdownOffset.top+this.trigger.outerHeight()+iframeOffset.top,left:dropdownOffset.left+iframeOffset.left+this.trigger.outerWidth()-this.$.outerWidth(),width:this.$.outerWidth()};}if(!this.trigger.is(":visible")){this.hide();}else{dropdownOffsets=calculateOffsets.call(this);this.$.css({top:dropdownOffsets.top,margin:0,left:getLeftInPercent(dropdownOffsets.left),right:"auto"});this.shadow.css({left:getLeftInPercent(dropdownOffsets.left-7),top:dropdownOffsets.top,right:"auto"});}};this.addCallback("show",parentAsContainerHandler);}else{this.addCallback("show",iframeAsContainerHandler.show);this.addCallback("hide",iframeAsContainerHandler.hide);}});return dropdowns;};}(AJS.dropDown.Standard);var prefs=new gadgets.Prefs(),viewMode,message=function(){var popup;return{show:function(msg,classNm,dismissible){var messageEl,buttons,cancelButton,buttonPanel,targHeight;messageEl=AJS.$("
").addClass(classNm).css({width:260,visiblity:"hidden"}).html(msg).appendTo("body");buttons=AJS.$("button",messageEl);if(dismissible!==false){cancelButton=AJS.$("").text(prefs.getMsg("gadget.common.cancel")).click(message.hide);}if(buttons.length>0||cancelButton){buttonPanel=AJS.$("").append(buttons).append(cancelButton);messageEl.append(buttonPanel);}message.hide();popup=new AJS.popup(messageEl.outerWidth(),messageEl.outerHeight(),"message");popup.element.html(messageEl);popup.show();AJS.$(".blanket").show();},hide:function(){if(popup){popup.remove();AJS.$(".blanket").remove();AJS.dim.dim=undefined;}}};}(),gadget={createCookie:function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}else{var expires="";}document.cookie=window.name+name+"="+value+expires+"; path=/";},readCookie:function(name){var nameEQ=window.name+name+"=";var ca=document.cookie.split(";");for(var i=0;i
").addClass("gadget").appendTo("body");return function(){return gadget;};}(),resize:function(size){if(gadgets.window.adjustHeight){window.setTimeout(function(){gadgets.window.adjustHeight(size);},0);}},isLocal:function(){if(typeof atlassian!=="undefined"&&atlassian.util){return atlassian.util.getRendererBaseUrl()===options.baseUrl;}},showLoading:function(){if(gadgets.window.getViewportDimensions&&gadgets.window.getViewportDimensions().width<250){AJS.$("body").addClass("loading-small");}else{AJS.$("body").addClass("loading");}},hideLoading:function(){AJS.$("body").removeClass("loading").removeClass("loading-small");},ajaxErrorHandler:{handle500:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.500"),settings.url,settings.url));},handle503:function(evt,response,settings){gadget.showMessage("error",response.data.errorMessages);},handle404:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.404"),settings.url,settings.url));},execute:function(evt,response,settings){if(response&&gadget.ajaxErrorHandler["handle"+response.rc]){gadget.ajaxErrorHandler["handle"+response.rc].apply(gadget,arguments);}}}};AJS.$("a, area").live("mouseover",function(){if(!AJS.$(this).attr("target")){AJS.$(this).attr({target:"_parent"});}});AJS.gadget.getBaseUrl=function(){return options.baseUrl;};if(options.useOauth&&window.location.href.indexOf(options.baseUrl)!==0){AJS.$.ajax=function(ajax){var queue=[],trustedAppsDenied=function(){ajax({authorization:"oauth",url:options.useOauth,data:{cacheBuster:new Date().getTime()},useToken:"always",complete:function(response){if(response.oauthApprovalUrl||response.rc===403){gadget.approvalUrl=response.oauthApprovalUrl;if(response.oauthApprovalUrl){gadget.approvalRequest=queue[0];}handleOauthApproval();}else{if(response.data){gadget.appendApprovedButton();makeOAuthRequests();}}}});},trustedAppsAccepted=function(){AJS.$.ajax=ajax;AJS.$(queue).each(function(){AJS.$.ajax(this);});},makeOAuthRequests=function(){AJS.$.ajax=ajax;AJS.$.ajaxSetup({authorization:"oauth",useToken:"always"});AJS.$(queue).each(function(){AJS.$.ajax(this);});},handleOauthApproval=function(){AJS.$.ajaxSetup({authorization:"oauth",useToken:"if_available"});var attachApprovalAdvice=function(request,idx){var cacheBuster=new Date().getTime();request.complete=function(complete){return function(response){if(idx===queue.length-1&&gadget.approvalRequest){if(response.rc===200||response.rc===400&&response.data){if(gadget.appendFooterApproval){gadget.appendFooterApproval(request);}}else{if(gadget.appendViewApproval&&gadget.approvalRequest){gadget.appendViewApproval(request);}}}if(complete){complete.apply(AJS.$.ajax,arguments);}};}(request.complete);if(typeof request.data==="object"){request.data.cacheBuster=cacheBuster;}else{if(typeof request.data==="string"){request.data+="&cacheBuster="+cacheBuster;}else{request.data="cacheBuster="+cacheBuster;}}if(!gadget.approvalRequest){request.global=false;request.error=function(response){if(response.rc===400){AJS.$("body").addClass("login").append(gadget.getMsg("gadget.common.container.login"));if(window.top.document){AJS.$("#"+window.name+"-chrome",window.top.document).css("opacity",0.7);}gadget.resize();}};}return request;};AJS.$.ajax=ajax;AJS.$(queue).each(function(i){AJS.$.ajax(attachApprovalAdvice(this,i));});};return function(settings){if(options.useOauth==="always"){AJS.$.ajaxSetup({authorization:"oauth",useOauth:"always"});settings.success=function(success){return function(response){if(response.oauthApprovalUrl){gadget.approvalUrl=response.oauthApprovalUrl;gadget.appendViewApproval(settings);}else{if(success){gadget.appendApprovedButton();success.apply(AJS.$.ajax,arguments);}}};}(settings.success);AJS.$.ajax=ajax;settings.useToken="always";AJS.$.ajax(settings);}else{AJS.$.ajax=function(ajaxSettings){queue.push(ajaxSettings);return arguments.callee;}(settings);ajax({url:options.useOauth,data:{cacheBuster:new Date().getTime()},complete:function(response,settings){if(response.rc===401){trustedAppsDenied(response,settings);}else{if(response.data){trustedAppsAccepted();}}}});}};}(AJS.$.ajax);}AJS.$.ajaxSetup({dataType:"json",type:"get",baseUrl:options.baseUrl});AJS.$().ajaxError(gadget.ajaxErrorHandler.execute);AJS.$().ajaxOpen(gadget.showLoading);AJS.$().ajaxClosed(gadget.hideLoading);return gadget;};var Standard=function(options){var gadget=Gadget(options);AJS.$.extend(gadget,{constructor:Standard,getView:function(){var view=AJS.$("
").addClass("view").appendTo(gadget.getGadget());return function(){return view;};}(),getFooter:function(){var footer=AJS.$("
").addClass("footer").appendTo(gadget.getGadget());AJS.$("body").addClass("has-footer-options");this.getFooter=function(){return footer;};return footer;},getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){window.location.reload();};request.useToken="always";AJS.$.ajax(request);});},getApprovalButton:function(request){var popup=gadget.getOauthPopup(request);return AJS.$("
").html(""+gadget.getMsg("gadget.common.oauth.approve.button")+" ").click(popup.createOpenerOnClick());},appendApprovedButton:function(){AJS.$(" ").appendTo(gadget.getFooter());},appendViewApproval:function(request){var approvalButton=gadget.getApprovalButton(request).appendTo("body");AJS.$("body").addClass("oauth-view-approval");return approvalButton;},appendFooterApproval:function(request){var popup=gadget.getOauthPopup(request);return AJS.$(" ").addClass("oauth").click(popup.createOpenerOnClick()).appendTo(gadget.getFooter());},viewTemplate:AJS.gadgets.templater.Custom({template:function(args){if(gadgets.views){gadget.setViewMode(gadgets.views.getCurrentView().getName());}options.view.template.call(gadget,args);gadget.showView();},cache:false,args:function(){var args=[];AJS.$(options.view.args).each(function(){if(AJS.$.isFunction(this.ajaxOptions)){var that=this;args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}()})});gadget.showView=function(){gadget.viewTemplate.addCallback(gadget.resize);return function(refresh){if(refresh){gadget.viewTemplate.build();}else{gadget.getView().show();gadget.resize();}};}();if(options.view.onResizeReload){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){if(gadget.getView().is(":visible")){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.showView(true);width=newWidth;}}};}());}if(options.view.onResizeAdjustHeight){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.resize();width=newWidth;}};}());}return gadget;};var Configured=function(options){var gadget=Standard(options);gadget.constructor=Configured;gadget.ajaxErrorHandler.handle400=function(evt,response){if(AJS.$("body").hasClass("config-unavailable")){return;}var errorContainer=AJS.$("
").append(""+gadget.getMsg("gadget.common.config.unavailable")+"
").appendTo(gadget.getView()),errorList=AJS.$("").appendTo(errorContainer);AJS.$("body").addClass("config-unavailable");AJS.$(response.data.errors).each(function(){AJS.$(" ").append(""+gadget.getMsg(this.error,this.params)+" ").appendTo(errorList);});gadget.resize();};if(options.view.enableReload){if(gadget.getPref("refresh")!==""&&gadget.getPref("refresh")!=="false"){window.setInterval(function(){gadget.showView(true);},60000*gadget.getPref("refresh"));}AJS.$(" ").click(function(){gadget.showView(true);}).appendTo(gadget.getFooter());}return gadget;};var Configurable=function(options){var gadget=Configured(options);AJS.$.extend(gadget,{constructor:Configurable,appendFooterApproval:function(superAppendFooterApproval){return function(request){if(AJS.$(".info.footer-message").length<1){AJS.$("
").addClass("info footer-message").html(""+gadget.getMsg("gadget.common.oauth.approve.message")+"
").append(gadget.getApprovalButton(request)).insertBefore(AJS.$(":first",gadget.configTemplate.getTarget()));gadget.resize();}superAppendFooterApproval.apply(gadget,arguments);};}(gadget.appendFooterApproval),getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){function persistFormInHash(){window.location.href+="&"+AJS.$("form",gadget.configTemplate.getTarget()).serialize()+"}";}if(gadget.getPrefs().getBool("isConfigured")&&!/isConfigured=true/.test(window.location.href)){persistFormInHash();window.top.location.reload();}else{persistFormInHash();window.location.reload();}};request.useToken="always";AJS.$.ajax(request);});},configTemplate:AJS.gadgets.templater.Form({target:AJS.$("
").appendTo(document.body),descriptor:function(args){var descriptor=options.config.descriptor.call(gadget,args);if(options.view.enableReload){descriptor.fields.push({userpref:"refresh",label:gadget.getMsg("gadget.common.refresh.label"),description:gadget.getMsg("gadget.common.refresh.description"),selected:gadget.getPref("refresh"),options:[{value:"false",label:gadget.getMsg("gadget.common.refresh.never")},{value:"15",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),15)},{value:"30",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),30)},{value:"60",label:AJS.format(gadget.getMsg("gadget.common.refresh.hour"),1)},{value:"120",label:AJS.format(gadget.getMsg("gadget.common.refresh.hours"),2)}],type:"select"});}return descriptor;},args:function(){var args=[];if(AJS.$.isFunction(options.config.args)){options.config.args=options.config.args();}AJS.$(options.config.args).each(function(){var that=this;if(AJS.$.isFunction(this.ajaxOptions)){args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}(),cancel:function(e){gadget.showView();e.preventDefault();},submit:function(e){var form=AJS.$(this),save=function(){AJS.$(form.serializeArray()).each(function(){gadget.savePref(this.name,this.value);});gadget.showView(true);};if(form.attr("action")!==""){AJS.$.ajax({type:"get",url:form.attr("action"),data:form.serialize(),global:false,success:function(){var fieldValues={};AJS.$(form.serializeArray()).each(function(){var fieldVal=fieldValues[this.name];if(!fieldVal){fieldVal=this.value;}else{if(AJS.$.isArray(fieldVal)){fieldVal.push(this.value);}else{fieldVal=[fieldVal,this.value];}}fieldValues[this.name]=fieldVal;});AJS.$(":checkbox:not(:checked)",form).each(function(){fieldValues[this.name]="false";});for(var name in fieldValues){gadget.savePref(name,fieldValues[name]);}gadget.showView(true);},error:function(response,settings){gadget.ajaxErrorHandler.execute(null,response,AJS.$.extend(settings,{isConfig:true}));}});}else{save();}e.preventDefault();}}),getConfig:function(){return gadget.configTemplate.getTarget();}});gadget.showConfig=function(){var restoreValuesFromHash=function(){if(!/#rpctoken=[0-9]+$/.test(window.location.href)){var options,fields=window.location.href.replace(/.*?#/,"").split("&");AJS.$.each(fields,function(){var name=this.split("=")[0],val=this.split("=")[1],field=AJS.$(":input[name="+name+"]");if(field.length>0){if(field.is("select")){options=val.split(",");AJS.$.each(options,function(){AJS.$("option[value="+this+"]",field).attr("selected","selected");});}else{if(field.is(":radio,:checkbox")){field.attr("checked","checked");}else{field.val(val);}}}});window.location.href=window.location.href.replace(/(#rpctoken=[0-9]+).*/,"$1");}};gadget.configTemplate.addCallback(function(){AJS.$("body").addClass("config-active");gadget.configTemplate.getTarget().show();restoreValuesFromHash();if(gadget.approvalRequest){gadget.appendFooterApproval(gadget.approvalRequest);}AJS.$("button",gadget.getFooter()).hide();window.setTimeout(function(){gadget.resize();},0);});return function(){gadget.configTemplate.build();};}();gadget.showView=function(refresh){if(refresh){gadget.viewTemplate.build();}else{AJS.$("body").removeClass("config-active");gadget.configTemplate.getTarget().hide();gadget.resize();AJS.$("button",gadget.getFooter()).show();}};gadget.configTemplate.getTrigger=function(){var button=AJS.$("").appendTo(gadget.getFooter()).click(function(e){gadget.showConfig();e.preventDefault();});return function(){return button;};}();gadget.ajaxErrorHandler.handle400=function(superHandle400){var validationErrors,showFormErrors=function(){AJS.$(".error",gadget.configTemplate.getTarget()).hide();AJS.$(validationErrors).each(function(){var msg=gadget.getMsg(this.error,this.params);AJS.$(":input[name='"+this.field+"']").parent().find(".error").text(msg).show();AJS.$("#"+this.field+"-error").text(msg).show();});gadget.resize();validationErrors=null;};gadget.configTemplate.addCallback(function(){if(!gadget.getPrefs().getBool("isConfigured")||validationErrors){AJS.$("input.cancel",gadget.configTemplate.getTarget()).hide();}if(validationErrors){showFormErrors();}});return function(evt,response,settings){validationErrors=response.data.errors;if(!settings.isConfig){superHandle400.apply(gadget,arguments);}else{showFormErrors();}};}(gadget.ajaxErrorHandler.handle400);return gadget;};AJS.Gadget=function(options){var gadget,pubInterface,isWriteable=function(){if(gadgets.views){return gadgets.views.getParams().writable===undefined||gadgets.views.getParams().writable==="true";}},getStandardInterface=function(){return{showMessage:gadget.showMessage,savePref:gadget.savePref,setViewMode:gadget.setViewMode,getViewMode:gadget.getViewMode,getBaseUrl:gadget.getBaseUrl,getPrefs:gadget.getPrefs,getPref:gadget.getPref,getPrefArray:gadget.getPrefArray,getMsg:gadget.getMsg,getGadget:gadget.getGadget,resize:gadget.resize,showLoading:gadget.showLoading,hideLoading:gadget.hideLoading,createCookie:gadget.createCookie,readCookie:gadget.readCookie,eraseCookie:gadget.eraseCookie,isLocal:gadget.isLocal};},getConfiguredInterface=function(){return AJS.$.extend(getStandardInterface(),{getView:gadget.getView,showView:gadget.showView,getFooter:gadget.getFooter});},getConfigurableInterface=function(){return AJS.$.extend(getConfiguredInterface(),{showConfig:gadget.showConfig,getConfig:gadget.getConfig});};if(options.view&&!options.config){gadget=Standard(options);pubInterface=getStandardInterface();gadget.showView(true);}else{if(options.view&&options.config&&!isWriteable()){gadget=Configured(options);pubInterface=getConfiguredInterface();if(gadget.getPrefs().getBool("isConfigured")){gadget.showView(true);}}else{if(options.view&&options.config&&isWriteable()){gadget=Configurable(options);pubInterface=getConfigurableInterface();if(!gadget.getPrefs().getBool("isConfigured")){gadget.showConfig();}else{gadget.showView(true);}}}}return pubInterface;};AJS.gadget.Configurable=AJS.Gadget;})();
Lint at line 1 character 7562: 'fragment' is already defined.
(function(){AJS.$.fn.serializeArray=function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();if(val==null){val="";}return val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();};AJS.$.extend({put:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"PUT",url:url,data:data,success:callback,dataType:type});},del:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"delete",url:url,data:data,success:callback,dataType:type});},ajax:function(ajax){var activeReq=0,dressResponse=function(xhr){var res={};res.rc=xhr.status;if(xhr.responseText!==""){res.data=gadgets.json.parse(xhr.responseText);}return res;};AJS.$.each("ajaxOpen,ajaxClosed,ajaxOauthApproval".split(","),function(i,o){AJS.$.fn[o]=function(f){return this.bind(o,f);};});AJS.$().ajaxSend(function(evt,req,options){if(++activeReq===1){AJS.$.event.trigger("ajaxOpen",[options]);}});AJS.$().ajaxComplete(function(evt,req,options){if(--activeReq===0){AJS.$.event.trigger("ajaxClosed",[options]);}});AJS.$.fn.ajaxComplete=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxComplete",f);};AJS.$.fn.ajaxError=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxError",f);};return function(usrOptions){var reqOptions={};if(typeof options==="string"){options={url:options};}var options=usrOptions;for(var name in AJS.$.ajaxSettings){if(!options[name]&&options[name]!==false){options[name]=AJS.$.ajaxSettings[name];}}if(options.baseUrl){if(!/^(http)|(https):\/\//.test(options.url)){options.url=options.baseUrl+options.url;}}if(typeof atlassian!=="undefined"&&atlassian.util){if(atlassian.util.getRendererBaseUrl()===options.baseUrl&&new RegExp(options.baseUrl).test(options.url)){if(options.error){options.error=function(error){return function(xhr,type){if(!xhr.responseText){options.success.apply(this,arguments);}else{error.call(this,dressResponse(xhr));}};}(options.error);}ajax.call(this,options);return;}}reqOptions[gadgets.io.RequestParameters.METHOD]=gadgets.io.MethodType[options.type.toUpperCase()];reqOptions[gadgets.io.RequestParameters.CONTENT_TYPE]=gadgets.io.ContentType[options.dataType.toUpperCase()];reqOptions.url=options.url;if(options.headers){reqOptions[gadgets.io.RequestParameters.HEADERS]=options.headers;}if(options.authorization){reqOptions[gadgets.io.RequestParameters.AUTHORIZATION]=gadgets.io.AuthorizationType[options.authorization.toUpperCase()];}if(options.useToken){reqOptions.OAUTH_USE_TOKEN=options.useToken;}if(options.summaries){reqOptions[gadgets.io.RequestParameters.GET_SUMMARIES]=options.summaries;}if(options.entries){reqOptions[gadgets.io.RequestParameters.NUM_ENTRIES]=options.entries;}if(options.data){if(options.type.toLowerCase()==="get"){if(typeof options.data==="string"){reqOptions.url+=("?"+options.data.replace(/^\?/,""));}else{reqOptions.url+=("?"+gadgets.io.encodeValues(options.data).replace(/^\?/,""));}}else{reqOptions[gadgets.io.RequestParameters.POST_DATA]=options.data;}}reqOptions.success=function(response){if(options.complete){options.complete(response,options);}if(options.global){AJS.$.event.trigger("ajaxComplete",[response,options]);}if(response.errors&&response.errors.length||response.oauthError){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.dataType.toLowerCase()==="json"&&typeof response.data==="string"){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(response.rc!==200){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.success&&(response||response.oauthApprovalUrl)){options.success(response.data||response);}if(options.global){AJS.$.event.trigger("ajaxSuccess",[response.data,options]);}};gadgets.io.makeRequest(reqOptions.url,reqOptions.success,reqOptions);if(options.ajaxSend){options.ajaxSend(options);}if(options.global){AJS.$.event.trigger("ajaxSend",[options]);}};}(AJS.$.ajax)});AJS.$.namespace("AJS.gadgets.templater");AJS.gadgets.templater.Base=function(){var cache,template,descriptor=function(args){return args;},callbacks=[],remoteArgs=[],args=[],renderTemplate=function(){var cache={};return function(str,data){var fn;if(!/\W/.test(str)){fn=cache[str];}else{var fnString="var p=[], print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+str.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');";fn=new Function("obj",fnString);}return data?fn(data):fn;};}();return{getDescriptorData:function(callback){var argLengthComparator=0,that=this,formattedArgs={};if(remoteArgs.length<1){AJS.$(args).each(function(){formattedArgs[this.key]=this.data;});if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}}AJS.$(remoteArgs).each(function(i,item){var reqOptions;if(typeof item.ajaxOptions==="string"){reqOptions={url:this.ajaxOptions};}else{if(AJS.$.isFunction(item.ajaxOptions)){reqOptions=item.ajaxOptions();}else{reqOptions=item.ajaxOptions;}}reqOptions.success=function(response){++argLengthComparator;formattedArgs[remoteArgs[i].key]=response;if(argLengthComparator===remoteArgs.length){var excuter=function(){if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}return arguments.callee;}();if(cache!==false){that.getDescriptorData=excuter;}}};AJS.$.ajax(reqOptions);});},disableCache:function(){cache=false;},setTemplate:function(templ){template=templ;},setDescriptor:function(desc){descriptor=desc;},addCallback:function(func){callbacks.push(func);},setRemoteDescriptorArg:function(key,ajaxOptions){remoteArgs.push({key:key,ajaxOptions:ajaxOptions});},setDescriptorArg:function(arg){args.push(arg);},build:function(data){var that=this;if(!data&&data!==false){this.getDescriptorData(this.build);}else{if(data!==false){if(typeof template==="string"&&document.getElementById(template)){that.build.template=AJS.$(template).html();var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(AJS.$.isFunction(template)){template(data);AJS.$(callbacks).each(function(){this.call(that,data);});}else{if(template.length>50){that.build.template=template;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(!that.build.template){AJS.$.ajax({url:template,dataType:"text",success:function(response){that.build.template=response;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}});}else{var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}}}}}}}};};AJS.gadgets.templater.Custom=function(options){var templater=AJS.gadgets.templater.Base();templater.setTemplate(options.template);if(options.descriptor){templater.setDescriptor(options.descriptor);}if(options.callback){templater.addCallback(options.callback);}if(options.cache===false){templater.disableCache();}AJS.$.extend(templater,{getTarget:function(){return options.target;}});if(options.args){AJS.$(options.args).each(function(){if(this.ajaxOptions){templater.setRemoteDescriptorArg(this.key,this.ajaxOptions);}else{templater.setDescriptorArg(this);}});}return templater;};AJS.gadgets.templater.Form=function(options){return AJS.gadgets.templater.Custom(AJS.$.extend({template:AJS.gadgets.templater.Form.template,baseUrl:AJS.gadget.getBaseUrl(),callback:function(response,data){if(options.target){options.target.html(response);if(options.submit){AJS.$("form",options.target).submit(options.submit);}if(options.cancel){AJS.$("input.cancel",options.target).click(options.cancel);}AJS.$(data.fields).each(function(){if(this.type==="callbackBuilder"){var targetDiv=AJS.$("div#"+this.id);this.callback(targetDiv);}});}else{return response;}}},options));};AJS.gadgets.templater.Table=function(options){var table,sortCol,sortOrd=[],sort=function(data,column,order){data.cols[column].theme=order;if(!data.cols[column].sorted){data.data.sort(function(item,compareItem){var dataItem=item[column].value,dataItemCompare=compareItem[column].value;if(!isNaN(parseFloat(dataItem))&&!isNaN(parseFloat(dataItemCompare))){dataItem=parseFloat(dataItem);dataItemCompare=parseFloat(dataItemCompare);}if(dataItem>dataItemCompare){return 1;}else{if(dataItem<% function createCheckboxGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %> <% for (var i=0; i < field.options.length; i++) { %> id="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> id="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> <% if ( field.value === "true" ) { %> checked = "checked" <% } %> <% if (field.value === "false") { field.value = "true"; } %> value="<%= field.value %>" name="<%= gadgets.util.escape(field.userpref) %>" /> <% if (field.options[i].label) { %> for="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> for="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> ><%= gadgets.util.escape(field.options[i].label) %> <% } %>
<% } %> <% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createRadioGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %><% for (var i=0; i < field.options.length; i++) { %>
id="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>id="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %><% if (field.selected === field.options[i].value || field.options[i].selected) { %>checked = "checked"<% } %> <% if ( field.options[i].value ) { %> value="<%= gadgets.util.escape(field.options[i].value) %>" <% } %>name="<%= gadgets.util.escape(field.userpref) %>"/>for="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>for="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %>><%= gadgets.util.escape(field.options[i].label) %>
<% } %>
<% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createHiddenInput (field) { %> <% } %><% function createTextInput (field) { %> class="<%= gadgets.util.escape(styleClass) %>"<% } else { %>class="<%= gadgets.util.escape(field.type) %>"<% } %> <% if (field.value) { %> value="<%= gadgets.util.escape(field.value) %>" <% } %> <% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"/> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createLabel (field) { %><%= gadgets.util.escape(field.label) %> <% } %><% function createTextarea (field) { %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %> value="<%= gadgets.util.escape(item.value) %>"<% if ( field.selected === item.value || item.selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %> <% if (field.options[i].group.options) { %> <% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %> <% createOption(field.options[i].group.options[x]); %> <% } %> <% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createMultiSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %>value="<%= gadgets.util.escape(item.value) %>"<% var selected = false;if(field.value !== undefined && field.value.length > 0) { for(var i = 0; i < field.value.length; i++) { if(field.value[i] === item.value) { selected = true; break; } }}if (selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="multi-select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %><% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %><% createOption(field.options[i].group.options[x]); %><% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createField(field, type) { %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %> <% } %><% if (field.type !== "radio" && field.type !== "checkbox"&& field.type !== "hidden") { %><% createLabel(field); %><% } %><% if (field.type == "select") { %><% createSelect(field); %> <% } else if (field.type == "multiselect") { %><% createMultiSelect(field); %><% } else if (field.type == "textarea") { %><% createTextarea(field); %><% } else if (field.type == "radio") { %><% createRadioGroup(field); %><% } else if (field.type == "checkbox") { %><% createCheckboxGroup(field); %><% } else if (field.type == "custom" && field.template) { %><%= field.template() %>
<% } else if (field.type == "callbackBuilder") { %> <% if (field.id){%>
<% } else { %>
<% } %>
<% } else if (field.type == "hidden") { %><% createHiddenInput(field); %><% } else { %><% createTextInput(field); %><% } %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %>
<% } %><% } %><% function createFieldset (fieldset, type) { %><% if (fieldset.title) { %><%= gadgets.util.escape(fieldset.title) %> <% } %><% if (fieldset.description) { %><%= gadgets.util.escape(fieldset.description) %>
<% } %><% for ( var i = 0; i < fieldset.fields.length; i++ ) { %><% createField(fieldset.fields[i], type); %><% } %> <% } %>';AJS.gadgets.templater.Table.template=' <% if (obj.cols) { %> <% AJS.$(obj.cols).each(function () { %> class="<%= this.theme %>" <% } %> ><%= this.header %>
<% }); %> <% } %> <% if (obj.data) { %> <% AJS.$(obj.data).each(function (i) { %> class="even" <% } %> > <% AJS.$(this).each(function () { %> <%= this.label %> <% }); %> <% }); %> <% } %>
';AJS.$.namespace("AJS.gadget");if(!console.warn){console.warn=function(){};}var Gadget=function(options){AJS.dropDown.Standard=function(dropDown){function canBeMovedToParentFrame(){return !AJS.$.browser.msie&&!AJS.$.browser.opera&&window.top.AJS;}function overflowsIframeHeight(){return parseInt(AJS.$("body").attr("scrollHeight"))>AJS.$("body").outerHeight();}function hideActiveDropdowns(e){if(AJS.$(e.target).parents(".aui-dropdown").length===0){window.top.AJS.$(window.top.document).trigger("click");AJS.$(document).trigger("click");}}function adjustDDPositioning(){if(AJS.dropDown.current&&AJS.dropDown.current.calculateDDPosition){AJS.dropDown.current.updateDDPosition();}}function parentAsContainerHandler(){var top;if(overflowsIframeHeight()){this.updateDDPosition();this.$.remove().addClass("gadget-dropdown");this.shadow.remove();this.shadow.appendTo(window.top.document.body);this.$.appendTo(window.top.document.body);arguments.callee=function(){this.$.css("top",top);this.shadow.css("top",top);};}}var iframeAsContainerHandler={show:function(){if(overflowsIframeHeight()&&gadgets.window.adjustHeight){iframeAsContainerHandler.restoreHeight=AJS.$("body").outerHeight();gadgets.window.adjustHeight(AJS.$("body").attr("scrollHeight"));}},hide:function(){if(iframeAsContainerHandler.restoreHeight){gadgets.window.adjustHeight(iframeAsContainerHandler.restoreHeight);iframeAsContainerHandler.restoreHeight=undefined;}}};if(window.top.AJS){AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);window.top.AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);}AJS.$(window).resize(adjustDDPositioning);return function(options){var dropdowns;options.selectionHandler=options.selectionHandler||function(e,item){if(item[0].nodeName==="A"){window.top.location.href=item.attr("href");}else{window.top.location.href=AJS.$("a",item).attr("href");}};dropdowns=dropDown.call(this,options);AJS.$.each(dropdowns,function(){if(canBeMovedToParentFrame()){this.updateDDPosition=function(){var dropdownOffsets;function getLeftInPercent(left){return left/window.top.AJS.$("body").width()*100+"%";}function calculateOffsets(){var dropdownOffset=this.trigger.offset(),iframeOffset=window.top.AJS.$("#"+window.name).offset();return{top:dropdownOffset.top+this.trigger.outerHeight()+iframeOffset.top,left:dropdownOffset.left+iframeOffset.left+this.trigger.outerWidth()-this.$.outerWidth(),width:this.$.outerWidth()};}if(!this.trigger.is(":visible")){this.hide();}else{dropdownOffsets=calculateOffsets.call(this);this.$.css({top:dropdownOffsets.top,margin:0,left:getLeftInPercent(dropdownOffsets.left),right:"auto"});this.shadow.css({left:getLeftInPercent(dropdownOffsets.left-7),top:dropdownOffsets.top,right:"auto"});}};this.addCallback("show",parentAsContainerHandler);}else{this.addCallback("show",iframeAsContainerHandler.show);this.addCallback("hide",iframeAsContainerHandler.hide);}});return dropdowns;};}(AJS.dropDown.Standard);var prefs=new gadgets.Prefs(),viewMode,message=function(){var popup;return{show:function(msg,classNm,dismissible){var messageEl,buttons,cancelButton,buttonPanel,targHeight;messageEl=AJS.$("
").addClass(classNm).css({width:260,visiblity:"hidden"}).html(msg).appendTo("body");buttons=AJS.$("button",messageEl);if(dismissible!==false){cancelButton=AJS.$("").text(prefs.getMsg("gadget.common.cancel")).click(message.hide);}if(buttons.length>0||cancelButton){buttonPanel=AJS.$("").append(buttons).append(cancelButton);messageEl.append(buttonPanel);}message.hide();popup=new AJS.popup(messageEl.outerWidth(),messageEl.outerHeight(),"message");popup.element.html(messageEl);popup.show();AJS.$(".blanket").show();},hide:function(){if(popup){popup.remove();AJS.$(".blanket").remove();AJS.dim.dim=undefined;}}};}(),gadget={createCookie:function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}else{var expires="";}document.cookie=window.name+name+"="+value+expires+"; path=/";},readCookie:function(name){var nameEQ=window.name+name+"=";var ca=document.cookie.split(";");for(var i=0;i
").addClass("gadget").appendTo("body");return function(){return gadget;};}(),resize:function(size){if(gadgets.window.adjustHeight){window.setTimeout(function(){gadgets.window.adjustHeight(size);},0);}},isLocal:function(){if(typeof atlassian!=="undefined"&&atlassian.util){return atlassian.util.getRendererBaseUrl()===options.baseUrl;}},showLoading:function(){if(gadgets.window.getViewportDimensions&&gadgets.window.getViewportDimensions().width<250){AJS.$("body").addClass("loading-small");}else{AJS.$("body").addClass("loading");}},hideLoading:function(){AJS.$("body").removeClass("loading").removeClass("loading-small");},ajaxErrorHandler:{handle500:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.500"),settings.url,settings.url));},handle503:function(evt,response,settings){gadget.showMessage("error",response.data.errorMessages);},handle404:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.404"),settings.url,settings.url));},execute:function(evt,response,settings){if(response&&gadget.ajaxErrorHandler["handle"+response.rc]){gadget.ajaxErrorHandler["handle"+response.rc].apply(gadget,arguments);}}}};AJS.$("a, area").live("mouseover",function(){if(!AJS.$(this).attr("target")){AJS.$(this).attr({target:"_parent"});}});AJS.gadget.getBaseUrl=function(){return options.baseUrl;};if(options.useOauth&&window.location.href.indexOf(options.baseUrl)!==0){AJS.$.ajax=function(ajax){var queue=[],trustedAppsDenied=function(){ajax({authorization:"oauth",url:options.useOauth,data:{cacheBuster:new Date().getTime()},useToken:"always",complete:function(response){if(response.oauthApprovalUrl||response.rc===403){gadget.approvalUrl=response.oauthApprovalUrl;if(response.oauthApprovalUrl){gadget.approvalRequest=queue[0];}handleOauthApproval();}else{if(response.data){gadget.appendApprovedButton();makeOAuthRequests();}}}});},trustedAppsAccepted=function(){AJS.$.ajax=ajax;AJS.$(queue).each(function(){AJS.$.ajax(this);});},makeOAuthRequests=function(){AJS.$.ajax=ajax;AJS.$.ajaxSetup({authorization:"oauth",useToken:"always"});AJS.$(queue).each(function(){AJS.$.ajax(this);});},handleOauthApproval=function(){AJS.$.ajaxSetup({authorization:"oauth",useToken:"if_available"});var attachApprovalAdvice=function(request,idx){var cacheBuster=new Date().getTime();request.complete=function(complete){return function(response){if(idx===queue.length-1&&gadget.approvalRequest){if(response.rc===200||response.rc===400&&response.data){if(gadget.appendFooterApproval){gadget.appendFooterApproval(request);}}else{if(gadget.appendViewApproval&&gadget.approvalRequest){gadget.appendViewApproval(request);}}}if(complete){complete.apply(AJS.$.ajax,arguments);}};}(request.complete);if(typeof request.data==="object"){request.data.cacheBuster=cacheBuster;}else{if(typeof request.data==="string"){request.data+="&cacheBuster="+cacheBuster;}else{request.data="cacheBuster="+cacheBuster;}}if(!gadget.approvalRequest){request.global=false;request.error=function(response){if(response.rc===400){AJS.$("body").addClass("login").append(gadget.getMsg("gadget.common.container.login"));if(window.top.document){AJS.$("#"+window.name+"-chrome",window.top.document).css("opacity",0.7);}gadget.resize();}};}return request;};AJS.$.ajax=ajax;AJS.$(queue).each(function(i){AJS.$.ajax(attachApprovalAdvice(this,i));});};return function(settings){if(options.useOauth==="always"){AJS.$.ajaxSetup({authorization:"oauth",useOauth:"always"});settings.success=function(success){return function(response){if(response.oauthApprovalUrl){gadget.approvalUrl=response.oauthApprovalUrl;gadget.appendViewApproval(settings);}else{if(success){gadget.appendApprovedButton();success.apply(AJS.$.ajax,arguments);}}};}(settings.success);AJS.$.ajax=ajax;settings.useToken="always";AJS.$.ajax(settings);}else{AJS.$.ajax=function(ajaxSettings){queue.push(ajaxSettings);return arguments.callee;}(settings);ajax({url:options.useOauth,data:{cacheBuster:new Date().getTime()},complete:function(response,settings){if(response.rc===401){trustedAppsDenied(response,settings);}else{if(response.data){trustedAppsAccepted();}}}});}};}(AJS.$.ajax);}AJS.$.ajaxSetup({dataType:"json",type:"get",baseUrl:options.baseUrl});AJS.$().ajaxError(gadget.ajaxErrorHandler.execute);AJS.$().ajaxOpen(gadget.showLoading);AJS.$().ajaxClosed(gadget.hideLoading);return gadget;};var Standard=function(options){var gadget=Gadget(options);AJS.$.extend(gadget,{constructor:Standard,getView:function(){var view=AJS.$("
").addClass("view").appendTo(gadget.getGadget());return function(){return view;};}(),getFooter:function(){var footer=AJS.$("
").addClass("footer").appendTo(gadget.getGadget());AJS.$("body").addClass("has-footer-options");this.getFooter=function(){return footer;};return footer;},getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){window.location.reload();};request.useToken="always";AJS.$.ajax(request);});},getApprovalButton:function(request){var popup=gadget.getOauthPopup(request);return AJS.$("
").html(""+gadget.getMsg("gadget.common.oauth.approve.button")+" ").click(popup.createOpenerOnClick());},appendApprovedButton:function(){AJS.$(" ").appendTo(gadget.getFooter());},appendViewApproval:function(request){var approvalButton=gadget.getApprovalButton(request).appendTo("body");AJS.$("body").addClass("oauth-view-approval");return approvalButton;},appendFooterApproval:function(request){var popup=gadget.getOauthPopup(request);return AJS.$(" ").addClass("oauth").click(popup.createOpenerOnClick()).appendTo(gadget.getFooter());},viewTemplate:AJS.gadgets.templater.Custom({template:function(args){if(gadgets.views){gadget.setViewMode(gadgets.views.getCurrentView().getName());}options.view.template.call(gadget,args);gadget.showView();},cache:false,args:function(){var args=[];AJS.$(options.view.args).each(function(){if(AJS.$.isFunction(this.ajaxOptions)){var that=this;args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}()})});gadget.showView=function(){gadget.viewTemplate.addCallback(gadget.resize);return function(refresh){if(refresh){gadget.viewTemplate.build();}else{gadget.getView().show();gadget.resize();}};}();if(options.view.onResizeReload){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){if(gadget.getView().is(":visible")){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.showView(true);width=newWidth;}}};}());}if(options.view.onResizeAdjustHeight){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.resize();width=newWidth;}};}());}return gadget;};var Configured=function(options){var gadget=Standard(options);gadget.constructor=Configured;gadget.ajaxErrorHandler.handle400=function(evt,response){if(AJS.$("body").hasClass("config-unavailable")){return;}var errorContainer=AJS.$("
").append(""+gadget.getMsg("gadget.common.config.unavailable")+"
").appendTo(gadget.getView()),errorList=AJS.$("").appendTo(errorContainer);AJS.$("body").addClass("config-unavailable");AJS.$(response.data.errors).each(function(){AJS.$(" ").append(""+gadget.getMsg(this.error,this.params)+" ").appendTo(errorList);});gadget.resize();};if(options.view.enableReload){if(gadget.getPref("refresh")!==""&&gadget.getPref("refresh")!=="false"){window.setInterval(function(){gadget.showView(true);},60000*gadget.getPref("refresh"));}AJS.$(" ").click(function(){gadget.showView(true);}).appendTo(gadget.getFooter());}return gadget;};var Configurable=function(options){var gadget=Configured(options);AJS.$.extend(gadget,{constructor:Configurable,appendFooterApproval:function(superAppendFooterApproval){return function(request){if(AJS.$(".info.footer-message").length<1){AJS.$("
").addClass("info footer-message").html(""+gadget.getMsg("gadget.common.oauth.approve.message")+"
").append(gadget.getApprovalButton(request)).insertBefore(AJS.$(":first",gadget.configTemplate.getTarget()));gadget.resize();}superAppendFooterApproval.apply(gadget,arguments);};}(gadget.appendFooterApproval),getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){function persistFormInHash(){window.location.href+="&"+AJS.$("form",gadget.configTemplate.getTarget()).serialize()+"}";}if(gadget.getPrefs().getBool("isConfigured")&&!/isConfigured=true/.test(window.location.href)){persistFormInHash();window.top.location.reload();}else{persistFormInHash();window.location.reload();}};request.useToken="always";AJS.$.ajax(request);});},configTemplate:AJS.gadgets.templater.Form({target:AJS.$("
").appendTo(document.body),descriptor:function(args){var descriptor=options.config.descriptor.call(gadget,args);if(options.view.enableReload){descriptor.fields.push({userpref:"refresh",label:gadget.getMsg("gadget.common.refresh.label"),description:gadget.getMsg("gadget.common.refresh.description"),selected:gadget.getPref("refresh"),options:[{value:"false",label:gadget.getMsg("gadget.common.refresh.never")},{value:"15",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),15)},{value:"30",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),30)},{value:"60",label:AJS.format(gadget.getMsg("gadget.common.refresh.hour"),1)},{value:"120",label:AJS.format(gadget.getMsg("gadget.common.refresh.hours"),2)}],type:"select"});}return descriptor;},args:function(){var args=[];if(AJS.$.isFunction(options.config.args)){options.config.args=options.config.args();}AJS.$(options.config.args).each(function(){var that=this;if(AJS.$.isFunction(this.ajaxOptions)){args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}(),cancel:function(e){gadget.showView();e.preventDefault();},submit:function(e){var form=AJS.$(this),save=function(){AJS.$(form.serializeArray()).each(function(){gadget.savePref(this.name,this.value);});gadget.showView(true);};if(form.attr("action")!==""){AJS.$.ajax({type:"get",url:form.attr("action"),data:form.serialize(),global:false,success:function(){var fieldValues={};AJS.$(form.serializeArray()).each(function(){var fieldVal=fieldValues[this.name];if(!fieldVal){fieldVal=this.value;}else{if(AJS.$.isArray(fieldVal)){fieldVal.push(this.value);}else{fieldVal=[fieldVal,this.value];}}fieldValues[this.name]=fieldVal;});AJS.$(":checkbox:not(:checked)",form).each(function(){fieldValues[this.name]="false";});for(var name in fieldValues){gadget.savePref(name,fieldValues[name]);}gadget.showView(true);},error:function(response,settings){gadget.ajaxErrorHandler.execute(null,response,AJS.$.extend(settings,{isConfig:true}));}});}else{save();}e.preventDefault();}}),getConfig:function(){return gadget.configTemplate.getTarget();}});gadget.showConfig=function(){var restoreValuesFromHash=function(){if(!/#rpctoken=[0-9]+$/.test(window.location.href)){var options,fields=window.location.href.replace(/.*?#/,"").split("&");AJS.$.each(fields,function(){var name=this.split("=")[0],val=this.split("=")[1],field=AJS.$(":input[name="+name+"]");if(field.length>0){if(field.is("select")){options=val.split(",");AJS.$.each(options,function(){AJS.$("option[value="+this+"]",field).attr("selected","selected");});}else{if(field.is(":radio,:checkbox")){field.attr("checked","checked");}else{field.val(val);}}}});window.location.href=window.location.href.replace(/(#rpctoken=[0-9]+).*/,"$1");}};gadget.configTemplate.addCallback(function(){AJS.$("body").addClass("config-active");gadget.configTemplate.getTarget().show();restoreValuesFromHash();if(gadget.approvalRequest){gadget.appendFooterApproval(gadget.approvalRequest);}AJS.$("button",gadget.getFooter()).hide();window.setTimeout(function(){gadget.resize();},0);});return function(){gadget.configTemplate.build();};}();gadget.showView=function(refresh){if(refresh){gadget.viewTemplate.build();}else{AJS.$("body").removeClass("config-active");gadget.configTemplate.getTarget().hide();gadget.resize();AJS.$("button",gadget.getFooter()).show();}};gadget.configTemplate.getTrigger=function(){var button=AJS.$("").appendTo(gadget.getFooter()).click(function(e){gadget.showConfig();e.preventDefault();});return function(){return button;};}();gadget.ajaxErrorHandler.handle400=function(superHandle400){var validationErrors,showFormErrors=function(){AJS.$(".error",gadget.configTemplate.getTarget()).hide();AJS.$(validationErrors).each(function(){var msg=gadget.getMsg(this.error,this.params);AJS.$(":input[name='"+this.field+"']").parent().find(".error").text(msg).show();AJS.$("#"+this.field+"-error").text(msg).show();});gadget.resize();validationErrors=null;};gadget.configTemplate.addCallback(function(){if(!gadget.getPrefs().getBool("isConfigured")||validationErrors){AJS.$("input.cancel",gadget.configTemplate.getTarget()).hide();}if(validationErrors){showFormErrors();}});return function(evt,response,settings){validationErrors=response.data.errors;if(!settings.isConfig){superHandle400.apply(gadget,arguments);}else{showFormErrors();}};}(gadget.ajaxErrorHandler.handle400);return gadget;};AJS.Gadget=function(options){var gadget,pubInterface,isWriteable=function(){if(gadgets.views){return gadgets.views.getParams().writable===undefined||gadgets.views.getParams().writable==="true";}},getStandardInterface=function(){return{showMessage:gadget.showMessage,savePref:gadget.savePref,setViewMode:gadget.setViewMode,getViewMode:gadget.getViewMode,getBaseUrl:gadget.getBaseUrl,getPrefs:gadget.getPrefs,getPref:gadget.getPref,getPrefArray:gadget.getPrefArray,getMsg:gadget.getMsg,getGadget:gadget.getGadget,resize:gadget.resize,showLoading:gadget.showLoading,hideLoading:gadget.hideLoading,createCookie:gadget.createCookie,readCookie:gadget.readCookie,eraseCookie:gadget.eraseCookie,isLocal:gadget.isLocal};},getConfiguredInterface=function(){return AJS.$.extend(getStandardInterface(),{getView:gadget.getView,showView:gadget.showView,getFooter:gadget.getFooter});},getConfigurableInterface=function(){return AJS.$.extend(getConfiguredInterface(),{showConfig:gadget.showConfig,getConfig:gadget.getConfig});};if(options.view&&!options.config){gadget=Standard(options);pubInterface=getStandardInterface();gadget.showView(true);}else{if(options.view&&options.config&&!isWriteable()){gadget=Configured(options);pubInterface=getConfiguredInterface();if(gadget.getPrefs().getBool("isConfigured")){gadget.showView(true);}}else{if(options.view&&options.config&&isWriteable()){gadget=Configurable(options);pubInterface=getConfigurableInterface();if(!gadget.getPrefs().getBool("isConfigured")){gadget.showConfig();}else{gadget.showView(true);}}}}return pubInterface;};AJS.gadget.Configurable=AJS.Gadget;})();
Lint at line 1 character 21683: Missing radix parameter.
(function(){AJS.$.fn.serializeArray=function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();if(val==null){val="";}return val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();};AJS.$.extend({put:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"PUT",url:url,data:data,success:callback,dataType:type});},del:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"delete",url:url,data:data,success:callback,dataType:type});},ajax:function(ajax){var activeReq=0,dressResponse=function(xhr){var res={};res.rc=xhr.status;if(xhr.responseText!==""){res.data=gadgets.json.parse(xhr.responseText);}return res;};AJS.$.each("ajaxOpen,ajaxClosed,ajaxOauthApproval".split(","),function(i,o){AJS.$.fn[o]=function(f){return this.bind(o,f);};});AJS.$().ajaxSend(function(evt,req,options){if(++activeReq===1){AJS.$.event.trigger("ajaxOpen",[options]);}});AJS.$().ajaxComplete(function(evt,req,options){if(--activeReq===0){AJS.$.event.trigger("ajaxClosed",[options]);}});AJS.$.fn.ajaxComplete=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxComplete",f);};AJS.$.fn.ajaxError=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxError",f);};return function(usrOptions){var reqOptions={};if(typeof options==="string"){options={url:options};}var options=usrOptions;for(var name in AJS.$.ajaxSettings){if(!options[name]&&options[name]!==false){options[name]=AJS.$.ajaxSettings[name];}}if(options.baseUrl){if(!/^(http)|(https):\/\//.test(options.url)){options.url=options.baseUrl+options.url;}}if(typeof atlassian!=="undefined"&&atlassian.util){if(atlassian.util.getRendererBaseUrl()===options.baseUrl&&new RegExp(options.baseUrl).test(options.url)){if(options.error){options.error=function(error){return function(xhr,type){if(!xhr.responseText){options.success.apply(this,arguments);}else{error.call(this,dressResponse(xhr));}};}(options.error);}ajax.call(this,options);return;}}reqOptions[gadgets.io.RequestParameters.METHOD]=gadgets.io.MethodType[options.type.toUpperCase()];reqOptions[gadgets.io.RequestParameters.CONTENT_TYPE]=gadgets.io.ContentType[options.dataType.toUpperCase()];reqOptions.url=options.url;if(options.headers){reqOptions[gadgets.io.RequestParameters.HEADERS]=options.headers;}if(options.authorization){reqOptions[gadgets.io.RequestParameters.AUTHORIZATION]=gadgets.io.AuthorizationType[options.authorization.toUpperCase()];}if(options.useToken){reqOptions.OAUTH_USE_TOKEN=options.useToken;}if(options.summaries){reqOptions[gadgets.io.RequestParameters.GET_SUMMARIES]=options.summaries;}if(options.entries){reqOptions[gadgets.io.RequestParameters.NUM_ENTRIES]=options.entries;}if(options.data){if(options.type.toLowerCase()==="get"){if(typeof options.data==="string"){reqOptions.url+=("?"+options.data.replace(/^\?/,""));}else{reqOptions.url+=("?"+gadgets.io.encodeValues(options.data).replace(/^\?/,""));}}else{reqOptions[gadgets.io.RequestParameters.POST_DATA]=options.data;}}reqOptions.success=function(response){if(options.complete){options.complete(response,options);}if(options.global){AJS.$.event.trigger("ajaxComplete",[response,options]);}if(response.errors&&response.errors.length||response.oauthError){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.dataType.toLowerCase()==="json"&&typeof response.data==="string"){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(response.rc!==200){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.success&&(response||response.oauthApprovalUrl)){options.success(response.data||response);}if(options.global){AJS.$.event.trigger("ajaxSuccess",[response.data,options]);}};gadgets.io.makeRequest(reqOptions.url,reqOptions.success,reqOptions);if(options.ajaxSend){options.ajaxSend(options);}if(options.global){AJS.$.event.trigger("ajaxSend",[options]);}};}(AJS.$.ajax)});AJS.$.namespace("AJS.gadgets.templater");AJS.gadgets.templater.Base=function(){var cache,template,descriptor=function(args){return args;},callbacks=[],remoteArgs=[],args=[],renderTemplate=function(){var cache={};return function(str,data){var fn;if(!/\W/.test(str)){fn=cache[str];}else{var fnString="var p=[], print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+str.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');";fn=new Function("obj",fnString);}return data?fn(data):fn;};}();return{getDescriptorData:function(callback){var argLengthComparator=0,that=this,formattedArgs={};if(remoteArgs.length<1){AJS.$(args).each(function(){formattedArgs[this.key]=this.data;});if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}}AJS.$(remoteArgs).each(function(i,item){var reqOptions;if(typeof item.ajaxOptions==="string"){reqOptions={url:this.ajaxOptions};}else{if(AJS.$.isFunction(item.ajaxOptions)){reqOptions=item.ajaxOptions();}else{reqOptions=item.ajaxOptions;}}reqOptions.success=function(response){++argLengthComparator;formattedArgs[remoteArgs[i].key]=response;if(argLengthComparator===remoteArgs.length){var excuter=function(){if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}return arguments.callee;}();if(cache!==false){that.getDescriptorData=excuter;}}};AJS.$.ajax(reqOptions);});},disableCache:function(){cache=false;},setTemplate:function(templ){template=templ;},setDescriptor:function(desc){descriptor=desc;},addCallback:function(func){callbacks.push(func);},setRemoteDescriptorArg:function(key,ajaxOptions){remoteArgs.push({key:key,ajaxOptions:ajaxOptions});},setDescriptorArg:function(arg){args.push(arg);},build:function(data){var that=this;if(!data&&data!==false){this.getDescriptorData(this.build);}else{if(data!==false){if(typeof template==="string"&&document.getElementById(template)){that.build.template=AJS.$(template).html();var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(AJS.$.isFunction(template)){template(data);AJS.$(callbacks).each(function(){this.call(that,data);});}else{if(template.length>50){that.build.template=template;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(!that.build.template){AJS.$.ajax({url:template,dataType:"text",success:function(response){that.build.template=response;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}});}else{var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}}}}}}}};};AJS.gadgets.templater.Custom=function(options){var templater=AJS.gadgets.templater.Base();templater.setTemplate(options.template);if(options.descriptor){templater.setDescriptor(options.descriptor);}if(options.callback){templater.addCallback(options.callback);}if(options.cache===false){templater.disableCache();}AJS.$.extend(templater,{getTarget:function(){return options.target;}});if(options.args){AJS.$(options.args).each(function(){if(this.ajaxOptions){templater.setRemoteDescriptorArg(this.key,this.ajaxOptions);}else{templater.setDescriptorArg(this);}});}return templater;};AJS.gadgets.templater.Form=function(options){return AJS.gadgets.templater.Custom(AJS.$.extend({template:AJS.gadgets.templater.Form.template,baseUrl:AJS.gadget.getBaseUrl(),callback:function(response,data){if(options.target){options.target.html(response);if(options.submit){AJS.$("form",options.target).submit(options.submit);}if(options.cancel){AJS.$("input.cancel",options.target).click(options.cancel);}AJS.$(data.fields).each(function(){if(this.type==="callbackBuilder"){var targetDiv=AJS.$("div#"+this.id);this.callback(targetDiv);}});}else{return response;}}},options));};AJS.gadgets.templater.Table=function(options){var table,sortCol,sortOrd=[],sort=function(data,column,order){data.cols[column].theme=order;if(!data.cols[column].sorted){data.data.sort(function(item,compareItem){var dataItem=item[column].value,dataItemCompare=compareItem[column].value;if(!isNaN(parseFloat(dataItem))&&!isNaN(parseFloat(dataItemCompare))){dataItem=parseFloat(dataItem);dataItemCompare=parseFloat(dataItemCompare);}if(dataItem>dataItemCompare){return 1;}else{if(dataItem<% function createCheckboxGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %> <% for (var i=0; i < field.options.length; i++) { %> id="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> id="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> <% if ( field.value === "true" ) { %> checked = "checked" <% } %> <% if (field.value === "false") { field.value = "true"; } %> value="<%= field.value %>" name="<%= gadgets.util.escape(field.userpref) %>" /> <% if (field.options[i].label) { %> for="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> for="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> ><%= gadgets.util.escape(field.options[i].label) %> <% } %>
<% } %> <% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createRadioGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %><% for (var i=0; i < field.options.length; i++) { %>
id="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>id="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %><% if (field.selected === field.options[i].value || field.options[i].selected) { %>checked = "checked"<% } %> <% if ( field.options[i].value ) { %> value="<%= gadgets.util.escape(field.options[i].value) %>" <% } %>name="<%= gadgets.util.escape(field.userpref) %>"/>for="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>for="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %>><%= gadgets.util.escape(field.options[i].label) %>
<% } %>
<% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createHiddenInput (field) { %> <% } %><% function createTextInput (field) { %> class="<%= gadgets.util.escape(styleClass) %>"<% } else { %>class="<%= gadgets.util.escape(field.type) %>"<% } %> <% if (field.value) { %> value="<%= gadgets.util.escape(field.value) %>" <% } %> <% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"/> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createLabel (field) { %><%= gadgets.util.escape(field.label) %> <% } %><% function createTextarea (field) { %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %> value="<%= gadgets.util.escape(item.value) %>"<% if ( field.selected === item.value || item.selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %> <% if (field.options[i].group.options) { %> <% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %> <% createOption(field.options[i].group.options[x]); %> <% } %> <% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createMultiSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %>value="<%= gadgets.util.escape(item.value) %>"<% var selected = false;if(field.value !== undefined && field.value.length > 0) { for(var i = 0; i < field.value.length; i++) { if(field.value[i] === item.value) { selected = true; break; } }}if (selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="multi-select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %><% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %><% createOption(field.options[i].group.options[x]); %><% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createField(field, type) { %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %> <% } %><% if (field.type !== "radio" && field.type !== "checkbox"&& field.type !== "hidden") { %><% createLabel(field); %><% } %><% if (field.type == "select") { %><% createSelect(field); %> <% } else if (field.type == "multiselect") { %><% createMultiSelect(field); %><% } else if (field.type == "textarea") { %><% createTextarea(field); %><% } else if (field.type == "radio") { %><% createRadioGroup(field); %><% } else if (field.type == "checkbox") { %><% createCheckboxGroup(field); %><% } else if (field.type == "custom" && field.template) { %><%= field.template() %>
<% } else if (field.type == "callbackBuilder") { %> <% if (field.id){%>
<% } else { %>
<% } %>
<% } else if (field.type == "hidden") { %><% createHiddenInput(field); %><% } else { %><% createTextInput(field); %><% } %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %>
<% } %><% } %><% function createFieldset (fieldset, type) { %><% if (fieldset.title) { %><%= gadgets.util.escape(fieldset.title) %> <% } %><% if (fieldset.description) { %><%= gadgets.util.escape(fieldset.description) %>
<% } %><% for ( var i = 0; i < fieldset.fields.length; i++ ) { %><% createField(fieldset.fields[i], type); %><% } %> <% } %>';AJS.gadgets.templater.Table.template=' <% if (obj.cols) { %> <% AJS.$(obj.cols).each(function () { %> class="<%= this.theme %>" <% } %> ><%= this.header %>
<% }); %> <% } %> <% if (obj.data) { %> <% AJS.$(obj.data).each(function (i) { %> class="even" <% } %> > <% AJS.$(this).each(function () { %> <%= this.label %> <% }); %> <% }); %> <% } %>
';AJS.$.namespace("AJS.gadget");if(!console.warn){console.warn=function(){};}var Gadget=function(options){AJS.dropDown.Standard=function(dropDown){function canBeMovedToParentFrame(){return !AJS.$.browser.msie&&!AJS.$.browser.opera&&window.top.AJS;}function overflowsIframeHeight(){return parseInt(AJS.$("body").attr("scrollHeight"))>AJS.$("body").outerHeight();}function hideActiveDropdowns(e){if(AJS.$(e.target).parents(".aui-dropdown").length===0){window.top.AJS.$(window.top.document).trigger("click");AJS.$(document).trigger("click");}}function adjustDDPositioning(){if(AJS.dropDown.current&&AJS.dropDown.current.calculateDDPosition){AJS.dropDown.current.updateDDPosition();}}function parentAsContainerHandler(){var top;if(overflowsIframeHeight()){this.updateDDPosition();this.$.remove().addClass("gadget-dropdown");this.shadow.remove();this.shadow.appendTo(window.top.document.body);this.$.appendTo(window.top.document.body);arguments.callee=function(){this.$.css("top",top);this.shadow.css("top",top);};}}var iframeAsContainerHandler={show:function(){if(overflowsIframeHeight()&&gadgets.window.adjustHeight){iframeAsContainerHandler.restoreHeight=AJS.$("body").outerHeight();gadgets.window.adjustHeight(AJS.$("body").attr("scrollHeight"));}},hide:function(){if(iframeAsContainerHandler.restoreHeight){gadgets.window.adjustHeight(iframeAsContainerHandler.restoreHeight);iframeAsContainerHandler.restoreHeight=undefined;}}};if(window.top.AJS){AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);window.top.AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);}AJS.$(window).resize(adjustDDPositioning);return function(options){var dropdowns;options.selectionHandler=options.selectionHandler||function(e,item){if(item[0].nodeName==="A"){window.top.location.href=item.attr("href");}else{window.top.location.href=AJS.$("a",item).attr("href");}};dropdowns=dropDown.call(this,options);AJS.$.each(dropdowns,function(){if(canBeMovedToParentFrame()){this.updateDDPosition=function(){var dropdownOffsets;function getLeftInPercent(left){return left/window.top.AJS.$("body").width()*100+"%";}function calculateOffsets(){var dropdownOffset=this.trigger.offset(),iframeOffset=window.top.AJS.$("#"+window.name).offset();return{top:dropdownOffset.top+this.trigger.outerHeight()+iframeOffset.top,left:dropdownOffset.left+iframeOffset.left+this.trigger.outerWidth()-this.$.outerWidth(),width:this.$.outerWidth()};}if(!this.trigger.is(":visible")){this.hide();}else{dropdownOffsets=calculateOffsets.call(this);this.$.css({top:dropdownOffsets.top,margin:0,left:getLeftInPercent(dropdownOffsets.left),right:"auto"});this.shadow.css({left:getLeftInPercent(dropdownOffsets.left-7),top:dropdownOffsets.top,right:"auto"});}};this.addCallback("show",parentAsContainerHandler);}else{this.addCallback("show",iframeAsContainerHandler.show);this.addCallback("hide",iframeAsContainerHandler.hide);}});return dropdowns;};}(AJS.dropDown.Standard);var prefs=new gadgets.Prefs(),viewMode,message=function(){var popup;return{show:function(msg,classNm,dismissible){var messageEl,buttons,cancelButton,buttonPanel,targHeight;messageEl=AJS.$("
").addClass(classNm).css({width:260,visiblity:"hidden"}).html(msg).appendTo("body");buttons=AJS.$("button",messageEl);if(dismissible!==false){cancelButton=AJS.$("").text(prefs.getMsg("gadget.common.cancel")).click(message.hide);}if(buttons.length>0||cancelButton){buttonPanel=AJS.$("").append(buttons).append(cancelButton);messageEl.append(buttonPanel);}message.hide();popup=new AJS.popup(messageEl.outerWidth(),messageEl.outerHeight(),"message");popup.element.html(messageEl);popup.show();AJS.$(".blanket").show();},hide:function(){if(popup){popup.remove();AJS.$(".blanket").remove();AJS.dim.dim=undefined;}}};}(),gadget={createCookie:function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}else{var expires="";}document.cookie=window.name+name+"="+value+expires+"; path=/";},readCookie:function(name){var nameEQ=window.name+name+"=";var ca=document.cookie.split(";");for(var i=0;i
").addClass("gadget").appendTo("body");return function(){return gadget;};}(),resize:function(size){if(gadgets.window.adjustHeight){window.setTimeout(function(){gadgets.window.adjustHeight(size);},0);}},isLocal:function(){if(typeof atlassian!=="undefined"&&atlassian.util){return atlassian.util.getRendererBaseUrl()===options.baseUrl;}},showLoading:function(){if(gadgets.window.getViewportDimensions&&gadgets.window.getViewportDimensions().width<250){AJS.$("body").addClass("loading-small");}else{AJS.$("body").addClass("loading");}},hideLoading:function(){AJS.$("body").removeClass("loading").removeClass("loading-small");},ajaxErrorHandler:{handle500:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.500"),settings.url,settings.url));},handle503:function(evt,response,settings){gadget.showMessage("error",response.data.errorMessages);},handle404:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.404"),settings.url,settings.url));},execute:function(evt,response,settings){if(response&&gadget.ajaxErrorHandler["handle"+response.rc]){gadget.ajaxErrorHandler["handle"+response.rc].apply(gadget,arguments);}}}};AJS.$("a, area").live("mouseover",function(){if(!AJS.$(this).attr("target")){AJS.$(this).attr({target:"_parent"});}});AJS.gadget.getBaseUrl=function(){return options.baseUrl;};if(options.useOauth&&window.location.href.indexOf(options.baseUrl)!==0){AJS.$.ajax=function(ajax){var queue=[],trustedAppsDenied=function(){ajax({authorization:"oauth",url:options.useOauth,data:{cacheBuster:new Date().getTime()},useToken:"always",complete:function(response){if(response.oauthApprovalUrl||response.rc===403){gadget.approvalUrl=response.oauthApprovalUrl;if(response.oauthApprovalUrl){gadget.approvalRequest=queue[0];}handleOauthApproval();}else{if(response.data){gadget.appendApprovedButton();makeOAuthRequests();}}}});},trustedAppsAccepted=function(){AJS.$.ajax=ajax;AJS.$(queue).each(function(){AJS.$.ajax(this);});},makeOAuthRequests=function(){AJS.$.ajax=ajax;AJS.$.ajaxSetup({authorization:"oauth",useToken:"always"});AJS.$(queue).each(function(){AJS.$.ajax(this);});},handleOauthApproval=function(){AJS.$.ajaxSetup({authorization:"oauth",useToken:"if_available"});var attachApprovalAdvice=function(request,idx){var cacheBuster=new Date().getTime();request.complete=function(complete){return function(response){if(idx===queue.length-1&&gadget.approvalRequest){if(response.rc===200||response.rc===400&&response.data){if(gadget.appendFooterApproval){gadget.appendFooterApproval(request);}}else{if(gadget.appendViewApproval&&gadget.approvalRequest){gadget.appendViewApproval(request);}}}if(complete){complete.apply(AJS.$.ajax,arguments);}};}(request.complete);if(typeof request.data==="object"){request.data.cacheBuster=cacheBuster;}else{if(typeof request.data==="string"){request.data+="&cacheBuster="+cacheBuster;}else{request.data="cacheBuster="+cacheBuster;}}if(!gadget.approvalRequest){request.global=false;request.error=function(response){if(response.rc===400){AJS.$("body").addClass("login").append(gadget.getMsg("gadget.common.container.login"));if(window.top.document){AJS.$("#"+window.name+"-chrome",window.top.document).css("opacity",0.7);}gadget.resize();}};}return request;};AJS.$.ajax=ajax;AJS.$(queue).each(function(i){AJS.$.ajax(attachApprovalAdvice(this,i));});};return function(settings){if(options.useOauth==="always"){AJS.$.ajaxSetup({authorization:"oauth",useOauth:"always"});settings.success=function(success){return function(response){if(response.oauthApprovalUrl){gadget.approvalUrl=response.oauthApprovalUrl;gadget.appendViewApproval(settings);}else{if(success){gadget.appendApprovedButton();success.apply(AJS.$.ajax,arguments);}}};}(settings.success);AJS.$.ajax=ajax;settings.useToken="always";AJS.$.ajax(settings);}else{AJS.$.ajax=function(ajaxSettings){queue.push(ajaxSettings);return arguments.callee;}(settings);ajax({url:options.useOauth,data:{cacheBuster:new Date().getTime()},complete:function(response,settings){if(response.rc===401){trustedAppsDenied(response,settings);}else{if(response.data){trustedAppsAccepted();}}}});}};}(AJS.$.ajax);}AJS.$.ajaxSetup({dataType:"json",type:"get",baseUrl:options.baseUrl});AJS.$().ajaxError(gadget.ajaxErrorHandler.execute);AJS.$().ajaxOpen(gadget.showLoading);AJS.$().ajaxClosed(gadget.hideLoading);return gadget;};var Standard=function(options){var gadget=Gadget(options);AJS.$.extend(gadget,{constructor:Standard,getView:function(){var view=AJS.$("
").addClass("view").appendTo(gadget.getGadget());return function(){return view;};}(),getFooter:function(){var footer=AJS.$("
").addClass("footer").appendTo(gadget.getGadget());AJS.$("body").addClass("has-footer-options");this.getFooter=function(){return footer;};return footer;},getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){window.location.reload();};request.useToken="always";AJS.$.ajax(request);});},getApprovalButton:function(request){var popup=gadget.getOauthPopup(request);return AJS.$("
").html(""+gadget.getMsg("gadget.common.oauth.approve.button")+" ").click(popup.createOpenerOnClick());},appendApprovedButton:function(){AJS.$(" ").appendTo(gadget.getFooter());},appendViewApproval:function(request){var approvalButton=gadget.getApprovalButton(request).appendTo("body");AJS.$("body").addClass("oauth-view-approval");return approvalButton;},appendFooterApproval:function(request){var popup=gadget.getOauthPopup(request);return AJS.$(" ").addClass("oauth").click(popup.createOpenerOnClick()).appendTo(gadget.getFooter());},viewTemplate:AJS.gadgets.templater.Custom({template:function(args){if(gadgets.views){gadget.setViewMode(gadgets.views.getCurrentView().getName());}options.view.template.call(gadget,args);gadget.showView();},cache:false,args:function(){var args=[];AJS.$(options.view.args).each(function(){if(AJS.$.isFunction(this.ajaxOptions)){var that=this;args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}()})});gadget.showView=function(){gadget.viewTemplate.addCallback(gadget.resize);return function(refresh){if(refresh){gadget.viewTemplate.build();}else{gadget.getView().show();gadget.resize();}};}();if(options.view.onResizeReload){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){if(gadget.getView().is(":visible")){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.showView(true);width=newWidth;}}};}());}if(options.view.onResizeAdjustHeight){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.resize();width=newWidth;}};}());}return gadget;};var Configured=function(options){var gadget=Standard(options);gadget.constructor=Configured;gadget.ajaxErrorHandler.handle400=function(evt,response){if(AJS.$("body").hasClass("config-unavailable")){return;}var errorContainer=AJS.$("
").append(""+gadget.getMsg("gadget.common.config.unavailable")+"
").appendTo(gadget.getView()),errorList=AJS.$("").appendTo(errorContainer);AJS.$("body").addClass("config-unavailable");AJS.$(response.data.errors).each(function(){AJS.$(" ").append(""+gadget.getMsg(this.error,this.params)+" ").appendTo(errorList);});gadget.resize();};if(options.view.enableReload){if(gadget.getPref("refresh")!==""&&gadget.getPref("refresh")!=="false"){window.setInterval(function(){gadget.showView(true);},60000*gadget.getPref("refresh"));}AJS.$(" ").click(function(){gadget.showView(true);}).appendTo(gadget.getFooter());}return gadget;};var Configurable=function(options){var gadget=Configured(options);AJS.$.extend(gadget,{constructor:Configurable,appendFooterApproval:function(superAppendFooterApproval){return function(request){if(AJS.$(".info.footer-message").length<1){AJS.$("
").addClass("info footer-message").html(""+gadget.getMsg("gadget.common.oauth.approve.message")+"
").append(gadget.getApprovalButton(request)).insertBefore(AJS.$(":first",gadget.configTemplate.getTarget()));gadget.resize();}superAppendFooterApproval.apply(gadget,arguments);};}(gadget.appendFooterApproval),getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){function persistFormInHash(){window.location.href+="&"+AJS.$("form",gadget.configTemplate.getTarget()).serialize()+"}";}if(gadget.getPrefs().getBool("isConfigured")&&!/isConfigured=true/.test(window.location.href)){persistFormInHash();window.top.location.reload();}else{persistFormInHash();window.location.reload();}};request.useToken="always";AJS.$.ajax(request);});},configTemplate:AJS.gadgets.templater.Form({target:AJS.$("
").appendTo(document.body),descriptor:function(args){var descriptor=options.config.descriptor.call(gadget,args);if(options.view.enableReload){descriptor.fields.push({userpref:"refresh",label:gadget.getMsg("gadget.common.refresh.label"),description:gadget.getMsg("gadget.common.refresh.description"),selected:gadget.getPref("refresh"),options:[{value:"false",label:gadget.getMsg("gadget.common.refresh.never")},{value:"15",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),15)},{value:"30",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),30)},{value:"60",label:AJS.format(gadget.getMsg("gadget.common.refresh.hour"),1)},{value:"120",label:AJS.format(gadget.getMsg("gadget.common.refresh.hours"),2)}],type:"select"});}return descriptor;},args:function(){var args=[];if(AJS.$.isFunction(options.config.args)){options.config.args=options.config.args();}AJS.$(options.config.args).each(function(){var that=this;if(AJS.$.isFunction(this.ajaxOptions)){args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}(),cancel:function(e){gadget.showView();e.preventDefault();},submit:function(e){var form=AJS.$(this),save=function(){AJS.$(form.serializeArray()).each(function(){gadget.savePref(this.name,this.value);});gadget.showView(true);};if(form.attr("action")!==""){AJS.$.ajax({type:"get",url:form.attr("action"),data:form.serialize(),global:false,success:function(){var fieldValues={};AJS.$(form.serializeArray()).each(function(){var fieldVal=fieldValues[this.name];if(!fieldVal){fieldVal=this.value;}else{if(AJS.$.isArray(fieldVal)){fieldVal.push(this.value);}else{fieldVal=[fieldVal,this.value];}}fieldValues[this.name]=fieldVal;});AJS.$(":checkbox:not(:checked)",form).each(function(){fieldValues[this.name]="false";});for(var name in fieldValues){gadget.savePref(name,fieldValues[name]);}gadget.showView(true);},error:function(response,settings){gadget.ajaxErrorHandler.execute(null,response,AJS.$.extend(settings,{isConfig:true}));}});}else{save();}e.preventDefault();}}),getConfig:function(){return gadget.configTemplate.getTarget();}});gadget.showConfig=function(){var restoreValuesFromHash=function(){if(!/#rpctoken=[0-9]+$/.test(window.location.href)){var options,fields=window.location.href.replace(/.*?#/,"").split("&");AJS.$.each(fields,function(){var name=this.split("=")[0],val=this.split("=")[1],field=AJS.$(":input[name="+name+"]");if(field.length>0){if(field.is("select")){options=val.split(",");AJS.$.each(options,function(){AJS.$("option[value="+this+"]",field).attr("selected","selected");});}else{if(field.is(":radio,:checkbox")){field.attr("checked","checked");}else{field.val(val);}}}});window.location.href=window.location.href.replace(/(#rpctoken=[0-9]+).*/,"$1");}};gadget.configTemplate.addCallback(function(){AJS.$("body").addClass("config-active");gadget.configTemplate.getTarget().show();restoreValuesFromHash();if(gadget.approvalRequest){gadget.appendFooterApproval(gadget.approvalRequest);}AJS.$("button",gadget.getFooter()).hide();window.setTimeout(function(){gadget.resize();},0);});return function(){gadget.configTemplate.build();};}();gadget.showView=function(refresh){if(refresh){gadget.viewTemplate.build();}else{AJS.$("body").removeClass("config-active");gadget.configTemplate.getTarget().hide();gadget.resize();AJS.$("button",gadget.getFooter()).show();}};gadget.configTemplate.getTrigger=function(){var button=AJS.$("").appendTo(gadget.getFooter()).click(function(e){gadget.showConfig();e.preventDefault();});return function(){return button;};}();gadget.ajaxErrorHandler.handle400=function(superHandle400){var validationErrors,showFormErrors=function(){AJS.$(".error",gadget.configTemplate.getTarget()).hide();AJS.$(validationErrors).each(function(){var msg=gadget.getMsg(this.error,this.params);AJS.$(":input[name='"+this.field+"']").parent().find(".error").text(msg).show();AJS.$("#"+this.field+"-error").text(msg).show();});gadget.resize();validationErrors=null;};gadget.configTemplate.addCallback(function(){if(!gadget.getPrefs().getBool("isConfigured")||validationErrors){AJS.$("input.cancel",gadget.configTemplate.getTarget()).hide();}if(validationErrors){showFormErrors();}});return function(evt,response,settings){validationErrors=response.data.errors;if(!settings.isConfig){superHandle400.apply(gadget,arguments);}else{showFormErrors();}};}(gadget.ajaxErrorHandler.handle400);return gadget;};AJS.Gadget=function(options){var gadget,pubInterface,isWriteable=function(){if(gadgets.views){return gadgets.views.getParams().writable===undefined||gadgets.views.getParams().writable==="true";}},getStandardInterface=function(){return{showMessage:gadget.showMessage,savePref:gadget.savePref,setViewMode:gadget.setViewMode,getViewMode:gadget.getViewMode,getBaseUrl:gadget.getBaseUrl,getPrefs:gadget.getPrefs,getPref:gadget.getPref,getPrefArray:gadget.getPrefArray,getMsg:gadget.getMsg,getGadget:gadget.getGadget,resize:gadget.resize,showLoading:gadget.showLoading,hideLoading:gadget.hideLoading,createCookie:gadget.createCookie,readCookie:gadget.readCookie,eraseCookie:gadget.eraseCookie,isLocal:gadget.isLocal};},getConfiguredInterface=function(){return AJS.$.extend(getStandardInterface(),{getView:gadget.getView,showView:gadget.showView,getFooter:gadget.getFooter});},getConfigurableInterface=function(){return AJS.$.extend(getConfiguredInterface(),{showConfig:gadget.showConfig,getConfig:gadget.getConfig});};if(options.view&&!options.config){gadget=Standard(options);pubInterface=getStandardInterface();gadget.showView(true);}else{if(options.view&&options.config&&!isWriteable()){gadget=Configured(options);pubInterface=getConfiguredInterface();if(gadget.getPrefs().getBool("isConfigured")){gadget.showView(true);}}else{if(options.view&&options.config&&isWriteable()){gadget=Configurable(options);pubInterface=getConfigurableInterface();if(!gadget.getPrefs().getBool("isConfigured")){gadget.showConfig();}else{gadget.showView(true);}}}}return pubInterface;};AJS.gadget.Configurable=AJS.Gadget;})();
Lint at line 1 character 22341: Bad assignment.
(function(){AJS.$.fn.serializeArray=function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();if(val==null){val="";}return val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();};AJS.$.extend({put:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"PUT",url:url,data:data,success:callback,dataType:type});},del:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"delete",url:url,data:data,success:callback,dataType:type});},ajax:function(ajax){var activeReq=0,dressResponse=function(xhr){var res={};res.rc=xhr.status;if(xhr.responseText!==""){res.data=gadgets.json.parse(xhr.responseText);}return res;};AJS.$.each("ajaxOpen,ajaxClosed,ajaxOauthApproval".split(","),function(i,o){AJS.$.fn[o]=function(f){return this.bind(o,f);};});AJS.$().ajaxSend(function(evt,req,options){if(++activeReq===1){AJS.$.event.trigger("ajaxOpen",[options]);}});AJS.$().ajaxComplete(function(evt,req,options){if(--activeReq===0){AJS.$.event.trigger("ajaxClosed",[options]);}});AJS.$.fn.ajaxComplete=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxComplete",f);};AJS.$.fn.ajaxError=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxError",f);};return function(usrOptions){var reqOptions={};if(typeof options==="string"){options={url:options};}var options=usrOptions;for(var name in AJS.$.ajaxSettings){if(!options[name]&&options[name]!==false){options[name]=AJS.$.ajaxSettings[name];}}if(options.baseUrl){if(!/^(http)|(https):\/\//.test(options.url)){options.url=options.baseUrl+options.url;}}if(typeof atlassian!=="undefined"&&atlassian.util){if(atlassian.util.getRendererBaseUrl()===options.baseUrl&&new RegExp(options.baseUrl).test(options.url)){if(options.error){options.error=function(error){return function(xhr,type){if(!xhr.responseText){options.success.apply(this,arguments);}else{error.call(this,dressResponse(xhr));}};}(options.error);}ajax.call(this,options);return;}}reqOptions[gadgets.io.RequestParameters.METHOD]=gadgets.io.MethodType[options.type.toUpperCase()];reqOptions[gadgets.io.RequestParameters.CONTENT_TYPE]=gadgets.io.ContentType[options.dataType.toUpperCase()];reqOptions.url=options.url;if(options.headers){reqOptions[gadgets.io.RequestParameters.HEADERS]=options.headers;}if(options.authorization){reqOptions[gadgets.io.RequestParameters.AUTHORIZATION]=gadgets.io.AuthorizationType[options.authorization.toUpperCase()];}if(options.useToken){reqOptions.OAUTH_USE_TOKEN=options.useToken;}if(options.summaries){reqOptions[gadgets.io.RequestParameters.GET_SUMMARIES]=options.summaries;}if(options.entries){reqOptions[gadgets.io.RequestParameters.NUM_ENTRIES]=options.entries;}if(options.data){if(options.type.toLowerCase()==="get"){if(typeof options.data==="string"){reqOptions.url+=("?"+options.data.replace(/^\?/,""));}else{reqOptions.url+=("?"+gadgets.io.encodeValues(options.data).replace(/^\?/,""));}}else{reqOptions[gadgets.io.RequestParameters.POST_DATA]=options.data;}}reqOptions.success=function(response){if(options.complete){options.complete(response,options);}if(options.global){AJS.$.event.trigger("ajaxComplete",[response,options]);}if(response.errors&&response.errors.length||response.oauthError){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.dataType.toLowerCase()==="json"&&typeof response.data==="string"){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(response.rc!==200){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.success&&(response||response.oauthApprovalUrl)){options.success(response.data||response);}if(options.global){AJS.$.event.trigger("ajaxSuccess",[response.data,options]);}};gadgets.io.makeRequest(reqOptions.url,reqOptions.success,reqOptions);if(options.ajaxSend){options.ajaxSend(options);}if(options.global){AJS.$.event.trigger("ajaxSend",[options]);}};}(AJS.$.ajax)});AJS.$.namespace("AJS.gadgets.templater");AJS.gadgets.templater.Base=function(){var cache,template,descriptor=function(args){return args;},callbacks=[],remoteArgs=[],args=[],renderTemplate=function(){var cache={};return function(str,data){var fn;if(!/\W/.test(str)){fn=cache[str];}else{var fnString="var p=[], print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+str.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');";fn=new Function("obj",fnString);}return data?fn(data):fn;};}();return{getDescriptorData:function(callback){var argLengthComparator=0,that=this,formattedArgs={};if(remoteArgs.length<1){AJS.$(args).each(function(){formattedArgs[this.key]=this.data;});if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}}AJS.$(remoteArgs).each(function(i,item){var reqOptions;if(typeof item.ajaxOptions==="string"){reqOptions={url:this.ajaxOptions};}else{if(AJS.$.isFunction(item.ajaxOptions)){reqOptions=item.ajaxOptions();}else{reqOptions=item.ajaxOptions;}}reqOptions.success=function(response){++argLengthComparator;formattedArgs[remoteArgs[i].key]=response;if(argLengthComparator===remoteArgs.length){var excuter=function(){if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}return arguments.callee;}();if(cache!==false){that.getDescriptorData=excuter;}}};AJS.$.ajax(reqOptions);});},disableCache:function(){cache=false;},setTemplate:function(templ){template=templ;},setDescriptor:function(desc){descriptor=desc;},addCallback:function(func){callbacks.push(func);},setRemoteDescriptorArg:function(key,ajaxOptions){remoteArgs.push({key:key,ajaxOptions:ajaxOptions});},setDescriptorArg:function(arg){args.push(arg);},build:function(data){var that=this;if(!data&&data!==false){this.getDescriptorData(this.build);}else{if(data!==false){if(typeof template==="string"&&document.getElementById(template)){that.build.template=AJS.$(template).html();var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(AJS.$.isFunction(template)){template(data);AJS.$(callbacks).each(function(){this.call(that,data);});}else{if(template.length>50){that.build.template=template;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(!that.build.template){AJS.$.ajax({url:template,dataType:"text",success:function(response){that.build.template=response;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}});}else{var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}}}}}}}};};AJS.gadgets.templater.Custom=function(options){var templater=AJS.gadgets.templater.Base();templater.setTemplate(options.template);if(options.descriptor){templater.setDescriptor(options.descriptor);}if(options.callback){templater.addCallback(options.callback);}if(options.cache===false){templater.disableCache();}AJS.$.extend(templater,{getTarget:function(){return options.target;}});if(options.args){AJS.$(options.args).each(function(){if(this.ajaxOptions){templater.setRemoteDescriptorArg(this.key,this.ajaxOptions);}else{templater.setDescriptorArg(this);}});}return templater;};AJS.gadgets.templater.Form=function(options){return AJS.gadgets.templater.Custom(AJS.$.extend({template:AJS.gadgets.templater.Form.template,baseUrl:AJS.gadget.getBaseUrl(),callback:function(response,data){if(options.target){options.target.html(response);if(options.submit){AJS.$("form",options.target).submit(options.submit);}if(options.cancel){AJS.$("input.cancel",options.target).click(options.cancel);}AJS.$(data.fields).each(function(){if(this.type==="callbackBuilder"){var targetDiv=AJS.$("div#"+this.id);this.callback(targetDiv);}});}else{return response;}}},options));};AJS.gadgets.templater.Table=function(options){var table,sortCol,sortOrd=[],sort=function(data,column,order){data.cols[column].theme=order;if(!data.cols[column].sorted){data.data.sort(function(item,compareItem){var dataItem=item[column].value,dataItemCompare=compareItem[column].value;if(!isNaN(parseFloat(dataItem))&&!isNaN(parseFloat(dataItemCompare))){dataItem=parseFloat(dataItem);dataItemCompare=parseFloat(dataItemCompare);}if(dataItem>dataItemCompare){return 1;}else{if(dataItem<% function createCheckboxGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %> <% for (var i=0; i < field.options.length; i++) { %> id="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> id="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> <% if ( field.value === "true" ) { %> checked = "checked" <% } %> <% if (field.value === "false") { field.value = "true"; } %> value="<%= field.value %>" name="<%= gadgets.util.escape(field.userpref) %>" /> <% if (field.options[i].label) { %> for="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> for="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> ><%= gadgets.util.escape(field.options[i].label) %> <% } %>
<% } %> <% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createRadioGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %><% for (var i=0; i < field.options.length; i++) { %>
id="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>id="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %><% if (field.selected === field.options[i].value || field.options[i].selected) { %>checked = "checked"<% } %> <% if ( field.options[i].value ) { %> value="<%= gadgets.util.escape(field.options[i].value) %>" <% } %>name="<%= gadgets.util.escape(field.userpref) %>"/>for="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>for="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %>><%= gadgets.util.escape(field.options[i].label) %>
<% } %>
<% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createHiddenInput (field) { %> <% } %><% function createTextInput (field) { %> class="<%= gadgets.util.escape(styleClass) %>"<% } else { %>class="<%= gadgets.util.escape(field.type) %>"<% } %> <% if (field.value) { %> value="<%= gadgets.util.escape(field.value) %>" <% } %> <% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"/> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createLabel (field) { %><%= gadgets.util.escape(field.label) %> <% } %><% function createTextarea (field) { %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %> value="<%= gadgets.util.escape(item.value) %>"<% if ( field.selected === item.value || item.selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %> <% if (field.options[i].group.options) { %> <% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %> <% createOption(field.options[i].group.options[x]); %> <% } %> <% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createMultiSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %>value="<%= gadgets.util.escape(item.value) %>"<% var selected = false;if(field.value !== undefined && field.value.length > 0) { for(var i = 0; i < field.value.length; i++) { if(field.value[i] === item.value) { selected = true; break; } }}if (selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="multi-select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %><% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %><% createOption(field.options[i].group.options[x]); %><% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createField(field, type) { %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %> <% } %><% if (field.type !== "radio" && field.type !== "checkbox"&& field.type !== "hidden") { %><% createLabel(field); %><% } %><% if (field.type == "select") { %><% createSelect(field); %> <% } else if (field.type == "multiselect") { %><% createMultiSelect(field); %><% } else if (field.type == "textarea") { %><% createTextarea(field); %><% } else if (field.type == "radio") { %><% createRadioGroup(field); %><% } else if (field.type == "checkbox") { %><% createCheckboxGroup(field); %><% } else if (field.type == "custom" && field.template) { %><%= field.template() %>
<% } else if (field.type == "callbackBuilder") { %> <% if (field.id){%>
<% } else { %>
<% } %>
<% } else if (field.type == "hidden") { %><% createHiddenInput(field); %><% } else { %><% createTextInput(field); %><% } %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %>
<% } %><% } %><% function createFieldset (fieldset, type) { %><% if (fieldset.title) { %><%= gadgets.util.escape(fieldset.title) %> <% } %><% if (fieldset.description) { %><%= gadgets.util.escape(fieldset.description) %>
<% } %><% for ( var i = 0; i < fieldset.fields.length; i++ ) { %><% createField(fieldset.fields[i], type); %><% } %> <% } %>';AJS.gadgets.templater.Table.template=' <% if (obj.cols) { %> <% AJS.$(obj.cols).each(function () { %> class="<%= this.theme %>" <% } %> ><%= this.header %>
<% }); %> <% } %> <% if (obj.data) { %> <% AJS.$(obj.data).each(function (i) { %> class="even" <% } %> > <% AJS.$(this).each(function () { %> <%= this.label %> <% }); %> <% }); %> <% } %>
';AJS.$.namespace("AJS.gadget");if(!console.warn){console.warn=function(){};}var Gadget=function(options){AJS.dropDown.Standard=function(dropDown){function canBeMovedToParentFrame(){return !AJS.$.browser.msie&&!AJS.$.browser.opera&&window.top.AJS;}function overflowsIframeHeight(){return parseInt(AJS.$("body").attr("scrollHeight"))>AJS.$("body").outerHeight();}function hideActiveDropdowns(e){if(AJS.$(e.target).parents(".aui-dropdown").length===0){window.top.AJS.$(window.top.document).trigger("click");AJS.$(document).trigger("click");}}function adjustDDPositioning(){if(AJS.dropDown.current&&AJS.dropDown.current.calculateDDPosition){AJS.dropDown.current.updateDDPosition();}}function parentAsContainerHandler(){var top;if(overflowsIframeHeight()){this.updateDDPosition();this.$.remove().addClass("gadget-dropdown");this.shadow.remove();this.shadow.appendTo(window.top.document.body);this.$.appendTo(window.top.document.body);arguments.callee=function(){this.$.css("top",top);this.shadow.css("top",top);};}}var iframeAsContainerHandler={show:function(){if(overflowsIframeHeight()&&gadgets.window.adjustHeight){iframeAsContainerHandler.restoreHeight=AJS.$("body").outerHeight();gadgets.window.adjustHeight(AJS.$("body").attr("scrollHeight"));}},hide:function(){if(iframeAsContainerHandler.restoreHeight){gadgets.window.adjustHeight(iframeAsContainerHandler.restoreHeight);iframeAsContainerHandler.restoreHeight=undefined;}}};if(window.top.AJS){AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);window.top.AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);}AJS.$(window).resize(adjustDDPositioning);return function(options){var dropdowns;options.selectionHandler=options.selectionHandler||function(e,item){if(item[0].nodeName==="A"){window.top.location.href=item.attr("href");}else{window.top.location.href=AJS.$("a",item).attr("href");}};dropdowns=dropDown.call(this,options);AJS.$.each(dropdowns,function(){if(canBeMovedToParentFrame()){this.updateDDPosition=function(){var dropdownOffsets;function getLeftInPercent(left){return left/window.top.AJS.$("body").width()*100+"%";}function calculateOffsets(){var dropdownOffset=this.trigger.offset(),iframeOffset=window.top.AJS.$("#"+window.name).offset();return{top:dropdownOffset.top+this.trigger.outerHeight()+iframeOffset.top,left:dropdownOffset.left+iframeOffset.left+this.trigger.outerWidth()-this.$.outerWidth(),width:this.$.outerWidth()};}if(!this.trigger.is(":visible")){this.hide();}else{dropdownOffsets=calculateOffsets.call(this);this.$.css({top:dropdownOffsets.top,margin:0,left:getLeftInPercent(dropdownOffsets.left),right:"auto"});this.shadow.css({left:getLeftInPercent(dropdownOffsets.left-7),top:dropdownOffsets.top,right:"auto"});}};this.addCallback("show",parentAsContainerHandler);}else{this.addCallback("show",iframeAsContainerHandler.show);this.addCallback("hide",iframeAsContainerHandler.hide);}});return dropdowns;};}(AJS.dropDown.Standard);var prefs=new gadgets.Prefs(),viewMode,message=function(){var popup;return{show:function(msg,classNm,dismissible){var messageEl,buttons,cancelButton,buttonPanel,targHeight;messageEl=AJS.$("
").addClass(classNm).css({width:260,visiblity:"hidden"}).html(msg).appendTo("body");buttons=AJS.$("button",messageEl);if(dismissible!==false){cancelButton=AJS.$("").text(prefs.getMsg("gadget.common.cancel")).click(message.hide);}if(buttons.length>0||cancelButton){buttonPanel=AJS.$("").append(buttons).append(cancelButton);messageEl.append(buttonPanel);}message.hide();popup=new AJS.popup(messageEl.outerWidth(),messageEl.outerHeight(),"message");popup.element.html(messageEl);popup.show();AJS.$(".blanket").show();},hide:function(){if(popup){popup.remove();AJS.$(".blanket").remove();AJS.dim.dim=undefined;}}};}(),gadget={createCookie:function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}else{var expires="";}document.cookie=window.name+name+"="+value+expires+"; path=/";},readCookie:function(name){var nameEQ=window.name+name+"=";var ca=document.cookie.split(";");for(var i=0;i
").addClass("gadget").appendTo("body");return function(){return gadget;};}(),resize:function(size){if(gadgets.window.adjustHeight){window.setTimeout(function(){gadgets.window.adjustHeight(size);},0);}},isLocal:function(){if(typeof atlassian!=="undefined"&&atlassian.util){return atlassian.util.getRendererBaseUrl()===options.baseUrl;}},showLoading:function(){if(gadgets.window.getViewportDimensions&&gadgets.window.getViewportDimensions().width<250){AJS.$("body").addClass("loading-small");}else{AJS.$("body").addClass("loading");}},hideLoading:function(){AJS.$("body").removeClass("loading").removeClass("loading-small");},ajaxErrorHandler:{handle500:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.500"),settings.url,settings.url));},handle503:function(evt,response,settings){gadget.showMessage("error",response.data.errorMessages);},handle404:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.404"),settings.url,settings.url));},execute:function(evt,response,settings){if(response&&gadget.ajaxErrorHandler["handle"+response.rc]){gadget.ajaxErrorHandler["handle"+response.rc].apply(gadget,arguments);}}}};AJS.$("a, area").live("mouseover",function(){if(!AJS.$(this).attr("target")){AJS.$(this).attr({target:"_parent"});}});AJS.gadget.getBaseUrl=function(){return options.baseUrl;};if(options.useOauth&&window.location.href.indexOf(options.baseUrl)!==0){AJS.$.ajax=function(ajax){var queue=[],trustedAppsDenied=function(){ajax({authorization:"oauth",url:options.useOauth,data:{cacheBuster:new Date().getTime()},useToken:"always",complete:function(response){if(response.oauthApprovalUrl||response.rc===403){gadget.approvalUrl=response.oauthApprovalUrl;if(response.oauthApprovalUrl){gadget.approvalRequest=queue[0];}handleOauthApproval();}else{if(response.data){gadget.appendApprovedButton();makeOAuthRequests();}}}});},trustedAppsAccepted=function(){AJS.$.ajax=ajax;AJS.$(queue).each(function(){AJS.$.ajax(this);});},makeOAuthRequests=function(){AJS.$.ajax=ajax;AJS.$.ajaxSetup({authorization:"oauth",useToken:"always"});AJS.$(queue).each(function(){AJS.$.ajax(this);});},handleOauthApproval=function(){AJS.$.ajaxSetup({authorization:"oauth",useToken:"if_available"});var attachApprovalAdvice=function(request,idx){var cacheBuster=new Date().getTime();request.complete=function(complete){return function(response){if(idx===queue.length-1&&gadget.approvalRequest){if(response.rc===200||response.rc===400&&response.data){if(gadget.appendFooterApproval){gadget.appendFooterApproval(request);}}else{if(gadget.appendViewApproval&&gadget.approvalRequest){gadget.appendViewApproval(request);}}}if(complete){complete.apply(AJS.$.ajax,arguments);}};}(request.complete);if(typeof request.data==="object"){request.data.cacheBuster=cacheBuster;}else{if(typeof request.data==="string"){request.data+="&cacheBuster="+cacheBuster;}else{request.data="cacheBuster="+cacheBuster;}}if(!gadget.approvalRequest){request.global=false;request.error=function(response){if(response.rc===400){AJS.$("body").addClass("login").append(gadget.getMsg("gadget.common.container.login"));if(window.top.document){AJS.$("#"+window.name+"-chrome",window.top.document).css("opacity",0.7);}gadget.resize();}};}return request;};AJS.$.ajax=ajax;AJS.$(queue).each(function(i){AJS.$.ajax(attachApprovalAdvice(this,i));});};return function(settings){if(options.useOauth==="always"){AJS.$.ajaxSetup({authorization:"oauth",useOauth:"always"});settings.success=function(success){return function(response){if(response.oauthApprovalUrl){gadget.approvalUrl=response.oauthApprovalUrl;gadget.appendViewApproval(settings);}else{if(success){gadget.appendApprovedButton();success.apply(AJS.$.ajax,arguments);}}};}(settings.success);AJS.$.ajax=ajax;settings.useToken="always";AJS.$.ajax(settings);}else{AJS.$.ajax=function(ajaxSettings){queue.push(ajaxSettings);return arguments.callee;}(settings);ajax({url:options.useOauth,data:{cacheBuster:new Date().getTime()},complete:function(response,settings){if(response.rc===401){trustedAppsDenied(response,settings);}else{if(response.data){trustedAppsAccepted();}}}});}};}(AJS.$.ajax);}AJS.$.ajaxSetup({dataType:"json",type:"get",baseUrl:options.baseUrl});AJS.$().ajaxError(gadget.ajaxErrorHandler.execute);AJS.$().ajaxOpen(gadget.showLoading);AJS.$().ajaxClosed(gadget.hideLoading);return gadget;};var Standard=function(options){var gadget=Gadget(options);AJS.$.extend(gadget,{constructor:Standard,getView:function(){var view=AJS.$("
").addClass("view").appendTo(gadget.getGadget());return function(){return view;};}(),getFooter:function(){var footer=AJS.$("
").addClass("footer").appendTo(gadget.getGadget());AJS.$("body").addClass("has-footer-options");this.getFooter=function(){return footer;};return footer;},getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){window.location.reload();};request.useToken="always";AJS.$.ajax(request);});},getApprovalButton:function(request){var popup=gadget.getOauthPopup(request);return AJS.$("
").html(""+gadget.getMsg("gadget.common.oauth.approve.button")+" ").click(popup.createOpenerOnClick());},appendApprovedButton:function(){AJS.$(" ").appendTo(gadget.getFooter());},appendViewApproval:function(request){var approvalButton=gadget.getApprovalButton(request).appendTo("body");AJS.$("body").addClass("oauth-view-approval");return approvalButton;},appendFooterApproval:function(request){var popup=gadget.getOauthPopup(request);return AJS.$(" ").addClass("oauth").click(popup.createOpenerOnClick()).appendTo(gadget.getFooter());},viewTemplate:AJS.gadgets.templater.Custom({template:function(args){if(gadgets.views){gadget.setViewMode(gadgets.views.getCurrentView().getName());}options.view.template.call(gadget,args);gadget.showView();},cache:false,args:function(){var args=[];AJS.$(options.view.args).each(function(){if(AJS.$.isFunction(this.ajaxOptions)){var that=this;args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}()})});gadget.showView=function(){gadget.viewTemplate.addCallback(gadget.resize);return function(refresh){if(refresh){gadget.viewTemplate.build();}else{gadget.getView().show();gadget.resize();}};}();if(options.view.onResizeReload){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){if(gadget.getView().is(":visible")){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.showView(true);width=newWidth;}}};}());}if(options.view.onResizeAdjustHeight){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.resize();width=newWidth;}};}());}return gadget;};var Configured=function(options){var gadget=Standard(options);gadget.constructor=Configured;gadget.ajaxErrorHandler.handle400=function(evt,response){if(AJS.$("body").hasClass("config-unavailable")){return;}var errorContainer=AJS.$("
").append(""+gadget.getMsg("gadget.common.config.unavailable")+"
").appendTo(gadget.getView()),errorList=AJS.$("").appendTo(errorContainer);AJS.$("body").addClass("config-unavailable");AJS.$(response.data.errors).each(function(){AJS.$(" ").append(""+gadget.getMsg(this.error,this.params)+" ").appendTo(errorList);});gadget.resize();};if(options.view.enableReload){if(gadget.getPref("refresh")!==""&&gadget.getPref("refresh")!=="false"){window.setInterval(function(){gadget.showView(true);},60000*gadget.getPref("refresh"));}AJS.$(" ").click(function(){gadget.showView(true);}).appendTo(gadget.getFooter());}return gadget;};var Configurable=function(options){var gadget=Configured(options);AJS.$.extend(gadget,{constructor:Configurable,appendFooterApproval:function(superAppendFooterApproval){return function(request){if(AJS.$(".info.footer-message").length<1){AJS.$("
").addClass("info footer-message").html(""+gadget.getMsg("gadget.common.oauth.approve.message")+"
").append(gadget.getApprovalButton(request)).insertBefore(AJS.$(":first",gadget.configTemplate.getTarget()));gadget.resize();}superAppendFooterApproval.apply(gadget,arguments);};}(gadget.appendFooterApproval),getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){function persistFormInHash(){window.location.href+="&"+AJS.$("form",gadget.configTemplate.getTarget()).serialize()+"}";}if(gadget.getPrefs().getBool("isConfigured")&&!/isConfigured=true/.test(window.location.href)){persistFormInHash();window.top.location.reload();}else{persistFormInHash();window.location.reload();}};request.useToken="always";AJS.$.ajax(request);});},configTemplate:AJS.gadgets.templater.Form({target:AJS.$("
").appendTo(document.body),descriptor:function(args){var descriptor=options.config.descriptor.call(gadget,args);if(options.view.enableReload){descriptor.fields.push({userpref:"refresh",label:gadget.getMsg("gadget.common.refresh.label"),description:gadget.getMsg("gadget.common.refresh.description"),selected:gadget.getPref("refresh"),options:[{value:"false",label:gadget.getMsg("gadget.common.refresh.never")},{value:"15",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),15)},{value:"30",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),30)},{value:"60",label:AJS.format(gadget.getMsg("gadget.common.refresh.hour"),1)},{value:"120",label:AJS.format(gadget.getMsg("gadget.common.refresh.hours"),2)}],type:"select"});}return descriptor;},args:function(){var args=[];if(AJS.$.isFunction(options.config.args)){options.config.args=options.config.args();}AJS.$(options.config.args).each(function(){var that=this;if(AJS.$.isFunction(this.ajaxOptions)){args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}(),cancel:function(e){gadget.showView();e.preventDefault();},submit:function(e){var form=AJS.$(this),save=function(){AJS.$(form.serializeArray()).each(function(){gadget.savePref(this.name,this.value);});gadget.showView(true);};if(form.attr("action")!==""){AJS.$.ajax({type:"get",url:form.attr("action"),data:form.serialize(),global:false,success:function(){var fieldValues={};AJS.$(form.serializeArray()).each(function(){var fieldVal=fieldValues[this.name];if(!fieldVal){fieldVal=this.value;}else{if(AJS.$.isArray(fieldVal)){fieldVal.push(this.value);}else{fieldVal=[fieldVal,this.value];}}fieldValues[this.name]=fieldVal;});AJS.$(":checkbox:not(:checked)",form).each(function(){fieldValues[this.name]="false";});for(var name in fieldValues){gadget.savePref(name,fieldValues[name]);}gadget.showView(true);},error:function(response,settings){gadget.ajaxErrorHandler.execute(null,response,AJS.$.extend(settings,{isConfig:true}));}});}else{save();}e.preventDefault();}}),getConfig:function(){return gadget.configTemplate.getTarget();}});gadget.showConfig=function(){var restoreValuesFromHash=function(){if(!/#rpctoken=[0-9]+$/.test(window.location.href)){var options,fields=window.location.href.replace(/.*?#/,"").split("&");AJS.$.each(fields,function(){var name=this.split("=")[0],val=this.split("=")[1],field=AJS.$(":input[name="+name+"]");if(field.length>0){if(field.is("select")){options=val.split(",");AJS.$.each(options,function(){AJS.$("option[value="+this+"]",field).attr("selected","selected");});}else{if(field.is(":radio,:checkbox")){field.attr("checked","checked");}else{field.val(val);}}}});window.location.href=window.location.href.replace(/(#rpctoken=[0-9]+).*/,"$1");}};gadget.configTemplate.addCallback(function(){AJS.$("body").addClass("config-active");gadget.configTemplate.getTarget().show();restoreValuesFromHash();if(gadget.approvalRequest){gadget.appendFooterApproval(gadget.approvalRequest);}AJS.$("button",gadget.getFooter()).hide();window.setTimeout(function(){gadget.resize();},0);});return function(){gadget.configTemplate.build();};}();gadget.showView=function(refresh){if(refresh){gadget.viewTemplate.build();}else{AJS.$("body").removeClass("config-active");gadget.configTemplate.getTarget().hide();gadget.resize();AJS.$("button",gadget.getFooter()).show();}};gadget.configTemplate.getTrigger=function(){var button=AJS.$("").appendTo(gadget.getFooter()).click(function(e){gadget.showConfig();e.preventDefault();});return function(){return button;};}();gadget.ajaxErrorHandler.handle400=function(superHandle400){var validationErrors,showFormErrors=function(){AJS.$(".error",gadget.configTemplate.getTarget()).hide();AJS.$(validationErrors).each(function(){var msg=gadget.getMsg(this.error,this.params);AJS.$(":input[name='"+this.field+"']").parent().find(".error").text(msg).show();AJS.$("#"+this.field+"-error").text(msg).show();});gadget.resize();validationErrors=null;};gadget.configTemplate.addCallback(function(){if(!gadget.getPrefs().getBool("isConfigured")||validationErrors){AJS.$("input.cancel",gadget.configTemplate.getTarget()).hide();}if(validationErrors){showFormErrors();}});return function(evt,response,settings){validationErrors=response.data.errors;if(!settings.isConfig){superHandle400.apply(gadget,arguments);}else{showFormErrors();}};}(gadget.ajaxErrorHandler.handle400);return gadget;};AJS.Gadget=function(options){var gadget,pubInterface,isWriteable=function(){if(gadgets.views){return gadgets.views.getParams().writable===undefined||gadgets.views.getParams().writable==="true";}},getStandardInterface=function(){return{showMessage:gadget.showMessage,savePref:gadget.savePref,setViewMode:gadget.setViewMode,getViewMode:gadget.getViewMode,getBaseUrl:gadget.getBaseUrl,getPrefs:gadget.getPrefs,getPref:gadget.getPref,getPrefArray:gadget.getPrefArray,getMsg:gadget.getMsg,getGadget:gadget.getGadget,resize:gadget.resize,showLoading:gadget.showLoading,hideLoading:gadget.hideLoading,createCookie:gadget.createCookie,readCookie:gadget.readCookie,eraseCookie:gadget.eraseCookie,isLocal:gadget.isLocal};},getConfiguredInterface=function(){return AJS.$.extend(getStandardInterface(),{getView:gadget.getView,showView:gadget.showView,getFooter:gadget.getFooter});},getConfigurableInterface=function(){return AJS.$.extend(getConfiguredInterface(),{showConfig:gadget.showConfig,getConfig:gadget.getConfig});};if(options.view&&!options.config){gadget=Standard(options);pubInterface=getStandardInterface();gadget.showView(true);}else{if(options.view&&options.config&&!isWriteable()){gadget=Configured(options);pubInterface=getConfiguredInterface();if(gadget.getPrefs().getBool("isConfigured")){gadget.showView(true);}}else{if(options.view&&options.config&&isWriteable()){gadget=Configurable(options);pubInterface=getConfigurableInterface();if(!gadget.getPrefs().getBool("isConfigured")){gadget.showConfig();}else{gadget.showView(true);}}}}return pubInterface;};AJS.gadget.Configurable=AJS.Gadget;})();
Lint at line 1 character 25385: 'expires' is already defined.
(function(){AJS.$.fn.serializeArray=function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();if(val==null){val="";}return val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();};AJS.$.extend({put:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"PUT",url:url,data:data,success:callback,dataType:type});},del:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"delete",url:url,data:data,success:callback,dataType:type});},ajax:function(ajax){var activeReq=0,dressResponse=function(xhr){var res={};res.rc=xhr.status;if(xhr.responseText!==""){res.data=gadgets.json.parse(xhr.responseText);}return res;};AJS.$.each("ajaxOpen,ajaxClosed,ajaxOauthApproval".split(","),function(i,o){AJS.$.fn[o]=function(f){return this.bind(o,f);};});AJS.$().ajaxSend(function(evt,req,options){if(++activeReq===1){AJS.$.event.trigger("ajaxOpen",[options]);}});AJS.$().ajaxComplete(function(evt,req,options){if(--activeReq===0){AJS.$.event.trigger("ajaxClosed",[options]);}});AJS.$.fn.ajaxComplete=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxComplete",f);};AJS.$.fn.ajaxError=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxError",f);};return function(usrOptions){var reqOptions={};if(typeof options==="string"){options={url:options};}var options=usrOptions;for(var name in AJS.$.ajaxSettings){if(!options[name]&&options[name]!==false){options[name]=AJS.$.ajaxSettings[name];}}if(options.baseUrl){if(!/^(http)|(https):\/\//.test(options.url)){options.url=options.baseUrl+options.url;}}if(typeof atlassian!=="undefined"&&atlassian.util){if(atlassian.util.getRendererBaseUrl()===options.baseUrl&&new RegExp(options.baseUrl).test(options.url)){if(options.error){options.error=function(error){return function(xhr,type){if(!xhr.responseText){options.success.apply(this,arguments);}else{error.call(this,dressResponse(xhr));}};}(options.error);}ajax.call(this,options);return;}}reqOptions[gadgets.io.RequestParameters.METHOD]=gadgets.io.MethodType[options.type.toUpperCase()];reqOptions[gadgets.io.RequestParameters.CONTENT_TYPE]=gadgets.io.ContentType[options.dataType.toUpperCase()];reqOptions.url=options.url;if(options.headers){reqOptions[gadgets.io.RequestParameters.HEADERS]=options.headers;}if(options.authorization){reqOptions[gadgets.io.RequestParameters.AUTHORIZATION]=gadgets.io.AuthorizationType[options.authorization.toUpperCase()];}if(options.useToken){reqOptions.OAUTH_USE_TOKEN=options.useToken;}if(options.summaries){reqOptions[gadgets.io.RequestParameters.GET_SUMMARIES]=options.summaries;}if(options.entries){reqOptions[gadgets.io.RequestParameters.NUM_ENTRIES]=options.entries;}if(options.data){if(options.type.toLowerCase()==="get"){if(typeof options.data==="string"){reqOptions.url+=("?"+options.data.replace(/^\?/,""));}else{reqOptions.url+=("?"+gadgets.io.encodeValues(options.data).replace(/^\?/,""));}}else{reqOptions[gadgets.io.RequestParameters.POST_DATA]=options.data;}}reqOptions.success=function(response){if(options.complete){options.complete(response,options);}if(options.global){AJS.$.event.trigger("ajaxComplete",[response,options]);}if(response.errors&&response.errors.length||response.oauthError){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.dataType.toLowerCase()==="json"&&typeof response.data==="string"){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(response.rc!==200){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.success&&(response||response.oauthApprovalUrl)){options.success(response.data||response);}if(options.global){AJS.$.event.trigger("ajaxSuccess",[response.data,options]);}};gadgets.io.makeRequest(reqOptions.url,reqOptions.success,reqOptions);if(options.ajaxSend){options.ajaxSend(options);}if(options.global){AJS.$.event.trigger("ajaxSend",[options]);}};}(AJS.$.ajax)});AJS.$.namespace("AJS.gadgets.templater");AJS.gadgets.templater.Base=function(){var cache,template,descriptor=function(args){return args;},callbacks=[],remoteArgs=[],args=[],renderTemplate=function(){var cache={};return function(str,data){var fn;if(!/\W/.test(str)){fn=cache[str];}else{var fnString="var p=[], print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+str.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');";fn=new Function("obj",fnString);}return data?fn(data):fn;};}();return{getDescriptorData:function(callback){var argLengthComparator=0,that=this,formattedArgs={};if(remoteArgs.length<1){AJS.$(args).each(function(){formattedArgs[this.key]=this.data;});if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}}AJS.$(remoteArgs).each(function(i,item){var reqOptions;if(typeof item.ajaxOptions==="string"){reqOptions={url:this.ajaxOptions};}else{if(AJS.$.isFunction(item.ajaxOptions)){reqOptions=item.ajaxOptions();}else{reqOptions=item.ajaxOptions;}}reqOptions.success=function(response){++argLengthComparator;formattedArgs[remoteArgs[i].key]=response;if(argLengthComparator===remoteArgs.length){var excuter=function(){if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}return arguments.callee;}();if(cache!==false){that.getDescriptorData=excuter;}}};AJS.$.ajax(reqOptions);});},disableCache:function(){cache=false;},setTemplate:function(templ){template=templ;},setDescriptor:function(desc){descriptor=desc;},addCallback:function(func){callbacks.push(func);},setRemoteDescriptorArg:function(key,ajaxOptions){remoteArgs.push({key:key,ajaxOptions:ajaxOptions});},setDescriptorArg:function(arg){args.push(arg);},build:function(data){var that=this;if(!data&&data!==false){this.getDescriptorData(this.build);}else{if(data!==false){if(typeof template==="string"&&document.getElementById(template)){that.build.template=AJS.$(template).html();var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(AJS.$.isFunction(template)){template(data);AJS.$(callbacks).each(function(){this.call(that,data);});}else{if(template.length>50){that.build.template=template;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(!that.build.template){AJS.$.ajax({url:template,dataType:"text",success:function(response){that.build.template=response;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}});}else{var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}}}}}}}};};AJS.gadgets.templater.Custom=function(options){var templater=AJS.gadgets.templater.Base();templater.setTemplate(options.template);if(options.descriptor){templater.setDescriptor(options.descriptor);}if(options.callback){templater.addCallback(options.callback);}if(options.cache===false){templater.disableCache();}AJS.$.extend(templater,{getTarget:function(){return options.target;}});if(options.args){AJS.$(options.args).each(function(){if(this.ajaxOptions){templater.setRemoteDescriptorArg(this.key,this.ajaxOptions);}else{templater.setDescriptorArg(this);}});}return templater;};AJS.gadgets.templater.Form=function(options){return AJS.gadgets.templater.Custom(AJS.$.extend({template:AJS.gadgets.templater.Form.template,baseUrl:AJS.gadget.getBaseUrl(),callback:function(response,data){if(options.target){options.target.html(response);if(options.submit){AJS.$("form",options.target).submit(options.submit);}if(options.cancel){AJS.$("input.cancel",options.target).click(options.cancel);}AJS.$(data.fields).each(function(){if(this.type==="callbackBuilder"){var targetDiv=AJS.$("div#"+this.id);this.callback(targetDiv);}});}else{return response;}}},options));};AJS.gadgets.templater.Table=function(options){var table,sortCol,sortOrd=[],sort=function(data,column,order){data.cols[column].theme=order;if(!data.cols[column].sorted){data.data.sort(function(item,compareItem){var dataItem=item[column].value,dataItemCompare=compareItem[column].value;if(!isNaN(parseFloat(dataItem))&&!isNaN(parseFloat(dataItemCompare))){dataItem=parseFloat(dataItem);dataItemCompare=parseFloat(dataItemCompare);}if(dataItem>dataItemCompare){return 1;}else{if(dataItem<% function createCheckboxGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %> <% for (var i=0; i < field.options.length; i++) { %> id="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> id="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> <% if ( field.value === "true" ) { %> checked = "checked" <% } %> <% if (field.value === "false") { field.value = "true"; } %> value="<%= field.value %>" name="<%= gadgets.util.escape(field.userpref) %>" /> <% if (field.options[i].label) { %> for="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> for="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> ><%= gadgets.util.escape(field.options[i].label) %> <% } %>
<% } %> <% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createRadioGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %><% for (var i=0; i < field.options.length; i++) { %>
id="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>id="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %><% if (field.selected === field.options[i].value || field.options[i].selected) { %>checked = "checked"<% } %> <% if ( field.options[i].value ) { %> value="<%= gadgets.util.escape(field.options[i].value) %>" <% } %>name="<%= gadgets.util.escape(field.userpref) %>"/>for="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>for="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %>><%= gadgets.util.escape(field.options[i].label) %>
<% } %>
<% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createHiddenInput (field) { %> <% } %><% function createTextInput (field) { %> class="<%= gadgets.util.escape(styleClass) %>"<% } else { %>class="<%= gadgets.util.escape(field.type) %>"<% } %> <% if (field.value) { %> value="<%= gadgets.util.escape(field.value) %>" <% } %> <% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"/> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createLabel (field) { %><%= gadgets.util.escape(field.label) %> <% } %><% function createTextarea (field) { %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %> value="<%= gadgets.util.escape(item.value) %>"<% if ( field.selected === item.value || item.selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %> <% if (field.options[i].group.options) { %> <% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %> <% createOption(field.options[i].group.options[x]); %> <% } %> <% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createMultiSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %>value="<%= gadgets.util.escape(item.value) %>"<% var selected = false;if(field.value !== undefined && field.value.length > 0) { for(var i = 0; i < field.value.length; i++) { if(field.value[i] === item.value) { selected = true; break; } }}if (selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="multi-select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %><% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %><% createOption(field.options[i].group.options[x]); %><% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createField(field, type) { %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %> <% } %><% if (field.type !== "radio" && field.type !== "checkbox"&& field.type !== "hidden") { %><% createLabel(field); %><% } %><% if (field.type == "select") { %><% createSelect(field); %> <% } else if (field.type == "multiselect") { %><% createMultiSelect(field); %><% } else if (field.type == "textarea") { %><% createTextarea(field); %><% } else if (field.type == "radio") { %><% createRadioGroup(field); %><% } else if (field.type == "checkbox") { %><% createCheckboxGroup(field); %><% } else if (field.type == "custom" && field.template) { %><%= field.template() %>
<% } else if (field.type == "callbackBuilder") { %> <% if (field.id){%>
<% } else { %>
<% } %>
<% } else if (field.type == "hidden") { %><% createHiddenInput(field); %><% } else { %><% createTextInput(field); %><% } %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %>
<% } %><% } %><% function createFieldset (fieldset, type) { %><% if (fieldset.title) { %><%= gadgets.util.escape(fieldset.title) %> <% } %><% if (fieldset.description) { %><%= gadgets.util.escape(fieldset.description) %>
<% } %><% for ( var i = 0; i < fieldset.fields.length; i++ ) { %><% createField(fieldset.fields[i], type); %><% } %> <% } %>';AJS.gadgets.templater.Table.template=' <% if (obj.cols) { %> <% AJS.$(obj.cols).each(function () { %> class="<%= this.theme %>" <% } %> ><%= this.header %>
<% }); %> <% } %> <% if (obj.data) { %> <% AJS.$(obj.data).each(function (i) { %> class="even" <% } %> > <% AJS.$(this).each(function () { %> <%= this.label %> <% }); %> <% }); %> <% } %>
';AJS.$.namespace("AJS.gadget");if(!console.warn){console.warn=function(){};}var Gadget=function(options){AJS.dropDown.Standard=function(dropDown){function canBeMovedToParentFrame(){return !AJS.$.browser.msie&&!AJS.$.browser.opera&&window.top.AJS;}function overflowsIframeHeight(){return parseInt(AJS.$("body").attr("scrollHeight"))>AJS.$("body").outerHeight();}function hideActiveDropdowns(e){if(AJS.$(e.target).parents(".aui-dropdown").length===0){window.top.AJS.$(window.top.document).trigger("click");AJS.$(document).trigger("click");}}function adjustDDPositioning(){if(AJS.dropDown.current&&AJS.dropDown.current.calculateDDPosition){AJS.dropDown.current.updateDDPosition();}}function parentAsContainerHandler(){var top;if(overflowsIframeHeight()){this.updateDDPosition();this.$.remove().addClass("gadget-dropdown");this.shadow.remove();this.shadow.appendTo(window.top.document.body);this.$.appendTo(window.top.document.body);arguments.callee=function(){this.$.css("top",top);this.shadow.css("top",top);};}}var iframeAsContainerHandler={show:function(){if(overflowsIframeHeight()&&gadgets.window.adjustHeight){iframeAsContainerHandler.restoreHeight=AJS.$("body").outerHeight();gadgets.window.adjustHeight(AJS.$("body").attr("scrollHeight"));}},hide:function(){if(iframeAsContainerHandler.restoreHeight){gadgets.window.adjustHeight(iframeAsContainerHandler.restoreHeight);iframeAsContainerHandler.restoreHeight=undefined;}}};if(window.top.AJS){AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);window.top.AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);}AJS.$(window).resize(adjustDDPositioning);return function(options){var dropdowns;options.selectionHandler=options.selectionHandler||function(e,item){if(item[0].nodeName==="A"){window.top.location.href=item.attr("href");}else{window.top.location.href=AJS.$("a",item).attr("href");}};dropdowns=dropDown.call(this,options);AJS.$.each(dropdowns,function(){if(canBeMovedToParentFrame()){this.updateDDPosition=function(){var dropdownOffsets;function getLeftInPercent(left){return left/window.top.AJS.$("body").width()*100+"%";}function calculateOffsets(){var dropdownOffset=this.trigger.offset(),iframeOffset=window.top.AJS.$("#"+window.name).offset();return{top:dropdownOffset.top+this.trigger.outerHeight()+iframeOffset.top,left:dropdownOffset.left+iframeOffset.left+this.trigger.outerWidth()-this.$.outerWidth(),width:this.$.outerWidth()};}if(!this.trigger.is(":visible")){this.hide();}else{dropdownOffsets=calculateOffsets.call(this);this.$.css({top:dropdownOffsets.top,margin:0,left:getLeftInPercent(dropdownOffsets.left),right:"auto"});this.shadow.css({left:getLeftInPercent(dropdownOffsets.left-7),top:dropdownOffsets.top,right:"auto"});}};this.addCallback("show",parentAsContainerHandler);}else{this.addCallback("show",iframeAsContainerHandler.show);this.addCallback("hide",iframeAsContainerHandler.hide);}});return dropdowns;};}(AJS.dropDown.Standard);var prefs=new gadgets.Prefs(),viewMode,message=function(){var popup;return{show:function(msg,classNm,dismissible){var messageEl,buttons,cancelButton,buttonPanel,targHeight;messageEl=AJS.$("
").addClass(classNm).css({width:260,visiblity:"hidden"}).html(msg).appendTo("body");buttons=AJS.$("button",messageEl);if(dismissible!==false){cancelButton=AJS.$("").text(prefs.getMsg("gadget.common.cancel")).click(message.hide);}if(buttons.length>0||cancelButton){buttonPanel=AJS.$("").append(buttons).append(cancelButton);messageEl.append(buttonPanel);}message.hide();popup=new AJS.popup(messageEl.outerWidth(),messageEl.outerHeight(),"message");popup.element.html(messageEl);popup.show();AJS.$(".blanket").show();},hide:function(){if(popup){popup.remove();AJS.$(".blanket").remove();AJS.dim.dim=undefined;}}};}(),gadget={createCookie:function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}else{var expires="";}document.cookie=window.name+name+"="+value+expires+"; path=/";},readCookie:function(name){var nameEQ=window.name+name+"=";var ca=document.cookie.split(";");for(var i=0;i
").addClass("gadget").appendTo("body");return function(){return gadget;};}(),resize:function(size){if(gadgets.window.adjustHeight){window.setTimeout(function(){gadgets.window.adjustHeight(size);},0);}},isLocal:function(){if(typeof atlassian!=="undefined"&&atlassian.util){return atlassian.util.getRendererBaseUrl()===options.baseUrl;}},showLoading:function(){if(gadgets.window.getViewportDimensions&&gadgets.window.getViewportDimensions().width<250){AJS.$("body").addClass("loading-small");}else{AJS.$("body").addClass("loading");}},hideLoading:function(){AJS.$("body").removeClass("loading").removeClass("loading-small");},ajaxErrorHandler:{handle500:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.500"),settings.url,settings.url));},handle503:function(evt,response,settings){gadget.showMessage("error",response.data.errorMessages);},handle404:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.404"),settings.url,settings.url));},execute:function(evt,response,settings){if(response&&gadget.ajaxErrorHandler["handle"+response.rc]){gadget.ajaxErrorHandler["handle"+response.rc].apply(gadget,arguments);}}}};AJS.$("a, area").live("mouseover",function(){if(!AJS.$(this).attr("target")){AJS.$(this).attr({target:"_parent"});}});AJS.gadget.getBaseUrl=function(){return options.baseUrl;};if(options.useOauth&&window.location.href.indexOf(options.baseUrl)!==0){AJS.$.ajax=function(ajax){var queue=[],trustedAppsDenied=function(){ajax({authorization:"oauth",url:options.useOauth,data:{cacheBuster:new Date().getTime()},useToken:"always",complete:function(response){if(response.oauthApprovalUrl||response.rc===403){gadget.approvalUrl=response.oauthApprovalUrl;if(response.oauthApprovalUrl){gadget.approvalRequest=queue[0];}handleOauthApproval();}else{if(response.data){gadget.appendApprovedButton();makeOAuthRequests();}}}});},trustedAppsAccepted=function(){AJS.$.ajax=ajax;AJS.$(queue).each(function(){AJS.$.ajax(this);});},makeOAuthRequests=function(){AJS.$.ajax=ajax;AJS.$.ajaxSetup({authorization:"oauth",useToken:"always"});AJS.$(queue).each(function(){AJS.$.ajax(this);});},handleOauthApproval=function(){AJS.$.ajaxSetup({authorization:"oauth",useToken:"if_available"});var attachApprovalAdvice=function(request,idx){var cacheBuster=new Date().getTime();request.complete=function(complete){return function(response){if(idx===queue.length-1&&gadget.approvalRequest){if(response.rc===200||response.rc===400&&response.data){if(gadget.appendFooterApproval){gadget.appendFooterApproval(request);}}else{if(gadget.appendViewApproval&&gadget.approvalRequest){gadget.appendViewApproval(request);}}}if(complete){complete.apply(AJS.$.ajax,arguments);}};}(request.complete);if(typeof request.data==="object"){request.data.cacheBuster=cacheBuster;}else{if(typeof request.data==="string"){request.data+="&cacheBuster="+cacheBuster;}else{request.data="cacheBuster="+cacheBuster;}}if(!gadget.approvalRequest){request.global=false;request.error=function(response){if(response.rc===400){AJS.$("body").addClass("login").append(gadget.getMsg("gadget.common.container.login"));if(window.top.document){AJS.$("#"+window.name+"-chrome",window.top.document).css("opacity",0.7);}gadget.resize();}};}return request;};AJS.$.ajax=ajax;AJS.$(queue).each(function(i){AJS.$.ajax(attachApprovalAdvice(this,i));});};return function(settings){if(options.useOauth==="always"){AJS.$.ajaxSetup({authorization:"oauth",useOauth:"always"});settings.success=function(success){return function(response){if(response.oauthApprovalUrl){gadget.approvalUrl=response.oauthApprovalUrl;gadget.appendViewApproval(settings);}else{if(success){gadget.appendApprovedButton();success.apply(AJS.$.ajax,arguments);}}};}(settings.success);AJS.$.ajax=ajax;settings.useToken="always";AJS.$.ajax(settings);}else{AJS.$.ajax=function(ajaxSettings){queue.push(ajaxSettings);return arguments.callee;}(settings);ajax({url:options.useOauth,data:{cacheBuster:new Date().getTime()},complete:function(response,settings){if(response.rc===401){trustedAppsDenied(response,settings);}else{if(response.data){trustedAppsAccepted();}}}});}};}(AJS.$.ajax);}AJS.$.ajaxSetup({dataType:"json",type:"get",baseUrl:options.baseUrl});AJS.$().ajaxError(gadget.ajaxErrorHandler.execute);AJS.$().ajaxOpen(gadget.showLoading);AJS.$().ajaxClosed(gadget.hideLoading);return gadget;};var Standard=function(options){var gadget=Gadget(options);AJS.$.extend(gadget,{constructor:Standard,getView:function(){var view=AJS.$("
").addClass("view").appendTo(gadget.getGadget());return function(){return view;};}(),getFooter:function(){var footer=AJS.$("
").addClass("footer").appendTo(gadget.getGadget());AJS.$("body").addClass("has-footer-options");this.getFooter=function(){return footer;};return footer;},getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){window.location.reload();};request.useToken="always";AJS.$.ajax(request);});},getApprovalButton:function(request){var popup=gadget.getOauthPopup(request);return AJS.$("
").html(""+gadget.getMsg("gadget.common.oauth.approve.button")+" ").click(popup.createOpenerOnClick());},appendApprovedButton:function(){AJS.$(" ").appendTo(gadget.getFooter());},appendViewApproval:function(request){var approvalButton=gadget.getApprovalButton(request).appendTo("body");AJS.$("body").addClass("oauth-view-approval");return approvalButton;},appendFooterApproval:function(request){var popup=gadget.getOauthPopup(request);return AJS.$(" ").addClass("oauth").click(popup.createOpenerOnClick()).appendTo(gadget.getFooter());},viewTemplate:AJS.gadgets.templater.Custom({template:function(args){if(gadgets.views){gadget.setViewMode(gadgets.views.getCurrentView().getName());}options.view.template.call(gadget,args);gadget.showView();},cache:false,args:function(){var args=[];AJS.$(options.view.args).each(function(){if(AJS.$.isFunction(this.ajaxOptions)){var that=this;args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}()})});gadget.showView=function(){gadget.viewTemplate.addCallback(gadget.resize);return function(refresh){if(refresh){gadget.viewTemplate.build();}else{gadget.getView().show();gadget.resize();}};}();if(options.view.onResizeReload){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){if(gadget.getView().is(":visible")){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.showView(true);width=newWidth;}}};}());}if(options.view.onResizeAdjustHeight){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.resize();width=newWidth;}};}());}return gadget;};var Configured=function(options){var gadget=Standard(options);gadget.constructor=Configured;gadget.ajaxErrorHandler.handle400=function(evt,response){if(AJS.$("body").hasClass("config-unavailable")){return;}var errorContainer=AJS.$("
").append(""+gadget.getMsg("gadget.common.config.unavailable")+"
").appendTo(gadget.getView()),errorList=AJS.$("").appendTo(errorContainer);AJS.$("body").addClass("config-unavailable");AJS.$(response.data.errors).each(function(){AJS.$(" ").append(""+gadget.getMsg(this.error,this.params)+" ").appendTo(errorList);});gadget.resize();};if(options.view.enableReload){if(gadget.getPref("refresh")!==""&&gadget.getPref("refresh")!=="false"){window.setInterval(function(){gadget.showView(true);},60000*gadget.getPref("refresh"));}AJS.$(" ").click(function(){gadget.showView(true);}).appendTo(gadget.getFooter());}return gadget;};var Configurable=function(options){var gadget=Configured(options);AJS.$.extend(gadget,{constructor:Configurable,appendFooterApproval:function(superAppendFooterApproval){return function(request){if(AJS.$(".info.footer-message").length<1){AJS.$("
").addClass("info footer-message").html(""+gadget.getMsg("gadget.common.oauth.approve.message")+"
").append(gadget.getApprovalButton(request)).insertBefore(AJS.$(":first",gadget.configTemplate.getTarget()));gadget.resize();}superAppendFooterApproval.apply(gadget,arguments);};}(gadget.appendFooterApproval),getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){function persistFormInHash(){window.location.href+="&"+AJS.$("form",gadget.configTemplate.getTarget()).serialize()+"}";}if(gadget.getPrefs().getBool("isConfigured")&&!/isConfigured=true/.test(window.location.href)){persistFormInHash();window.top.location.reload();}else{persistFormInHash();window.location.reload();}};request.useToken="always";AJS.$.ajax(request);});},configTemplate:AJS.gadgets.templater.Form({target:AJS.$("
").appendTo(document.body),descriptor:function(args){var descriptor=options.config.descriptor.call(gadget,args);if(options.view.enableReload){descriptor.fields.push({userpref:"refresh",label:gadget.getMsg("gadget.common.refresh.label"),description:gadget.getMsg("gadget.common.refresh.description"),selected:gadget.getPref("refresh"),options:[{value:"false",label:gadget.getMsg("gadget.common.refresh.never")},{value:"15",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),15)},{value:"30",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),30)},{value:"60",label:AJS.format(gadget.getMsg("gadget.common.refresh.hour"),1)},{value:"120",label:AJS.format(gadget.getMsg("gadget.common.refresh.hours"),2)}],type:"select"});}return descriptor;},args:function(){var args=[];if(AJS.$.isFunction(options.config.args)){options.config.args=options.config.args();}AJS.$(options.config.args).each(function(){var that=this;if(AJS.$.isFunction(this.ajaxOptions)){args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}(),cancel:function(e){gadget.showView();e.preventDefault();},submit:function(e){var form=AJS.$(this),save=function(){AJS.$(form.serializeArray()).each(function(){gadget.savePref(this.name,this.value);});gadget.showView(true);};if(form.attr("action")!==""){AJS.$.ajax({type:"get",url:form.attr("action"),data:form.serialize(),global:false,success:function(){var fieldValues={};AJS.$(form.serializeArray()).each(function(){var fieldVal=fieldValues[this.name];if(!fieldVal){fieldVal=this.value;}else{if(AJS.$.isArray(fieldVal)){fieldVal.push(this.value);}else{fieldVal=[fieldVal,this.value];}}fieldValues[this.name]=fieldVal;});AJS.$(":checkbox:not(:checked)",form).each(function(){fieldValues[this.name]="false";});for(var name in fieldValues){gadget.savePref(name,fieldValues[name]);}gadget.showView(true);},error:function(response,settings){gadget.ajaxErrorHandler.execute(null,response,AJS.$.extend(settings,{isConfig:true}));}});}else{save();}e.preventDefault();}}),getConfig:function(){return gadget.configTemplate.getTarget();}});gadget.showConfig=function(){var restoreValuesFromHash=function(){if(!/#rpctoken=[0-9]+$/.test(window.location.href)){var options,fields=window.location.href.replace(/.*?#/,"").split("&");AJS.$.each(fields,function(){var name=this.split("=")[0],val=this.split("=")[1],field=AJS.$(":input[name="+name+"]");if(field.length>0){if(field.is("select")){options=val.split(",");AJS.$.each(options,function(){AJS.$("option[value="+this+"]",field).attr("selected","selected");});}else{if(field.is(":radio,:checkbox")){field.attr("checked","checked");}else{field.val(val);}}}});window.location.href=window.location.href.replace(/(#rpctoken=[0-9]+).*/,"$1");}};gadget.configTemplate.addCallback(function(){AJS.$("body").addClass("config-active");gadget.configTemplate.getTarget().show();restoreValuesFromHash();if(gadget.approvalRequest){gadget.appendFooterApproval(gadget.approvalRequest);}AJS.$("button",gadget.getFooter()).hide();window.setTimeout(function(){gadget.resize();},0);});return function(){gadget.configTemplate.build();};}();gadget.showView=function(refresh){if(refresh){gadget.viewTemplate.build();}else{AJS.$("body").removeClass("config-active");gadget.configTemplate.getTarget().hide();gadget.resize();AJS.$("button",gadget.getFooter()).show();}};gadget.configTemplate.getTrigger=function(){var button=AJS.$("").appendTo(gadget.getFooter()).click(function(e){gadget.showConfig();e.preventDefault();});return function(){return button;};}();gadget.ajaxErrorHandler.handle400=function(superHandle400){var validationErrors,showFormErrors=function(){AJS.$(".error",gadget.configTemplate.getTarget()).hide();AJS.$(validationErrors).each(function(){var msg=gadget.getMsg(this.error,this.params);AJS.$(":input[name='"+this.field+"']").parent().find(".error").text(msg).show();AJS.$("#"+this.field+"-error").text(msg).show();});gadget.resize();validationErrors=null;};gadget.configTemplate.addCallback(function(){if(!gadget.getPrefs().getBool("isConfigured")||validationErrors){AJS.$("input.cancel",gadget.configTemplate.getTarget()).hide();}if(validationErrors){showFormErrors();}});return function(evt,response,settings){validationErrors=response.data.errors;if(!settings.isConfig){superHandle400.apply(gadget,arguments);}else{showFormErrors();}};}(gadget.ajaxErrorHandler.handle400);return gadget;};AJS.Gadget=function(options){var gadget,pubInterface,isWriteable=function(){if(gadgets.views){return gadgets.views.getParams().writable===undefined||gadgets.views.getParams().writable==="true";}},getStandardInterface=function(){return{showMessage:gadget.showMessage,savePref:gadget.savePref,setViewMode:gadget.setViewMode,getViewMode:gadget.getViewMode,getBaseUrl:gadget.getBaseUrl,getPrefs:gadget.getPrefs,getPref:gadget.getPref,getPrefArray:gadget.getPrefArray,getMsg:gadget.getMsg,getGadget:gadget.getGadget,resize:gadget.resize,showLoading:gadget.showLoading,hideLoading:gadget.hideLoading,createCookie:gadget.createCookie,readCookie:gadget.readCookie,eraseCookie:gadget.eraseCookie,isLocal:gadget.isLocal};},getConfiguredInterface=function(){return AJS.$.extend(getStandardInterface(),{getView:gadget.getView,showView:gadget.showView,getFooter:gadget.getFooter});},getConfigurableInterface=function(){return AJS.$.extend(getConfiguredInterface(),{showConfig:gadget.showConfig,getConfig:gadget.getConfig});};if(options.view&&!options.config){gadget=Standard(options);pubInterface=getStandardInterface();gadget.showView(true);}else{if(options.view&&options.config&&!isWriteable()){gadget=Configured(options);pubInterface=getConfiguredInterface();if(gadget.getPrefs().getBool("isConfigured")){gadget.showView(true);}}else{if(options.view&&options.config&&isWriteable()){gadget=Configurable(options);pubInterface=getConfigurableInterface();if(!gadget.getPrefs().getBool("isConfigured")){gadget.showConfig();}else{gadget.showView(true);}}}}return pubInterface;};AJS.gadget.Configurable=AJS.Gadget;})();
Lint at line 1 character 25658: Use '===' to compare with '0'.
(function(){AJS.$.fn.serializeArray=function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();if(val==null){val="";}return val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();};AJS.$.extend({put:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"PUT",url:url,data:data,success:callback,dataType:type});},del:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"delete",url:url,data:data,success:callback,dataType:type});},ajax:function(ajax){var activeReq=0,dressResponse=function(xhr){var res={};res.rc=xhr.status;if(xhr.responseText!==""){res.data=gadgets.json.parse(xhr.responseText);}return res;};AJS.$.each("ajaxOpen,ajaxClosed,ajaxOauthApproval".split(","),function(i,o){AJS.$.fn[o]=function(f){return this.bind(o,f);};});AJS.$().ajaxSend(function(evt,req,options){if(++activeReq===1){AJS.$.event.trigger("ajaxOpen",[options]);}});AJS.$().ajaxComplete(function(evt,req,options){if(--activeReq===0){AJS.$.event.trigger("ajaxClosed",[options]);}});AJS.$.fn.ajaxComplete=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxComplete",f);};AJS.$.fn.ajaxError=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxError",f);};return function(usrOptions){var reqOptions={};if(typeof options==="string"){options={url:options};}var options=usrOptions;for(var name in AJS.$.ajaxSettings){if(!options[name]&&options[name]!==false){options[name]=AJS.$.ajaxSettings[name];}}if(options.baseUrl){if(!/^(http)|(https):\/\//.test(options.url)){options.url=options.baseUrl+options.url;}}if(typeof atlassian!=="undefined"&&atlassian.util){if(atlassian.util.getRendererBaseUrl()===options.baseUrl&&new RegExp(options.baseUrl).test(options.url)){if(options.error){options.error=function(error){return function(xhr,type){if(!xhr.responseText){options.success.apply(this,arguments);}else{error.call(this,dressResponse(xhr));}};}(options.error);}ajax.call(this,options);return;}}reqOptions[gadgets.io.RequestParameters.METHOD]=gadgets.io.MethodType[options.type.toUpperCase()];reqOptions[gadgets.io.RequestParameters.CONTENT_TYPE]=gadgets.io.ContentType[options.dataType.toUpperCase()];reqOptions.url=options.url;if(options.headers){reqOptions[gadgets.io.RequestParameters.HEADERS]=options.headers;}if(options.authorization){reqOptions[gadgets.io.RequestParameters.AUTHORIZATION]=gadgets.io.AuthorizationType[options.authorization.toUpperCase()];}if(options.useToken){reqOptions.OAUTH_USE_TOKEN=options.useToken;}if(options.summaries){reqOptions[gadgets.io.RequestParameters.GET_SUMMARIES]=options.summaries;}if(options.entries){reqOptions[gadgets.io.RequestParameters.NUM_ENTRIES]=options.entries;}if(options.data){if(options.type.toLowerCase()==="get"){if(typeof options.data==="string"){reqOptions.url+=("?"+options.data.replace(/^\?/,""));}else{reqOptions.url+=("?"+gadgets.io.encodeValues(options.data).replace(/^\?/,""));}}else{reqOptions[gadgets.io.RequestParameters.POST_DATA]=options.data;}}reqOptions.success=function(response){if(options.complete){options.complete(response,options);}if(options.global){AJS.$.event.trigger("ajaxComplete",[response,options]);}if(response.errors&&response.errors.length||response.oauthError){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.dataType.toLowerCase()==="json"&&typeof response.data==="string"){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(response.rc!==200){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.success&&(response||response.oauthApprovalUrl)){options.success(response.data||response);}if(options.global){AJS.$.event.trigger("ajaxSuccess",[response.data,options]);}};gadgets.io.makeRequest(reqOptions.url,reqOptions.success,reqOptions);if(options.ajaxSend){options.ajaxSend(options);}if(options.global){AJS.$.event.trigger("ajaxSend",[options]);}};}(AJS.$.ajax)});AJS.$.namespace("AJS.gadgets.templater");AJS.gadgets.templater.Base=function(){var cache,template,descriptor=function(args){return args;},callbacks=[],remoteArgs=[],args=[],renderTemplate=function(){var cache={};return function(str,data){var fn;if(!/\W/.test(str)){fn=cache[str];}else{var fnString="var p=[], print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+str.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');";fn=new Function("obj",fnString);}return data?fn(data):fn;};}();return{getDescriptorData:function(callback){var argLengthComparator=0,that=this,formattedArgs={};if(remoteArgs.length<1){AJS.$(args).each(function(){formattedArgs[this.key]=this.data;});if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}}AJS.$(remoteArgs).each(function(i,item){var reqOptions;if(typeof item.ajaxOptions==="string"){reqOptions={url:this.ajaxOptions};}else{if(AJS.$.isFunction(item.ajaxOptions)){reqOptions=item.ajaxOptions();}else{reqOptions=item.ajaxOptions;}}reqOptions.success=function(response){++argLengthComparator;formattedArgs[remoteArgs[i].key]=response;if(argLengthComparator===remoteArgs.length){var excuter=function(){if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}return arguments.callee;}();if(cache!==false){that.getDescriptorData=excuter;}}};AJS.$.ajax(reqOptions);});},disableCache:function(){cache=false;},setTemplate:function(templ){template=templ;},setDescriptor:function(desc){descriptor=desc;},addCallback:function(func){callbacks.push(func);},setRemoteDescriptorArg:function(key,ajaxOptions){remoteArgs.push({key:key,ajaxOptions:ajaxOptions});},setDescriptorArg:function(arg){args.push(arg);},build:function(data){var that=this;if(!data&&data!==false){this.getDescriptorData(this.build);}else{if(data!==false){if(typeof template==="string"&&document.getElementById(template)){that.build.template=AJS.$(template).html();var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(AJS.$.isFunction(template)){template(data);AJS.$(callbacks).each(function(){this.call(that,data);});}else{if(template.length>50){that.build.template=template;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(!that.build.template){AJS.$.ajax({url:template,dataType:"text",success:function(response){that.build.template=response;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}});}else{var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}}}}}}}};};AJS.gadgets.templater.Custom=function(options){var templater=AJS.gadgets.templater.Base();templater.setTemplate(options.template);if(options.descriptor){templater.setDescriptor(options.descriptor);}if(options.callback){templater.addCallback(options.callback);}if(options.cache===false){templater.disableCache();}AJS.$.extend(templater,{getTarget:function(){return options.target;}});if(options.args){AJS.$(options.args).each(function(){if(this.ajaxOptions){templater.setRemoteDescriptorArg(this.key,this.ajaxOptions);}else{templater.setDescriptorArg(this);}});}return templater;};AJS.gadgets.templater.Form=function(options){return AJS.gadgets.templater.Custom(AJS.$.extend({template:AJS.gadgets.templater.Form.template,baseUrl:AJS.gadget.getBaseUrl(),callback:function(response,data){if(options.target){options.target.html(response);if(options.submit){AJS.$("form",options.target).submit(options.submit);}if(options.cancel){AJS.$("input.cancel",options.target).click(options.cancel);}AJS.$(data.fields).each(function(){if(this.type==="callbackBuilder"){var targetDiv=AJS.$("div#"+this.id);this.callback(targetDiv);}});}else{return response;}}},options));};AJS.gadgets.templater.Table=function(options){var table,sortCol,sortOrd=[],sort=function(data,column,order){data.cols[column].theme=order;if(!data.cols[column].sorted){data.data.sort(function(item,compareItem){var dataItem=item[column].value,dataItemCompare=compareItem[column].value;if(!isNaN(parseFloat(dataItem))&&!isNaN(parseFloat(dataItemCompare))){dataItem=parseFloat(dataItem);dataItemCompare=parseFloat(dataItemCompare);}if(dataItem>dataItemCompare){return 1;}else{if(dataItem<% function createCheckboxGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %> <% for (var i=0; i < field.options.length; i++) { %> id="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> id="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> <% if ( field.value === "true" ) { %> checked = "checked" <% } %> <% if (field.value === "false") { field.value = "true"; } %> value="<%= field.value %>" name="<%= gadgets.util.escape(field.userpref) %>" /> <% if (field.options[i].label) { %> for="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> for="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> ><%= gadgets.util.escape(field.options[i].label) %> <% } %>
<% } %> <% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createRadioGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %><% for (var i=0; i < field.options.length; i++) { %>
id="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>id="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %><% if (field.selected === field.options[i].value || field.options[i].selected) { %>checked = "checked"<% } %> <% if ( field.options[i].value ) { %> value="<%= gadgets.util.escape(field.options[i].value) %>" <% } %>name="<%= gadgets.util.escape(field.userpref) %>"/>for="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>for="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %>><%= gadgets.util.escape(field.options[i].label) %>
<% } %>
<% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createHiddenInput (field) { %> <% } %><% function createTextInput (field) { %> class="<%= gadgets.util.escape(styleClass) %>"<% } else { %>class="<%= gadgets.util.escape(field.type) %>"<% } %> <% if (field.value) { %> value="<%= gadgets.util.escape(field.value) %>" <% } %> <% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"/> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createLabel (field) { %><%= gadgets.util.escape(field.label) %> <% } %><% function createTextarea (field) { %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %> value="<%= gadgets.util.escape(item.value) %>"<% if ( field.selected === item.value || item.selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %> <% if (field.options[i].group.options) { %> <% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %> <% createOption(field.options[i].group.options[x]); %> <% } %> <% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createMultiSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %>value="<%= gadgets.util.escape(item.value) %>"<% var selected = false;if(field.value !== undefined && field.value.length > 0) { for(var i = 0; i < field.value.length; i++) { if(field.value[i] === item.value) { selected = true; break; } }}if (selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="multi-select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %><% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %><% createOption(field.options[i].group.options[x]); %><% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createField(field, type) { %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %> <% } %><% if (field.type !== "radio" && field.type !== "checkbox"&& field.type !== "hidden") { %><% createLabel(field); %><% } %><% if (field.type == "select") { %><% createSelect(field); %> <% } else if (field.type == "multiselect") { %><% createMultiSelect(field); %><% } else if (field.type == "textarea") { %><% createTextarea(field); %><% } else if (field.type == "radio") { %><% createRadioGroup(field); %><% } else if (field.type == "checkbox") { %><% createCheckboxGroup(field); %><% } else if (field.type == "custom" && field.template) { %><%= field.template() %>
<% } else if (field.type == "callbackBuilder") { %> <% if (field.id){%>
<% } else { %>
<% } %>
<% } else if (field.type == "hidden") { %><% createHiddenInput(field); %><% } else { %><% createTextInput(field); %><% } %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %>
<% } %><% } %><% function createFieldset (fieldset, type) { %><% if (fieldset.title) { %><%= gadgets.util.escape(fieldset.title) %> <% } %><% if (fieldset.description) { %><%= gadgets.util.escape(fieldset.description) %>
<% } %><% for ( var i = 0; i < fieldset.fields.length; i++ ) { %><% createField(fieldset.fields[i], type); %><% } %> <% } %>';AJS.gadgets.templater.Table.template=' <% if (obj.cols) { %> <% AJS.$(obj.cols).each(function () { %> class="<%= this.theme %>" <% } %> ><%= this.header %>
<% }); %> <% } %> <% if (obj.data) { %> <% AJS.$(obj.data).each(function (i) { %> class="even" <% } %> > <% AJS.$(this).each(function () { %> <%= this.label %> <% }); %> <% }); %> <% } %>
';AJS.$.namespace("AJS.gadget");if(!console.warn){console.warn=function(){};}var Gadget=function(options){AJS.dropDown.Standard=function(dropDown){function canBeMovedToParentFrame(){return !AJS.$.browser.msie&&!AJS.$.browser.opera&&window.top.AJS;}function overflowsIframeHeight(){return parseInt(AJS.$("body").attr("scrollHeight"))>AJS.$("body").outerHeight();}function hideActiveDropdowns(e){if(AJS.$(e.target).parents(".aui-dropdown").length===0){window.top.AJS.$(window.top.document).trigger("click");AJS.$(document).trigger("click");}}function adjustDDPositioning(){if(AJS.dropDown.current&&AJS.dropDown.current.calculateDDPosition){AJS.dropDown.current.updateDDPosition();}}function parentAsContainerHandler(){var top;if(overflowsIframeHeight()){this.updateDDPosition();this.$.remove().addClass("gadget-dropdown");this.shadow.remove();this.shadow.appendTo(window.top.document.body);this.$.appendTo(window.top.document.body);arguments.callee=function(){this.$.css("top",top);this.shadow.css("top",top);};}}var iframeAsContainerHandler={show:function(){if(overflowsIframeHeight()&&gadgets.window.adjustHeight){iframeAsContainerHandler.restoreHeight=AJS.$("body").outerHeight();gadgets.window.adjustHeight(AJS.$("body").attr("scrollHeight"));}},hide:function(){if(iframeAsContainerHandler.restoreHeight){gadgets.window.adjustHeight(iframeAsContainerHandler.restoreHeight);iframeAsContainerHandler.restoreHeight=undefined;}}};if(window.top.AJS){AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);window.top.AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);}AJS.$(window).resize(adjustDDPositioning);return function(options){var dropdowns;options.selectionHandler=options.selectionHandler||function(e,item){if(item[0].nodeName==="A"){window.top.location.href=item.attr("href");}else{window.top.location.href=AJS.$("a",item).attr("href");}};dropdowns=dropDown.call(this,options);AJS.$.each(dropdowns,function(){if(canBeMovedToParentFrame()){this.updateDDPosition=function(){var dropdownOffsets;function getLeftInPercent(left){return left/window.top.AJS.$("body").width()*100+"%";}function calculateOffsets(){var dropdownOffset=this.trigger.offset(),iframeOffset=window.top.AJS.$("#"+window.name).offset();return{top:dropdownOffset.top+this.trigger.outerHeight()+iframeOffset.top,left:dropdownOffset.left+iframeOffset.left+this.trigger.outerWidth()-this.$.outerWidth(),width:this.$.outerWidth()};}if(!this.trigger.is(":visible")){this.hide();}else{dropdownOffsets=calculateOffsets.call(this);this.$.css({top:dropdownOffsets.top,margin:0,left:getLeftInPercent(dropdownOffsets.left),right:"auto"});this.shadow.css({left:getLeftInPercent(dropdownOffsets.left-7),top:dropdownOffsets.top,right:"auto"});}};this.addCallback("show",parentAsContainerHandler);}else{this.addCallback("show",iframeAsContainerHandler.show);this.addCallback("hide",iframeAsContainerHandler.hide);}});return dropdowns;};}(AJS.dropDown.Standard);var prefs=new gadgets.Prefs(),viewMode,message=function(){var popup;return{show:function(msg,classNm,dismissible){var messageEl,buttons,cancelButton,buttonPanel,targHeight;messageEl=AJS.$("
").addClass(classNm).css({width:260,visiblity:"hidden"}).html(msg).appendTo("body");buttons=AJS.$("button",messageEl);if(dismissible!==false){cancelButton=AJS.$("").text(prefs.getMsg("gadget.common.cancel")).click(message.hide);}if(buttons.length>0||cancelButton){buttonPanel=AJS.$("").append(buttons).append(cancelButton);messageEl.append(buttonPanel);}message.hide();popup=new AJS.popup(messageEl.outerWidth(),messageEl.outerHeight(),"message");popup.element.html(messageEl);popup.show();AJS.$(".blanket").show();},hide:function(){if(popup){popup.remove();AJS.$(".blanket").remove();AJS.dim.dim=undefined;}}};}(),gadget={createCookie:function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}else{var expires="";}document.cookie=window.name+name+"="+value+expires+"; path=/";},readCookie:function(name){var nameEQ=window.name+name+"=";var ca=document.cookie.split(";");for(var i=0;i
").addClass("gadget").appendTo("body");return function(){return gadget;};}(),resize:function(size){if(gadgets.window.adjustHeight){window.setTimeout(function(){gadgets.window.adjustHeight(size);},0);}},isLocal:function(){if(typeof atlassian!=="undefined"&&atlassian.util){return atlassian.util.getRendererBaseUrl()===options.baseUrl;}},showLoading:function(){if(gadgets.window.getViewportDimensions&&gadgets.window.getViewportDimensions().width<250){AJS.$("body").addClass("loading-small");}else{AJS.$("body").addClass("loading");}},hideLoading:function(){AJS.$("body").removeClass("loading").removeClass("loading-small");},ajaxErrorHandler:{handle500:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.500"),settings.url,settings.url));},handle503:function(evt,response,settings){gadget.showMessage("error",response.data.errorMessages);},handle404:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.404"),settings.url,settings.url));},execute:function(evt,response,settings){if(response&&gadget.ajaxErrorHandler["handle"+response.rc]){gadget.ajaxErrorHandler["handle"+response.rc].apply(gadget,arguments);}}}};AJS.$("a, area").live("mouseover",function(){if(!AJS.$(this).attr("target")){AJS.$(this).attr({target:"_parent"});}});AJS.gadget.getBaseUrl=function(){return options.baseUrl;};if(options.useOauth&&window.location.href.indexOf(options.baseUrl)!==0){AJS.$.ajax=function(ajax){var queue=[],trustedAppsDenied=function(){ajax({authorization:"oauth",url:options.useOauth,data:{cacheBuster:new Date().getTime()},useToken:"always",complete:function(response){if(response.oauthApprovalUrl||response.rc===403){gadget.approvalUrl=response.oauthApprovalUrl;if(response.oauthApprovalUrl){gadget.approvalRequest=queue[0];}handleOauthApproval();}else{if(response.data){gadget.appendApprovedButton();makeOAuthRequests();}}}});},trustedAppsAccepted=function(){AJS.$.ajax=ajax;AJS.$(queue).each(function(){AJS.$.ajax(this);});},makeOAuthRequests=function(){AJS.$.ajax=ajax;AJS.$.ajaxSetup({authorization:"oauth",useToken:"always"});AJS.$(queue).each(function(){AJS.$.ajax(this);});},handleOauthApproval=function(){AJS.$.ajaxSetup({authorization:"oauth",useToken:"if_available"});var attachApprovalAdvice=function(request,idx){var cacheBuster=new Date().getTime();request.complete=function(complete){return function(response){if(idx===queue.length-1&&gadget.approvalRequest){if(response.rc===200||response.rc===400&&response.data){if(gadget.appendFooterApproval){gadget.appendFooterApproval(request);}}else{if(gadget.appendViewApproval&&gadget.approvalRequest){gadget.appendViewApproval(request);}}}if(complete){complete.apply(AJS.$.ajax,arguments);}};}(request.complete);if(typeof request.data==="object"){request.data.cacheBuster=cacheBuster;}else{if(typeof request.data==="string"){request.data+="&cacheBuster="+cacheBuster;}else{request.data="cacheBuster="+cacheBuster;}}if(!gadget.approvalRequest){request.global=false;request.error=function(response){if(response.rc===400){AJS.$("body").addClass("login").append(gadget.getMsg("gadget.common.container.login"));if(window.top.document){AJS.$("#"+window.name+"-chrome",window.top.document).css("opacity",0.7);}gadget.resize();}};}return request;};AJS.$.ajax=ajax;AJS.$(queue).each(function(i){AJS.$.ajax(attachApprovalAdvice(this,i));});};return function(settings){if(options.useOauth==="always"){AJS.$.ajaxSetup({authorization:"oauth",useOauth:"always"});settings.success=function(success){return function(response){if(response.oauthApprovalUrl){gadget.approvalUrl=response.oauthApprovalUrl;gadget.appendViewApproval(settings);}else{if(success){gadget.appendApprovedButton();success.apply(AJS.$.ajax,arguments);}}};}(settings.success);AJS.$.ajax=ajax;settings.useToken="always";AJS.$.ajax(settings);}else{AJS.$.ajax=function(ajaxSettings){queue.push(ajaxSettings);return arguments.callee;}(settings);ajax({url:options.useOauth,data:{cacheBuster:new Date().getTime()},complete:function(response,settings){if(response.rc===401){trustedAppsDenied(response,settings);}else{if(response.data){trustedAppsAccepted();}}}});}};}(AJS.$.ajax);}AJS.$.ajaxSetup({dataType:"json",type:"get",baseUrl:options.baseUrl});AJS.$().ajaxError(gadget.ajaxErrorHandler.execute);AJS.$().ajaxOpen(gadget.showLoading);AJS.$().ajaxClosed(gadget.hideLoading);return gadget;};var Standard=function(options){var gadget=Gadget(options);AJS.$.extend(gadget,{constructor:Standard,getView:function(){var view=AJS.$("
").addClass("view").appendTo(gadget.getGadget());return function(){return view;};}(),getFooter:function(){var footer=AJS.$("
").addClass("footer").appendTo(gadget.getGadget());AJS.$("body").addClass("has-footer-options");this.getFooter=function(){return footer;};return footer;},getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){window.location.reload();};request.useToken="always";AJS.$.ajax(request);});},getApprovalButton:function(request){var popup=gadget.getOauthPopup(request);return AJS.$("
").html(""+gadget.getMsg("gadget.common.oauth.approve.button")+" ").click(popup.createOpenerOnClick());},appendApprovedButton:function(){AJS.$(" ").appendTo(gadget.getFooter());},appendViewApproval:function(request){var approvalButton=gadget.getApprovalButton(request).appendTo("body");AJS.$("body").addClass("oauth-view-approval");return approvalButton;},appendFooterApproval:function(request){var popup=gadget.getOauthPopup(request);return AJS.$(" ").addClass("oauth").click(popup.createOpenerOnClick()).appendTo(gadget.getFooter());},viewTemplate:AJS.gadgets.templater.Custom({template:function(args){if(gadgets.views){gadget.setViewMode(gadgets.views.getCurrentView().getName());}options.view.template.call(gadget,args);gadget.showView();},cache:false,args:function(){var args=[];AJS.$(options.view.args).each(function(){if(AJS.$.isFunction(this.ajaxOptions)){var that=this;args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}()})});gadget.showView=function(){gadget.viewTemplate.addCallback(gadget.resize);return function(refresh){if(refresh){gadget.viewTemplate.build();}else{gadget.getView().show();gadget.resize();}};}();if(options.view.onResizeReload){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){if(gadget.getView().is(":visible")){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.showView(true);width=newWidth;}}};}());}if(options.view.onResizeAdjustHeight){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.resize();width=newWidth;}};}());}return gadget;};var Configured=function(options){var gadget=Standard(options);gadget.constructor=Configured;gadget.ajaxErrorHandler.handle400=function(evt,response){if(AJS.$("body").hasClass("config-unavailable")){return;}var errorContainer=AJS.$("
").append(""+gadget.getMsg("gadget.common.config.unavailable")+"
").appendTo(gadget.getView()),errorList=AJS.$("").appendTo(errorContainer);AJS.$("body").addClass("config-unavailable");AJS.$(response.data.errors).each(function(){AJS.$(" ").append(""+gadget.getMsg(this.error,this.params)+" ").appendTo(errorList);});gadget.resize();};if(options.view.enableReload){if(gadget.getPref("refresh")!==""&&gadget.getPref("refresh")!=="false"){window.setInterval(function(){gadget.showView(true);},60000*gadget.getPref("refresh"));}AJS.$(" ").click(function(){gadget.showView(true);}).appendTo(gadget.getFooter());}return gadget;};var Configurable=function(options){var gadget=Configured(options);AJS.$.extend(gadget,{constructor:Configurable,appendFooterApproval:function(superAppendFooterApproval){return function(request){if(AJS.$(".info.footer-message").length<1){AJS.$("
").addClass("info footer-message").html(""+gadget.getMsg("gadget.common.oauth.approve.message")+"
").append(gadget.getApprovalButton(request)).insertBefore(AJS.$(":first",gadget.configTemplate.getTarget()));gadget.resize();}superAppendFooterApproval.apply(gadget,arguments);};}(gadget.appendFooterApproval),getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){function persistFormInHash(){window.location.href+="&"+AJS.$("form",gadget.configTemplate.getTarget()).serialize()+"}";}if(gadget.getPrefs().getBool("isConfigured")&&!/isConfigured=true/.test(window.location.href)){persistFormInHash();window.top.location.reload();}else{persistFormInHash();window.location.reload();}};request.useToken="always";AJS.$.ajax(request);});},configTemplate:AJS.gadgets.templater.Form({target:AJS.$("
").appendTo(document.body),descriptor:function(args){var descriptor=options.config.descriptor.call(gadget,args);if(options.view.enableReload){descriptor.fields.push({userpref:"refresh",label:gadget.getMsg("gadget.common.refresh.label"),description:gadget.getMsg("gadget.common.refresh.description"),selected:gadget.getPref("refresh"),options:[{value:"false",label:gadget.getMsg("gadget.common.refresh.never")},{value:"15",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),15)},{value:"30",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),30)},{value:"60",label:AJS.format(gadget.getMsg("gadget.common.refresh.hour"),1)},{value:"120",label:AJS.format(gadget.getMsg("gadget.common.refresh.hours"),2)}],type:"select"});}return descriptor;},args:function(){var args=[];if(AJS.$.isFunction(options.config.args)){options.config.args=options.config.args();}AJS.$(options.config.args).each(function(){var that=this;if(AJS.$.isFunction(this.ajaxOptions)){args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}(),cancel:function(e){gadget.showView();e.preventDefault();},submit:function(e){var form=AJS.$(this),save=function(){AJS.$(form.serializeArray()).each(function(){gadget.savePref(this.name,this.value);});gadget.showView(true);};if(form.attr("action")!==""){AJS.$.ajax({type:"get",url:form.attr("action"),data:form.serialize(),global:false,success:function(){var fieldValues={};AJS.$(form.serializeArray()).each(function(){var fieldVal=fieldValues[this.name];if(!fieldVal){fieldVal=this.value;}else{if(AJS.$.isArray(fieldVal)){fieldVal.push(this.value);}else{fieldVal=[fieldVal,this.value];}}fieldValues[this.name]=fieldVal;});AJS.$(":checkbox:not(:checked)",form).each(function(){fieldValues[this.name]="false";});for(var name in fieldValues){gadget.savePref(name,fieldValues[name]);}gadget.showView(true);},error:function(response,settings){gadget.ajaxErrorHandler.execute(null,response,AJS.$.extend(settings,{isConfig:true}));}});}else{save();}e.preventDefault();}}),getConfig:function(){return gadget.configTemplate.getTarget();}});gadget.showConfig=function(){var restoreValuesFromHash=function(){if(!/#rpctoken=[0-9]+$/.test(window.location.href)){var options,fields=window.location.href.replace(/.*?#/,"").split("&");AJS.$.each(fields,function(){var name=this.split("=")[0],val=this.split("=")[1],field=AJS.$(":input[name="+name+"]");if(field.length>0){if(field.is("select")){options=val.split(",");AJS.$.each(options,function(){AJS.$("option[value="+this+"]",field).attr("selected","selected");});}else{if(field.is(":radio,:checkbox")){field.attr("checked","checked");}else{field.val(val);}}}});window.location.href=window.location.href.replace(/(#rpctoken=[0-9]+).*/,"$1");}};gadget.configTemplate.addCallback(function(){AJS.$("body").addClass("config-active");gadget.configTemplate.getTarget().show();restoreValuesFromHash();if(gadget.approvalRequest){gadget.appendFooterApproval(gadget.approvalRequest);}AJS.$("button",gadget.getFooter()).hide();window.setTimeout(function(){gadget.resize();},0);});return function(){gadget.configTemplate.build();};}();gadget.showView=function(refresh){if(refresh){gadget.viewTemplate.build();}else{AJS.$("body").removeClass("config-active");gadget.configTemplate.getTarget().hide();gadget.resize();AJS.$("button",gadget.getFooter()).show();}};gadget.configTemplate.getTrigger=function(){var button=AJS.$("").appendTo(gadget.getFooter()).click(function(e){gadget.showConfig();e.preventDefault();});return function(){return button;};}();gadget.ajaxErrorHandler.handle400=function(superHandle400){var validationErrors,showFormErrors=function(){AJS.$(".error",gadget.configTemplate.getTarget()).hide();AJS.$(validationErrors).each(function(){var msg=gadget.getMsg(this.error,this.params);AJS.$(":input[name='"+this.field+"']").parent().find(".error").text(msg).show();AJS.$("#"+this.field+"-error").text(msg).show();});gadget.resize();validationErrors=null;};gadget.configTemplate.addCallback(function(){if(!gadget.getPrefs().getBool("isConfigured")||validationErrors){AJS.$("input.cancel",gadget.configTemplate.getTarget()).hide();}if(validationErrors){showFormErrors();}});return function(evt,response,settings){validationErrors=response.data.errors;if(!settings.isConfig){superHandle400.apply(gadget,arguments);}else{showFormErrors();}};}(gadget.ajaxErrorHandler.handle400);return gadget;};AJS.Gadget=function(options){var gadget,pubInterface,isWriteable=function(){if(gadgets.views){return gadgets.views.getParams().writable===undefined||gadgets.views.getParams().writable==="true";}},getStandardInterface=function(){return{showMessage:gadget.showMessage,savePref:gadget.savePref,setViewMode:gadget.setViewMode,getViewMode:gadget.getViewMode,getBaseUrl:gadget.getBaseUrl,getPrefs:gadget.getPrefs,getPref:gadget.getPref,getPrefArray:gadget.getPrefArray,getMsg:gadget.getMsg,getGadget:gadget.getGadget,resize:gadget.resize,showLoading:gadget.showLoading,hideLoading:gadget.hideLoading,createCookie:gadget.createCookie,readCookie:gadget.readCookie,eraseCookie:gadget.eraseCookie,isLocal:gadget.isLocal};},getConfiguredInterface=function(){return AJS.$.extend(getStandardInterface(),{getView:gadget.getView,showView:gadget.showView,getFooter:gadget.getFooter});},getConfigurableInterface=function(){return AJS.$.extend(getConfiguredInterface(),{showConfig:gadget.showConfig,getConfig:gadget.getConfig});};if(options.view&&!options.config){gadget=Standard(options);pubInterface=getStandardInterface();gadget.showView(true);}else{if(options.view&&options.config&&!isWriteable()){gadget=Configured(options);pubInterface=getConfiguredInterface();if(gadget.getPrefs().getBool("isConfigured")){gadget.showView(true);}}else{if(options.view&&options.config&&isWriteable()){gadget=Configurable(options);pubInterface=getConfigurableInterface();if(!gadget.getPrefs().getBool("isConfigured")){gadget.showConfig();}else{gadget.showView(true);}}}}return pubInterface;};AJS.gadget.Configurable=AJS.Gadget;})();
Lint at line 1 character 37998: The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.
(function(){AJS.$.fn.serializeArray=function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();if(val==null){val="";}return val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();};AJS.$.extend({put:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"PUT",url:url,data:data,success:callback,dataType:type});},del:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return AJS.$.ajax({type:"delete",url:url,data:data,success:callback,dataType:type});},ajax:function(ajax){var activeReq=0,dressResponse=function(xhr){var res={};res.rc=xhr.status;if(xhr.responseText!==""){res.data=gadgets.json.parse(xhr.responseText);}return res;};AJS.$.each("ajaxOpen,ajaxClosed,ajaxOauthApproval".split(","),function(i,o){AJS.$.fn[o]=function(f){return this.bind(o,f);};});AJS.$().ajaxSend(function(evt,req,options){if(++activeReq===1){AJS.$.event.trigger("ajaxOpen",[options]);}});AJS.$().ajaxComplete(function(evt,req,options){if(--activeReq===0){AJS.$.event.trigger("ajaxClosed",[options]);}});AJS.$.fn.ajaxComplete=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxComplete",f);};AJS.$.fn.ajaxError=function(f){f=function(actualF){return function(evt,response,options){if(response.status){actualF.call(this,evt,dressResponse(response),options);}else{actualF.apply(this,arguments);}};}(f);return this.bind("ajaxError",f);};return function(usrOptions){var reqOptions={};if(typeof options==="string"){options={url:options};}var options=usrOptions;for(var name in AJS.$.ajaxSettings){if(!options[name]&&options[name]!==false){options[name]=AJS.$.ajaxSettings[name];}}if(options.baseUrl){if(!/^(http)|(https):\/\//.test(options.url)){options.url=options.baseUrl+options.url;}}if(typeof atlassian!=="undefined"&&atlassian.util){if(atlassian.util.getRendererBaseUrl()===options.baseUrl&&new RegExp(options.baseUrl).test(options.url)){if(options.error){options.error=function(error){return function(xhr,type){if(!xhr.responseText){options.success.apply(this,arguments);}else{error.call(this,dressResponse(xhr));}};}(options.error);}ajax.call(this,options);return;}}reqOptions[gadgets.io.RequestParameters.METHOD]=gadgets.io.MethodType[options.type.toUpperCase()];reqOptions[gadgets.io.RequestParameters.CONTENT_TYPE]=gadgets.io.ContentType[options.dataType.toUpperCase()];reqOptions.url=options.url;if(options.headers){reqOptions[gadgets.io.RequestParameters.HEADERS]=options.headers;}if(options.authorization){reqOptions[gadgets.io.RequestParameters.AUTHORIZATION]=gadgets.io.AuthorizationType[options.authorization.toUpperCase()];}if(options.useToken){reqOptions.OAUTH_USE_TOKEN=options.useToken;}if(options.summaries){reqOptions[gadgets.io.RequestParameters.GET_SUMMARIES]=options.summaries;}if(options.entries){reqOptions[gadgets.io.RequestParameters.NUM_ENTRIES]=options.entries;}if(options.data){if(options.type.toLowerCase()==="get"){if(typeof options.data==="string"){reqOptions.url+=("?"+options.data.replace(/^\?/,""));}else{reqOptions.url+=("?"+gadgets.io.encodeValues(options.data).replace(/^\?/,""));}}else{reqOptions[gadgets.io.RequestParameters.POST_DATA]=options.data;}}reqOptions.success=function(response){if(options.complete){options.complete(response,options);}if(options.global){AJS.$.event.trigger("ajaxComplete",[response,options]);}if(response.errors&&response.errors.length||response.oauthError){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.dataType.toLowerCase()==="json"&&typeof response.data==="string"){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(response.rc!==200){if(options.error){options.error(response,options);}if(options.global){AJS.$.event.trigger("ajaxError",[response,options]);}return;}if(options.success&&(response||response.oauthApprovalUrl)){options.success(response.data||response);}if(options.global){AJS.$.event.trigger("ajaxSuccess",[response.data,options]);}};gadgets.io.makeRequest(reqOptions.url,reqOptions.success,reqOptions);if(options.ajaxSend){options.ajaxSend(options);}if(options.global){AJS.$.event.trigger("ajaxSend",[options]);}};}(AJS.$.ajax)});AJS.$.namespace("AJS.gadgets.templater");AJS.gadgets.templater.Base=function(){var cache,template,descriptor=function(args){return args;},callbacks=[],remoteArgs=[],args=[],renderTemplate=function(){var cache={};return function(str,data){var fn;if(!/\W/.test(str)){fn=cache[str];}else{var fnString="var p=[], print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+str.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');";fn=new Function("obj",fnString);}return data?fn(data):fn;};}();return{getDescriptorData:function(callback){var argLengthComparator=0,that=this,formattedArgs={};if(remoteArgs.length<1){AJS.$(args).each(function(){formattedArgs[this.key]=this.data;});if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}}AJS.$(remoteArgs).each(function(i,item){var reqOptions;if(typeof item.ajaxOptions==="string"){reqOptions={url:this.ajaxOptions};}else{if(AJS.$.isFunction(item.ajaxOptions)){reqOptions=item.ajaxOptions();}else{reqOptions=item.ajaxOptions;}}reqOptions.success=function(response){++argLengthComparator;formattedArgs[remoteArgs[i].key]=response;if(argLengthComparator===remoteArgs.length){var excuter=function(){if(callback){callback.call(that,descriptor(formattedArgs));}else{return descriptor(formattedArgs);}return arguments.callee;}();if(cache!==false){that.getDescriptorData=excuter;}}};AJS.$.ajax(reqOptions);});},disableCache:function(){cache=false;},setTemplate:function(templ){template=templ;},setDescriptor:function(desc){descriptor=desc;},addCallback:function(func){callbacks.push(func);},setRemoteDescriptorArg:function(key,ajaxOptions){remoteArgs.push({key:key,ajaxOptions:ajaxOptions});},setDescriptorArg:function(arg){args.push(arg);},build:function(data){var that=this;if(!data&&data!==false){this.getDescriptorData(this.build);}else{if(data!==false){if(typeof template==="string"&&document.getElementById(template)){that.build.template=AJS.$(template).html();var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(AJS.$.isFunction(template)){template(data);AJS.$(callbacks).each(function(){this.call(that,data);});}else{if(template.length>50){that.build.template=template;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}else{if(!that.build.template){AJS.$.ajax({url:template,dataType:"text",success:function(response){that.build.template=response;var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}});}else{var fragment=renderTemplate(that.build.template,data);AJS.$(callbacks).each(function(){this.call(that,AJS.$(fragment),data);});}}}}}}}};};AJS.gadgets.templater.Custom=function(options){var templater=AJS.gadgets.templater.Base();templater.setTemplate(options.template);if(options.descriptor){templater.setDescriptor(options.descriptor);}if(options.callback){templater.addCallback(options.callback);}if(options.cache===false){templater.disableCache();}AJS.$.extend(templater,{getTarget:function(){return options.target;}});if(options.args){AJS.$(options.args).each(function(){if(this.ajaxOptions){templater.setRemoteDescriptorArg(this.key,this.ajaxOptions);}else{templater.setDescriptorArg(this);}});}return templater;};AJS.gadgets.templater.Form=function(options){return AJS.gadgets.templater.Custom(AJS.$.extend({template:AJS.gadgets.templater.Form.template,baseUrl:AJS.gadget.getBaseUrl(),callback:function(response,data){if(options.target){options.target.html(response);if(options.submit){AJS.$("form",options.target).submit(options.submit);}if(options.cancel){AJS.$("input.cancel",options.target).click(options.cancel);}AJS.$(data.fields).each(function(){if(this.type==="callbackBuilder"){var targetDiv=AJS.$("div#"+this.id);this.callback(targetDiv);}});}else{return response;}}},options));};AJS.gadgets.templater.Table=function(options){var table,sortCol,sortOrd=[],sort=function(data,column,order){data.cols[column].theme=order;if(!data.cols[column].sorted){data.data.sort(function(item,compareItem){var dataItem=item[column].value,dataItemCompare=compareItem[column].value;if(!isNaN(parseFloat(dataItem))&&!isNaN(parseFloat(dataItemCompare))){dataItem=parseFloat(dataItem);dataItemCompare=parseFloat(dataItemCompare);}if(dataItem>dataItemCompare){return 1;}else{if(dataItem<% function createCheckboxGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %> <% for (var i=0; i < field.options.length; i++) { %> id="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> id="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> <% if ( field.value === "true" ) { %> checked = "checked" <% } %> <% if (field.value === "false") { field.value = "true"; } %> value="<%= field.value %>" name="<%= gadgets.util.escape(field.userpref) %>" /> <% if (field.options[i].label) { %> for="<%= gadgets.util.escape(field.options[i].id) %>" <% } else { %> for="<%= gadgets.util.escape(field.userpref + "-" + i) %>" <% } %> ><%= gadgets.util.escape(field.options[i].label) %> <% } %>
<% } %> <% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createRadioGroup (field) { %>id="<%= gadgets.util.escape(field.id) %>"<% } %> ><% if ( field.label ) { %><%= gadgets.util.escape(field.label) %> <% } %><% for (var i=0; i < field.options.length; i++) { %>
id="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>id="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %><% if (field.selected === field.options[i].value || field.options[i].selected) { %>checked = "checked"<% } %> <% if ( field.options[i].value ) { %> value="<%= gadgets.util.escape(field.options[i].value) %>" <% } %>name="<%= gadgets.util.escape(field.userpref) %>"/>for="<%= gadgets.util.escape(field.options[i].id) %>"<% } else { %>for="<%= gadgets.util.escape(field.userpref + "-" + i) %>"<% } %>><%= gadgets.util.escape(field.options[i].label) %>
<% } %>
<% if (field.description) { %> <%= field.description %>
<% } %> <% } %><% function createHiddenInput (field) { %> <% } %><% function createTextInput (field) { %> class="<%= gadgets.util.escape(styleClass) %>"<% } else { %>class="<%= gadgets.util.escape(field.type) %>"<% } %> <% if (field.value) { %> value="<%= gadgets.util.escape(field.value) %>" <% } %> <% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"/> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createLabel (field) { %><%= gadgets.util.escape(field.label) %> <% } %><% function createTextarea (field) { %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %> value="<%= gadgets.util.escape(item.value) %>"<% if ( field.selected === item.value || item.selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %> <% if (field.options[i].group.options) { %> <% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %> <% createOption(field.options[i].group.options[x]); %> <% } %> <% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createMultiSelect (field) { %><% function createOption (item) { %> id = "<%= gadgets.util.escape(item.id) %>"<% } %>value="<%= gadgets.util.escape(item.value) %>"<% var selected = false;if(field.value !== undefined && field.value.length > 0) { for(var i = 0; i < field.value.length; i++) { if(field.value[i] === item.value) { selected = true; break; } }}if (selected) { %> selected = "selected"<% } %>><%= gadgets.util.escape(item.label) %> <% } %>class="<%= gadgets.util.escape(field.styleClass) %>"<% } else { %> class="multi-select" <% } %><% if (!field.id) { %>id="<%= gadgets.util.escape(field.userpref) %>"<% } else { %>id="<%= gadgets.util.escape(field.id) %>"<% } %>name="<%= gadgets.util.escape(field.userpref) %>"><% for ( var i = 0; i < field.options.length; i++ ) { %><% if ( field.options[i].group ) { %><% for ( var x = 0; x < field.options[i].group.options.length; x++ ) { %><% createOption(field.options[i].group.options[x]); %><% } %> <% } else { %><% createOption(field.options[i]); %><% } %><% } %> <% if (field.description) { %> <%= field.description %> <% } %><% } %><% function createField(field, type) { %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %> <% } %><% if (field.type !== "radio" && field.type !== "checkbox"&& field.type !== "hidden") { %><% createLabel(field); %><% } %><% if (field.type == "select") { %><% createSelect(field); %> <% } else if (field.type == "multiselect") { %><% createMultiSelect(field); %><% } else if (field.type == "textarea") { %><% createTextarea(field); %><% } else if (field.type == "radio") { %><% createRadioGroup(field); %><% } else if (field.type == "checkbox") { %><% createCheckboxGroup(field); %><% } else if (field.type == "custom" && field.template) { %><%= field.template() %>
<% } else if (field.type == "callbackBuilder") { %> <% if (field.id){%>
<% } else { %>
<% } %>
<% } else if (field.type == "hidden") { %><% createHiddenInput(field); %><% } else { %><% createTextInput(field); %><% } %><% if (type !== "inline" && field.type !== "radio" && field.type !== "checkbox" && field.type !== "hidden") { %>
<% } %><% } %><% function createFieldset (fieldset, type) { %><% if (fieldset.title) { %><%= gadgets.util.escape(fieldset.title) %> <% } %><% if (fieldset.description) { %><%= gadgets.util.escape(fieldset.description) %>
<% } %><% for ( var i = 0; i < fieldset.fields.length; i++ ) { %><% createField(fieldset.fields[i], type); %><% } %> <% } %>';AJS.gadgets.templater.Table.template=' <% if (obj.cols) { %> <% AJS.$(obj.cols).each(function () { %> class="<%= this.theme %>" <% } %> ><%= this.header %>
<% }); %> <% } %> <% if (obj.data) { %> <% AJS.$(obj.data).each(function (i) { %> class="even" <% } %> > <% AJS.$(this).each(function () { %> <%= this.label %> <% }); %> <% }); %> <% } %>
';AJS.$.namespace("AJS.gadget");if(!console.warn){console.warn=function(){};}var Gadget=function(options){AJS.dropDown.Standard=function(dropDown){function canBeMovedToParentFrame(){return !AJS.$.browser.msie&&!AJS.$.browser.opera&&window.top.AJS;}function overflowsIframeHeight(){return parseInt(AJS.$("body").attr("scrollHeight"))>AJS.$("body").outerHeight();}function hideActiveDropdowns(e){if(AJS.$(e.target).parents(".aui-dropdown").length===0){window.top.AJS.$(window.top.document).trigger("click");AJS.$(document).trigger("click");}}function adjustDDPositioning(){if(AJS.dropDown.current&&AJS.dropDown.current.calculateDDPosition){AJS.dropDown.current.updateDDPosition();}}function parentAsContainerHandler(){var top;if(overflowsIframeHeight()){this.updateDDPosition();this.$.remove().addClass("gadget-dropdown");this.shadow.remove();this.shadow.appendTo(window.top.document.body);this.$.appendTo(window.top.document.body);arguments.callee=function(){this.$.css("top",top);this.shadow.css("top",top);};}}var iframeAsContainerHandler={show:function(){if(overflowsIframeHeight()&&gadgets.window.adjustHeight){iframeAsContainerHandler.restoreHeight=AJS.$("body").outerHeight();gadgets.window.adjustHeight(AJS.$("body").attr("scrollHeight"));}},hide:function(){if(iframeAsContainerHandler.restoreHeight){gadgets.window.adjustHeight(iframeAsContainerHandler.restoreHeight);iframeAsContainerHandler.restoreHeight=undefined;}}};if(window.top.AJS){AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);window.top.AJS.$(".dd-allocated, body").live("mousedown",hideActiveDropdowns);}AJS.$(window).resize(adjustDDPositioning);return function(options){var dropdowns;options.selectionHandler=options.selectionHandler||function(e,item){if(item[0].nodeName==="A"){window.top.location.href=item.attr("href");}else{window.top.location.href=AJS.$("a",item).attr("href");}};dropdowns=dropDown.call(this,options);AJS.$.each(dropdowns,function(){if(canBeMovedToParentFrame()){this.updateDDPosition=function(){var dropdownOffsets;function getLeftInPercent(left){return left/window.top.AJS.$("body").width()*100+"%";}function calculateOffsets(){var dropdownOffset=this.trigger.offset(),iframeOffset=window.top.AJS.$("#"+window.name).offset();return{top:dropdownOffset.top+this.trigger.outerHeight()+iframeOffset.top,left:dropdownOffset.left+iframeOffset.left+this.trigger.outerWidth()-this.$.outerWidth(),width:this.$.outerWidth()};}if(!this.trigger.is(":visible")){this.hide();}else{dropdownOffsets=calculateOffsets.call(this);this.$.css({top:dropdownOffsets.top,margin:0,left:getLeftInPercent(dropdownOffsets.left),right:"auto"});this.shadow.css({left:getLeftInPercent(dropdownOffsets.left-7),top:dropdownOffsets.top,right:"auto"});}};this.addCallback("show",parentAsContainerHandler);}else{this.addCallback("show",iframeAsContainerHandler.show);this.addCallback("hide",iframeAsContainerHandler.hide);}});return dropdowns;};}(AJS.dropDown.Standard);var prefs=new gadgets.Prefs(),viewMode,message=function(){var popup;return{show:function(msg,classNm,dismissible){var messageEl,buttons,cancelButton,buttonPanel,targHeight;messageEl=AJS.$("
").addClass(classNm).css({width:260,visiblity:"hidden"}).html(msg).appendTo("body");buttons=AJS.$("button",messageEl);if(dismissible!==false){cancelButton=AJS.$("").text(prefs.getMsg("gadget.common.cancel")).click(message.hide);}if(buttons.length>0||cancelButton){buttonPanel=AJS.$("").append(buttons).append(cancelButton);messageEl.append(buttonPanel);}message.hide();popup=new AJS.popup(messageEl.outerWidth(),messageEl.outerHeight(),"message");popup.element.html(messageEl);popup.show();AJS.$(".blanket").show();},hide:function(){if(popup){popup.remove();AJS.$(".blanket").remove();AJS.dim.dim=undefined;}}};}(),gadget={createCookie:function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}else{var expires="";}document.cookie=window.name+name+"="+value+expires+"; path=/";},readCookie:function(name){var nameEQ=window.name+name+"=";var ca=document.cookie.split(";");for(var i=0;i
").addClass("gadget").appendTo("body");return function(){return gadget;};}(),resize:function(size){if(gadgets.window.adjustHeight){window.setTimeout(function(){gadgets.window.adjustHeight(size);},0);}},isLocal:function(){if(typeof atlassian!=="undefined"&&atlassian.util){return atlassian.util.getRendererBaseUrl()===options.baseUrl;}},showLoading:function(){if(gadgets.window.getViewportDimensions&&gadgets.window.getViewportDimensions().width<250){AJS.$("body").addClass("loading-small");}else{AJS.$("body").addClass("loading");}},hideLoading:function(){AJS.$("body").removeClass("loading").removeClass("loading-small");},ajaxErrorHandler:{handle500:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.500"),settings.url,settings.url));},handle503:function(evt,response,settings){gadget.showMessage("error",response.data.errorMessages);},handle404:function(evt,response,settings){gadget.showMessage("error",AJS.format(gadget.getMsg("gadget.common.error.404"),settings.url,settings.url));},execute:function(evt,response,settings){if(response&&gadget.ajaxErrorHandler["handle"+response.rc]){gadget.ajaxErrorHandler["handle"+response.rc].apply(gadget,arguments);}}}};AJS.$("a, area").live("mouseover",function(){if(!AJS.$(this).attr("target")){AJS.$(this).attr({target:"_parent"});}});AJS.gadget.getBaseUrl=function(){return options.baseUrl;};if(options.useOauth&&window.location.href.indexOf(options.baseUrl)!==0){AJS.$.ajax=function(ajax){var queue=[],trustedAppsDenied=function(){ajax({authorization:"oauth",url:options.useOauth,data:{cacheBuster:new Date().getTime()},useToken:"always",complete:function(response){if(response.oauthApprovalUrl||response.rc===403){gadget.approvalUrl=response.oauthApprovalUrl;if(response.oauthApprovalUrl){gadget.approvalRequest=queue[0];}handleOauthApproval();}else{if(response.data){gadget.appendApprovedButton();makeOAuthRequests();}}}});},trustedAppsAccepted=function(){AJS.$.ajax=ajax;AJS.$(queue).each(function(){AJS.$.ajax(this);});},makeOAuthRequests=function(){AJS.$.ajax=ajax;AJS.$.ajaxSetup({authorization:"oauth",useToken:"always"});AJS.$(queue).each(function(){AJS.$.ajax(this);});},handleOauthApproval=function(){AJS.$.ajaxSetup({authorization:"oauth",useToken:"if_available"});var attachApprovalAdvice=function(request,idx){var cacheBuster=new Date().getTime();request.complete=function(complete){return function(response){if(idx===queue.length-1&&gadget.approvalRequest){if(response.rc===200||response.rc===400&&response.data){if(gadget.appendFooterApproval){gadget.appendFooterApproval(request);}}else{if(gadget.appendViewApproval&&gadget.approvalRequest){gadget.appendViewApproval(request);}}}if(complete){complete.apply(AJS.$.ajax,arguments);}};}(request.complete);if(typeof request.data==="object"){request.data.cacheBuster=cacheBuster;}else{if(typeof request.data==="string"){request.data+="&cacheBuster="+cacheBuster;}else{request.data="cacheBuster="+cacheBuster;}}if(!gadget.approvalRequest){request.global=false;request.error=function(response){if(response.rc===400){AJS.$("body").addClass("login").append(gadget.getMsg("gadget.common.container.login"));if(window.top.document){AJS.$("#"+window.name+"-chrome",window.top.document).css("opacity",0.7);}gadget.resize();}};}return request;};AJS.$.ajax=ajax;AJS.$(queue).each(function(i){AJS.$.ajax(attachApprovalAdvice(this,i));});};return function(settings){if(options.useOauth==="always"){AJS.$.ajaxSetup({authorization:"oauth",useOauth:"always"});settings.success=function(success){return function(response){if(response.oauthApprovalUrl){gadget.approvalUrl=response.oauthApprovalUrl;gadget.appendViewApproval(settings);}else{if(success){gadget.appendApprovedButton();success.apply(AJS.$.ajax,arguments);}}};}(settings.success);AJS.$.ajax=ajax;settings.useToken="always";AJS.$.ajax(settings);}else{AJS.$.ajax=function(ajaxSettings){queue.push(ajaxSettings);return arguments.callee;}(settings);ajax({url:options.useOauth,data:{cacheBuster:new Date().getTime()},complete:function(response,settings){if(response.rc===401){trustedAppsDenied(response,settings);}else{if(response.data){trustedAppsAccepted();}}}});}};}(AJS.$.ajax);}AJS.$.ajaxSetup({dataType:"json",type:"get",baseUrl:options.baseUrl});AJS.$().ajaxError(gadget.ajaxErrorHandler.execute);AJS.$().ajaxOpen(gadget.showLoading);AJS.$().ajaxClosed(gadget.hideLoading);return gadget;};var Standard=function(options){var gadget=Gadget(options);AJS.$.extend(gadget,{constructor:Standard,getView:function(){var view=AJS.$("
").addClass("view").appendTo(gadget.getGadget());return function(){return view;};}(),getFooter:function(){var footer=AJS.$("
").addClass("footer").appendTo(gadget.getGadget());AJS.$("body").addClass("has-footer-options");this.getFooter=function(){return footer;};return footer;},getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){window.location.reload();};request.useToken="always";AJS.$.ajax(request);});},getApprovalButton:function(request){var popup=gadget.getOauthPopup(request);return AJS.$("
").html(""+gadget.getMsg("gadget.common.oauth.approve.button")+" ").click(popup.createOpenerOnClick());},appendApprovedButton:function(){AJS.$(" ").appendTo(gadget.getFooter());},appendViewApproval:function(request){var approvalButton=gadget.getApprovalButton(request).appendTo("body");AJS.$("body").addClass("oauth-view-approval");return approvalButton;},appendFooterApproval:function(request){var popup=gadget.getOauthPopup(request);return AJS.$(" ").addClass("oauth").click(popup.createOpenerOnClick()).appendTo(gadget.getFooter());},viewTemplate:AJS.gadgets.templater.Custom({template:function(args){if(gadgets.views){gadget.setViewMode(gadgets.views.getCurrentView().getName());}options.view.template.call(gadget,args);gadget.showView();},cache:false,args:function(){var args=[];AJS.$(options.view.args).each(function(){if(AJS.$.isFunction(this.ajaxOptions)){var that=this;args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}()})});gadget.showView=function(){gadget.viewTemplate.addCallback(gadget.resize);return function(refresh){if(refresh){gadget.viewTemplate.build();}else{gadget.getView().show();gadget.resize();}};}();if(options.view.onResizeReload){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){if(gadget.getView().is(":visible")){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.showView(true);width=newWidth;}}};}());}if(options.view.onResizeAdjustHeight){AJS.$(window).resize(function(){var width=gadgets.window.getViewportDimensions().width;return function(){var newWidth=gadgets.window.getViewportDimensions().width;if(width>(newWidth+50)||width<(newWidth-50)){gadget.resize();width=newWidth;}};}());}return gadget;};var Configured=function(options){var gadget=Standard(options);gadget.constructor=Configured;gadget.ajaxErrorHandler.handle400=function(evt,response){if(AJS.$("body").hasClass("config-unavailable")){return;}var errorContainer=AJS.$("
").append(""+gadget.getMsg("gadget.common.config.unavailable")+"
").appendTo(gadget.getView()),errorList=AJS.$("").appendTo(errorContainer);AJS.$("body").addClass("config-unavailable");AJS.$(response.data.errors).each(function(){AJS.$(" ").append(""+gadget.getMsg(this.error,this.params)+" ").appendTo(errorList);});gadget.resize();};if(options.view.enableReload){if(gadget.getPref("refresh")!==""&&gadget.getPref("refresh")!=="false"){window.setInterval(function(){gadget.showView(true);},60000*gadget.getPref("refresh"));}AJS.$(" ").click(function(){gadget.showView(true);}).appendTo(gadget.getFooter());}return gadget;};var Configurable=function(options){var gadget=Configured(options);AJS.$.extend(gadget,{constructor:Configurable,appendFooterApproval:function(superAppendFooterApproval){return function(request){if(AJS.$(".info.footer-message").length<1){AJS.$("
").addClass("info footer-message").html(""+gadget.getMsg("gadget.common.oauth.approve.message")+"
").append(gadget.getApprovalButton(request)).insertBefore(AJS.$(":first",gadget.configTemplate.getTarget()));gadget.resize();}superAppendFooterApproval.apply(gadget,arguments);};}(gadget.appendFooterApproval),getOauthPopup:function(request){if(request!==undefined){gadget.lastRequest=request;}request=gadget.lastRequest;return new gadgets.oauth.Popup(gadget.approvalUrl,null,function(){},function(){request.success=function(){function persistFormInHash(){window.location.href+="&"+AJS.$("form",gadget.configTemplate.getTarget()).serialize()+"}";}if(gadget.getPrefs().getBool("isConfigured")&&!/isConfigured=true/.test(window.location.href)){persistFormInHash();window.top.location.reload();}else{persistFormInHash();window.location.reload();}};request.useToken="always";AJS.$.ajax(request);});},configTemplate:AJS.gadgets.templater.Form({target:AJS.$("
").appendTo(document.body),descriptor:function(args){var descriptor=options.config.descriptor.call(gadget,args);if(options.view.enableReload){descriptor.fields.push({userpref:"refresh",label:gadget.getMsg("gadget.common.refresh.label"),description:gadget.getMsg("gadget.common.refresh.description"),selected:gadget.getPref("refresh"),options:[{value:"false",label:gadget.getMsg("gadget.common.refresh.never")},{value:"15",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),15)},{value:"30",label:AJS.format(gadget.getMsg("gadget.common.refresh.minutes"),30)},{value:"60",label:AJS.format(gadget.getMsg("gadget.common.refresh.hour"),1)},{value:"120",label:AJS.format(gadget.getMsg("gadget.common.refresh.hours"),2)}],type:"select"});}return descriptor;},args:function(){var args=[];if(AJS.$.isFunction(options.config.args)){options.config.args=options.config.args();}AJS.$(options.config.args).each(function(){var that=this;if(AJS.$.isFunction(this.ajaxOptions)){args.push({key:this.key,ajaxOptions:function(args){return that.ajaxOptions.call(gadget,args);}});}else{args.push(this);}});return args;}(),cancel:function(e){gadget.showView();e.preventDefault();},submit:function(e){var form=AJS.$(this),save=function(){AJS.$(form.serializeArray()).each(function(){gadget.savePref(this.name,this.value);});gadget.showView(true);};if(form.attr("action")!==""){AJS.$.ajax({type:"get",url:form.attr("action"),data:form.serialize(),global:false,success:function(){var fieldValues={};AJS.$(form.serializeArray()).each(function(){var fieldVal=fieldValues[this.name];if(!fieldVal){fieldVal=this.value;}else{if(AJS.$.isArray(fieldVal)){fieldVal.push(this.value);}else{fieldVal=[fieldVal,this.value];}}fieldValues[this.name]=fieldVal;});AJS.$(":checkbox:not(:checked)",form).each(function(){fieldValues[this.name]="false";});for(var name in fieldValues){gadget.savePref(name,fieldValues[name]);}gadget.showView(true);},error:function(response,settings){gadget.ajaxErrorHandler.execute(null,response,AJS.$.extend(settings,{isConfig:true}));}});}else{save();}e.preventDefault();}}),getConfig:function(){return gadget.configTemplate.getTarget();}});gadget.showConfig=function(){var restoreValuesFromHash=function(){if(!/#rpctoken=[0-9]+$/.test(window.location.href)){var options,fields=window.location.href.replace(/.*?#/,"").split("&");AJS.$.each(fields,function(){var name=this.split("=")[0],val=this.split("=")[1],field=AJS.$(":input[name="+name+"]");if(field.length>0){if(field.is("select")){options=val.split(",");AJS.$.each(options,function(){AJS.$("option[value="+this+"]",field).attr("selected","selected");});}else{if(field.is(":radio,:checkbox")){field.attr("checked","checked");}else{field.val(val);}}}});window.location.href=window.location.href.replace(/(#rpctoken=[0-9]+).*/,"$1");}};gadget.configTemplate.addCallback(function(){AJS.$("body").addClass("config-active");gadget.configTemplate.getTarget().show();restoreValuesFromHash();if(gadget.approvalRequest){gadget.appendFooterApproval(gadget.approvalRequest);}AJS.$("button",gadget.getFooter()).hide();window.setTimeout(function(){gadget.resize();},0);});return function(){gadget.configTemplate.build();};}();gadget.showView=function(refresh){if(refresh){gadget.viewTemplate.build();}else{AJS.$("body").removeClass("config-active");gadget.configTemplate.getTarget().hide();gadget.resize();AJS.$("button",gadget.getFooter()).show();}};gadget.configTemplate.getTrigger=function(){var button=AJS.$("").appendTo(gadget.getFooter()).click(function(e){gadget.showConfig();e.preventDefault();});return function(){return button;};}();gadget.ajaxErrorHandler.handle400=function(superHandle400){var validationErrors,showFormErrors=function(){AJS.$(".error",gadget.configTemplate.getTarget()).hide();AJS.$(validationErrors).each(function(){var msg=gadget.getMsg(this.error,this.params);AJS.$(":input[name='"+this.field+"']").parent().find(".error").text(msg).show();AJS.$("#"+this.field+"-error").text(msg).show();});gadget.resize();validationErrors=null;};gadget.configTemplate.addCallback(function(){if(!gadget.getPrefs().getBool("isConfigured")||validationErrors){AJS.$("input.cancel",gadget.configTemplate.getTarget()).hide();}if(validationErrors){showFormErrors();}});return function(evt,response,settings){validationErrors=response.data.errors;if(!settings.isConfig){superHandle400.apply(gadget,arguments);}else{showFormErrors();}};}(gadget.ajaxErrorHandler.handle400);return gadget;};AJS.Gadget=function(options){var gadget,pubInterface,isWriteable=function(){if(gadgets.views){return gadgets.views.getParams().writable===undefined||gadgets.views.getParams().writable==="true";}},getStandardInterface=function(){return{showMessage:gadget.showMessage,savePref:gadget.savePref,setViewMode:gadget.setViewMode,getViewMode:gadget.getViewMode,getBaseUrl:gadget.getBaseUrl,getPrefs:gadget.getPrefs,getPref:gadget.getPref,getPrefArray:gadget.getPrefArray,getMsg:gadget.getMsg,getGadget:gadget.getGadget,resize:gadget.resize,showLoading:gadget.showLoading,hideLoading:gadget.hideLoading,createCookie:gadget.createCookie,readCookie:gadget.readCookie,eraseCookie:gadget.eraseCookie,isLocal:gadget.isLocal};},getConfiguredInterface=function(){return AJS.$.extend(getStandardInterface(),{getView:gadget.getView,showView:gadget.showView,getFooter:gadget.getFooter});},getConfigurableInterface=function(){return AJS.$.extend(getConfiguredInterface(),{showConfig:gadget.showConfig,getConfig:gadget.getConfig});};if(options.view&&!options.config){gadget=Standard(options);pubInterface=getStandardInterface();gadget.showView(true);}else{if(options.view&&options.config&&!isWriteable()){gadget=Configured(options);pubInterface=getConfiguredInterface();if(gadget.getPrefs().getBool("isConfigured")){gadget.showView(true);}}else{if(options.view&&options.config&&isWriteable()){gadget=Configurable(options);pubInterface=getConfigurableInterface();if(!gadget.getPrefs().getBool("isConfigured")){gadget.showConfig();}else{gadget.showView(true);}}}}return pubInterface;};AJS.gadget.Configurable=AJS.Gadget;})();
ajs-gadgets.js
Lint at line 146 character 41: Missing space after 'function'.
AJS.gadgets.oauth.makeRequest = function(url, params) {
Lint at line 147 character 29: Missing space after 'function'.
var doNothing = function() {};
Lint at line 148 character 38: Missing space after 'function'.
var showOAuthPopupLink = function(approvalUrl) {
Lint at line 176 character 45: Missing space after 'function'.
var showOAuthApprovalDoneLink = function() {
Lint at line 180 character 37: Missing space after 'function'.
var hideApprovalLinks = function() {
Lint at line 187 character 6: Bad line breaking before '&&'.
&& gParams[gadgets.io.RequestParameters.AUTHORIZATION] != gadgets.io.AuthorizationType.OAUTH) {
Lint at line 187 character 61: Expected '!==' and instead saw '!='.
&& gParams[gadgets.io.RequestParameters.AUTHORIZATION] != gadgets.io.AuthorizationType.OAUTH) {
Lint at line 196 character 31: Missing space after 'function'.
var makeRequest = function() {
Lint at line 212 character 58: Missing space after 'function'.
params.onPopupClose = params.onPopupClose || function() {
Lint at line 215 character 6: Missing semicolon.
}
ajs.gadgets.js
Lint at line 62 character 17: Use '===' to compare with 'null'.
if (val == null) {
Lint at line 180 character 25: 'options' was used before it was defined.
var options = usrOptions;
Lint at line 234 character 28: ['OAUTH_USE_TOKEN'] is better written in dot notation.
reqOptions["OAUTH_USE_TOKEN"] = options.useToken;
Lint at line 420 character 21: Bad line breaking before '+'.
+ "');}return p.join('');";
Lint at line 422 character 34: The Function constructor is eval.
fn = new Function("obj", fnString);
Lint at line 581 character 34: 'fragment' is already defined.
var fragment = renderTemplate(that.build.template, data);
Lint at line 599 character 38: 'fragment' is already defined.
var fragment = renderTemplate(that.build.template, data);
Lint at line 818 character 20: Missing radix parameter.
return parseInt(AJS.$("body").attr("scrollHeight")) > AJS.$("body").outerHeight();
Lint at line 843 character 34: Bad assignment.
arguments.callee = function () {
Lint at line 849 character 10: Unnecessary semicolon.
};
Lint at line 1042 character 18: Expected '{' and instead saw 'var'.
else var expires = "";
Lint at line 1042 character 30: 'expires' is already defined.
else var expires = "";
Lint at line 1059 character 42: Expected '{' and instead saw 'c'.
while (c.charAt(0)==' ') c = c.substring(1,c.length);
Lint at line 1060 character 39: Use '===' to compare with '0'.
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
Lint at line 1060 character 45: Expected '{' and instead saw 'return'.
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
Lint at line 1418 character 30: Unnecessary semicolon.
};
Lint at line 2078 character 33: The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.
for (var name in fieldValues) {