function selectColumn(){var n=$(this),t=n.data("type-index");$(".definition td.selected").removeClass("selected");$(".definition td[data-type-index="+t+"]").addClass("selected");updateDisplay()}function selectCell(){var n=$(this),t=n.closest("tr").data("row-index");$(".definition tr[data-row-index="+t+"] td.selected").removeClass("selected");n.addClass("selected");updateDisplay()}function createEquivalentTypeMap(n,t,i){for(var h,f,c,e,o,s,r=new Map,u=t;u<=i;u++)(h=$(".definition tr[data-row-index="+n+"] td[data-type-index="+u+"]"),h)&&(f=h.text().toLowerCase(),f.match(/^\s*same\s+as\s+type\s+(i{1,3}|iv|vi{0,3})\s*$/)&&(f=replaceRomanNumerals(f)),c=f.match(/^\s*same\s+as\s+type\s+(\d+)\s*$/),c)&&(e=c[1]-1,r.has(u)||r.set(u,new Set),r.has(e)||r.set(e,new Set),o=r.get(u),s=r.get(e),o.add(e),s.add(u),o.forEach(function(n){s.add(n)}),s.forEach(function(n){o.add(n)}));return r}function createRowData(n,t){return{selectedTypeIndex:t,isEquivalentWithSelectedType:function(i){return i==t||n.has(i)&&n.get(i).has(t)||n.has(t)&&n.get(t).has(i)}}}function isTypeSelectable(n,t,i){if(n.isEquivalentWithSelectedType(t))return!0;if(t<n.selectedTypeIndex)return!1;for(var r=t+1;r<=i;r++)if(n.isEquivalentWithSelectedType(r))return!1;return!0}function getMinimumEquivalentTypeIndex(){var i=[],r=[],f,t,e,n;$(".definition tr[data-row-index]").each(function(){i.push($(this).data("row-index"))});$(".definition tr[data-row-index] td[data-type-index]").each(function(){r.push($(this).data("type-index"))});var o=Math.min.apply(Math,i),s=Math.max.apply(Math,i),h=Math.min.apply(Math,r),u=Math.max.apply(Math,r),c=[];for(n=o;n<=s;n++){if(f=$(".definition tr[data-row-index="+n+"] td.selected"),f.length==0)return-1;c[n]=createRowData(createEquivalentTypeMap(n,h,u),f.data("type-index"))}for(t=h;t<=u;t++){for(e=!0,n=o;n<=s;n++)if(!isTypeSelectable(c[n],t,u)){e=!1;break}if(e)return t}return-1}function updateDisplay(){var t=getMinimumEquivalentTypeIndex(),n=$(".type-display"),i;t>=0?(i=t<_typeColumns.Types.length?_typeColumns.Types[t]:null,i!=null?(n.text("You have a "+i.Name+" "+_assetType),n.show()):n.hide()):n.hide()}function isNotEmptyTypeColumn(){var n=$(this),t=n.data("type-index");return _typeColumns.ColumnIsEmptyMap[t]==!1}function replaceRomanNumerals(n){for(var i,r=[{roman:"viii",decimal:8},{roman:"vii",decimal:7},{roman:"iii",decimal:3},{roman:"vi",decimal:6},{roman:"iv",decimal:4},{roman:"ii",decimal:2},{roman:"v",decimal:5},{roman:"i",decimal:1}],t=0;t<r.length;t++)i=r[t],n=n.replace(i.roman,i.decimal);return n}$(function(){var n=_assetType.toLowerCase(),t=$("table.definition.components");t.before("<div class='alert-message margin-top'><span class='header'>"+_assetType+" Typing Calculator:<\/span> To calculate a "+n+"'s type, select the cells below that are applicable to the "+n+". (Select the column header to choose an entire column.) The calculated "+n+" type is displayed at the bottom of the screen.<\/div>");$(".definition .header th.type").filter(isNotEmptyTypeColumn).click(selectColumn).addClass("clickable");$(".definition td.type").filter(isNotEmptyTypeColumn).click(selectCell).addClass("clickable");t.after('<span class="type-display alert-message margin-top"><\/span>');updateDisplay()})