Files
ferglie/static/CACHE/js/892520a374a9.js
Fergal Moran 0c4e910b9e MVP Done
2017-05-09 23:31:55 +01:00

139 lines
75 KiB
JavaScript

angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.transition","ui.bootstrap.collapse","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.bindHtml","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.position","ui.bootstrap.datepicker","ui.bootstrap.dropdownToggle","ui.bootstrap.modal","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]);angular.module("ui.bootstrap.tpls",["template/accordion/accordion-group.html","template/accordion/accordion.html","template/alert/alert.html","template/carousel/carousel.html","template/carousel/slide.html","template/datepicker/datepicker.html","template/datepicker/popup.html","template/modal/backdrop.html","template/modal/window.html","template/pagination/pager.html","template/pagination/pagination.html","template/tooltip/tooltip-html-unsafe-popup.html","template/tooltip/tooltip-popup.html","template/popover/popover.html","template/progressbar/bar.html","template/progressbar/progress.html","template/progressbar/progressbar.html","template/rating/rating.html","template/tabs/tab.html","template/tabs/tabset.html","template/timepicker/timepicker.html","template/typeahead/typeahead-match.html","template/typeahead/typeahead-popup.html"]);angular.module('ui.bootstrap.transition',[]).factory('$transition',['$q','$timeout','$rootScope',function($q,$timeout,$rootScope){var $transition=function(element,trigger,options){options=options||{};var deferred=$q.defer();var endEventName=$transition[options.animation?"animationEndEventName":"transitionEndEventName"];var transitionEndHandler=function(event){$rootScope.$apply(function(){element.unbind(endEventName,transitionEndHandler);deferred.resolve(element);});};if(endEventName){element.bind(endEventName,transitionEndHandler);}
$timeout(function(){if(angular.isString(trigger)){element.addClass(trigger);}else if(angular.isFunction(trigger)){trigger(element);}else if(angular.isObject(trigger)){element.css(trigger);}
if(!endEventName){deferred.resolve(element);}});deferred.promise.cancel=function(){if(endEventName){element.unbind(endEventName,transitionEndHandler);}
deferred.reject('Transition cancelled');};return deferred.promise;};var transElement=document.createElement('trans');var transitionEndEventNames={'WebkitTransition':'webkitTransitionEnd','MozTransition':'transitionend','OTransition':'oTransitionEnd','transition':'transitionend'};var animationEndEventNames={'WebkitTransition':'webkitAnimationEnd','MozTransition':'animationend','OTransition':'oAnimationEnd','transition':'animationend'};function findEndEventName(endEventNames){for(var name in endEventNames){if(transElement.style[name]!==undefined){return endEventNames[name];}}}
$transition.transitionEndEventName=findEndEventName(transitionEndEventNames);$transition.animationEndEventName=findEndEventName(animationEndEventNames);return $transition;}]);angular.module('ui.bootstrap.collapse',['ui.bootstrap.transition']).directive('collapse',['$transition',function($transition,$timeout){return{link:function(scope,element,attrs){var initialAnimSkip=true;var currentTransition;function doTransition(change){var newTransition=$transition(element,change);if(currentTransition){currentTransition.cancel();}
currentTransition=newTransition;newTransition.then(newTransitionDone,newTransitionDone);return newTransition;function newTransitionDone(){if(currentTransition===newTransition){currentTransition=undefined;}}}
function expand(){if(initialAnimSkip){initialAnimSkip=false;expandDone();}else{element.removeClass('collapse').addClass('collapsing');doTransition({height:element[0].scrollHeight+'px'}).then(expandDone);}}
function expandDone(){element.removeClass('collapsing');element.addClass('collapse in');element.css({height:'auto'});}
function collapse(){if(initialAnimSkip){initialAnimSkip=false;collapseDone();element.css({height:0});}else{element.css({height:element[0].scrollHeight+'px'});var x=element[0].offsetWidth;element.removeClass('collapse in').addClass('collapsing');doTransition({height:0}).then(collapseDone);}}
function collapseDone(){element.removeClass('collapsing');element.addClass('collapse');}
scope.$watch(attrs.collapse,function(shouldCollapse){if(shouldCollapse){collapse();}else{expand();}});}};}]);angular.module('ui.bootstrap.accordion',['ui.bootstrap.collapse']).constant('accordionConfig',{closeOthers:true}).controller('AccordionController',['$scope','$attrs','accordionConfig',function($scope,$attrs,accordionConfig){this.groups=[];this.closeOthers=function(openGroup){var closeOthers=angular.isDefined($attrs.closeOthers)?$scope.$eval($attrs.closeOthers):accordionConfig.closeOthers;if(closeOthers){angular.forEach(this.groups,function(group){if(group!==openGroup){group.isOpen=false;}});}};this.addGroup=function(groupScope){var that=this;this.groups.push(groupScope);groupScope.$on('$destroy',function(event){that.removeGroup(groupScope);});};this.removeGroup=function(group){var index=this.groups.indexOf(group);if(index!==-1){this.groups.splice(this.groups.indexOf(group),1);}};}]).directive('accordion',function(){return{restrict:'EA',controller:'AccordionController',transclude:true,replace:false,templateUrl:'template/accordion/accordion.html'};}).directive('accordionGroup',['$parse',function($parse){return{require:'^accordion',restrict:'EA',transclude:true,replace:true,templateUrl:'template/accordion/accordion-group.html',scope:{heading:'@'},controller:function(){this.setHeading=function(element){this.heading=element;};},link:function(scope,element,attrs,accordionCtrl){var getIsOpen,setIsOpen;accordionCtrl.addGroup(scope);scope.isOpen=false;if(attrs.isOpen){getIsOpen=$parse(attrs.isOpen);setIsOpen=getIsOpen.assign;scope.$parent.$watch(getIsOpen,function(value){scope.isOpen=!!value;});}
scope.$watch('isOpen',function(value){if(value){accordionCtrl.closeOthers(scope);}
if(setIsOpen){setIsOpen(scope.$parent,value);}});}};}]).directive('accordionHeading',function(){return{restrict:'EA',transclude:true,template:'',replace:true,require:'^accordionGroup',compile:function(element,attr,transclude){return function link(scope,element,attr,accordionGroupCtrl){accordionGroupCtrl.setHeading(transclude(scope,function(){}));};}};}).directive('accordionTransclude',function(){return{require:'^accordionGroup',link:function(scope,element,attr,controller){scope.$watch(function(){return controller[attr.accordionTransclude];},function(heading){if(heading){element.html('');element.append(heading);}});}};});angular.module("ui.bootstrap.alert",[]).controller('AlertController',['$scope','$attrs',function($scope,$attrs){$scope.closeable='close'in $attrs;}]).directive('alert',function(){return{restrict:'EA',controller:'AlertController',templateUrl:'template/alert/alert.html',transclude:true,replace:true,scope:{type:'=',close:'&'}};});angular.module('ui.bootstrap.bindHtml',[]).directive('bindHtmlUnsafe',function(){return function(scope,element,attr){element.addClass('ng-binding').data('$binding',attr.bindHtmlUnsafe);scope.$watch(attr.bindHtmlUnsafe,function bindHtmlUnsafeWatchAction(value){element.html(value||'');});};});angular.module('ui.bootstrap.buttons',[]).constant('buttonConfig',{activeClass:'active',toggleEvent:'click'}).controller('ButtonsController',['buttonConfig',function(buttonConfig){this.activeClass=buttonConfig.activeClass||'active';this.toggleEvent=buttonConfig.toggleEvent||'click';}]).directive('btnRadio',function(){return{require:['btnRadio','ngModel'],controller:'ButtonsController',link:function(scope,element,attrs,ctrls){var buttonsCtrl=ctrls[0],ngModelCtrl=ctrls[1];ngModelCtrl.$render=function(){element.toggleClass(buttonsCtrl.activeClass,angular.equals(ngModelCtrl.$modelValue,scope.$eval(attrs.btnRadio)));};element.bind(buttonsCtrl.toggleEvent,function(){if(!element.hasClass(buttonsCtrl.activeClass)){scope.$apply(function(){ngModelCtrl.$setViewValue(scope.$eval(attrs.btnRadio));ngModelCtrl.$render();});}});}};}).directive('btnCheckbox',function(){return{require:['btnCheckbox','ngModel'],controller:'ButtonsController',link:function(scope,element,attrs,ctrls){var buttonsCtrl=ctrls[0],ngModelCtrl=ctrls[1];function getTrueValue(){return getCheckboxValue(attrs.btnCheckboxTrue,true);}
function getFalseValue(){return getCheckboxValue(attrs.btnCheckboxFalse,false);}
function getCheckboxValue(attributeValue,defaultValue){var val=scope.$eval(attributeValue);return angular.isDefined(val)?val:defaultValue;}
ngModelCtrl.$render=function(){element.toggleClass(buttonsCtrl.activeClass,angular.equals(ngModelCtrl.$modelValue,getTrueValue()));};element.bind(buttonsCtrl.toggleEvent,function(){scope.$apply(function(){ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass)?getFalseValue():getTrueValue());ngModelCtrl.$render();});});}};});angular.module('ui.bootstrap.carousel',['ui.bootstrap.transition']).controller('CarouselController',['$scope','$timeout','$transition','$q',function($scope,$timeout,$transition,$q){var self=this,slides=self.slides=[],currentIndex=-1,currentTimeout,isPlaying;self.currentSlide=null;var destroyed=false;self.select=function(nextSlide,direction){var nextIndex=slides.indexOf(nextSlide);if(direction===undefined){direction=nextIndex>currentIndex?"next":"prev";}
if(nextSlide&&nextSlide!==self.currentSlide){if($scope.$currentTransition){$scope.$currentTransition.cancel();$timeout(goNext);}else{goNext();}}
function goNext(){if(destroyed){return;}
if(self.currentSlide&&angular.isString(direction)&&!$scope.noTransition&&nextSlide.$element){nextSlide.$element.addClass(direction);var reflow=nextSlide.$element[0].offsetWidth;angular.forEach(slides,function(slide){angular.extend(slide,{direction:'',entering:false,leaving:false,active:false});});angular.extend(nextSlide,{direction:direction,active:true,entering:true});angular.extend(self.currentSlide||{},{direction:direction,leaving:true});$scope.$currentTransition=$transition(nextSlide.$element,{});(function(next,current){$scope.$currentTransition.then(function(){transitionDone(next,current);},function(){transitionDone(next,current);});}(nextSlide,self.currentSlide));}else{transitionDone(nextSlide,self.currentSlide);}
self.currentSlide=nextSlide;currentIndex=nextIndex;restartTimer();}
function transitionDone(next,current){angular.extend(next,{direction:'',active:true,leaving:false,entering:false});angular.extend(current||{},{direction:'',active:false,leaving:false,entering:false});$scope.$currentTransition=null;}};$scope.$on('$destroy',function(){destroyed=true;});self.indexOfSlide=function(slide){return slides.indexOf(slide);};$scope.next=function(){var newIndex=(currentIndex+1)%slides.length;if(!$scope.$currentTransition){return self.select(slides[newIndex],'next');}};$scope.prev=function(){var newIndex=currentIndex-1<0?slides.length-1:currentIndex-1;if(!$scope.$currentTransition){return self.select(slides[newIndex],'prev');}};$scope.select=function(slide){self.select(slide);};$scope.isActive=function(slide){return self.currentSlide===slide;};$scope.slides=function(){return slides;};$scope.$watch('interval',restartTimer);$scope.$on('$destroy',resetTimer);function restartTimer(){resetTimer();var interval=+$scope.interval;if(!isNaN(interval)&&interval>=0){currentTimeout=$timeout(timerFn,interval);}}
function resetTimer(){if(currentTimeout){$timeout.cancel(currentTimeout);currentTimeout=null;}}
function timerFn(){if(isPlaying){$scope.next();restartTimer();}else{$scope.pause();}}
$scope.play=function(){if(!isPlaying){isPlaying=true;restartTimer();}};$scope.pause=function(){if(!$scope.noPause){isPlaying=false;resetTimer();}};self.addSlide=function(slide,element){slide.$element=element;slides.push(slide);if(slides.length===1||slide.active){self.select(slides[slides.length-1]);if(slides.length==1){$scope.play();}}else{slide.active=false;}};self.removeSlide=function(slide){var index=slides.indexOf(slide);slides.splice(index,1);if(slides.length>0&&slide.active){if(index>=slides.length){self.select(slides[index-1]);}else{self.select(slides[index]);}}else if(currentIndex>index){currentIndex--;}};}]).directive('carousel',[function(){return{restrict:'EA',transclude:true,replace:true,controller:'CarouselController',require:'carousel',templateUrl:'template/carousel/carousel.html',scope:{interval:'=',noTransition:'=',noPause:'='}};}]).directive('slide',['$parse',function($parse){return{require:'^carousel',restrict:'EA',transclude:true,replace:true,templateUrl:'template/carousel/slide.html',scope:{},link:function(scope,element,attrs,carouselCtrl){if(attrs.active){var getActive=$parse(attrs.active);var setActive=getActive.assign;var lastValue=scope.active=getActive(scope.$parent);scope.$watch(function parentActiveWatch(){var parentActive=getActive(scope.$parent);if(parentActive!==scope.active){if(parentActive!==lastValue){lastValue=scope.active=parentActive;}else{setActive(scope.$parent,parentActive=lastValue=scope.active);}}
return parentActive;});}
carouselCtrl.addSlide(scope,element);scope.$on('$destroy',function(){carouselCtrl.removeSlide(scope);});scope.$watch('active',function(active){if(active){carouselCtrl.select(scope);}});}};}]);angular.module('ui.bootstrap.position',[]).factory('$position',['$document','$window',function($document,$window){function getStyle(el,cssprop){if(el.currentStyle){return el.currentStyle[cssprop];}else if($window.getComputedStyle){return $window.getComputedStyle(el)[cssprop];}
return el.style[cssprop];}
function isStaticPositioned(element){return(getStyle(element,"position")||'static')==='static';}
var parentOffsetEl=function(element){var docDomEl=$document[0];var offsetParent=element.offsetParent||docDomEl;while(offsetParent&&offsetParent!==docDomEl&&isStaticPositioned(offsetParent)){offsetParent=offsetParent.offsetParent;}
return offsetParent||docDomEl;};return{position:function(element){var elBCR=this.offset(element);var offsetParentBCR={top:0,left:0};var offsetParentEl=parentOffsetEl(element[0]);if(offsetParentEl!=$document[0]){offsetParentBCR=this.offset(angular.element(offsetParentEl));offsetParentBCR.top+=offsetParentEl.clientTop-offsetParentEl.scrollTop;offsetParentBCR.left+=offsetParentEl.clientLeft-offsetParentEl.scrollLeft;}
var boundingClientRect=element[0].getBoundingClientRect();return{width:boundingClientRect.width||element.prop('offsetWidth'),height:boundingClientRect.height||element.prop('offsetHeight'),top:elBCR.top-offsetParentBCR.top,left:elBCR.left-offsetParentBCR.left};},offset:function(element){var boundingClientRect=element[0].getBoundingClientRect();return{width:boundingClientRect.width||element.prop('offsetWidth'),height:boundingClientRect.height||element.prop('offsetHeight'),top:boundingClientRect.top+($window.pageYOffset||$document[0].body.scrollTop||$document[0].documentElement.scrollTop),left:boundingClientRect.left+($window.pageXOffset||$document[0].body.scrollLeft||$document[0].documentElement.scrollLeft)};}};}]);angular.module('ui.bootstrap.datepicker',['ui.bootstrap.position']).constant('datepickerConfig',{dayFormat:'dd',monthFormat:'MMMM',yearFormat:'yyyy',dayHeaderFormat:'EEE',dayTitleFormat:'MMMM yyyy',monthTitleFormat:'yyyy',showWeeks:true,startingDay:0,yearRange:20,minDate:null,maxDate:null}).controller('DatepickerController',['$scope','$attrs','dateFilter','datepickerConfig',function($scope,$attrs,dateFilter,dtConfig){var format={day:getValue($attrs.dayFormat,dtConfig.dayFormat),month:getValue($attrs.monthFormat,dtConfig.monthFormat),year:getValue($attrs.yearFormat,dtConfig.yearFormat),dayHeader:getValue($attrs.dayHeaderFormat,dtConfig.dayHeaderFormat),dayTitle:getValue($attrs.dayTitleFormat,dtConfig.dayTitleFormat),monthTitle:getValue($attrs.monthTitleFormat,dtConfig.monthTitleFormat)},startingDay=getValue($attrs.startingDay,dtConfig.startingDay),yearRange=getValue($attrs.yearRange,dtConfig.yearRange);this.minDate=dtConfig.minDate?new Date(dtConfig.minDate):null;this.maxDate=dtConfig.maxDate?new Date(dtConfig.maxDate):null;function getValue(value,defaultValue){return angular.isDefined(value)?$scope.$parent.$eval(value):defaultValue;}
function getDaysInMonth(year,month){return new Date(year,month,0).getDate();}
function getDates(startDate,n){var dates=new Array(n);var current=startDate,i=0;while(i<n){dates[i++]=new Date(current);current.setDate(current.getDate()+1);}
return dates;}
function makeDate(date,format,isSelected,isSecondary){return{date:date,label:dateFilter(date,format),selected:!!isSelected,secondary:!!isSecondary};}
this.modes=[{name:'day',getVisibleDates:function(date,selected){var year=date.getFullYear(),month=date.getMonth(),firstDayOfMonth=new Date(year,month,1);var difference=startingDay-firstDayOfMonth.getDay(),numDisplayedFromPreviousMonth=(difference>0)?7-difference:-difference,firstDate=new Date(firstDayOfMonth),numDates=0;if(numDisplayedFromPreviousMonth>0){firstDate.setDate(-numDisplayedFromPreviousMonth+1);numDates+=numDisplayedFromPreviousMonth;}
numDates+=getDaysInMonth(year,month+1);numDates+=(7-numDates%7)%7;var days=getDates(firstDate,numDates),labels=new Array(7);for(var i=0;i<numDates;i++){var dt=new Date(days[i]);days[i]=makeDate(dt,format.day,(selected&&selected.getDate()===dt.getDate()&&selected.getMonth()===dt.getMonth()&&selected.getFullYear()===dt.getFullYear()),dt.getMonth()!==month);}
for(var j=0;j<7;j++){labels[j]=dateFilter(days[j].date,format.dayHeader);}
return{objects:days,title:dateFilter(date,format.dayTitle),labels:labels};},compare:function(date1,date2){return(new Date(date1.getFullYear(),date1.getMonth(),date1.getDate())-new Date(date2.getFullYear(),date2.getMonth(),date2.getDate()));},split:7,step:{months:1}},{name:'month',getVisibleDates:function(date,selected){var months=new Array(12),year=date.getFullYear();for(var i=0;i<12;i++){var dt=new Date(year,i,1);months[i]=makeDate(dt,format.month,(selected&&selected.getMonth()===i&&selected.getFullYear()===year));}
return{objects:months,title:dateFilter(date,format.monthTitle)};},compare:function(date1,date2){return new Date(date1.getFullYear(),date1.getMonth())-new Date(date2.getFullYear(),date2.getMonth());},split:3,step:{years:1}},{name:'year',getVisibleDates:function(date,selected){var years=new Array(yearRange),year=date.getFullYear(),startYear=parseInt((year-1)/yearRange,10)*yearRange+1;for(var i=0;i<yearRange;i++){var dt=new Date(startYear+i,0,1);years[i]=makeDate(dt,format.year,(selected&&selected.getFullYear()===dt.getFullYear()));}
return{objects:years,title:[years[0].label,years[yearRange-1].label].join(' - ')};},compare:function(date1,date2){return date1.getFullYear()-date2.getFullYear();},split:5,step:{years:yearRange}}];this.isDisabled=function(date,mode){var currentMode=this.modes[mode||0];return((this.minDate&&currentMode.compare(date,this.minDate)<0)||(this.maxDate&&currentMode.compare(date,this.maxDate)>0)||($scope.dateDisabled&&$scope.dateDisabled({date:date,mode:currentMode.name})));};}]).directive('datepicker',['dateFilter','$parse','datepickerConfig','$log',function(dateFilter,$parse,datepickerConfig,$log){return{restrict:'EA',replace:true,templateUrl:'template/datepicker/datepicker.html',scope:{dateDisabled:'&'},require:['datepicker','?^ngModel'],controller:'DatepickerController',link:function(scope,element,attrs,ctrls){var datepickerCtrl=ctrls[0],ngModel=ctrls[1];if(!ngModel){return;}
var mode=0,selected=new Date(),showWeeks=datepickerConfig.showWeeks;if(attrs.showWeeks){scope.$parent.$watch($parse(attrs.showWeeks),function(value){showWeeks=!!value;updateShowWeekNumbers();});}else{updateShowWeekNumbers();}
if(attrs.min){scope.$parent.$watch($parse(attrs.min),function(value){datepickerCtrl.minDate=value?new Date(value):null;refill();});}
if(attrs.max){scope.$parent.$watch($parse(attrs.max),function(value){datepickerCtrl.maxDate=value?new Date(value):null;refill();});}
function updateShowWeekNumbers(){scope.showWeekNumbers=mode===0&&showWeeks;}
function split(arr,size){var arrays=[];while(arr.length>0){arrays.push(arr.splice(0,size));}
return arrays;}
function refill(updateSelected){var date=null,valid=true;if(ngModel.$modelValue){date=new Date(ngModel.$modelValue);if(isNaN(date)){valid=false;$log.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.');}else if(updateSelected){selected=date;}}
ngModel.$setValidity('date',valid);var currentMode=datepickerCtrl.modes[mode],data=currentMode.getVisibleDates(selected,date);angular.forEach(data.objects,function(obj){obj.disabled=datepickerCtrl.isDisabled(obj.date,mode);});ngModel.$setValidity('date-disabled',(!date||!datepickerCtrl.isDisabled(date)));scope.rows=split(data.objects,currentMode.split);scope.labels=data.labels||[];scope.title=data.title;}
function setMode(value){mode=value;updateShowWeekNumbers();refill();}
ngModel.$render=function(){refill(true);};scope.select=function(date){if(mode===0){var dt=ngModel.$modelValue?new Date(ngModel.$modelValue):new Date(0,0,0,0,0,0,0);dt.setFullYear(date.getFullYear(),date.getMonth(),date.getDate());ngModel.$setViewValue(dt);refill(true);}else{selected=date;setMode(mode-1);}};scope.move=function(direction){var step=datepickerCtrl.modes[mode].step;selected.setMonth(selected.getMonth()+direction*(step.months||0));selected.setFullYear(selected.getFullYear()+direction*(step.years||0));refill();};scope.toggleMode=function(){setMode((mode+1)%datepickerCtrl.modes.length);};scope.getWeekNumber=function(row){return(mode===0&&scope.showWeekNumbers&&row.length===7)?getISO8601WeekNumber(row[0].date):null;};function getISO8601WeekNumber(date){var checkDate=new Date(date);checkDate.setDate(checkDate.getDate()+4-(checkDate.getDay()||7));var time=checkDate.getTime();checkDate.setMonth(0);checkDate.setDate(1);return Math.floor(Math.round((time-checkDate)/86400000)/7)+1;}}};}]).constant('datepickerPopupConfig',{dateFormat:'yyyy-MM-dd',currentText:'Today',toggleWeeksText:'Weeks',clearText:'Clear',closeText:'Done',closeOnDateSelection:true,appendToBody:false,showButtonBar:true}).directive('datepickerPopup',['$compile','$parse','$document','$position','dateFilter','datepickerPopupConfig','datepickerConfig',function($compile,$parse,$document,$position,dateFilter,datepickerPopupConfig,datepickerConfig){return{restrict:'EA',require:'ngModel',link:function(originalScope,element,attrs,ngModel){var scope=originalScope.$new(),dateFormat,closeOnDateSelection=angular.isDefined(attrs.closeOnDateSelection)?originalScope.$eval(attrs.closeOnDateSelection):datepickerPopupConfig.closeOnDateSelection,appendToBody=angular.isDefined(attrs.datepickerAppendToBody)?originalScope.$eval(attrs.datepickerAppendToBody):datepickerPopupConfig.appendToBody;attrs.$observe('datepickerPopup',function(value){dateFormat=value||datepickerPopupConfig.dateFormat;ngModel.$render();});scope.showButtonBar=angular.isDefined(attrs.showButtonBar)?originalScope.$eval(attrs.showButtonBar):datepickerPopupConfig.showButtonBar;originalScope.$on('$destroy',function(){$popup.remove();scope.$destroy();});attrs.$observe('currentText',function(text){scope.currentText=angular.isDefined(text)?text:datepickerPopupConfig.currentText;});attrs.$observe('toggleWeeksText',function(text){scope.toggleWeeksText=angular.isDefined(text)?text:datepickerPopupConfig.toggleWeeksText;});attrs.$observe('clearText',function(text){scope.clearText=angular.isDefined(text)?text:datepickerPopupConfig.clearText;});attrs.$observe('closeText',function(text){scope.closeText=angular.isDefined(text)?text:datepickerPopupConfig.closeText;});var getIsOpen,setIsOpen;if(attrs.isOpen){getIsOpen=$parse(attrs.isOpen);setIsOpen=getIsOpen.assign;originalScope.$watch(getIsOpen,function updateOpen(value){scope.isOpen=!!value;});}
scope.isOpen=getIsOpen?getIsOpen(originalScope):false;function setOpen(value){if(setIsOpen){setIsOpen(originalScope,!!value);}else{scope.isOpen=!!value;}}
var documentClickBind=function(event){if(scope.isOpen&&event.target!==element[0]){scope.$apply(function(){setOpen(false);});}};var elementFocusBind=function(){scope.$apply(function(){setOpen(true);});};var popupEl=angular.element('<div datepicker-popup-wrap><div datepicker></div></div>');popupEl.attr({'ng-model':'date','ng-change':'dateSelection()'});var datepickerEl=angular.element(popupEl.children()[0]),datepickerOptions={};if(attrs.datepickerOptions){datepickerOptions=originalScope.$eval(attrs.datepickerOptions);datepickerEl.attr(angular.extend({},datepickerOptions));}
function parseDate(viewValue){if(!viewValue){ngModel.$setValidity('date',true);return null;}else if(angular.isDate(viewValue)){ngModel.$setValidity('date',true);return viewValue;}else if(angular.isString(viewValue)){var date=new Date(viewValue);if(isNaN(date)){ngModel.$setValidity('date',false);return undefined;}else{ngModel.$setValidity('date',true);return date;}}else{ngModel.$setValidity('date',false);return undefined;}}
ngModel.$parsers.unshift(parseDate);scope.dateSelection=function(dt){if(angular.isDefined(dt)){scope.date=dt;}
ngModel.$setViewValue(scope.date);ngModel.$render();if(closeOnDateSelection){setOpen(false);}};element.bind('input change keyup',function(){scope.$apply(function(){scope.date=ngModel.$modelValue;});});ngModel.$render=function(){var date=ngModel.$viewValue?dateFilter(ngModel.$viewValue,dateFormat):'';element.val(date);scope.date=ngModel.$modelValue;};function addWatchableAttribute(attribute,scopeProperty,datepickerAttribute){if(attribute){originalScope.$watch($parse(attribute),function(value){scope[scopeProperty]=value;});datepickerEl.attr(datepickerAttribute||scopeProperty,scopeProperty);}}
addWatchableAttribute(attrs.min,'min');addWatchableAttribute(attrs.max,'max');if(attrs.showWeeks){addWatchableAttribute(attrs.showWeeks,'showWeeks','show-weeks');}else{scope.showWeeks='show-weeks'in datepickerOptions?datepickerOptions['show-weeks']:datepickerConfig.showWeeks;datepickerEl.attr('show-weeks','showWeeks');}
if(attrs.dateDisabled){datepickerEl.attr('date-disabled',attrs.dateDisabled);}
function updatePosition(){scope.position=appendToBody?$position.offset(element):$position.position(element);scope.position.top=scope.position.top+element.prop('offsetHeight');}
var documentBindingInitialized=false,elementFocusInitialized=false;scope.$watch('isOpen',function(value){if(value){updatePosition();$document.bind('click',documentClickBind);if(elementFocusInitialized){element.unbind('focus',elementFocusBind);}
element[0].focus();documentBindingInitialized=true;}else{if(documentBindingInitialized){$document.unbind('click',documentClickBind);}
element.bind('focus',elementFocusBind);elementFocusInitialized=true;}
if(setIsOpen){setIsOpen(originalScope,value);}});scope.today=function(){scope.dateSelection(new Date());};scope.clear=function(){scope.dateSelection(null);};var $popup=$compile(popupEl)(scope);if(appendToBody){$document.find('body').append($popup);}else{element.after($popup);}}};}]).directive('datepickerPopupWrap',function(){return{restrict:'EA',replace:true,transclude:true,templateUrl:'template/datepicker/popup.html',link:function(scope,element,attrs){element.bind('click',function(event){event.preventDefault();event.stopPropagation();});}};});angular.module('ui.bootstrap.dropdownToggle',[]).directive('dropdownToggle',['$document','$location',function($document,$location){var openElement=null,closeMenu=angular.noop;return{restrict:'CA',link:function(scope,element,attrs){scope.$watch('$location.path',function(){closeMenu();});element.parent().bind('click',function(){closeMenu();});element.bind('click',function(event){var elementWasOpen=(element===openElement);event.preventDefault();event.stopPropagation();if(!!openElement){closeMenu();}
if(!elementWasOpen&&!element.hasClass('disabled')&&!element.prop('disabled')){element.parent().addClass('open');openElement=element;closeMenu=function(event){if(event){event.preventDefault();event.stopPropagation();}
$document.unbind('click',closeMenu);element.parent().removeClass('open');closeMenu=angular.noop;openElement=null;};$document.bind('click',closeMenu);}});}};}]);angular.module('ui.bootstrap.modal',['ui.bootstrap.transition']).factory('$$stackedMap',function(){return{createNew:function(){var stack=[];return{add:function(key,value){stack.push({key:key,value:value});},get:function(key){for(var i=0;i<stack.length;i++){if(key==stack[i].key){return stack[i];}}},keys:function(){var keys=[];for(var i=0;i<stack.length;i++){keys.push(stack[i].key);}
return keys;},top:function(){return stack[stack.length-1];},remove:function(key){var idx=-1;for(var i=0;i<stack.length;i++){if(key==stack[i].key){idx=i;break;}}
return stack.splice(idx,1)[0];},removeTop:function(){return stack.splice(stack.length-1,1)[0];},length:function(){return stack.length;}};}};}).directive('modalBackdrop',['$timeout',function($timeout){return{restrict:'EA',replace:true,templateUrl:'template/modal/backdrop.html',link:function(scope){scope.animate=false;$timeout(function(){scope.animate=true;});}};}]).directive('modalWindow',['$modalStack','$timeout',function($modalStack,$timeout){return{restrict:'EA',scope:{index:'@',animate:'='},replace:true,transclude:true,templateUrl:'template/modal/window.html',link:function(scope,element,attrs){scope.windowClass=attrs.windowClass||'';$timeout(function(){scope.animate=true;element[0].focus();});scope.close=function(evt){var modal=$modalStack.getTop();if(modal&&modal.value.backdrop&&modal.value.backdrop!='static'&&(evt.target===evt.currentTarget)){evt.preventDefault();evt.stopPropagation();$modalStack.dismiss(modal.key,'backdrop click');}};}};}]).factory('$modalStack',['$transition','$timeout','$document','$compile','$rootScope','$$stackedMap',function($transition,$timeout,$document,$compile,$rootScope,$$stackedMap){var OPENED_MODAL_CLASS='modal-open';var backdropDomEl,backdropScope;var openedWindows=$$stackedMap.createNew();var $modalStack={};function backdropIndex(){var topBackdropIndex=-1;var opened=openedWindows.keys();for(var i=0;i<opened.length;i++){if(openedWindows.get(opened[i]).value.backdrop){topBackdropIndex=i;}}
return topBackdropIndex;}
$rootScope.$watch(backdropIndex,function(newBackdropIndex){if(backdropScope){backdropScope.index=newBackdropIndex;}});function removeModalWindow(modalInstance){var body=$document.find('body').eq(0);var modalWindow=openedWindows.get(modalInstance).value;openedWindows.remove(modalInstance);removeAfterAnimate(modalWindow.modalDomEl,modalWindow.modalScope,300,checkRemoveBackdrop);body.toggleClass(OPENED_MODAL_CLASS,openedWindows.length()>0);}
function checkRemoveBackdrop(){if(backdropDomEl&&backdropIndex()==-1){var backdropScopeRef=backdropScope;removeAfterAnimate(backdropDomEl,backdropScope,150,function(){backdropScopeRef.$destroy();backdropScopeRef=null;});backdropDomEl=undefined;backdropScope=undefined;}}
function removeAfterAnimate(domEl,scope,emulateTime,done){scope.animate=false;var transitionEndEventName=$transition.transitionEndEventName;if(transitionEndEventName){var timeout=$timeout(afterAnimating,emulateTime);domEl.bind(transitionEndEventName,function(){$timeout.cancel(timeout);afterAnimating();scope.$apply();});}else{$timeout(afterAnimating,0);}
function afterAnimating(){if(afterAnimating.done){return;}
afterAnimating.done=true;domEl.remove();if(done){done();}}}
$document.bind('keydown',function(evt){var modal;if(evt.which===27){modal=openedWindows.top();if(modal&&modal.value.keyboard){$rootScope.$apply(function(){$modalStack.dismiss(modal.key);});}}});$modalStack.open=function(modalInstance,modal){openedWindows.add(modalInstance,{deferred:modal.deferred,modalScope:modal.scope,backdrop:modal.backdrop,keyboard:modal.keyboard});var body=$document.find('body').eq(0),currBackdropIndex=backdropIndex();if(currBackdropIndex>=0&&!backdropDomEl){backdropScope=$rootScope.$new(true);backdropScope.index=currBackdropIndex;backdropDomEl=$compile('<div modal-backdrop></div>')(backdropScope);body.append(backdropDomEl);}
var angularDomEl=angular.element('<div modal-window></div>');angularDomEl.attr('window-class',modal.windowClass);angularDomEl.attr('index',openedWindows.length()-1);angularDomEl.attr('animate','animate');angularDomEl.html(modal.content);var modalDomEl=$compile(angularDomEl)(modal.scope);openedWindows.top().value.modalDomEl=modalDomEl;body.append(modalDomEl);body.addClass(OPENED_MODAL_CLASS);};$modalStack.close=function(modalInstance,result){var modalWindow=openedWindows.get(modalInstance).value;if(modalWindow){modalWindow.deferred.resolve(result);removeModalWindow(modalInstance);}};$modalStack.dismiss=function(modalInstance,reason){var modalWindow=openedWindows.get(modalInstance).value;if(modalWindow){modalWindow.deferred.reject(reason);removeModalWindow(modalInstance);}};$modalStack.dismissAll=function(reason){var topModal=this.getTop();while(topModal){this.dismiss(topModal.key,reason);topModal=this.getTop();}};$modalStack.getTop=function(){return openedWindows.top();};return $modalStack;}]).provider('$modal',function(){var $modalProvider={options:{backdrop:true,keyboard:true},$get:['$injector','$rootScope','$q','$http','$templateCache','$controller','$modalStack',function($injector,$rootScope,$q,$http,$templateCache,$controller,$modalStack){var $modal={};function getTemplatePromise(options){return options.template?$q.when(options.template):$http.get(options.templateUrl,{cache:$templateCache}).then(function(result){return result.data;});}
function getResolvePromises(resolves){var promisesArr=[];angular.forEach(resolves,function(value,key){if(angular.isFunction(value)||angular.isArray(value)){promisesArr.push($q.when($injector.invoke(value)));}});return promisesArr;}
$modal.open=function(modalOptions){var modalResultDeferred=$q.defer();var modalOpenedDeferred=$q.defer();var modalInstance={result:modalResultDeferred.promise,opened:modalOpenedDeferred.promise,close:function(result){$modalStack.close(modalInstance,result);},dismiss:function(reason){$modalStack.dismiss(modalInstance,reason);}};modalOptions=angular.extend({},$modalProvider.options,modalOptions);modalOptions.resolve=modalOptions.resolve||{};if(!modalOptions.template&&!modalOptions.templateUrl){throw new Error('One of template or templateUrl options is required.');}
var templateAndResolvePromise=$q.all([getTemplatePromise(modalOptions)].concat(getResolvePromises(modalOptions.resolve)));templateAndResolvePromise.then(function resolveSuccess(tplAndVars){var modalScope=(modalOptions.scope||$rootScope).$new();modalScope.$close=modalInstance.close;modalScope.$dismiss=modalInstance.dismiss;var ctrlInstance,ctrlLocals={};var resolveIter=1;if(modalOptions.controller){ctrlLocals.$scope=modalScope;ctrlLocals.$modalInstance=modalInstance;angular.forEach(modalOptions.resolve,function(value,key){ctrlLocals[key]=tplAndVars[resolveIter++];});ctrlInstance=$controller(modalOptions.controller,ctrlLocals);}
$modalStack.open(modalInstance,{scope:modalScope,deferred:modalResultDeferred,content:tplAndVars[0],backdrop:modalOptions.backdrop,keyboard:modalOptions.keyboard,windowClass:modalOptions.windowClass});},function resolveError(reason){modalResultDeferred.reject(reason);});templateAndResolvePromise.then(function(){modalOpenedDeferred.resolve(true);},function(){modalOpenedDeferred.reject(false);});return modalInstance;};return $modal;}]};return $modalProvider;});angular.module('ui.bootstrap.pagination',[]).controller('PaginationController',['$scope','$attrs','$parse','$interpolate',function($scope,$attrs,$parse,$interpolate){var self=this,setNumPages=$attrs.numPages?$parse($attrs.numPages).assign:angular.noop;this.init=function(defaultItemsPerPage){if($attrs.itemsPerPage){$scope.$parent.$watch($parse($attrs.itemsPerPage),function(value){self.itemsPerPage=parseInt(value,10);$scope.totalPages=self.calculateTotalPages();});}else{this.itemsPerPage=defaultItemsPerPage;}};this.noPrevious=function(){return this.page===1;};this.noNext=function(){return this.page===$scope.totalPages;};this.isActive=function(page){return this.page===page;};this.calculateTotalPages=function(){var totalPages=this.itemsPerPage<1?1:Math.ceil($scope.totalItems/this.itemsPerPage);return Math.max(totalPages||0,1);};this.getAttributeValue=function(attribute,defaultValue,interpolate){return angular.isDefined(attribute)?(interpolate?$interpolate(attribute)($scope.$parent):$scope.$parent.$eval(attribute)):defaultValue;};this.render=function(){this.page=parseInt($scope.page,10)||1;if(this.page>0&&this.page<=$scope.totalPages){$scope.pages=this.getPages(this.page,$scope.totalPages);}};$scope.selectPage=function(page){if(!self.isActive(page)&&page>0&&page<=$scope.totalPages){$scope.page=page;$scope.onSelectPage({page:page});}};$scope.$watch('page',function(){self.render();});$scope.$watch('totalItems',function(){$scope.totalPages=self.calculateTotalPages();});$scope.$watch('totalPages',function(value){setNumPages($scope.$parent,value);if(self.page>value){$scope.selectPage(value);}else{self.render();}});}]).constant('paginationConfig',{itemsPerPage:10,boundaryLinks:false,directionLinks:true,firstText:'First',previousText:'Previous',nextText:'Next',lastText:'Last',rotate:true}).directive('pagination',['$parse','paginationConfig',function($parse,config){return{restrict:'EA',scope:{page:'=',totalItems:'=',onSelectPage:' &'},controller:'PaginationController',templateUrl:'template/pagination/pagination.html',replace:true,link:function(scope,element,attrs,paginationCtrl){var maxSize,boundaryLinks=paginationCtrl.getAttributeValue(attrs.boundaryLinks,config.boundaryLinks),directionLinks=paginationCtrl.getAttributeValue(attrs.directionLinks,config.directionLinks),firstText=paginationCtrl.getAttributeValue(attrs.firstText,config.firstText,true),previousText=paginationCtrl.getAttributeValue(attrs.previousText,config.previousText,true),nextText=paginationCtrl.getAttributeValue(attrs.nextText,config.nextText,true),lastText=paginationCtrl.getAttributeValue(attrs.lastText,config.lastText,true),rotate=paginationCtrl.getAttributeValue(attrs.rotate,config.rotate);paginationCtrl.init(config.itemsPerPage);if(attrs.maxSize){scope.$parent.$watch($parse(attrs.maxSize),function(value){maxSize=parseInt(value,10);paginationCtrl.render();});}
function makePage(number,text,isActive,isDisabled){return{number:number,text:text,active:isActive,disabled:isDisabled};}
paginationCtrl.getPages=function(currentPage,totalPages){var pages=[];var startPage=1,endPage=totalPages;var isMaxSized=(angular.isDefined(maxSize)&&maxSize<totalPages);if(isMaxSized){if(rotate){startPage=Math.max(currentPage-Math.floor(maxSize/2),1);endPage=startPage+maxSize-1;if(endPage>totalPages){endPage=totalPages;startPage=endPage-maxSize+1;}}else{startPage=((Math.ceil(currentPage/maxSize)-1)*maxSize)+1;endPage=Math.min(startPage+maxSize-1,totalPages);}}
for(var number=startPage;number<=endPage;number++){var page=makePage(number,number,paginationCtrl.isActive(number),false);pages.push(page);}
if(isMaxSized&&!rotate){if(startPage>1){var previousPageSet=makePage(startPage-1,'...',false,false);pages.unshift(previousPageSet);}
if(endPage<totalPages){var nextPageSet=makePage(endPage+1,'...',false,false);pages.push(nextPageSet);}}
if(directionLinks){var previousPage=makePage(currentPage-1,previousText,false,paginationCtrl.noPrevious());pages.unshift(previousPage);var nextPage=makePage(currentPage+1,nextText,false,paginationCtrl.noNext());pages.push(nextPage);}
if(boundaryLinks){var firstPage=makePage(1,firstText,false,paginationCtrl.noPrevious());pages.unshift(firstPage);var lastPage=makePage(totalPages,lastText,false,paginationCtrl.noNext());pages.push(lastPage);}
return pages;};}};}]).constant('pagerConfig',{itemsPerPage:10,previousText:'« Previous',nextText:'Next »',align:true}).directive('pager',['pagerConfig',function(config){return{restrict:'EA',scope:{page:'=',totalItems:'=',onSelectPage:' &'},controller:'PaginationController',templateUrl:'template/pagination/pager.html',replace:true,link:function(scope,element,attrs,paginationCtrl){var previousText=paginationCtrl.getAttributeValue(attrs.previousText,config.previousText,true),nextText=paginationCtrl.getAttributeValue(attrs.nextText,config.nextText,true),align=paginationCtrl.getAttributeValue(attrs.align,config.align);paginationCtrl.init(config.itemsPerPage);function makePage(number,text,isDisabled,isPrevious,isNext){return{number:number,text:text,disabled:isDisabled,previous:(align&&isPrevious),next:(align&&isNext)};}
paginationCtrl.getPages=function(currentPage){return[makePage(currentPage-1,previousText,paginationCtrl.noPrevious(),true,false),makePage(currentPage+1,nextText,paginationCtrl.noNext(),false,true)];};}};}]);angular.module('ui.bootstrap.tooltip',['ui.bootstrap.position','ui.bootstrap.bindHtml']).provider('$tooltip',function(){var defaultOptions={placement:'top',animation:true,popupDelay:0};var triggerMap={'mouseenter':'mouseleave','click':'click','focus':'blur'};var globalOptions={};this.options=function(value){angular.extend(globalOptions,value);};this.setTriggers=function setTriggers(triggers){angular.extend(triggerMap,triggers);};function snake_case(name){var regexp=/[A-Z]/g;var separator='-';return name.replace(regexp,function(letter,pos){return(pos?separator:'')+letter.toLowerCase();});}
this.$get=['$window','$compile','$timeout','$parse','$document','$position','$interpolate',function($window,$compile,$timeout,$parse,$document,$position,$interpolate){return function $tooltip(type,prefix,defaultTriggerShow){var options=angular.extend({},defaultOptions,globalOptions);function getTriggers(trigger){var show=trigger||options.trigger||defaultTriggerShow;var hide=triggerMap[show]||show;return{show:show,hide:hide};}
var directiveName=snake_case(type);var startSym=$interpolate.startSymbol();var endSym=$interpolate.endSymbol();var template='<div '+directiveName+'-popup '+'title="'+startSym+'tt_title'+endSym+'" '+'content="'+startSym+'tt_content'+endSym+'" '+'placement="'+startSym+'tt_placement'+endSym+'" '+'animation="tt_animation" '+'is-open="tt_isOpen"'+'>'+'</div>';return{restrict:'EA',scope:true,compile:function(tElem,tAttrs){var tooltipLinker=$compile(template);return function link(scope,element,attrs){var tooltip;var transitionTimeout;var popupTimeout;var appendToBody=angular.isDefined(options.appendToBody)?options.appendToBody:false;var triggers=getTriggers(undefined);var hasRegisteredTriggers=false;var hasEnableExp=angular.isDefined(attrs[prefix+'Enable']);var positionTooltip=function(){var position,ttWidth,ttHeight,ttPosition;position=appendToBody?$position.offset(element):$position.position(element);ttWidth=tooltip.prop('offsetWidth');ttHeight=tooltip.prop('offsetHeight');switch(scope.tt_placement){case'right':ttPosition={top:position.top+position.height/2-ttHeight/2,left:position.left+position.width};break;case'bottom':ttPosition={top:position.top+position.height,left:position.left+position.width/2-ttWidth/2};break;case'left':ttPosition={top:position.top+position.height/2-ttHeight/2,left:position.left-ttWidth};break;default:ttPosition={top:position.top-ttHeight,left:position.left+position.width/2-ttWidth/2};break;}
ttPosition.top+='px';ttPosition.left+='px';tooltip.css(ttPosition);};scope.tt_isOpen=false;function toggleTooltipBind(){if(!scope.tt_isOpen){showTooltipBind();}else{hideTooltipBind();}}
function showTooltipBind(){if(hasEnableExp&&!scope.$eval(attrs[prefix+'Enable'])){return;}
if(scope.tt_popupDelay){popupTimeout=$timeout(show,scope.tt_popupDelay,false);popupTimeout.then(function(reposition){reposition();});}else{show()();}}
function hideTooltipBind(){scope.$apply(function(){hide();});}
function show(){if(!scope.tt_content){return angular.noop;}
createTooltip();if(transitionTimeout){$timeout.cancel(transitionTimeout);}
tooltip.css({top:0,left:0,display:'block'});if(appendToBody){$document.find('body').append(tooltip);}else{element.after(tooltip);}
positionTooltip();scope.tt_isOpen=true;scope.$digest();return positionTooltip;}
function hide(){scope.tt_isOpen=false;$timeout.cancel(popupTimeout);if(scope.tt_animation){transitionTimeout=$timeout(removeTooltip,500);}else{removeTooltip();}}
function createTooltip(){if(tooltip){removeTooltip();}
tooltip=tooltipLinker(scope,function(){});scope.$digest();}
function removeTooltip(){if(tooltip){tooltip.remove();tooltip=null;}}
attrs.$observe(type,function(val){scope.tt_content=val;if(!val&&scope.tt_isOpen){hide();}});attrs.$observe(prefix+'Title',function(val){scope.tt_title=val;});attrs.$observe(prefix+'Placement',function(val){scope.tt_placement=angular.isDefined(val)?val:options.placement;});attrs.$observe(prefix+'PopupDelay',function(val){var delay=parseInt(val,10);scope.tt_popupDelay=!isNaN(delay)?delay:options.popupDelay;});var unregisterTriggers=function(){if(hasRegisteredTriggers){element.unbind(triggers.show,showTooltipBind);element.unbind(triggers.hide,hideTooltipBind);}};attrs.$observe(prefix+'Trigger',function(val){unregisterTriggers();triggers=getTriggers(val);if(triggers.show===triggers.hide){element.bind(triggers.show,toggleTooltipBind);}else{element.bind(triggers.show,showTooltipBind);element.bind(triggers.hide,hideTooltipBind);}
hasRegisteredTriggers=true;});var animation=scope.$eval(attrs[prefix+'Animation']);scope.tt_animation=angular.isDefined(animation)?!!animation:options.animation;attrs.$observe(prefix+'AppendToBody',function(val){appendToBody=angular.isDefined(val)?$parse(val)(scope):appendToBody;});if(appendToBody){scope.$on('$locationChangeSuccess',function closeTooltipOnLocationChangeSuccess(){if(scope.tt_isOpen){hide();}});}
scope.$on('$destroy',function onDestroyTooltip(){$timeout.cancel(transitionTimeout);$timeout.cancel(popupTimeout);unregisterTriggers();removeTooltip();});};}};};}];}).directive('tooltipPopup',function(){return{restrict:'EA',replace:true,scope:{content:'@',placement:'@',animation:'&',isOpen:'&'},templateUrl:'template/tooltip/tooltip-popup.html'};}).directive('tooltip',['$tooltip',function($tooltip){return $tooltip('tooltip','tooltip','mouseenter');}]).directive('tooltipHtmlUnsafePopup',function(){return{restrict:'EA',replace:true,scope:{content:'@',placement:'@',animation:'&',isOpen:'&'},templateUrl:'template/tooltip/tooltip-html-unsafe-popup.html'};}).directive('tooltipHtmlUnsafe',['$tooltip',function($tooltip){return $tooltip('tooltipHtmlUnsafe','tooltip','mouseenter');}]);angular.module('ui.bootstrap.popover',['ui.bootstrap.tooltip']).directive('popoverPopup',function(){return{restrict:'EA',replace:true,scope:{title:'@',content:'@',placement:'@',animation:'&',isOpen:'&'},templateUrl:'template/popover/popover.html'};}).directive('popover',['$tooltip',function($tooltip){return $tooltip('popover','popover','click');}]);angular.module('ui.bootstrap.progressbar',['ui.bootstrap.transition']).constant('progressConfig',{animate:true,max:100}).controller('ProgressController',['$scope','$attrs','progressConfig','$transition',function($scope,$attrs,progressConfig,$transition){var self=this,bars=[],max=angular.isDefined($attrs.max)?$scope.$parent.$eval($attrs.max):progressConfig.max,animate=angular.isDefined($attrs.animate)?$scope.$parent.$eval($attrs.animate):progressConfig.animate;this.addBar=function(bar,element){var oldValue=0,index=bar.$parent.$index;if(angular.isDefined(index)&&bars[index]){oldValue=bars[index].value;}
bars.push(bar);this.update(element,bar.value,oldValue);bar.$watch('value',function(value,oldValue){if(value!==oldValue){self.update(element,value,oldValue);}});bar.$on('$destroy',function(){self.removeBar(bar);});};this.update=function(element,newValue,oldValue){var percent=this.getPercentage(newValue);if(animate){element.css('width',this.getPercentage(oldValue)+'%');$transition(element,{width:percent+'%'});}else{element.css({'transition':'none','width':percent+'%'});}};this.removeBar=function(bar){bars.splice(bars.indexOf(bar),1);};this.getPercentage=function(value){return Math.round(100*value/max);};}]).directive('progress',function(){return{restrict:'EA',replace:true,transclude:true,controller:'ProgressController',require:'progress',scope:{},template:'<div class="progress" ng-transclude></div>'};}).directive('bar',function(){return{restrict:'EA',replace:true,transclude:true,require:'^progress',scope:{value:'=',type:'@'},templateUrl:'template/progressbar/bar.html',link:function(scope,element,attrs,progressCtrl){progressCtrl.addBar(scope,element);}};}).directive('progressbar',function(){return{restrict:'EA',replace:true,transclude:true,controller:'ProgressController',scope:{value:'=',type:'@'},templateUrl:'template/progressbar/progressbar.html',link:function(scope,element,attrs,progressCtrl){progressCtrl.addBar(scope,angular.element(element.children()[0]));}};});angular.module('ui.bootstrap.rating',[]).constant('ratingConfig',{max:5,stateOn:null,stateOff:null}).controller('RatingController',['$scope','$attrs','$parse','ratingConfig',function($scope,$attrs,$parse,ratingConfig){this.maxRange=angular.isDefined($attrs.max)?$scope.$parent.$eval($attrs.max):ratingConfig.max;this.stateOn=angular.isDefined($attrs.stateOn)?$scope.$parent.$eval($attrs.stateOn):ratingConfig.stateOn;this.stateOff=angular.isDefined($attrs.stateOff)?$scope.$parent.$eval($attrs.stateOff):ratingConfig.stateOff;this.createRateObjects=function(states){var defaultOptions={stateOn:this.stateOn,stateOff:this.stateOff};for(var i=0,n=states.length;i<n;i++){states[i]=angular.extend({index:i},defaultOptions,states[i]);}
return states;};$scope.range=angular.isDefined($attrs.ratingStates)?this.createRateObjects(angular.copy($scope.$parent.$eval($attrs.ratingStates))):this.createRateObjects(new Array(this.maxRange));$scope.rate=function(value){if($scope.value!==value&&!$scope.readonly){$scope.value=value;}};$scope.enter=function(value){if(!$scope.readonly){$scope.val=value;}
$scope.onHover({value:value});};$scope.reset=function(){$scope.val=angular.copy($scope.value);$scope.onLeave();};$scope.$watch('value',function(value){$scope.val=value;});$scope.readonly=false;if($attrs.readonly){$scope.$parent.$watch($parse($attrs.readonly),function(value){$scope.readonly=!!value;});}}]).directive('rating',function(){return{restrict:'EA',scope:{value:'=',onHover:'&',onLeave:'&'},controller:'RatingController',templateUrl:'template/rating/rating.html',replace:true};});angular.module('ui.bootstrap.tabs',[]).controller('TabsetController',['$scope',function TabsetCtrl($scope){var ctrl=this,tabs=ctrl.tabs=$scope.tabs=[];ctrl.select=function(tab){angular.forEach(tabs,function(tab){tab.active=false;});tab.active=true;};ctrl.addTab=function addTab(tab){tabs.push(tab);if(tabs.length===1||tab.active){ctrl.select(tab);}};ctrl.removeTab=function removeTab(tab){var index=tabs.indexOf(tab);if(tab.active&&tabs.length>1){var newActiveIndex=index==tabs.length-1?index-1:index+1;ctrl.select(tabs[newActiveIndex]);}
tabs.splice(index,1);};}]).directive('tabset',function(){return{restrict:'EA',transclude:true,replace:true,scope:{},controller:'TabsetController',templateUrl:'template/tabs/tabset.html',link:function(scope,element,attrs){scope.vertical=angular.isDefined(attrs.vertical)?scope.$parent.$eval(attrs.vertical):false;scope.justified=angular.isDefined(attrs.justified)?scope.$parent.$eval(attrs.justified):false;scope.type=angular.isDefined(attrs.type)?scope.$parent.$eval(attrs.type):'tabs';}};}).directive('tab',['$parse',function($parse){return{require:'^tabset',restrict:'EA',replace:true,templateUrl:'template/tabs/tab.html',transclude:true,scope:{heading:'@',onSelect:'&select',onDeselect:'&deselect'},controller:function(){},compile:function(elm,attrs,transclude){return function postLink(scope,elm,attrs,tabsetCtrl){var getActive,setActive;if(attrs.active){getActive=$parse(attrs.active);setActive=getActive.assign;scope.$parent.$watch(getActive,function updateActive(value,oldVal){if(value!==oldVal){scope.active=!!value;}});scope.active=getActive(scope.$parent);}else{setActive=getActive=angular.noop;}
scope.$watch('active',function(active){setActive(scope.$parent,active);if(active){tabsetCtrl.select(scope);scope.onSelect();}else{scope.onDeselect();}});scope.disabled=false;if(attrs.disabled){scope.$parent.$watch($parse(attrs.disabled),function(value){scope.disabled=!!value;});}
scope.select=function(){if(!scope.disabled){scope.active=true;}};tabsetCtrl.addTab(scope);scope.$on('$destroy',function(){tabsetCtrl.removeTab(scope);});scope.$transcludeFn=transclude;};}};}]).directive('tabHeadingTransclude',[function(){return{restrict:'A',require:'^tab',link:function(scope,elm,attrs,tabCtrl){scope.$watch('headingElement',function updateHeadingElement(heading){if(heading){elm.html('');elm.append(heading);}});}};}]).directive('tabContentTransclude',function(){return{restrict:'A',require:'^tabset',link:function(scope,elm,attrs){var tab=scope.$eval(attrs.tabContentTransclude);tab.$transcludeFn(tab.$parent,function(contents){angular.forEach(contents,function(node){if(isTabHeading(node)){tab.headingElement=node;}else{elm.append(node);}});});}};function isTabHeading(node){return node.tagName&&(node.hasAttribute('tab-heading')||node.hasAttribute('data-tab-heading')||node.tagName.toLowerCase()==='tab-heading'||node.tagName.toLowerCase()==='data-tab-heading');}});angular.module('ui.bootstrap.timepicker',[]).constant('timepickerConfig',{hourStep:1,minuteStep:1,showMeridian:true,meridians:null,readonlyInput:false,mousewheel:true}).directive('timepicker',['$parse','$log','timepickerConfig','$locale',function($parse,$log,timepickerConfig,$locale){return{restrict:'EA',require:'?^ngModel',replace:true,scope:{},templateUrl:'template/timepicker/timepicker.html',link:function(scope,element,attrs,ngModel){if(!ngModel){return;}
var selected=new Date(),meridians=angular.isDefined(attrs.meridians)?scope.$parent.$eval(attrs.meridians):timepickerConfig.meridians||$locale.DATETIME_FORMATS.AMPMS;var hourStep=timepickerConfig.hourStep;if(attrs.hourStep){scope.$parent.$watch($parse(attrs.hourStep),function(value){hourStep=parseInt(value,10);});}
var minuteStep=timepickerConfig.minuteStep;if(attrs.minuteStep){scope.$parent.$watch($parse(attrs.minuteStep),function(value){minuteStep=parseInt(value,10);});}
scope.showMeridian=timepickerConfig.showMeridian;if(attrs.showMeridian){scope.$parent.$watch($parse(attrs.showMeridian),function(value){scope.showMeridian=!!value;if(ngModel.$error.time){var hours=getHoursFromTemplate(),minutes=getMinutesFromTemplate();if(angular.isDefined(hours)&&angular.isDefined(minutes)){selected.setHours(hours);refresh();}}else{updateTemplate();}});}
function getHoursFromTemplate(){var hours=parseInt(scope.hours,10);var valid=(scope.showMeridian)?(hours>0&&hours<13):(hours>=0&&hours<24);if(!valid){return undefined;}
if(scope.showMeridian){if(hours===12){hours=0;}
if(scope.meridian===meridians[1]){hours=hours+12;}}
return hours;}
function getMinutesFromTemplate(){var minutes=parseInt(scope.minutes,10);return(minutes>=0&&minutes<60)?minutes:undefined;}
function pad(value){return(angular.isDefined(value)&&value.toString().length<2)?'0'+value:value;}
var inputs=element.find('input'),hoursInputEl=inputs.eq(0),minutesInputEl=inputs.eq(1);var mousewheel=(angular.isDefined(attrs.mousewheel))?scope.$eval(attrs.mousewheel):timepickerConfig.mousewheel;if(mousewheel){var isScrollingUp=function(e){if(e.originalEvent){e=e.originalEvent;}
var delta=(e.wheelDelta)?e.wheelDelta:-e.deltaY;return(e.detail||delta>0);};hoursInputEl.bind('mousewheel wheel',function(e){scope.$apply((isScrollingUp(e))?scope.incrementHours():scope.decrementHours());e.preventDefault();});minutesInputEl.bind('mousewheel wheel',function(e){scope.$apply((isScrollingUp(e))?scope.incrementMinutes():scope.decrementMinutes());e.preventDefault();});}
scope.readonlyInput=(angular.isDefined(attrs.readonlyInput))?scope.$eval(attrs.readonlyInput):timepickerConfig.readonlyInput;if(!scope.readonlyInput){var invalidate=function(invalidHours,invalidMinutes){ngModel.$setViewValue(null);ngModel.$setValidity('time',false);if(angular.isDefined(invalidHours)){scope.invalidHours=invalidHours;}
if(angular.isDefined(invalidMinutes)){scope.invalidMinutes=invalidMinutes;}};scope.updateHours=function(){var hours=getHoursFromTemplate();if(angular.isDefined(hours)){selected.setHours(hours);refresh('h');}else{invalidate(true);}};hoursInputEl.bind('blur',function(e){if(!scope.validHours&&scope.hours<10){scope.$apply(function(){scope.hours=pad(scope.hours);});}});scope.updateMinutes=function(){var minutes=getMinutesFromTemplate();if(angular.isDefined(minutes)){selected.setMinutes(minutes);refresh('m');}else{invalidate(undefined,true);}};minutesInputEl.bind('blur',function(e){if(!scope.invalidMinutes&&scope.minutes<10){scope.$apply(function(){scope.minutes=pad(scope.minutes);});}});}else{scope.updateHours=angular.noop;scope.updateMinutes=angular.noop;}
ngModel.$render=function(){var date=ngModel.$modelValue?new Date(ngModel.$modelValue):null;if(isNaN(date)){ngModel.$setValidity('time',false);$log.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.');}else{if(date){selected=date;}
makeValid();updateTemplate();}};function refresh(keyboardChange){makeValid();ngModel.$setViewValue(new Date(selected));updateTemplate(keyboardChange);}
function makeValid(){ngModel.$setValidity('time',true);scope.invalidHours=false;scope.invalidMinutes=false;}
function updateTemplate(keyboardChange){var hours=selected.getHours(),minutes=selected.getMinutes();if(scope.showMeridian){hours=(hours===0||hours===12)?12:hours%12;}
scope.hours=keyboardChange==='h'?hours:pad(hours);scope.minutes=keyboardChange==='m'?minutes:pad(minutes);scope.meridian=selected.getHours()<12?meridians[0]:meridians[1];}
function addMinutes(minutes){var dt=new Date(selected.getTime()+minutes*60000);selected.setHours(dt.getHours(),dt.getMinutes());refresh();}
scope.incrementHours=function(){addMinutes(hourStep*60);};scope.decrementHours=function(){addMinutes(-hourStep*60);};scope.incrementMinutes=function(){addMinutes(minuteStep);};scope.decrementMinutes=function(){addMinutes(-minuteStep);};scope.toggleMeridian=function(){addMinutes(12*60*((selected.getHours()<12)?1:-1));};}};}]);angular.module('ui.bootstrap.typeahead',['ui.bootstrap.position','ui.bootstrap.bindHtml']).factory('typeaheadParser',['$parse',function($parse){var TYPEAHEAD_REGEXP=/^\s*(.*?)(?:\s+as\s+(.*?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+(.*)$/;return{parse:function(input){var match=input.match(TYPEAHEAD_REGEXP),modelMapper,viewMapper,source;if(!match){throw new Error("Expected typeahead specification in form of '_modelValue_ (as _label_)? for _item_ in _collection_'"+" but got '"+input+"'.");}
return{itemName:match[3],source:$parse(match[4]),viewMapper:$parse(match[2]||match[1]),modelMapper:$parse(match[1])};}};}]).directive('typeahead',['$compile','$parse','$q','$timeout','$document','$position','typeaheadParser',function($compile,$parse,$q,$timeout,$document,$position,typeaheadParser){var HOT_KEYS=[9,13,27,38,40];return{require:'ngModel',link:function(originalScope,element,attrs,modelCtrl){var minSearch=originalScope.$eval(attrs.typeaheadMinLength)||1;var waitTime=originalScope.$eval(attrs.typeaheadWaitMs)||0;var isEditable=originalScope.$eval(attrs.typeaheadEditable)!==false;var isLoadingSetter=$parse(attrs.typeaheadLoading).assign||angular.noop;var onSelectCallback=$parse(attrs.typeaheadOnSelect);var inputFormatter=attrs.typeaheadInputFormatter?$parse(attrs.typeaheadInputFormatter):undefined;var appendToBody=attrs.typeaheadAppendToBody?$parse(attrs.typeaheadAppendToBody):false;var $setModelValue=$parse(attrs.ngModel).assign;var parserResult=typeaheadParser.parse(attrs.typeahead);var hasFocus;var popUpEl=angular.element('<div typeahead-popup></div>');popUpEl.attr({matches:'matches',active:'activeIdx',select:'select(activeIdx)',query:'query',position:'position'});if(angular.isDefined(attrs.typeaheadTemplateUrl)){popUpEl.attr('template-url',attrs.typeaheadTemplateUrl);}
var scope=originalScope.$new();originalScope.$on('$destroy',function(){scope.$destroy();});var resetMatches=function(){scope.matches=[];scope.activeIdx=-1;};var getMatchesAsync=function(inputValue){var locals={$viewValue:inputValue};isLoadingSetter(originalScope,true);$q.when(parserResult.source(originalScope,locals)).then(function(matches){if(inputValue===modelCtrl.$viewValue&&hasFocus){if(matches.length>0){scope.activeIdx=0;scope.matches.length=0;for(var i=0;i<matches.length;i++){locals[parserResult.itemName]=matches[i];scope.matches.push({label:parserResult.viewMapper(scope,locals),model:matches[i]});}
scope.query=inputValue;scope.position=appendToBody?$position.offset(element):$position.position(element);scope.position.top=scope.position.top+element.prop('offsetHeight');}else{resetMatches();}
isLoadingSetter(originalScope,false);}},function(){resetMatches();isLoadingSetter(originalScope,false);});};resetMatches();scope.query=undefined;var timeoutPromise;modelCtrl.$parsers.unshift(function(inputValue){hasFocus=true;if(inputValue&&inputValue.length>=minSearch){if(waitTime>0){if(timeoutPromise){$timeout.cancel(timeoutPromise);}
timeoutPromise=$timeout(function(){getMatchesAsync(inputValue);},waitTime);}else{getMatchesAsync(inputValue);}}else{isLoadingSetter(originalScope,false);resetMatches();}
if(isEditable){return inputValue;}else{if(!inputValue){modelCtrl.$setValidity('editable',true);return inputValue;}else{modelCtrl.$setValidity('editable',false);return undefined;}}});modelCtrl.$formatters.push(function(modelValue){var candidateViewValue,emptyViewValue;var locals={};if(inputFormatter){locals['$model']=modelValue;return inputFormatter(originalScope,locals);}else{locals[parserResult.itemName]=modelValue;candidateViewValue=parserResult.viewMapper(originalScope,locals);locals[parserResult.itemName]=undefined;emptyViewValue=parserResult.viewMapper(originalScope,locals);return candidateViewValue!==emptyViewValue?candidateViewValue:modelValue;}});scope.select=function(activeIdx){var locals={};var model,item;locals[parserResult.itemName]=item=scope.matches[activeIdx].model;model=parserResult.modelMapper(originalScope,locals);$setModelValue(originalScope,model);modelCtrl.$setValidity('editable',true);onSelectCallback(originalScope,{$item:item,$model:model,$label:parserResult.viewMapper(originalScope,locals)});resetMatches();element[0].focus();};element.bind('keydown',function(evt){if(scope.matches.length===0||HOT_KEYS.indexOf(evt.which)===-1){return;}
evt.preventDefault();if(evt.which===40){scope.activeIdx=(scope.activeIdx+1)%scope.matches.length;scope.$digest();}else if(evt.which===38){scope.activeIdx=(scope.activeIdx?scope.activeIdx:scope.matches.length)-1;scope.$digest();}else if(evt.which===13||evt.which===9){scope.$apply(function(){scope.select(scope.activeIdx);});}else if(evt.which===27){evt.stopPropagation();resetMatches();scope.$digest();}});element.bind('blur',function(evt){hasFocus=false;});var dismissClickHandler=function(evt){if(element[0]!==evt.target){resetMatches();scope.$digest();}};$document.bind('click',dismissClickHandler);originalScope.$on('$destroy',function(){$document.unbind('click',dismissClickHandler);});var $popup=$compile(popUpEl)(scope);if(appendToBody){$document.find('body').append($popup);}else{element.after($popup);}}};}]).directive('typeaheadPopup',function(){return{restrict:'EA',scope:{matches:'=',query:'=',active:'=',position:'=',select:'&'},replace:true,templateUrl:'template/typeahead/typeahead-popup.html',link:function(scope,element,attrs){scope.templateUrl=attrs.templateUrl;scope.isOpen=function(){return scope.matches.length>0;};scope.isActive=function(matchIdx){return scope.active==matchIdx;};scope.selectActive=function(matchIdx){scope.active=matchIdx;};scope.selectMatch=function(activeIdx){scope.select({activeIdx:activeIdx});};}};}).directive('typeaheadMatch',['$http','$templateCache','$compile','$parse',function($http,$templateCache,$compile,$parse){return{restrict:'EA',scope:{index:'=',match:'=',query:'='},link:function(scope,element,attrs){var tplUrl=$parse(attrs.templateUrl)(scope.$parent)||'template/typeahead/typeahead-match.html';$http.get(tplUrl,{cache:$templateCache}).success(function(tplContent){element.replaceWith($compile(tplContent.trim())(scope));});}};}]).filter('typeaheadHighlight',function(){function escapeRegexp(queryToEscape){return queryToEscape.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1");}
return function(matchItem,query){return query?matchItem.replace(new RegExp(escapeRegexp(query),'gi'),'<strong>$&</strong>'):matchItem;};});angular.module("template/accordion/accordion-group.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/accordion/accordion-group.html","<div class=\"panel panel-default\">\n"+" <div class=\"panel-heading\">\n"+" <h4 class=\"panel-title\">\n"+" <a class=\"accordion-toggle\" ng-click=\"isOpen = !isOpen\" accordion-transclude=\"heading\">{{heading}}</a>\n"+" </h4>\n"+" </div>\n"+" <div class=\"panel-collapse\" collapse=\"!isOpen\">\n"+" <div class=\"panel-body\" ng-transclude></div>\n"+" </div>\n"+"</div>");}]);angular.module("template/accordion/accordion.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/accordion/accordion.html","<div class=\"panel-group\" ng-transclude></div>");}]);angular.module("template/alert/alert.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/alert/alert.html","<div class='alert' ng-class='\"alert-\" + (type || \"warning\")'>\n"+" <button ng-show='closeable' type='button' class='close' ng-click='close()'>&times;</button>\n"+" <div ng-transclude></div>\n"+"</div>\n"+"");}]);angular.module("template/carousel/carousel.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/carousel/carousel.html","<div ng-mouseenter=\"pause()\" ng-mouseleave=\"play()\" class=\"carousel\">\n"+" <ol class=\"carousel-indicators\" ng-show=\"slides().length > 1\">\n"+" <li ng-repeat=\"slide in slides()\" ng-class=\"{active: isActive(slide)}\" ng-click=\"select(slide)\"></li>\n"+" </ol>\n"+" <div class=\"carousel-inner\" ng-transclude></div>\n"+" <a class=\"left carousel-control\" ng-click=\"prev()\" ng-show=\"slides().length > 1\"><span class=\"icon-prev\"></span></a>\n"+" <a class=\"right carousel-control\" ng-click=\"next()\" ng-show=\"slides().length > 1\"><span class=\"icon-next\"></span></a>\n"+"</div>\n"+"");}]);angular.module("template/carousel/slide.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/carousel/slide.html","<div ng-class=\"{\n"+" 'active': leaving || (active && !entering),\n"+" 'prev': (next || active) && direction=='prev',\n"+" 'next': (next || active) && direction=='next',\n"+" 'right': direction=='prev',\n"+" 'left': direction=='next'\n"+" }\" class=\"item text-center\" ng-transclude></div>\n"+"");}]);angular.module("template/datepicker/datepicker.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/datepicker/datepicker.html","<table>\n"+" <thead>\n"+" <tr>\n"+" <th><button type=\"button\" class=\"btn btn-default btn-sm pull-left\" ng-click=\"move(-1)\"><i class=\"glyphicon glyphicon-chevron-left\"></i></button></th>\n"+" <th colspan=\"{{rows[0].length - 2 + showWeekNumbers}}\"><button type=\"button\" class=\"btn btn-default btn-sm btn-block\" ng-click=\"toggleMode()\"><strong>{{title}}</strong></button></th>\n"+" <th><button type=\"button\" class=\"btn btn-default btn-sm pull-right\" ng-click=\"move(1)\"><i class=\"glyphicon glyphicon-chevron-right\"></i></button></th>\n"+" </tr>\n"+" <tr ng-show=\"labels.length > 0\" class=\"h6\">\n"+" <th ng-show=\"showWeekNumbers\" class=\"text-center\">#</th>\n"+" <th ng-repeat=\"label in labels\" class=\"text-center\">{{label}}</th>\n"+" </tr>\n"+" </thead>\n"+" <tbody>\n"+" <tr ng-repeat=\"row in rows\">\n"+" <td ng-show=\"showWeekNumbers\" class=\"text-center\"><em>{{ getWeekNumber(row) }}</em></td>\n"+" <td ng-repeat=\"dt in row\" class=\"text-center\">\n"+" <button type=\"button\" style=\"width:100%;\" class=\"btn btn-default btn-sm\" ng-class=\"{'btn-info': dt.selected}\" ng-click=\"select(dt.date)\" ng-disabled=\"dt.disabled\"><span ng-class=\"{'text-muted': dt.secondary}\">{{dt.label}}</span></button>\n"+" </td>\n"+" </tr>\n"+" </tbody>\n"+"</table>\n"+"");}]);angular.module("template/datepicker/popup.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/datepicker/popup.html","<ul class=\"dropdown-menu\" ng-style=\"{display: (isOpen && 'block') || 'none', top: position.top+'px', left: position.left+'px'}\">\n"+" <li ng-transclude></li>\n"+" <li ng-show=\"showButtonBar\" style=\"padding:10px 9px 2px\">\n"+" <span class=\"btn-group\">\n"+" <button type=\"button\" class=\"btn btn-sm btn-info\" ng-click=\"today()\">{{currentText}}</button>\n"+" <button type=\"button\" class=\"btn btn-sm btn-default\" ng-click=\"showWeeks = ! showWeeks\" ng-class=\"{active: showWeeks}\">{{toggleWeeksText}}</button>\n"+" <button type=\"button\" class=\"btn btn-sm btn-danger\" ng-click=\"clear()\">{{clearText}}</button>\n"+" </span>\n"+" <button type=\"button\" class=\"btn btn-sm btn-success pull-right\" ng-click=\"isOpen = false\">{{closeText}}</button>\n"+" </li>\n"+"</ul>\n"+"");}]);angular.module("template/modal/backdrop.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/modal/backdrop.html","<div class=\"modal-backdrop fade\" ng-class=\"{in: animate}\" ng-style=\"{'z-index': 1040 + index*10}\"></div>");}]);angular.module("template/modal/window.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/modal/window.html","<div tabindex=\"-1\" class=\"modal fade {{ windowClass }}\" ng-class=\"{in: animate}\" ng-style=\"{'z-index': 1050 + index*10, display: 'block'}\" ng-click=\"close($event)\">\n"+" <div class=\"modal-dialog\"><div class=\"modal-content\" ng-transclude></div></div>\n"+"</div>");}]);angular.module("template/pagination/pager.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/pagination/pager.html","<ul class=\"pager\">\n"+" <li ng-repeat=\"page in pages\" ng-class=\"{disabled: page.disabled, previous: page.previous, next: page.next}\"><a ng-click=\"selectPage(page.number)\">{{page.text}}</a></li>\n"+"</ul>");}]);angular.module("template/pagination/pagination.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/pagination/pagination.html","<ul class=\"pagination\">\n"+" <li ng-repeat=\"page in pages\" ng-class=\"{active: page.active, disabled: page.disabled}\"><a ng-click=\"selectPage(page.number)\">{{page.text}}</a></li>\n"+"</ul>");}]);angular.module("template/tooltip/tooltip-html-unsafe-popup.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/tooltip/tooltip-html-unsafe-popup.html","<div class=\"tooltip {{placement}}\" ng-class=\"{ in: isOpen(), fade: animation() }\">\n"+" <div class=\"tooltip-arrow\"></div>\n"+" <div class=\"tooltip-inner\" bind-html-unsafe=\"content\"></div>\n"+"</div>\n"+"");}]);angular.module("template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/tooltip/tooltip-popup.html","<div class=\"tooltip {{placement}}\" ng-class=\"{ in: isOpen(), fade: animation() }\">\n"+" <div class=\"tooltip-arrow\"></div>\n"+" <div class=\"tooltip-inner\" ng-bind=\"content\"></div>\n"+"</div>\n"+"");}]);angular.module("template/popover/popover.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/popover/popover.html","<div class=\"popover {{placement}}\" ng-class=\"{ in: isOpen(), fade: animation() }\">\n"+" <div class=\"arrow\"></div>\n"+"\n"+" <div class=\"popover-inner\">\n"+" <h3 class=\"popover-title\" ng-bind=\"title\" ng-show=\"title\"></h3>\n"+" <div class=\"popover-content\" ng-bind=\"content\"></div>\n"+" </div>\n"+"</div>\n"+"");}]);angular.module("template/progressbar/bar.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/progressbar/bar.html","<div class=\"progress-bar\" ng-class=\"type && 'progress-bar-' + type\" ng-transclude></div>");}]);angular.module("template/progressbar/progress.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/progressbar/progress.html","<div class=\"progress\" ng-transclude></div>");}]);angular.module("template/progressbar/progressbar.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/progressbar/progressbar.html","<div class=\"progress\"><div class=\"progress-bar\" ng-class=\"type && 'progress-bar-' + type\" ng-transclude></div></div>");}]);angular.module("template/rating/rating.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/rating/rating.html","<span ng-mouseleave=\"reset()\">\n"+" <i ng-repeat=\"r in range\" ng-mouseenter=\"enter($index + 1)\" ng-click=\"rate($index + 1)\" class=\"glyphicon\" ng-class=\"$index < val && (r.stateOn || 'glyphicon-star') || (r.stateOff || 'glyphicon-star-empty')\"></i>\n"+"</span>");}]);angular.module("template/tabs/tab.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/tabs/tab.html","<li ng-class=\"{active: active, disabled: disabled}\">\n"+" <a ng-click=\"select()\" tab-heading-transclude>{{heading}}</a>\n"+"</li>\n"+"");}]);angular.module("template/tabs/tabset-titles.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/tabs/tabset-titles.html","<ul class=\"nav {{type && 'nav-' + type}}\" ng-class=\"{'nav-stacked': vertical}\">\n"+"</ul>\n"+"");}]);angular.module("template/tabs/tabset.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/tabs/tabset.html","\n"+"<div class=\"tabbable\">\n"+" <ul class=\"nav {{type && 'nav-' + type}}\" ng-class=\"{'nav-stacked': vertical, 'nav-justified': justified}\" ng-transclude></ul>\n"+" <div class=\"tab-content\">\n"+" <div class=\"tab-pane\" \n"+" ng-repeat=\"tab in tabs\" \n"+" ng-class=\"{active: tab.active}\"\n"+" tab-content-transclude=\"tab\">\n"+" </div>\n"+" </div>\n"+"</div>\n"+"");}]);angular.module("template/timepicker/timepicker.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/timepicker/timepicker.html","<table>\n"+" <tbody>\n"+" <tr class=\"text-center\">\n"+" <td><a ng-click=\"incrementHours()\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-up\"></span></a></td>\n"+" <td>&nbsp;</td>\n"+" <td><a ng-click=\"incrementMinutes()\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-up\"></span></a></td>\n"+" <td ng-show=\"showMeridian\"></td>\n"+" </tr>\n"+" <tr>\n"+" <td style=\"width:50px;\" class=\"form-group\" ng-class=\"{'has-error': invalidHours}\">\n"+" <input type=\"text\" ng-model=\"hours\" ng-change=\"updateHours()\" class=\"form-control text-center\" ng-mousewheel=\"incrementHours()\" ng-readonly=\"readonlyInput\" maxlength=\"2\">\n"+" </td>\n"+" <td>:</td>\n"+" <td style=\"width:50px;\" class=\"form-group\" ng-class=\"{'has-error': invalidMinutes}\">\n"+" <input type=\"text\" ng-model=\"minutes\" ng-change=\"updateMinutes()\" class=\"form-control text-center\" ng-readonly=\"readonlyInput\" maxlength=\"2\">\n"+" </td>\n"+" <td ng-show=\"showMeridian\"><button type=\"button\" class=\"btn btn-default text-center\" ng-click=\"toggleMeridian()\">{{meridian}}</button></td>\n"+" </tr>\n"+" <tr class=\"text-center\">\n"+" <td><a ng-click=\"decrementHours()\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-down\"></span></a></td>\n"+" <td>&nbsp;</td>\n"+" <td><a ng-click=\"decrementMinutes()\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-down\"></span></a></td>\n"+" <td ng-show=\"showMeridian\"></td>\n"+" </tr>\n"+" </tbody>\n"+"</table>\n"+"");}]);angular.module("template/typeahead/typeahead-match.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/typeahead/typeahead-match.html","<a tabindex=\"-1\" bind-html-unsafe=\"match.label | typeaheadHighlight:query\"></a>");}]);angular.module("template/typeahead/typeahead-popup.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("template/typeahead/typeahead-popup.html","<ul class=\"dropdown-menu\" ng-style=\"{display: isOpen()&&'block' || 'none', top: position.top+'px', left: position.left+'px'}\">\n"+" <li ng-repeat=\"match in matches\" ng-class=\"{active: isActive($index) }\" ng-mouseenter=\"selectActive($index)\" ng-click=\"selectMatch($index)\">\n"+" <div typeahead-match index=\"$index\" match=\"match\" query=\"query\" template-url=\"templateUrl\"></div>\n"+" </li>\n"+"</ul>");}]);