aboutsummaryrefslogtreecommitdiffstats
path: root/97suifangqa/apps
diff options
context:
space:
mode:
authorAlvin Li <liweitianux@gmail.com>2013-08-21 07:55:06 +0800
committerAlvin Li <liweitianux@gmail.com>2013-08-21 07:55:06 +0800
commit3ef1e03e4273544cce177ce7fa0e0ab75eded990 (patch)
treebdce02e1e308dd040918de95ecce9b8254c3fc65 /97suifangqa/apps
parent9d07e8a26657542c98535abb7812d83a98839918 (diff)
download97dev-3ef1e03e4273544cce177ce7fa0e0ab75eded990.tar.bz2
med 'indicator/static/javascripts/load_card.js' to 'card_chart.js
* set Highcharts global options in 'card_chart.js' * 'indicator/templates/indicator/SheetDefault.html': added js function 'chart_getdata_draw()' to draw chart for card * improved 'indicator.views.ajax_get_card_data_chart()' * implemented drawing chart for 'FLOAT_TYPE' and 'RANGE_TYPE' indicators * added datetime plugin 'momentjs': 'indicator/static/plugins/moment/', version 2.1.0 * 'indicator/templates/indicator/NewDeleteIndex.html': added link button to goto 'indicator_status' SheetDefault.html page * added option 'useHTML: true' for Highcharts; improved the display style of ylabels, if value >9999, then show in exponential notation * improved drawing of 'detail_chart', and the 'detail_card_info' * moved js global var to 'SheetDefault.html'; renamed var 'card_detail_id' to 'detail_card_id' * fixed js local variables problem; added 'var' keyword * added check of 'date' for 'indicator.models.IndicatorRecord' * ThickBox: removed param 'no1_title' from thickbox popup page's url placed the param 'card_id' before 'TB_iframe' * changed to use 'ANNOTATION_TYPES' for 'sciblog.models.BlogAnnotation' * improved 'indicator/templates/indicator/popup/IndexDesc.html' improved 'indicator.views.indicator_indexdesc()' * added 'sympy' to 'env/requirements.pip' TODO: * BlogAnnotation: 'get_absolute_url()' -> 'IndexDesc: go_library_btn' * detail_card_info: data table * Data input/edit form, and validate & submit * Highcharts xAxis labels problem ??
Diffstat (limited to '97suifangqa/apps')
-rw-r--r--97suifangqa/apps/indicator/fixtures/initial_data.json83
-rw-r--r--97suifangqa/apps/indicator/models.py35
-rw-r--r--97suifangqa/apps/indicator/static/css/index_desc.css16
-rw-r--r--97suifangqa/apps/indicator/static/css/new_delete_index.css27
-rw-r--r--97suifangqa/apps/indicator/static/css/sheet_default.css14
-rw-r--r--97suifangqa/apps/indicator/static/css/sidebar.css4
-rw-r--r--97suifangqa/apps/indicator/static/javascripts/card_chart.js272
-rw-r--r--97suifangqa/apps/indicator/static/javascripts/edit_history_data.js5
-rw-r--r--97suifangqa/apps/indicator/static/javascripts/load_card.js333
-rw-r--r--97suifangqa/apps/indicator/static/javascripts/sheetdefault.js6
-rw-r--r--97suifangqa/apps/indicator/static/plugins/datepicker/datepicker.js10514
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/ar-ma.js5
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/ar.js5
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/bg.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/br.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/ca.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/cs.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/cv.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/da.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/de.js5
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/el.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/en-ca.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/en-gb.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/eo.js6
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/es.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/et.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/eu.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/fa.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/fi.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/fr-ca.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/fr.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/gl.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/he.js5
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/hi.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/hu.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/id.js5
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/is.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/it.js5
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/ja.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/ka.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/ko.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/lv.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/ms-my.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/nb.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/ne.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/nl.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/nn.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/pl.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/pt-br.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/pt.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/ro.js5
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/ru.js5
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/sk.js5
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/sl.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/sq.js5
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/sv.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/th.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/tr.js5
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/tzm-la.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/tzm.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/uk.js5
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/zh-cn.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/lang/zh-tw.js4
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/langs.js3693
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/langs.min.js3
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/moment.js1662
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/moment.min.js6
-rw-r--r--97suifangqa/apps/indicator/static/plugins/moment/readme.md269
-rw-r--r--97suifangqa/apps/indicator/static/plugins/thickbox/thickbox.css270
-rw-r--r--97suifangqa/apps/indicator/static/plugins/thickbox/thickbox.js575
-rw-r--r--97suifangqa/apps/indicator/templates/indicator/NewDeleteIndex.html12
-rw-r--r--97suifangqa/apps/indicator/templates/indicator/SheetDefault.html224
-rw-r--r--97suifangqa/apps/indicator/templates/indicator/popup/IndexDesc.html73
-rw-r--r--97suifangqa/apps/indicator/views.py161
-rw-r--r--97suifangqa/apps/sciblog/models.py41
75 files changed, 12410 insertions, 6110 deletions
diff --git a/97suifangqa/apps/indicator/fixtures/initial_data.json b/97suifangqa/apps/indicator/fixtures/initial_data.json
index 07aeaaa..1c18457 100644
--- a/97suifangqa/apps/indicator/fixtures/initial_data.json
+++ b/97suifangqa/apps/indicator/fixtures/initial_data.json
@@ -97,11 +97,11 @@
"model": "indicator.indicator",
"fields": {
"addByUser": 1,
- "name": "\u5b9a1",
+ "name": "\u5b9a\u503c1",
"dataType": "FL",
- "pinyin": "ding-1",
+ "pinyin": "ding-zhi-1",
"helpText": "\u6d6e\u70b9\u578b",
- "englishName": "indicator1",
+ "englishName": "float1",
"categories": [
1
],
@@ -145,12 +145,14 @@
"pk": 1,
"model": "indicator.userindicator",
"fields": {
+ "followedHistories": [
+ 4
+ ],
"followedIndicators": [
3,
1,
2
],
- "followedHistories": [],
"user": 1
}
},
@@ -158,8 +160,8 @@
"pk": 2,
"model": "indicator.userindicator",
"fields": {
- "followedIndicators": [],
"followedHistories": [],
+ "followedIndicators": [],
"user": 2
}
},
@@ -184,10 +186,10 @@
"model": "indicator.indicatorrecord",
"fields": {
"indicator": 1,
- "notes": "\r\n\u8bb0\u5f55",
+ "notes": "\u8bb0\u5f552",
"created_at": "2013-08-09T10:53:15.927Z",
- "updated_at": "2013-08-16T16:23:33.798Z",
- "value": "50",
+ "updated_at": "2013-08-18T13:35:03.065Z",
+ "value": "100",
"val_min": null,
"user": 1,
"date": "2013-08-09",
@@ -196,6 +198,54 @@
}
},
{
+ "pk": 4,
+ "model": "indicator.indicatorrecord",
+ "fields": {
+ "indicator": 1,
+ "notes": "",
+ "created_at": "2013-08-18T13:33:20.569Z",
+ "updated_at": "2013-08-18T13:33:20.569Z",
+ "value": "150",
+ "val_min": null,
+ "user": 1,
+ "date": "2013-08-15",
+ "val_max": null,
+ "unit": 1
+ }
+ },
+ {
+ "pk": 6,
+ "model": "indicator.indicatorrecord",
+ "fields": {
+ "indicator": 2,
+ "notes": "",
+ "created_at": "2013-08-18T13:46:26.511Z",
+ "updated_at": "2013-08-18T13:46:26.511Z",
+ "value": "",
+ "val_min": 10000.0,
+ "user": 1,
+ "date": "2013-08-05",
+ "val_max": 23000.0,
+ "unit": 3
+ }
+ },
+ {
+ "pk": 5,
+ "model": "indicator.indicatorrecord",
+ "fields": {
+ "indicator": 2,
+ "notes": "",
+ "created_at": "2013-08-18T13:37:41.124Z",
+ "updated_at": "2013-08-18T13:37:41.125Z",
+ "value": "",
+ "val_min": 15000.0,
+ "user": 1,
+ "date": "2013-08-10",
+ "val_max": 25000.0,
+ "unit": 3
+ }
+ },
+ {
"pk": 3,
"model": "indicator.indicatorrecord",
"fields": {
@@ -339,6 +389,21 @@
}
},
{
+ "pk": 4,
+ "model": "indicator.innateconfine",
+ "fields": {
+ "math_max": 15000.0,
+ "indicator": 4,
+ "human_max": 10000.0,
+ "description": "float type",
+ "val_norm": "",
+ "addByUser": 1,
+ "human_min": 500.0,
+ "unit": 4,
+ "math_min": 0.0
+ }
+ },
+ {
"pk": 1,
"model": "indicator.relatedindicator",
"fields": {
@@ -403,4 +468,4 @@
"objectType": "BL"
}
}
-]
+] \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/models.py b/97suifangqa/apps/indicator/models.py
index 18c699c..1b35791 100644
--- a/97suifangqa/apps/indicator/models.py
+++ b/97suifangqa/apps/indicator/models.py
@@ -282,15 +282,15 @@ class IndicatorRecord(models.Model): # {{{
related_name="indicator_records", null=True, blank=True)
value = models.CharField(u"指标数据值", max_length=30,
blank=True)
- val_max = models.FloatField(u"数据范围上限",
- null=True, blank=True)
val_min = models.FloatField(u"数据范围下限",
null=True, blank=True)
+ val_max = models.FloatField(u"数据范围上限",
+ null=True, blank=True)
notes = models.TextField(u"记录说明", blank=True)
class Meta:
verbose_name_plural = u"指标数据记录"
- ordering = ['id', 'date', 'created_at']
+ ordering = ['indicator__id', 'date', 'created_at']
def __unicode__(self):
return u"< IndicatorRecord: #%s; %s, %s, %s >" % (self.id,
@@ -308,6 +308,13 @@ class IndicatorRecord(models.Model): # {{{
def is_valid(self, **kwargs): # {{{
"""验证输入数据是否合法"""
+ # check if exists record for the date
+ qs = IndicatorRecord.objects.filter(indicator=self.indicator,
+ date=self.date)
+ if qs:
+ raise ValueError(u'date="%s" 该日期已经存在记录' % self.date)
+ return False
+ # check dataType
if self.indicator.dataType == self.indicator.INTEGER_TYPE:
# 整数型
try:
@@ -677,8 +684,8 @@ class IndicatorRecord(models.Model): # {{{
'date': self.date.isoformat(),
'unit_id': unit_id,
'value': self.value,
- 'val_max': self.val_max,
'val_min': self.val_min,
+ 'val_max': self.val_max,
'notes': self.notes,
'record_histories_id': [rh.id
for rh in self.record_histories.all()],
@@ -706,10 +713,10 @@ class RecordHistory(models.Model): # {{{
null=True, blank=True, editable=False)
value_bak = models.CharField(u"原指标数据值", max_length=30,
blank=True, editable=False)
- val_max_bak = models.FloatField(u"原数据范围上限",
- null=True, blank=True, editable=False)
val_min_bak = models.FloatField(u"原数据范围下限",
null=True, blank=True, editable=False)
+ val_max_bak = models.FloatField(u"原数据范围上限",
+ null=True, blank=True, editable=False)
notes_bak = models.TextField(u"原记录说明", blank=True,
editable=False)
@@ -727,8 +734,8 @@ class RecordHistory(models.Model): # {{{
self.date_bak = sr.date
self.unit_bak = sr.unit
self.value_bak = sr.value
- self.val_max_bak = sr.val_max
self.val_min_bak = sr.val_min
+ self.val_max_bak = sr.val_max
self.notes_bak = sr.notes
# save
super(RecordHistory, self).save(**kwargs)
@@ -748,8 +755,8 @@ class RecordHistory(models.Model): # {{{
'date_bak': self.date_bak.isoformat(),
'unit_bak_id': unit_bak_id,
'value_bak': self.value_bak,
- 'val_max_bak': self.val_max_bak,
'val_min_bak': self.val_min_bak,
+ 'val_max_bak': self.val_max_bak,
'notes_bak': self.notes_bak,
}
return dump_data
@@ -856,15 +863,15 @@ class InnateConfine(models.Model): # {{{
val_norm = models.CharField(u"正常值", max_length=30, blank=True,
help_text=u'填写"整数型","阴阳(+/-)型数据"')
# normal range
- human_max = models.FloatField(u"人体正常值上限",
- null=True, blank=True)
human_min = models.FloatField(u"人体正常值下限",
null=True, blank=True)
- # possbile range
- math_max = models.FloatField(u"数学可能值上限",
+ human_max = models.FloatField(u"人体正常值上限",
null=True, blank=True)
+ # possbile range
math_min = models.FloatField(u"数学可能值下限",
null=True, blank=True)
+ math_max = models.FloatField(u"数学可能值上限",
+ null=True, blank=True)
# description or notes
description = models.TextField(u"描述", blank=True)
# 记录添加的用户,用户只能修改自己添加的对象
@@ -957,10 +964,10 @@ class InnateConfine(models.Model): # {{{
'indicator_id': self.indicator.id,
'unit': unit_dump,
'val_norm': self.val_norm,
- 'human_max': self.human_max,
'human_min': self.human_min,
- 'math_max': self.math_max,
+ 'human_max': self.human_max,
'math_min': self.math_min,
+ 'math_max': self.math_max,
'addByUser_id': self.addByUser.id,
}
return dump_data
diff --git a/97suifangqa/apps/indicator/static/css/index_desc.css b/97suifangqa/apps/indicator/static/css/index_desc.css
index ab042d4..c5adbc8 100644
--- a/97suifangqa/apps/indicator/static/css/index_desc.css
+++ b/97suifangqa/apps/indicator/static/css/index_desc.css
@@ -31,15 +31,27 @@
line-height: 20px;
color: #4A4A4A;
font-size: 14px;
- letter-spacing: 1px;
overflow: auto;
}
+.index_desc_content .not_found {
+ color: #4A4A4A;
+ line-height: 22px;
+ font-size: 16px;
+ text-align: left;
+}
.collection {
background-color: #F7F7F7;
height: 38px;
line-height: 38px;
+ font-size: 16px;
text-align: center;
cursor: pointer;
+ border: 1px solid #CCCCCC;
+ border-radius: 3px;
+ border-shadow: 0 0 2px white;
+}
+.collection:hover {
+ background-color: #EAEAEA;
}
.go_library {
padding-top: 8px;
@@ -53,4 +65,4 @@
padding-right: 5px;
padding-bottom: 2px;
padding-top: 2px;
-} \ No newline at end of file
+}
diff --git a/97suifangqa/apps/indicator/static/css/new_delete_index.css b/97suifangqa/apps/indicator/static/css/new_delete_index.css
index b5b161a..f26430d 100644
--- a/97suifangqa/apps/indicator/static/css/new_delete_index.css
+++ b/97suifangqa/apps/indicator/static/css/new_delete_index.css
@@ -202,3 +202,30 @@
border-bottom: 1px solid #BFBFBF;
height: 24px;
}
+
+.link_container {
+ width: 596px;
+ height: 39px;
+ margin: 10px 0; /* top/bottom: 10px; left/right: 0 */
+}
+
+.link_container .status_link {
+ width: 594px;
+ height: 37px;
+ line-height: 37px;
+ border: 1px solid #B5B5B5;
+ border-radius: 2px;
+ /* background-color: #F7F7F7; */
+ background-color: #F3F3F1;
+ text-align: center;
+}
+
+.link_container .status_link a {
+ color: #4A4A4A;
+ text-decoration: none;
+ font-weight: bold;
+ font-size: 19px;
+ letter-spacing: 1px;
+ cursor: pointer;
+}
+
diff --git a/97suifangqa/apps/indicator/static/css/sheet_default.css b/97suifangqa/apps/indicator/static/css/sheet_default.css
index 15d1a98..8f9e001 100644
--- a/97suifangqa/apps/indicator/static/css/sheet_default.css
+++ b/97suifangqa/apps/indicator/static/css/sheet_default.css
@@ -41,12 +41,17 @@
}
.detail_card_info .card_title {
height: 32px;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ border-bottom: 1px solid #CACACA;
+}
+.detail_card_info .card_title .title {
+ height: 32px;
line-height: 32px;
color: #4b4a48;
font-weight: bold;
font-size: 18px;
- padding-bottom: 10px;
- border-bottom: 1px solid #CACACA;
+ float: left;
}
.detail_card_info .card_title .collapse_btn {
width: 80px;
@@ -69,7 +74,7 @@
line-height: 23px;
float: left;
}
-.detail_card_info .search_data_div .recent_two_week {
+.detail_card_info .search_data_div .shift_date {
margin-left: 4px;
}
.detail_card_info .search_data_div .unselected {
@@ -101,6 +106,9 @@
top: 2px;
right: 8px;
}
+.detail_card_info .chart {
+ height: 400px;
+}
.detail_card_info .table_div table {
margin-bottom: 0;
}
diff --git a/97suifangqa/apps/indicator/static/css/sidebar.css b/97suifangqa/apps/indicator/static/css/sidebar.css
index 39a6ce0..185145a 100644
--- a/97suifangqa/apps/indicator/static/css/sidebar.css
+++ b/97suifangqa/apps/indicator/static/css/sidebar.css
@@ -179,7 +179,7 @@
#compare_container .compare_btn {
border: 1px solid #7da625;
width: 380px;
- height: 37px;
+ height: 38px;
border-radius: 3px;
margin-top: 8px;
}
@@ -203,4 +203,4 @@
#compare_container .logo_container {
margin-top: 30px;
text-align: center;
-} \ No newline at end of file
+}
diff --git a/97suifangqa/apps/indicator/static/javascripts/card_chart.js b/97suifangqa/apps/indicator/static/javascripts/card_chart.js
new file mode 100644
index 0000000..42a5220
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/javascripts/card_chart.js
@@ -0,0 +1,272 @@
+// set global options for hightcharts {{{
+$(function() {
+ Highcharts.setOptions ({
+ //chart: {
+ // type: 'areaspline'
+ // //marginLeft: 25,
+ // //height: 223,
+ // //spacingTop: 10,
+ // //spacingBottom: 4
+ // //overflow: false,
+ // //zIndex: 5
+ //},
+ colors: ['#31B6AD'],
+ credits: {
+ enabled: false
+ },
+ legend: {
+ enabled: false
+ },
+ plotOptions: {
+ series: {
+ fillOpacity: 0.12,
+ lineWidth: 1,
+ marker: {
+ enabled: true, //false false的时候就不会突出显示点
+ lineColor: '#31B6AD',
+ lineWidth: 1,
+ radius: 3, // 点的大小
+ fillColor: '#FFFFFF' // 设置点中间填充的颜色
+ },
+ shadow: false
+ //threshold: null
+ }
+ },
+ title: {
+ text: null
+ },
+ tooltip: {
+ useHTML: true,
+ style: {
+ padding: '7px'
+ },
+ borderColor: '#EAEAEA'
+ },
+ xAxis: {
+ type: 'datetime',
+ dateTimeLabelFormats: {
+ day: '%m-%e',
+ month: '%Y-%m'
+ },
+ lineColor: '#CECECE',
+ gridLineColor: '#EFECEF',
+ gridLineWidth: 1,
+ tickWidth: 0,
+ labels: {
+ step: 2,
+ maxStaggerLines: 1
+ },
+ startOnTick: false,
+ endOnTick: false,
+ //tickInterval: (7 * 24 * 3600 * 1000), // 7 days
+ tickInterval: null,
+ tickPixelInterval: 50,
+ tickColor: '#FFFFFF'
+ },
+ yAxis: {
+ title: {
+ text: null
+ },
+ min: null,
+ max: null,
+ //allowDecimals: false,
+ startOnTick: false,
+ endOnTick: false,
+ tickInterval: null,
+ tickPixelInterval: 40,
+ lineColor: '#CECECE',
+ lineWidth: 2,
+ gridLineColor: '#EFECEF',
+ gridLineWidth: 1,
+ minPadding: 0.3,
+ maxPadding: 1.2
+ }
+ });
+});
+// }}}
+
+$(document).ready(function(){
+ //详细历史记录
+ $(".detail_history").bind("click", function(){
+ // update 'detail_card_id'
+ detail_card_id = $(this).closest(".index_card").attr("id").replace('index_card_', '');
+ // check if this card has data
+ // if has no data, then exists div class="edit_icon_container"
+ if ($("#index_card_"+detail_card_id + " .edit_icon_container").length) {
+ $(".detail_card_info").hide();
+ return false;
+ }
+ // get the index title and set for the 'detail card'
+ var index_title = $("#index_card_"+detail_card_id + " .card_title").html();
+ $(".detail_card_info .card_title .title").html(index_title);
+ // set date for the 'shift_date' buttons
+ var date_fmt = 'YYYY-MM-DD';
+ var today_mm = moment();
+ var today_str = today_mm.format(date_fmt);
+ var three_month_ago_str = today_mm.clone().subtract('months', 3).format(date_fmt);
+ var six_month_ago_str = today_mm.clone().subtract('months', 6).format(date_fmt);
+ $(".recent_three_month").attr('end_date', today_str);
+ $(".recent_three_month").attr('begin_date', three_month_ago_str);
+ $(".recent_six_month").attr('end_date', today_str);
+ $(".recent_six_month").attr('begin_date', six_month_ago_str);
+ // draw chart
+ // pass default global var 'begin_date_str' and 'end_date_str'
+ // detail_chart global var: 'detail_chart'
+ // options for chart global var: 'options_chart_<id>'
+ // update global var 'detail_chart_options'
+ detail_chart_options = 'options_chart_' + detail_card_id;
+ redraw_chart(detail_chart_str, detail_chart_options,
+ begin_date_str, end_date_str
+ );
+ $(".act_card_container").addClass("move_div_2_left");
+ return false;
+ });
+
+ //切换日期
+ $(".shift_date").bind("click", function(){
+ $(".shift_date").addClass("unselected");
+ $(this).removeClass("unselected");
+ var begin_str = $(this).attr("begin_date");
+ var end_str = $(this).attr("end_date");
+ redraw_chart(detail_chart_str, detail_chart_options,
+ begin_str, end_str
+ );
+ return false;
+ });
+
+ //根据日期搜索
+ $("#search_begin_date, #search_end_date").bind("change", function(){
+ $(".shift_date").addClass("unselected");
+ var begin_str = $("#search_begin_date").val();
+ var end_str = $("#search_end_date").val();
+ redraw_chart(detail_chart_str, detail_chart_options,
+ begin_str, end_str
+ );
+ return false;
+ });
+
+ //浏览更多
+ $(".see_more_btn").bind("click", function(){
+ var btn = $(".see_more_btn");
+ var end_str = end_date_str;
+ get_card_data_table(null, end_str, false);
+ return false;
+ });
+
+ //收起历史记录
+ $(".collapse_btn").bind("click", function(){
+ // //删除图表数据
+ // var serieses = detail_chart.series;
+ // for (series_key in serieses){
+ // serieses[series_key].remove();
+ // }
+ //删除图表
+ if (window[detail_chart_str] != null) {
+ window[detail_chart_str].destroy();
+ window[detail_chart_str] = null;
+ }
+ //删除表格数据
+ $("tr").not(".first_line").remove();
+ //隐藏div
+ $(".detail_card_info").hide();
+ //初始化详细卡片id
+ detail_card_id = "-1";
+ //添加删除div位置初始化
+ $(".act_card_container").removeClass("move_div_2_left");
+ return false;
+ });
+});
+
+// 重画历史记录图表
+// destroy the original chart and new.
+// chart_str: (string),
+// name of global var of chart to draw;
+// and the div id to contain the chart.
+// options_str: (string),
+// name of global var of the chart options for drawing,
+// used to draw the detail chart by updating its data.
+// begin, end: (string), 'YYYY-MM-DD'
+function redraw_chart(chart_str, options_str, begin, end){
+ var time = moment().valueOf();
+ $.ajax({
+ type: 'get',
+ url: indicator_url + 'ajax/get_card_data_chart',
+ data: 'card_id='+detail_card_id + '&begin='+begin + '&end='+end + '&time='+time,
+ dataType: 'json',
+ success: function(dataJson) {
+ // 设置默认起始结束时间
+ //console.log(begin);
+ //console.log(end);
+ var begin_date_js = $.datepicker.parseDate('yy-mm-dd', begin);
+ var end_date_js = $.datepicker.parseDate('yy-mm-dd', end);
+ $("#search_begin_date").datepicker("setDate", begin_date_js);
+ $("#search_end_date").datepicker("setDate", end_date_js);
+
+ //显示
+ $(".detail_card_info").show();
+
+ //删除chart已有数据
+ //var serieses = detail_chart.series;
+ //for (series_key in serieses){
+ // serieses[series_key].remove();
+ //}
+ //更新chart数据
+ //detail_chart.addSeries({
+ // data: dataJson,
+ // pointStart: begin_date_log_UTC_time,
+ // pointInterval: pointInterval
+ //});
+
+ // destroy original chart and
+ // redraw with new options and data
+ var begin_dt = moment(begin);
+ var end_dt = moment(end);
+ window[options_str].chart.renderTo = chart_str;
+ window[options_str].xAxis.min = begin_dt.valueOf();
+ window[options_str].xAxis.max = end_dt.valueOf();
+ window[options_str].series[0].data = dataJson;
+ // clickable data point
+ window[options_str].plotOptions = {
+ series: {
+ cursor: 'pointer',
+ point: {
+ events: {
+ click: function(event) {
+ //console.log(event);
+ //console.log(this);
+ var date = moment(this.x).utc().format('YYYY-MM-DD');
+ TB_show(false, indicator_url+'popup/edithistorydata?card_id='+detail_card_id+'&date='+date+'&TB_iframe=true&transfer_params&height=351&width=630', false);
+ }
+ }
+ }
+ }
+ }
+ if (window[chart_str] != null) {
+ window[chart_str].destroy();
+ window[chart_str] = null;
+ }
+ window[chart_str] = new Highcharts.Chart(window[options_str]);
+
+ //更新table数据
+ //TODO
+ get_card_data_table(begin, end, true);
+ }
+ });
+}
+
+function get_card_data_table(begin, end, redraw){
+ var time = moment().valueOf();
+ $.ajax({
+ type: 'get',
+ url: indicator_url + 'ajax/get_card_data_table',
+ data: 'card_id='+detail_card_id + '&begin='+begin + '&end='+end + '&time='+time,
+ success: function(data) {
+ if(redraw){
+ $("tr").not(".first_line").remove();
+ }
+ $("table").append(data);
+ }
+ });
+}
+
+// vim: set ts=8 sw=4 tw=0 fenc=utf-8 ft=javascript: //
diff --git a/97suifangqa/apps/indicator/static/javascripts/edit_history_data.js b/97suifangqa/apps/indicator/static/javascripts/edit_history_data.js
index 03c62e9..204f404 100644
--- a/97suifangqa/apps/indicator/static/javascripts/edit_history_data.js
+++ b/97suifangqa/apps/indicator/static/javascripts/edit_history_data.js
@@ -1,4 +1,9 @@
$(document).ready(function(){
+ //点大叉,关闭弹层页面
+ $(".edit_history_data_close").bind("click", function(){
+ parent.TB_remove();
+ return false;
+ });
$("#edit_btn").bind("click", function(){
var this_edit_data_div = $(this).parent();
var data_fir = $(this).siblings(".data_fir").text();
diff --git a/97suifangqa/apps/indicator/static/javascripts/load_card.js b/97suifangqa/apps/indicator/static/javascripts/load_card.js
deleted file mode 100644
index 160273b..0000000
--- a/97suifangqa/apps/indicator/static/javascripts/load_card.js
+++ /dev/null
@@ -1,333 +0,0 @@
-var detail_chart;
-
-// set global options for hightcharts {{{
-$(function() {
- Highcharts.setOptions ({
- chart: {
- type: 'area',
- marginLeft: 15,
- height: 223,
- spacingTop: 10,
- spacingBottom: 0
- //overflow: false,
- //zIndex: 5
- },
- colors: ['#31B6AD'],
- credits: {
- enabled: false
- },
- legend: {
- enabled: false
- },
- plotOptions: {
- series: {
- fillOpacity: 0.12,
- lineWidth: 1,
- marker: {
- enabled: true, //false false的时候就不会突出显示点
- lineColor: '#31B6AD',
- lineWidth: 1,
- radius: 3, // 点的大小
- fillColor: '#FFFFFF' // 设置点中间填充的颜色
- },
- shadow: false
- //threshold: null
- }
- },
- //series: [{
- // data: [6.0, 5.9, 5.5, 4.5, 6.2, 6.5, 5.2, 6.0,
- // 5.9, 5.5, 4.5, 6.2, 6.5, 5.2, 6.0, 5.9,
- // 5.5, 4.5, 6.2, 6.5],
- // pointStart: start_date_UTC_time,
- // pointInterval: 1 * 24 * 3600 * 1000 // one day
- //}],
- title: {
- text: null
- },
- tooltip: {
- //formatter: function() {
- // return '<span style="color:#969696;font-weight:bold;">' + Highcharts.dateFormat('%b %e', this.x) + '</span>' +'<br />' + '<span style="color:#464646;font-weight:bold;">' + this.y + 'mmol/L' + '</span>' + '<br />' + 'click for more info';
- //},
- // positioner: function (boxWidth, boxHeight, point) {
- // return { x: point.plotX+80, y: point.plotY-20 };
- // },
- style: {
- padding: '7px'
- },
- borderColor: '#EAEAEA'
- },
- xAxis: {
- type: 'datetime',
- dateTimeLabelFormats: {
- day: '%e/%m'
- },
- lineColor: '#CECECE',
- gridLineColor: '#EFECEF',
- gridLineWidth: 1,
- tickWidth: 0,
- labels:{
- step: 2,
- maxStaggerLines: 1
- },
- tickInterval: (4 * 24 * 3600 * 1000), // 4 days
- tickColor: '#FFFFFF'
- },
- yAxis: {
- //title: {
- // text: ''
- //},
- allowDecimals: false,
- endOnTick: false,
- tickInterval: 1,
- lineColor: '#CECECE',
- lineWidth: 2,
- gridLineColor: '#EFECEF',
- gridLineWidth: 1,
- minPadding: 0.3,
- maxPadding: 1.2
- }
- });
-});
-// }}}
-
-$(document).ready(function(){
- var startDate = '2013-07-13';
- startDate = new Date(startDate.replace(/-/g,"/"));
- var start_date_UTC_time = startDate.getTime() - startDate.getTimezoneOffset() * 60 * 1000;
- var chart3 = new Highcharts.Chart({
- chart: {
- renderTo: 'chart_3'
- },
- yAxis: {
- title: {
- text: ''
- }
- },
- tooltip: {
- formatter: function() {
- return '<span style="color:#969696;font-weight:bold;">' + Highcharts.dateFormat('%b %e', this.x) + '</span>' +'<br />' + '<span style="color:#464646;font-weight:bold;">' + this.y + 'mmol/L' + '</span>' + '<br />' + 'click for more info';
- }
- // positioner: function (boxWidth, boxHeight, point) {
- // return { x: point.plotX+80, y: point.plotY-20 };
- // },
- },
- series: [{
- data: [6.0, 5.9, 5.5, 4.5, 6.2, 6.5, 5.2, 6.0, 5.9, 5.5, 4.5, 6.2, 6.5, 5.2, 6.0, 5.9, 5.5, 4.5, 6.2, 6.5],
- pointStart: start_date_UTC_time,
- pointInterval:1 * 24 * 3600 * 1000
- }]
- });
-
- detail_chart = new Highcharts.Chart({
- chart: {
- renderTo: 'detail_chart',
- type: 'area',
- marginLeft: 25,
- width: 562,
- height: 303,
- spacingTop: 10,
- spacingBottom: 0,
- overflow: false,
- zIndex: 5
- },
- credits: {
- enabled: false
- },
- title: {
- text: ' '
- },
- colors: ['#31B6AD'],
- xAxis: {
- type: 'datetime',
- dateTimeLabelFormats: {
- day: '%e/%m'
- },
- lineColor: '#CECECE',
- gridLineColor: '#EFECEF',
- gridLineWidth: 1,
- tickWidth: 0,
- labels:{
- step: 2
- },
- tickInterval: (2 * 24 * 3600 * 1000),
- tickColor: '#FFFFFF'
- },
- yAxis: {
- title: {
- text: ''
- },
- allowDecimals: true,
- endOnTick: false,
- tickInterval: 0.5,
- lineColor: '#CECECE',
- lineWidth: 2,
- gridLineColor: '#EFECEF',
- gridLineWidth: 1,
- minPadding: 0.3,
- maxPadding: 1.2,
- labels: {
- formatter: function() {
- var originYValue = this.value+'';
- if (originYValue.length == 1){
- originYValue += '.0';
- }
- return originYValue;
- }
- }
- },
- legend: {
- enabled: false
- },
- tooltip: {
- formatter: function() {
- return '<span style="color:#969696;font-weight:bold;">' + Highcharts.dateFormat('%b %e', this.x) + '</span>' +'<br />' + '<span style="color:#464646;font-weight:bold;">' + this.y + 'mmol/L' + '</span>' + '<br />' + 'click for more info';
- },
- // positioner: function (boxWidth, boxHeight, point) {
- // return { x: point.plotX+80, y: point.plotY-20 };
- // },
- style: {
- padding: '7px'
- },
- borderColor: '#EAEAEA'
- },
- plotOptions: {
- series: {
- marker: {
- enabled: true, //false false的时候就不会突出显示点
- lineColor: '#31B6AD',
- lineWidth: 1,
- radius: 3, // 点的大小
- fillColor: '#FFFFFF', // 设置点中间填充的颜色
- symbol: 'circle'
- },
- fillOpacity: 0.12,
- lineWidth: 1,
- threshold: null,
- shadow: false,
- point: {
- events: {
- click: function() {
- alert(this.x);
- alert(this.y);
- TB_show(false, indicator_url + 'popup/edithistorydata?TB_iframe=true&no1_title&transfer_params&height=351&width=630&card_id=3', false);
- }
- }
- }
- }
- },
- series: []
- });
-
- //详细历史记录
- $(".detail_history").bind("click", function(){
- card_detail_id = $(this).closest(".index_card").attr("id").replace('index_card_', '');
- var startDateLog = '2013-08-04';
- var endDateLog = '2013-08-10';
- var date = new Date();
- var time = date.getTime();
- redraw_chart(detail_chart, startDateLog, endDateLog);
- $(".act_card_container").addClass("move_div_2_left");
- return false;
- });
-
- //切换日期
- $(".shift_week").bind("click", function(){
- $(".shift_week").addClass("unselected");
- $(this).removeClass("unselected");
- var startDateLog = $(this).attr("start_date");
- var endDateLog = $(this).attr("end_date");
- redraw_chart(detail_chart, startDateLog, endDateLog);
- return false;
- });
-
- //根据日期搜索
- $("#search_start_date, #search_end_date").bind("change", function(){
- var startDateLog = $("#search_start_date").val();
- var endDateLog = $("#search_end_date").val();
- redraw_chart(detail_chart, startDateLog, endDateLog);
- return false;
- });
-
- //浏览更多
- $(".see_more_btn").bind("click", function(){
- var btn = $(".see_more_btn");
- var end = "2013-08-10";
- get_card_data_table(null, end, false);
- return false;
- });
-
- //收起历史记录
- $(".collapse_btn").bind("click", function(){
- //删除图表数据
- var serieses = detail_chart.series;
- for (series_key in serieses){
- serieses[series_key].remove();
- }
- //删除表格数据
- $("tr").not(".first_line").remove();
- //隐藏div
- $(".detail_card_info").hide();
- //初始化详细卡片id
- card_detail_id = 0;
- //添加删除div位置初始化
- $(".act_card_container").removeClass("move_div_2_left");
- return false;
- });
-});
-
-//重画历史记录图表
-function redraw_chart(detail_chart, start, end){
- var date = new Date();
- var time = date.getTime();
- $.ajax({
- type: 'get',
- url: indicator_url + 'ajax/get_card_data_chart',
- data: 'card_detail_id='+card_detail_id+'&start='+start+'&end='+end+'&time='+time,
- dataType: 'json',
- success: function(dataJson) {
- //每一天都要有数据,否则x轴刻度时间对不上
- var startDateLogFormat = new Date(start.replace(/-/g,"/"));
- var start_date_log_UTC_time = startDateLogFormat.getTime() - startDateLogFormat.getTimezoneOffset() * 60 * 1000;
- var pointStart = start_date_log_UTC_time;
- var pointInterval = 1 * 24 * 3600 * 1000;
-
- //设置默认起始结束时间
- $("#search_start_date").datepicker( "setDate", start);
- $("#search_end_date").datepicker( "setDate", end);
-
- //删除chart已有数据
- var serieses = detail_chart.series;
- for (series_key in serieses){
- serieses[series_key].remove();
- }
- //更新chart数据
- detail_chart.addSeries({
- data: dataJson,
- pointStart: start_date_log_UTC_time,
- pointInterval: pointInterval
- });
- //更新table数据
- get_card_data_table(start, end, true);
- //显示
- $(".detail_card_info").show();
- }
- });
-}
-
-function get_card_data_table(start, end, redraw){
- var date = new Date();
- var time = date.getTime();
- $.ajax({
- type: 'get',
- url: indicator_url + 'ajax/get_card_data_table',
- data: 'card_detail_id='+card_detail_id+'&start='+start+'&end='+end+'&time='+time,
- success: function(data){
- if(redraw){
- $("tr").not(".first_line").remove();
- }
- $("table").append(data);
- }
- });
-}
-
-// vim: set ts=8 sw=4 tw=0 fenc=utf-8 ft=javascript: //
diff --git a/97suifangqa/apps/indicator/static/javascripts/sheetdefault.js b/97suifangqa/apps/indicator/static/javascripts/sheetdefault.js
index 55dfcd5..7b95631 100644
--- a/97suifangqa/apps/indicator/static/javascripts/sheetdefault.js
+++ b/97suifangqa/apps/indicator/static/javascripts/sheetdefault.js
@@ -1,5 +1,3 @@
-var card_2_delete_id;
-var card_detail_id;
$(document).ready(function(){
//不允许input框复制,减少验证粘帖的交互
$("input[type='text']").bind("paste", function(){
@@ -151,7 +149,7 @@ $(document).ready(function(){
});
//时间范围控制(开始时间<结束时间)
- $("#search_start_date").datepicker({
+ $("#search_begin_date").datepicker({
showOn: "both",
buttonImage: static_url + "plugins/datepicker/images/calendar.png",
buttonImageOnly: true,
@@ -161,7 +159,7 @@ $(document).ready(function(){
});
$("#search_end_date").datepicker({
onClose: function( selectedDate ) {
- $("#search_start_date").datepicker("option", "maxDate", selectedDate);
+ $("#search_begin_date").datepicker("option", "maxDate", selectedDate);
}
});
});
diff --git a/97suifangqa/apps/indicator/static/plugins/datepicker/datepicker.js b/97suifangqa/apps/indicator/static/plugins/datepicker/datepicker.js
index 5c4ed85..964b5cc 100644
--- a/97suifangqa/apps/indicator/static/plugins/datepicker/datepicker.js
+++ b/97suifangqa/apps/indicator/static/plugins/datepicker/datepicker.js
@@ -1,5257 +1,5257 @@
-/*!
- * jQuery UI 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI
- */
-(function(a, b) {
- function d(b) {
- return ! a(b).parents().andSelf().filter(function() {
- return a.curCSS(this, "visibility") === "hidden" || a.expr.filters.hidden(this)
- }).length
- }
- function c(b, c) {
- var e = b.nodeName.toLowerCase();
- if ("area" === e) {
- var f = b.parentNode,
- g = f.name,
- h;
- if (!b.href || !g || f.nodeName.toLowerCase() !== "map") return ! 1;
- h = a("img[usemap=#" + g + "]")[0];
- return !! h && d(h)
- }
- return (/input|select|textarea|button|object/.test(e) ? !b.disabled: "a" == e ? b.href || c: c) && d(b)
- }
- a.ui = a.ui || {};
- a.ui.version || (a.extend(a.ui, {
- version: "1.8.18",
- keyCode: {
- ALT: 18,
- BACKSPACE: 8,
- CAPS_LOCK: 20,
- COMMA: 188,
- COMMAND: 91,
- COMMAND_LEFT: 91,
- COMMAND_RIGHT: 93,
- CONTROL: 17,
- DELETE: 46,
- DOWN: 40,
- END: 35,
- ENTER: 13,
- ESCAPE: 27,
- HOME: 36,
- INSERT: 45,
- LEFT: 37,
- MENU: 93,
- NUMPAD_ADD: 107,
- NUMPAD_DECIMAL: 110,
- NUMPAD_DIVIDE: 111,
- NUMPAD_ENTER: 108,
- NUMPAD_MULTIPLY: 106,
- NUMPAD_SUBTRACT: 109,
- PAGE_DOWN: 34,
- PAGE_UP: 33,
- PERIOD: 190,
- RIGHT: 39,
- SHIFT: 16,
- SPACE: 32,
- TAB: 9,
- UP: 38,
- WINDOWS: 91
- }
- }), a.fn.extend({
- propAttr: a.fn.prop || a.fn.attr,
- _focus: a.fn.focus,
- focus: function(b, c) {
- return typeof b == "number" ? this.each(function() {
- var d = this;
- setTimeout(function() {
- a(d).focus(),
- c && c.call(d)
- },
- b)
- }) : this._focus.apply(this, arguments)
- },
- scrollParent: function() {
- var b;
- a.browser.msie && /(static|relative)/.test(this.css("position")) || /absolute/.test(this.css("position")) ? b = this.parents().filter(function() {
- return /(relative|absolute|fixed)/.test(a.curCSS(this, "position", 1)) && /(auto|scroll)/.test(a.curCSS(this, "overflow", 1) + a.curCSS(this, "overflow-y", 1) + a.curCSS(this, "overflow-x", 1))
- }).eq(0) : b = this.parents().filter(function() {
- return /(auto|scroll)/.test(a.curCSS(this, "overflow", 1) + a.curCSS(this, "overflow-y", 1) + a.curCSS(this, "overflow-x", 1))
- }).eq(0);
- return /fixed/.test(this.css("position")) || !b.length ? a(document) : b
- },
- zIndex: function(c) {
- if (c !== b) return this.css("zIndex", c);
- if (this.length) {
- var d = a(this[0]),
- e,
- f;
- while (d.length && d[0] !== document) {
- e = d.css("position");
- if (e === "absolute" || e === "relative" || e === "fixed") {
- f = parseInt(d.css("zIndex"), 10);
- if (!isNaN(f) && f !== 0) return f
- }
- d = d.parent()
- }
- }
- return 0
- },
- disableSelection: function() {
- return this.bind((a.support.selectstart ? "selectstart": "mousedown") + ".ui-disableSelection",
- function(a) {
- a.preventDefault()
- })
- },
- enableSelection: function() {
- return this.unbind(".ui-disableSelection")
- }
- }), a.each(["Width", "Height"],
- function(c, d) {
- function h(b, c, d, f) {
- a.each(e,
- function() {
- c -= parseFloat(a.curCSS(b, "padding" + this, !0)) || 0,
- d && (c -= parseFloat(a.curCSS(b, "border" + this + "Width", !0)) || 0),
- f && (c -= parseFloat(a.curCSS(b, "margin" + this, !0)) || 0)
- });
- return c
- }
- var e = d === "Width" ? ["Left", "Right"] : ["Top", "Bottom"],
- f = d.toLowerCase(),
- g = {
- innerWidth: a.fn.innerWidth,
- innerHeight: a.fn.innerHeight,
- outerWidth: a.fn.outerWidth,
- outerHeight: a.fn.outerHeight
- };
- a.fn["inner" + d] = function(c) {
- if (c === b) return g["inner" + d].call(this);
- return this.each(function() {
- a(this).css(f, h(this, c) + "px")
- })
- },
- a.fn["outer" + d] = function(b, c) {
- if (typeof b != "number") return g["outer" + d].call(this, b);
- return this.each(function() {
- a(this).css(f, h(this, b, !0, c) + "px")
- })
- }
- }), a.extend(a.expr[":"], {
- data: function(b, c, d) {
- return !! a.data(b, d[3])
- },
- focusable: function(b) {
- return c(b, !isNaN(a.attr(b, "tabindex")))
- },
- tabbable: function(b) {
- var d = a.attr(b, "tabindex"),
- e = isNaN(d);
- return (e || d >= 0) && c(b, !e)
- }
- }), a(function() {
- var b = document.body,
- c = b.appendChild(c = document.createElement("div"));
- c.offsetHeight,
- a.extend(c.style, {
- minHeight: "100px",
- height: "auto",
- padding: 0,
- borderWidth: 0
- }),
- a.support.minHeight = c.offsetHeight === 100,
- a.support.selectstart = "onselectstart" in c,
- b.removeChild(c).style.display = "none"
- }), a.extend(a.ui, {
- plugin: {
- add: function(b, c, d) {
- var e = a.ui[b].prototype;
- for (var f in d) e.plugins[f] = e.plugins[f] || [],
- e.plugins[f].push([c, d[f]])
- },
- call: function(a, b, c) {
- var d = a.plugins[b];
- if ( !! d && !!a.element[0].parentNode) for (var e = 0; e < d.length; e++) a.options[d[e][0]] && d[e][1].apply(a.element, c)
- }
- },
- contains: function(a, b) {
- return document.compareDocumentPosition ? a.compareDocumentPosition(b) & 16 : a !== b && a.contains(b)
- },
- hasScroll: function(b, c) {
- if (a(b).css("overflow") === "hidden") return ! 1;
- var d = c && c === "left" ? "scrollLeft": "scrollTop",
- e = !1;
- if (b[d] > 0) return ! 0;
- b[d] = 1,
- e = b[d] > 0,
- b[d] = 0;
- return e
- },
- isOverAxis: function(a, b, c) {
- return a > b && a < b + c
- },
- isOver: function(b, c, d, e, f, g) {
- return a.ui.isOverAxis(b, d, f) && a.ui.isOverAxis(c, e, g)
- }
- }))
-})(jQuery);
-/*!
- * jQuery UI Widget 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Widget
- */
-(function(a, b) {
- if (a.cleanData) {
- var c = a.cleanData;
- a.cleanData = function(b) {
- for (var d = 0,
- e; (e = b[d]) != null; d++) try {
- a(e).triggerHandler("remove")
- } catch(f) {}
- c(b)
- }
- } else {
- var d = a.fn.remove;
- a.fn.remove = function(b, c) {
- return this.each(function() {
- c || (!b || a.filter(b, [this]).length) && a("*", this).add([this]).each(function() {
- try {
- a(this).triggerHandler("remove")
- } catch(b) {}
- });
- return d.call(a(this), b, c)
- })
- }
- }
- a.widget = function(b, c, d) {
- var e = b.split(".")[0],
- f;
- b = b.split(".")[1],
- f = e + "-" + b,
- d || (d = c, c = a.Widget),
- a.expr[":"][f] = function(c) {
- return !! a.data(c, b)
- },
- a[e] = a[e] || {},
- a[e][b] = function(a, b) {
- arguments.length && this._createWidget(a, b)
- };
- var g = new c;
- g.options = a.extend(!0, {},
- g.options),
- a[e][b].prototype = a.extend(!0, g, {
- namespace: e,
- widgetName: b,
- widgetEventPrefix: a[e][b].prototype.widgetEventPrefix || b,
- widgetBaseClass: f
- },
- d),
- a.widget.bridge(b, a[e][b])
- },
- a.widget.bridge = function(c, d) {
- a.fn[c] = function(e) {
- var f = typeof e == "string",
- g = Array.prototype.slice.call(arguments, 1),
- h = this;
- e = !f && g.length ? a.extend.apply(null, [!0, e].concat(g)) : e;
- if (f && e.charAt(0) === "_") return h;
- f ? this.each(function() {
- var d = a.data(this, c),
- f = d && a.isFunction(d[e]) ? d[e].apply(d, g) : d;
- if (f !== d && f !== b) {
- h = f;
- return ! 1
- }
- }) : this.each(function() {
- var b = a.data(this, c);
- b ? b.option(e || {})._init() : a.data(this, c, new d(e, this))
- });
- return h
- }
- },
- a.Widget = function(a, b) {
- arguments.length && this._createWidget(a, b)
- },
- a.Widget.prototype = {
- widgetName: "widget",
- widgetEventPrefix: "",
- options: {
- disabled: !1
- },
- _createWidget: function(b, c) {
- a.data(c, this.widgetName, this),
- this.element = a(c),
- this.options = a.extend(!0, {},
- this.options, this._getCreateOptions(), b);
- var d = this;
- this.element.bind("remove." + this.widgetName,
- function() {
- d.destroy()
- }),
- this._create(),
- this._trigger("create"),
- this._init()
- },
- _getCreateOptions: function() {
- return a.metadata && a.metadata.get(this.element[0])[this.widgetName]
- },
- _create: function() {},
- _init: function() {},
- destroy: function() {
- this.element.unbind("." + this.widgetName).removeData(this.widgetName),
- this.widget().unbind("." + this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass + "-disabled " + "ui-state-disabled")
- },
- widget: function() {
- return this.element
- },
- option: function(c, d) {
- var e = c;
- if (arguments.length === 0) return a.extend({},
- this.options);
- if (typeof c == "string") {
- if (d === b) return this.options[c];
- e = {},
- e[c] = d
- }
- this._setOptions(e);
- return this
- },
- _setOptions: function(b) {
- var c = this;
- a.each(b,
- function(a, b) {
- c._setOption(a, b)
- });
- return this
- },
- _setOption: function(a, b) {
- this.options[a] = b,
- a === "disabled" && this.widget()[b ? "addClass": "removeClass"](this.widgetBaseClass + "-disabled" + " " + "ui-state-disabled").attr("aria-disabled", b);
- return this
- },
- enable: function() {
- return this._setOption("disabled", !1)
- },
- disable: function() {
- return this._setOption("disabled", !0)
- },
- _trigger: function(b, c, d) {
- var e, f, g = this.options[b];
- d = d || {},
- c = a.Event(c),
- c.type = (b === this.widgetEventPrefix ? b: this.widgetEventPrefix + b).toLowerCase(),
- c.target = this.element[0],
- f = c.originalEvent;
- if (f) for (e in f) e in c || (c[e] = f[e]);
- this.element.trigger(c, d);
- return ! (a.isFunction(g) && g.call(this.element[0], c, d) === !1 || c.isDefaultPrevented())
- }
- }
-})(jQuery);
-/*!
- * jQuery UI Mouse 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Mouse
- *
- * Depends:
- * jquery.ui.widget.js
- */
-(function(a, b) {
- var c = !1;
- a(document).mouseup(function(a) {
- c = !1
- }),
- a.widget("ui.mouse", {
- options: {
- cancel: ":input,option",
- distance: 1,
- delay: 0
- },
- _mouseInit: function() {
- var b = this;
- this.element.bind("mousedown." + this.widgetName,
- function(a) {
- return b._mouseDown(a)
- }).bind("click." + this.widgetName,
- function(c) {
- if (!0 === a.data(c.target, b.widgetName + ".preventClickEvent")) {
- a.removeData(c.target, b.widgetName + ".preventClickEvent"),
- c.stopImmediatePropagation();
- return ! 1
- }
- }),
- this.started = !1
- },
- _mouseDestroy: function() {
- this.element.unbind("." + this.widgetName)
- },
- _mouseDown: function(b) {
- if (!c) {
- this._mouseStarted && this._mouseUp(b),
- this._mouseDownEvent = b;
- var d = this,
- e = b.which == 1,
- f = typeof this.options.cancel == "string" && b.target.nodeName ? a(b.target).closest(this.options.cancel).length: !1;
- if (!e || f || !this._mouseCapture(b)) return ! 0;
- this.mouseDelayMet = !this.options.delay,
- this.mouseDelayMet || (this._mouseDelayTimer = setTimeout(function() {
- d.mouseDelayMet = !0
- },
- this.options.delay));
- if (this._mouseDistanceMet(b) && this._mouseDelayMet(b)) {
- this._mouseStarted = this._mouseStart(b) !== !1;
- if (!this._mouseStarted) {
- b.preventDefault();
- return ! 0
- }
- } ! 0 === a.data(b.target, this.widgetName + ".preventClickEvent") && a.removeData(b.target, this.widgetName + ".preventClickEvent"),
- this._mouseMoveDelegate = function(a) {
- return d._mouseMove(a)
- },
- this._mouseUpDelegate = function(a) {
- return d._mouseUp(a)
- },
- a(document).bind("mousemove." + this.widgetName, this._mouseMoveDelegate).bind("mouseup." + this.widgetName, this._mouseUpDelegate),
- b.preventDefault(),
- c = !0;
- return ! 0
- }
- },
- _mouseMove: function(b) {
- if (a.browser.msie && !(document.documentMode >= 9) && !b.button) return this._mouseUp(b);
- if (this._mouseStarted) {
- this._mouseDrag(b);
- return b.preventDefault()
- }
- this._mouseDistanceMet(b) && this._mouseDelayMet(b) && (this._mouseStarted = this._mouseStart(this._mouseDownEvent, b) !== !1, this._mouseStarted ? this._mouseDrag(b) : this._mouseUp(b));
- return ! this._mouseStarted
- },
- _mouseUp: function(b) {
- a(document).unbind("mousemove." + this.widgetName, this._mouseMoveDelegate).unbind("mouseup." + this.widgetName, this._mouseUpDelegate),
- this._mouseStarted && (this._mouseStarted = !1, b.target == this._mouseDownEvent.target && a.data(b.target, this.widgetName + ".preventClickEvent", !0), this._mouseStop(b));
- return ! 1
- },
- _mouseDistanceMet: function(a) {
- return Math.max(Math.abs(this._mouseDownEvent.pageX - a.pageX), Math.abs(this._mouseDownEvent.pageY - a.pageY)) >= this.options.distance
- },
- _mouseDelayMet: function(a) {
- return this.mouseDelayMet
- },
- _mouseStart: function(a) {},
- _mouseDrag: function(a) {},
- _mouseStop: function(a) {},
- _mouseCapture: function(a) {
- return ! 0
- }
- })
-})(jQuery);
-/*
- * jQuery UI Position 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Position
- */
-(function(a, b) {
- a.ui = a.ui || {};
- var c = /left|center|right/,
- d = /top|center|bottom/,
- e = "center",
- f = {},
- g = a.fn.position,
- h = a.fn.offset;
- a.fn.position = function(b) {
- if (!b || !b.of) return g.apply(this, arguments);
- b = a.extend({},
- b);
- var h = a(b.of),
- i = h[0],
- j = (b.collision || "flip").split(" "),
- k = b.offset ? b.offset.split(" ") : [0, 0],
- l,
- m,
- n;
- i.nodeType === 9 ? (l = h.width(), m = h.height(), n = {
- top: 0,
- left: 0
- }) : i.setTimeout ? (l = h.width(), m = h.height(), n = {
- top: h.scrollTop(),
- left: h.scrollLeft()
- }) : i.preventDefault ? (b.at = "left top", l = m = 0, n = {
- top: b.of.pageY,
- left: b.of.pageX
- }) : (l = h.outerWidth(), m = h.outerHeight(), n = h.offset()),
- a.each(["my", "at"],
- function() {
- var a = (b[this] || "").split(" ");
- a.length === 1 && (a = c.test(a[0]) ? a.concat([e]) : d.test(a[0]) ? [e].concat(a) : [e, e]),
- a[0] = c.test(a[0]) ? a[0] : e,
- a[1] = d.test(a[1]) ? a[1] : e,
- b[this] = a
- }),
- j.length === 1 && (j[1] = j[0]),
- k[0] = parseInt(k[0], 10) || 0,
- k.length === 1 && (k[1] = k[0]),
- k[1] = parseInt(k[1], 10) || 0,
- b.at[0] === "right" ? n.left += l: b.at[0] === e && (n.left += l / 2),
- b.at[1] === "bottom" ? n.top += m: b.at[1] === e && (n.top += m / 2),
- n.left += k[0],
- n.top += k[1];
- return this.each(function() {
- var c = a(this),
- d = c.outerWidth(),
- g = c.outerHeight(),
- h = parseInt(a.curCSS(this, "marginLeft", !0)) || 0,
- i = parseInt(a.curCSS(this, "marginTop", !0)) || 0,
- o = d + h + (parseInt(a.curCSS(this, "marginRight", !0)) || 0),
- p = g + i + (parseInt(a.curCSS(this, "marginBottom", !0)) || 0),
- q = a.extend({},
- n),
- r;
- b.my[0] === "right" ? q.left -= d: b.my[0] === e && (q.left -= d / 2),
- b.my[1] === "bottom" ? q.top -= g: b.my[1] === e && (q.top -= g / 2),
- f.fractions || (q.left = Math.round(q.left), q.top = Math.round(q.top)),
- r = {
- left: q.left - h,
- top: q.top - i
- },
- a.each(["left", "top"],
- function(c, e) {
- a.ui.position[j[c]] && a.ui.position[j[c]][e](q, {
- targetWidth: l,
- targetHeight: m,
- elemWidth: d,
- elemHeight: g,
- collisionPosition: r,
- collisionWidth: o,
- collisionHeight: p,
- offset: k,
- my: b.my,
- at: b.at
- })
- }),
- a.fn.bgiframe && c.bgiframe(),
- c.offset(a.extend(q, {
- using: b.using
- }))
- })
- },
- a.ui.position = {
- fit: {
- left: function(b, c) {
- var d = a(window),
- e = c.collisionPosition.left + c.collisionWidth - d.width() - d.scrollLeft();
- b.left = e > 0 ? b.left - e: Math.max(b.left - c.collisionPosition.left, b.left)
- },
- top: function(b, c) {
- var d = a(window),
- e = c.collisionPosition.top + c.collisionHeight - d.height() - d.scrollTop();
- b.top = e > 0 ? b.top - e: Math.max(b.top - c.collisionPosition.top, b.top)
- }
- },
- flip: {
- left: function(b, c) {
- if (c.at[0] !== e) {
- var d = a(window),
- f = c.collisionPosition.left + c.collisionWidth - d.width() - d.scrollLeft(),
- g = c.my[0] === "left" ? -c.elemWidth: c.my[0] === "right" ? c.elemWidth: 0,
- h = c.at[0] === "left" ? c.targetWidth: -c.targetWidth,
- i = -2 * c.offset[0];
- b.left += c.collisionPosition.left < 0 ? g + h + i: f > 0 ? g + h + i: 0
- }
- },
- top: function(b, c) {
- if (c.at[1] !== e) {
- var d = a(window),
- f = c.collisionPosition.top + c.collisionHeight - d.height() - d.scrollTop(),
- g = c.my[1] === "top" ? -c.elemHeight: c.my[1] === "bottom" ? c.elemHeight: 0,
- h = c.at[1] === "top" ? c.targetHeight: -c.targetHeight,
- i = -2 * c.offset[1];
- b.top += c.collisionPosition.top < 0 ? g + h + i: f > 0 ? g + h + i: 0
- }
- }
- }
- },
- a.offset.setOffset || (a.offset.setOffset = function(b, c) { / static / .test(a.curCSS(b, "position")) && (b.style.position = "relative");
- var d = a(b),
- e = d.offset(),
- f = parseInt(a.curCSS(b, "top", !0), 10) || 0,
- g = parseInt(a.curCSS(b, "left", !0), 10) || 0,
- h = {
- top: c.top - e.top + f,
- left: c.left - e.left + g
- };
- "using" in c ? c.using.call(b, h) : d.css(h)
- },
- a.fn.offset = function(b) {
- var c = this[0];
- if (!c || !c.ownerDocument) return null;
- if (b) return this.each(function() {
- a.offset.setOffset(this, b)
- });
- return h.call(this)
- }),
- function() {
- var b = document.getElementsByTagName("body")[0],
- c = document.createElement("div"),
- d,
- e,
- g,
- h,
- i;
- d = document.createElement(b ? "div": "body"),
- g = {
- visibility: "hidden",
- width: 0,
- height: 0,
- border: 0,
- margin: 0,
- background: "none"
- },
- b && a.extend(g, {
- position: "absolute",
- left: "-1000px",
- top: "-1000px"
- });
- for (var j in g) d.style[j] = g[j];
- d.appendChild(c),
- e = b || document.documentElement,
- e.insertBefore(d, e.firstChild),
- c.style.cssText = "position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",
- h = a(c).offset(function(a, b) {
- return b
- }).offset(),
- d.innerHTML = "",
- e.removeChild(d),
- i = h.top + h.left + (b ? 2e3: 0),
- f.fractions = i > 21 && i < 22
- } ()
-})(jQuery);
-/*
- * jQuery UI Draggable 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Draggables
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.mouse.js
- * jquery.ui.widget.js
- */
-(function(a, b) {
- a.widget("ui.draggable", a.ui.mouse, {
- widgetEventPrefix: "drag",
- options: {
- addClasses: !0,
- appendTo: "parent",
- axis: !1,
-
- connectToSortable: !1,
- containment: !1,
- cursor: "auto",
- cursorAt: !1,
- grid: !1,
- handle: !1,
- helper: "original",
- iframeFix: !1,
- opacity: !1,
- refreshPositions: !1,
- revert: !1,
- revertDuration: 500,
- scope: "default",
- scroll: !0,
- scrollSensitivity: 20,
- scrollSpeed: 20,
- snap: !1,
- snapMode: "both",
- snapTolerance: 20,
- stack: !1,
- zIndex: !1
- },
- _create: function() {
- this.options.helper == "original" && !/^(?:r|a|f)/.test(this.element.css("position")) && (this.element[0].style.position = "relative"),
- this.options.addClasses && this.element.addClass("ui-draggable"),
- this.options.disabled && this.element.addClass("ui-draggable-disabled"),
- this._mouseInit()
- },
- destroy: function() {
- if ( !! this.element.data("draggable")) {
- this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),
- this._mouseDestroy();
- return this
- }
- },
- _mouseCapture: function(b) {
- var c = this.options;
- if (this.helper || c.disabled || a(b.target).is(".ui-resizable-handle")) return ! 1;
- this.handle = this._getHandle(b);
- if (!this.handle) return ! 1;
- c.iframeFix && a(c.iframeFix === !0 ? "iframe": c.iframeFix).each(function() {
- a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({
- width: this.offsetWidth + "px",
- height: this.offsetHeight + "px",
- position: "absolute",
- opacity: "0.001",
- zIndex: 1e3
- }).css(a(this).offset()).appendTo("body")
- });
- return ! 0
- },
- _mouseStart: function(b) {
- var c = this.options;
- this.helper = this._createHelper(b),
- this._cacheHelperProportions(),
- a.ui.ddmanager && (a.ui.ddmanager.current = this),
- this._cacheMargins(),
- this.cssPosition = this.helper.css("position"),
- this.scrollParent = this.helper.scrollParent(),
- this.offset = this.positionAbs = this.element.offset(),
- this.offset = {
- top: this.offset.top - this.margins.top,
- left: this.offset.left - this.margins.left
- },
- a.extend(this.offset, {
- click: {
- left: b.pageX - this.offset.left,
- top: b.pageY - this.offset.top
- },
- parent: this._getParentOffset(),
- relative: this._getRelativeOffset()
- }),
- this.originalPosition = this.position = this._generatePosition(b),
- this.originalPageX = b.pageX,
- this.originalPageY = b.pageY,
- c.cursorAt && this._adjustOffsetFromHelper(c.cursorAt),
- c.containment && this._setContainment();
- if (this._trigger("start", b) === !1) {
- this._clear();
- return ! 1
- }
- this._cacheHelperProportions(),
- a.ui.ddmanager && !c.dropBehaviour && a.ui.ddmanager.prepareOffsets(this, b),
- this.helper.addClass("ui-draggable-dragging"),
- this._mouseDrag(b, !0),
- a.ui.ddmanager && a.ui.ddmanager.dragStart(this, b);
- return ! 0
- },
- _mouseDrag: function(b, c) {
- this.position = this._generatePosition(b),
- this.positionAbs = this._convertPositionTo("absolute");
- if (!c) {
- var d = this._uiHash();
- if (this._trigger("drag", b, d) === !1) {
- this._mouseUp({});
- return ! 1
- }
- this.position = d.position
- }
- if (!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left + "px";
- if (!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top + "px";
- a.ui.ddmanager && a.ui.ddmanager.drag(this, b);
- return ! 1
- },
- _mouseStop: function(b) {
- var c = !1;
- a.ui.ddmanager && !this.options.dropBehaviour && (c = a.ui.ddmanager.drop(this, b)),
- this.dropped && (c = this.dropped, this.dropped = !1);
- if ((!this.element[0] || !this.element[0].parentNode) && this.options.helper == "original") return ! 1;
- if (this.options.revert == "invalid" && !c || this.options.revert == "valid" && c || this.options.revert === !0 || a.isFunction(this.options.revert) && this.options.revert.call(this.element, c)) {
- var d = this;
- a(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10),
- function() {
- d._trigger("stop", b) !== !1 && d._clear()
- })
- } else this._trigger("stop", b) !== !1 && this._clear();
- return ! 1
- },
- _mouseUp: function(b) {
- this.options.iframeFix === !0 && a("div.ui-draggable-iframeFix").each(function() {
- this.parentNode.removeChild(this)
- }),
- a.ui.ddmanager && a.ui.ddmanager.dragStop(this, b);
- return a.ui.mouse.prototype._mouseUp.call(this, b)
- },
- cancel: function() {
- this.helper.is(".ui-draggable-dragging") ? this._mouseUp({}) : this._clear();
- return this
- },
- _getHandle: function(b) {
- var c = !this.options.handle || !a(this.options.handle, this.element).length ? !0 : !1;
- a(this.options.handle, this.element).find("*").andSelf().each(function() {
- this == b.target && (c = !0)
- });
- return c
- },
- _createHelper: function(b) {
- var c = this.options,
- d = a.isFunction(c.helper) ? a(c.helper.apply(this.element[0], [b])) : c.helper == "clone" ? this.element.clone().removeAttr("id") : this.element;
- d.parents("body").length || d.appendTo(c.appendTo == "parent" ? this.element[0].parentNode: c.appendTo),
- d[0] != this.element[0] && !/(fixed|absolute)/.test(d.css("position")) && d.css("position", "absolute");
- return d
- },
- _adjustOffsetFromHelper: function(b) {
- typeof b == "string" && (b = b.split(" ")),
- a.isArray(b) && (b = {
- left: +b[0],
- top: +b[1] || 0
- }),
- "left" in b && (this.offset.click.left = b.left + this.margins.left),
- "right" in b && (this.offset.click.left = this.helperProportions.width - b.right + this.margins.left),
- "top" in b && (this.offset.click.top = b.top + this.margins.top),
- "bottom" in b && (this.offset.click.top = this.helperProportions.height - b.bottom + this.margins.top)
- },
- _getParentOffset: function() {
- this.offsetParent = this.helper.offsetParent();
- var b = this.offsetParent.offset();
- this.cssPosition == "absolute" && this.scrollParent[0] != document && a.ui.contains(this.scrollParent[0], this.offsetParent[0]) && (b.left += this.scrollParent.scrollLeft(), b.top += this.scrollParent.scrollTop());
- if (this.offsetParent[0] == document.body || this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == "html" && a.browser.msie) b = {
- top: 0,
- left: 0
- };
- return {
- top: b.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
- left: b.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
- }
- },
- _getRelativeOffset: function() {
- if (this.cssPosition == "relative") {
- var a = this.element.position();
- return {
- top: a.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(),
- left: a.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft()
- }
- }
- return {
- top: 0,
- left: 0
- }
- },
- _cacheMargins: function() {
- this.margins = {
- left: parseInt(this.element.css("marginLeft"), 10) || 0,
- top: parseInt(this.element.css("marginTop"), 10) || 0,
- right: parseInt(this.element.css("marginRight"), 10) || 0,
- bottom: parseInt(this.element.css("marginBottom"), 10) || 0
- }
- },
- _cacheHelperProportions: function() {
- this.helperProportions = {
- width: this.helper.outerWidth(),
- height: this.helper.outerHeight()
- }
- },
- _setContainment: function() {
- var b = this.options;
- b.containment == "parent" && (b.containment = this.helper[0].parentNode);
- if (b.containment == "document" || b.containment == "window") this.containment = [b.containment == "document" ? 0 : a(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, b.containment == "document" ? 0 : a(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, (b.containment == "document" ? 0 : a(window).scrollLeft()) + a(b.containment == "document" ? document: window).width() - this.helperProportions.width - this.margins.left, (b.containment == "document" ? 0 : a(window).scrollTop()) + (a(b.containment == "document" ? document: window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top];
- if (!/^(document|window|parent)$/.test(b.containment) && b.containment.constructor != Array) {
- var c = a(b.containment),
- d = c[0];
- if (!d) return;
- var e = c.offset(),
- f = a(d).css("overflow") != "hidden";
- this.containment = [(parseInt(a(d).css("borderLeftWidth"), 10) || 0) + (parseInt(a(d).css("paddingLeft"), 10) || 0), (parseInt(a(d).css("borderTopWidth"), 10) || 0) + (parseInt(a(d).css("paddingTop"), 10) || 0), (f ? Math.max(d.scrollWidth, d.offsetWidth) : d.offsetWidth) - (parseInt(a(d).css("borderLeftWidth"), 10) || 0) - (parseInt(a(d).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, (f ? Math.max(d.scrollHeight, d.offsetHeight) : d.offsetHeight) - (parseInt(a(d).css("borderTopWidth"), 10) || 0) - (parseInt(a(d).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom],
- this.relative_container = c
- } else b.containment.constructor == Array && (this.containment = b.containment)
- },
- _convertPositionTo: function(b, c) {
- c || (c = this.position);
- var d = b == "absolute" ? 1 : -1,
- e = this.options,
- f = this.cssPosition == "absolute" && (this.scrollParent[0] == document || !a.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent: this.scrollParent,
- g = /(html|body)/i.test(f[0].tagName);
- return {
- top: c.top + this.offset.relative.top * d + this.offset.parent.top * d - (a.browser.safari && a.browser.version < 526 && this.cssPosition == "fixed" ? 0 : (this.cssPosition == "fixed" ? -this.scrollParent.scrollTop() : g ? 0 : f.scrollTop()) * d),
- left: c.left + this.offset.relative.left * d + this.offset.parent.left * d - (a.browser.safari && a.browser.version < 526 && this.cssPosition == "fixed" ? 0 : (this.cssPosition == "fixed" ? -this.scrollParent.scrollLeft() : g ? 0 : f.scrollLeft()) * d)
- }
- },
- _generatePosition: function(b) {
- var c = this.options,
- d = this.cssPosition == "absolute" && (this.scrollParent[0] == document || !a.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent: this.scrollParent,
- e = /(html|body)/i.test(d[0].tagName),
- f = b.pageX,
- g = b.pageY;
- if (this.originalPosition) {
- var h;
- if (this.containment) {
- if (this.relative_container) {
- var i = this.relative_container.offset();
- h = [this.containment[0] + i.left, this.containment[1] + i.top, this.containment[2] + i.left, this.containment[3] + i.top]
- } else h = this.containment;
- b.pageX - this.offset.click.left < h[0] && (f = h[0] + this.offset.click.left),
- b.pageY - this.offset.click.top < h[1] && (g = h[1] + this.offset.click.top),
- b.pageX - this.offset.click.left > h[2] && (f = h[2] + this.offset.click.left),
- b.pageY - this.offset.click.top > h[3] && (g = h[3] + this.offset.click.top)
- }
- if (c.grid) {
- var j = c.grid[1] ? this.originalPageY + Math.round((g - this.originalPageY) / c.grid[1]) * c.grid[1] : this.originalPageY;
- g = h ? j - this.offset.click.top < h[1] || j - this.offset.click.top > h[3] ? j - this.offset.click.top < h[1] ? j + c.grid[1] : j - c.grid[1] : j: j;
- var k = c.grid[0] ? this.originalPageX + Math.round((f - this.originalPageX) / c.grid[0]) * c.grid[0] : this.originalPageX;
- f = h ? k - this.offset.click.left < h[0] || k - this.offset.click.left > h[2] ? k - this.offset.click.left < h[0] ? k + c.grid[0] : k - c.grid[0] : k: k
- }
- }
- return {
- top: g - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + (a.browser.safari && a.browser.version < 526 && this.cssPosition == "fixed" ? 0 : this.cssPosition == "fixed" ? -this.scrollParent.scrollTop() : e ? 0 : d.scrollTop()),
- left: f - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + (a.browser.safari && a.browser.version < 526 && this.cssPosition == "fixed" ? 0 : this.cssPosition == "fixed" ? -this.scrollParent.scrollLeft() : e ? 0 : d.scrollLeft())
- }
- },
- _clear: function() {
- this.helper.removeClass("ui-draggable-dragging"),
- this.helper[0] != this.element[0] && !this.cancelHelperRemoval && this.helper.remove(),
- this.helper = null,
- this.cancelHelperRemoval = !1
- },
- _trigger: function(b, c, d) {
- d = d || this._uiHash(),
- a.ui.plugin.call(this, b, [c, d]),
- b == "drag" && (this.positionAbs = this._convertPositionTo("absolute"));
- return a.Widget.prototype._trigger.call(this, b, c, d)
- },
- plugins: {},
- _uiHash: function(a) {
- return {
- helper: this.helper,
- position: this.position,
- originalPosition: this.originalPosition,
- offset: this.positionAbs
- }
- }
- }),
- a.extend(a.ui.draggable, {
- version: "1.8.18"
- }),
- a.ui.plugin.add("draggable", "connectToSortable", {
- start: function(b, c) {
- var d = a(this).data("draggable"),
- e = d.options,
- f = a.extend({},
- c, {
- item: d.element
- });
- d.sortables = [],
- a(e.connectToSortable).each(function() {
- var c = a.data(this, "sortable");
- c && !c.options.disabled && (d.sortables.push({
- instance: c,
- shouldRevert: c.options.revert
- }), c.refreshPositions(), c._trigger("activate", b, f))
- })
- },
- stop: function(b, c) {
- var d = a(this).data("draggable"),
- e = a.extend({},
- c, {
- item: d.element
- });
- a.each(d.sortables,
- function() {
- this.instance.isOver ? (this.instance.isOver = 0, d.cancelHelperRemoval = !0, this.instance.cancelHelperRemoval = !1, this.shouldRevert && (this.instance.options.revert = !0), this.instance._mouseStop(b), this.instance.options.helper = this.instance.options._helper, d.options.helper == "original" && this.instance.currentItem.css({
- top: "auto",
- left: "auto"
- })) : (this.instance.cancelHelperRemoval = !1, this.instance._trigger("deactivate", b, e))
- })
- },
- drag: function(b, c) {
- var d = a(this).data("draggable"),
- e = this,
- f = function(b) {
- var c = this.offset.click.top,
- d = this.offset.click.left,
- e = this.positionAbs.top,
- f = this.positionAbs.left,
- g = b.height,
- h = b.width,
- i = b.top,
- j = b.left;
- return a.ui.isOver(e + c, f + d, i, j, g, h)
- };
- a.each(d.sortables,
- function(f) {
- this.instance.positionAbs = d.positionAbs,
- this.instance.helperProportions = d.helperProportions,
- this.instance.offset.click = d.offset.click,
- this.instance._intersectsWith(this.instance.containerCache) ? (this.instance.isOver || (this.instance.isOver = 1, this.instance.currentItem = a(e).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item", !0), this.instance.options._helper = this.instance.options.helper, this.instance.options.helper = function() {
- return c.helper[0]
- },
- b.target = this.instance.currentItem[0], this.instance._mouseCapture(b, !0), this.instance._mouseStart(b, !0, !0), this.instance.offset.click.top = d.offset.click.top, this.instance.offset.click.left = d.offset.click.left, this.instance.offset.parent.left -= d.offset.parent.left - this.instance.offset.parent.left, this.instance.offset.parent.top -= d.offset.parent.top - this.instance.offset.parent.top, d._trigger("toSortable", b), d.dropped = this.instance.element, d.currentItem = d.element, this.instance.fromOutside = d), this.instance.currentItem && this.instance._mouseDrag(b)) : this.instance.isOver && (this.instance.isOver = 0, this.instance.cancelHelperRemoval = !0, this.instance.options.revert = !1, this.instance._trigger("out", b, this.instance._uiHash(this.instance)), this.instance._mouseStop(b, !0), this.instance.options.helper = this.instance.options._helper, this.instance.currentItem.remove(), this.instance.placeholder && this.instance.placeholder.remove(), d._trigger("fromSortable", b), d.dropped = !1)
- })
- }
- }),
- a.ui.plugin.add("draggable", "cursor", {
- start: function(b, c) {
- var d = a("body"),
- e = a(this).data("draggable").options;
- d.css("cursor") && (e._cursor = d.css("cursor")),
- d.css("cursor", e.cursor)
- },
- stop: function(b, c) {
- var d = a(this).data("draggable").options;
- d._cursor && a("body").css("cursor", d._cursor)
- }
- }),
- a.ui.plugin.add("draggable", "opacity", {
- start: function(b, c) {
- var d = a(c.helper),
- e = a(this).data("draggable").options;
- d.css("opacity") && (e._opacity = d.css("opacity")),
- d.css("opacity", e.opacity)
- },
- stop: function(b, c) {
- var d = a(this).data("draggable").options;
- d._opacity && a(c.helper).css("opacity", d._opacity)
- }
- }),
- a.ui.plugin.add("draggable", "scroll", {
- start: function(b, c) {
- var d = a(this).data("draggable");
- d.scrollParent[0] != document && d.scrollParent[0].tagName != "HTML" && (d.overflowOffset = d.scrollParent.offset())
- },
- drag: function(b, c) {
- var d = a(this).data("draggable"),
- e = d.options,
- f = !1;
- if (d.scrollParent[0] != document && d.scrollParent[0].tagName != "HTML") {
- if (!e.axis || e.axis != "x") d.overflowOffset.top + d.scrollParent[0].offsetHeight - b.pageY < e.scrollSensitivity ? d.scrollParent[0].scrollTop = f = d.scrollParent[0].scrollTop + e.scrollSpeed: b.pageY - d.overflowOffset.top < e.scrollSensitivity && (d.scrollParent[0].scrollTop = f = d.scrollParent[0].scrollTop - e.scrollSpeed);
- if (!e.axis || e.axis != "y") d.overflowOffset.left + d.scrollParent[0].offsetWidth - b.pageX < e.scrollSensitivity ? d.scrollParent[0].scrollLeft = f = d.scrollParent[0].scrollLeft + e.scrollSpeed: b.pageX - d.overflowOffset.left < e.scrollSensitivity && (d.scrollParent[0].scrollLeft = f = d.scrollParent[0].scrollLeft - e.scrollSpeed)
- } else {
- if (!e.axis || e.axis != "x") b.pageY - a(document).scrollTop() < e.scrollSensitivity ? f = a(document).scrollTop(a(document).scrollTop() - e.scrollSpeed) : a(window).height() - (b.pageY - a(document).scrollTop()) < e.scrollSensitivity && (f = a(document).scrollTop(a(document).scrollTop() + e.scrollSpeed));
- if (!e.axis || e.axis != "y") b.pageX - a(document).scrollLeft() < e.scrollSensitivity ? f = a(document).scrollLeft(a(document).scrollLeft() - e.scrollSpeed) : a(window).width() - (b.pageX - a(document).scrollLeft()) < e.scrollSensitivity && (f = a(document).scrollLeft(a(document).scrollLeft() + e.scrollSpeed))
- }
- f !== !1 && a.ui.ddmanager && !e.dropBehaviour && a.ui.ddmanager.prepareOffsets(d, b)
- }
- }),
- a.ui.plugin.add("draggable", "snap", {
- start: function(b, c) {
- var d = a(this).data("draggable"),
- e = d.options;
- d.snapElements = [],
- a(e.snap.constructor != String ? e.snap.items || ":data(draggable)": e.snap).each(function() {
- var b = a(this),
- c = b.offset();
- this != d.element[0] && d.snapElements.push({
- item: this,
- width: b.outerWidth(),
- height: b.outerHeight(),
- top: c.top,
- left: c.left
- })
- })
- },
- drag: function(b, c) {
- var d = a(this).data("draggable"),
- e = d.options,
- f = e.snapTolerance,
- g = c.offset.left,
- h = g + d.helperProportions.width,
- i = c.offset.top,
- j = i + d.helperProportions.height;
- for (var k = d.snapElements.length - 1; k >= 0; k--) {
- var l = d.snapElements[k].left,
- m = l + d.snapElements[k].width,
- n = d.snapElements[k].top,
- o = n + d.snapElements[k].height;
- if (! (l - f < g && g < m + f && n - f < i && i < o + f || l - f < g && g < m + f && n - f < j && j < o + f || l - f < h && h < m + f && n - f < i && i < o + f || l - f < h && h < m + f && n - f < j && j < o + f)) {
- d.snapElements[k].snapping && d.options.snap.release && d.options.snap.release.call(d.element, b, a.extend(d._uiHash(), {
- snapItem: d.snapElements[k].item
- })),
- d.snapElements[k].snapping = !1;
- continue
- }
- if (e.snapMode != "inner") {
- var p = Math.abs(n - j) <= f,
- q = Math.abs(o - i) <= f,
- r = Math.abs(l - h) <= f,
- s = Math.abs(m - g) <= f;
- p && (c.position.top = d._convertPositionTo("relative", {
- top: n - d.helperProportions.height,
- left: 0
- }).top - d.margins.top),
- q && (c.position.top = d._convertPositionTo("relative", {
- top: o,
- left: 0
- }).top - d.margins.top),
- r && (c.position.left = d._convertPositionTo("relative", {
- top: 0,
- left: l - d.helperProportions.width
- }).left - d.margins.left),
- s && (c.position.left = d._convertPositionTo("relative", {
- top: 0,
- left: m
- }).left - d.margins.left)
- }
- var t = p || q || r || s;
- if (e.snapMode != "outer") {
- var p = Math.abs(n - i) <= f,
- q = Math.abs(o - j) <= f,
- r = Math.abs(l - g) <= f,
- s = Math.abs(m - h) <= f;
- p && (c.position.top = d._convertPositionTo("relative", {
- top: n,
- left: 0
- }).top - d.margins.top),
- q && (c.position.top = d._convertPositionTo("relative", {
- top: o - d.helperProportions.height,
- left: 0
- }).top - d.margins.top),
- r && (c.position.left = d._convertPositionTo("relative", {
- top: 0,
- left: l
- }).left - d.margins.left),
- s && (c.position.left = d._convertPositionTo("relative", {
- top: 0,
- left: m - d.helperProportions.width
- }).left - d.margins.left)
- } ! d.snapElements[k].snapping && (p || q || r || s || t) && d.options.snap.snap && d.options.snap.snap.call(d.element, b, a.extend(d._uiHash(), {
- snapItem: d.snapElements[k].item
- })),
- d.snapElements[k].snapping = p || q || r || s || t
- }
- }
- }),
- a.ui.plugin.add("draggable", "stack", {
- start: function(b, c) {
- var d = a(this).data("draggable").options,
- e = a.makeArray(a(d.stack)).sort(function(b, c) {
- return (parseInt(a(b).css("zIndex"), 10) || 0) - (parseInt(a(c).css("zIndex"), 10) || 0)
- });
- if ( !! e.length) {
- var f = parseInt(e[0].style.zIndex) || 0;
- a(e).each(function(a) {
- this.style.zIndex = f + a
- }),
- this[0].style.zIndex = f + e.length
- }
- }
- }),
- a.ui.plugin.add("draggable", "zIndex", {
- start: function(b, c) {
- var d = a(c.helper),
- e = a(this).data("draggable").options;
- d.css("zIndex") && (e._zIndex = d.css("zIndex")),
- d.css("zIndex", e.zIndex)
- },
- stop: function(b, c) {
- var d = a(this).data("draggable").options;
- d._zIndex && a(c.helper).css("zIndex", d._zIndex)
- }
- })
-})(jQuery);
-/*
- * jQuery UI Droppable 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Droppables
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.widget.js
- * jquery.ui.mouse.js
- * jquery.ui.draggable.js
- */
-(function(a, b) {
- a.widget("ui.droppable", {
- widgetEventPrefix: "drop",
- options: {
- accept: "*",
- activeClass: !1,
- addClasses: !0,
- greedy: !1,
- hoverClass: !1,
- scope: "default",
- tolerance: "intersect"
- },
- _create: function() {
- var b = this.options,
- c = b.accept;
- this.isover = 0,
- this.isout = 1,
- this.accept = a.isFunction(c) ? c: function(a) {
- return a.is(c)
- },
- this.proportions = {
- width: this.element[0].offsetWidth,
- height: this.element[0].offsetHeight
- },
- a.ui.ddmanager.droppables[b.scope] = a.ui.ddmanager.droppables[b.scope] || [],
- a.ui.ddmanager.droppables[b.scope].push(this),
- b.addClasses && this.element.addClass("ui-droppable")
- },
- destroy: function() {
- var b = a.ui.ddmanager.droppables[this.options.scope];
- for (var c = 0; c < b.length; c++) b[c] == this && b.splice(c, 1);
- this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");
- return this
- },
- _setOption: function(b, c) {
- b == "accept" && (this.accept = a.isFunction(c) ? c: function(a) {
- return a.is(c)
- }),
- a.Widget.prototype._setOption.apply(this, arguments)
- },
- _activate: function(b) {
- var c = a.ui.ddmanager.current;
- this.options.activeClass && this.element.addClass(this.options.activeClass),
- c && this._trigger("activate", b, this.ui(c))
- },
- _deactivate: function(b) {
- var c = a.ui.ddmanager.current;
- this.options.activeClass && this.element.removeClass(this.options.activeClass),
- c && this._trigger("deactivate", b, this.ui(c))
- },
- _over: function(b) {
- var c = a.ui.ddmanager.current; !! c && (c.currentItem || c.element)[0] != this.element[0] && this.accept.call(this.element[0], c.currentItem || c.element) && (this.options.hoverClass && this.element.addClass(this.options.hoverClass), this._trigger("over", b, this.ui(c)))
- },
- _out: function(b) {
- var c = a.ui.ddmanager.current; !! c && (c.currentItem || c.element)[0] != this.element[0] && this.accept.call(this.element[0], c.currentItem || c.element) && (this.options.hoverClass && this.element.removeClass(this.options.hoverClass), this._trigger("out", b, this.ui(c)))
- },
- _drop: function(b, c) {
- var d = c || a.ui.ddmanager.current;
- if (!d || (d.currentItem || d.element)[0] == this.element[0]) return ! 1;
- var e = !1;
- this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function() {
- var b = a.data(this, "droppable");
- if (b.options.greedy && !b.options.disabled && b.options.scope == d.options.scope && b.accept.call(b.element[0], d.currentItem || d.element) && a.ui.intersect(d, a.extend(b, {
- offset: b.element.offset()
- }), b.options.tolerance)) {
- e = !0;
- return ! 1
- }
- });
- if (e) return ! 1;
- if (this.accept.call(this.element[0], d.currentItem || d.element)) {
- this.options.activeClass && this.element.removeClass(this.options.activeClass),
- this.options.hoverClass && this.element.removeClass(this.options.hoverClass),
- this._trigger("drop", b, this.ui(d));
- return this.element
- }
- return ! 1
- },
- ui: function(a) {
- return {
- draggable: a.currentItem || a.element,
- helper: a.helper,
- position: a.position,
- offset: a.positionAbs
- }
- }
- }),
- a.extend(a.ui.droppable, {
- version: "1.8.18"
- }),
- a.ui.intersect = function(b, c, d) {
- if (!c.offset) return ! 1;
- var e = (b.positionAbs || b.position.absolute).left,
- f = e + b.helperProportions.width,
- g = (b.positionAbs || b.position.absolute).top,
- h = g + b.helperProportions.height,
- i = c.offset.left,
- j = i + c.proportions.width,
- k = c.offset.top,
- l = k + c.proportions.height;
- switch (d) {
- case "fit":
- return i <= e && f <= j && k <= g && h <= l;
- case "intersect":
- return i < e + b.helperProportions.width / 2 && f - b.helperProportions.width / 2 < j && k < g + b.helperProportions.height / 2 && h - b.helperProportions.height / 2 < l;
- case "pointer":
- var m = (b.positionAbs || b.position.absolute).left + (b.clickOffset || b.offset.click).left,
- n = (b.positionAbs || b.position.absolute).top + (b.clickOffset || b.offset.click).top,
- o = a.ui.isOver(n, m, k, i, c.proportions.height, c.proportions.width);
- return o;
- case "touch":
- return (g >= k && g <= l || h >= k && h <= l || g < k && h > l) && (e >= i && e <= j || f >= i && f <= j || e < i && f > j);
- default:
- return ! 1
- }
- },
- a.ui.ddmanager = {
- current: null,
- droppables: {
- "default": []
- },
- prepareOffsets: function(b, c) {
- var d = a.ui.ddmanager.droppables[b.options.scope] || [],
- e = c ? c.type: null,
- f = (b.currentItem || b.element).find(":data(droppable)").andSelf();
- droppablesLoop: for (var g = 0; g < d.length; g++) {
- if (d[g].options.disabled || b && !d[g].accept.call(d[g].element[0], b.currentItem || b.element)) continue;
- for (var h = 0; h < f.length; h++) if (f[h] == d[g].element[0]) {
- d[g].proportions.height = 0;
- continue droppablesLoop
- }
- d[g].visible = d[g].element.css("display") != "none";
- if (!d[g].visible) continue;
- e == "mousedown" && d[g]._activate.call(d[g], c),
- d[g].offset = d[g].element.offset(),
- d[g].proportions = {
- width: d[g].element[0].offsetWidth,
- height: d[g].element[0].offsetHeight
- }
- }
- },
- drop: function(b, c) {
- var d = !1;
- a.each(a.ui.ddmanager.droppables[b.options.scope] || [],
- function() { ! this.options || (!this.options.disabled && this.visible && a.ui.intersect(b, this, this.options.tolerance) && (d = this._drop.call(this, c) || d), !this.options.disabled && this.visible && this.accept.call(this.element[0], b.currentItem || b.element) && (this.isout = 1, this.isover = 0, this._deactivate.call(this, c)))
- });
- return d
- },
- dragStart: function(b, c) {
- b.element.parents(":not(body,html)").bind("scroll.droppable",
- function() {
- b.options.refreshPositions || a.ui.ddmanager.prepareOffsets(b, c)
- })
- },
- drag: function(b, c) {
- b.options.refreshPositions && a.ui.ddmanager.prepareOffsets(b, c),
- a.each(a.ui.ddmanager.droppables[b.options.scope] || [],
- function() {
- if (! (this.options.disabled || this.greedyChild || !this.visible)) {
- var d = a.ui.intersect(b, this, this.options.tolerance),
- e = !d && this.isover == 1 ? "isout": d && this.isover == 0 ? "isover": null;
- if (!e) return;
- var f;
- if (this.options.greedy) {
- var g = this.element.parents(":data(droppable):eq(0)");
- g.length && (f = a.data(g[0], "droppable"), f.greedyChild = e == "isover" ? 1 : 0)
- }
- f && e == "isover" && (f.isover = 0, f.isout = 1, f._out.call(f, c)),
- this[e] = 1,
- this[e == "isout" ? "isover": "isout"] = 0,
- this[e == "isover" ? "_over": "_out"].call(this, c),
- f && e == "isout" && (f.isout = 0, f.isover = 1, f._over.call(f, c))
- }
- })
- },
- dragStop: function(b, c) {
- b.element.parents(":not(body,html)").unbind("scroll.droppable"),
- b.options.refreshPositions || a.ui.ddmanager.prepareOffsets(b, c)
- }
- }
-})(jQuery);
-/*
- * jQuery UI Resizable 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Resizables
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.mouse.js
- * jquery.ui.widget.js
- */
-(function(a, b) {
- a.widget("ui.resizable", a.ui.mouse, {
- widgetEventPrefix: "resize",
- options: {
- alsoResize: !1,
- animate: !1,
- animateDuration: "slow",
- animateEasing: "swing",
- aspectRatio: !1,
- autoHide: !1,
- containment: !1,
- ghost: !1,
- grid: !1,
- handles: "e,s,se",
- helper: !1,
- maxHeight: null,
- maxWidth: null,
- minHeight: 10,
- minWidth: 10,
- zIndex: 1e3
- },
- _create: function() {
- var b = this,
- c = this.options;
- this.element.addClass("ui-resizable"),
- a.extend(this, {
- _aspectRatio: !!c.aspectRatio,
- aspectRatio: c.aspectRatio,
- originalElement: this.element,
- _proportionallyResizeElements: [],
- _helper: c.helper || c.ghost || c.animate ? c.helper || "ui-resizable-helper": null
- }),
- this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i) && (this.element.wrap(a('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({
- position: this.element.css("position"),
- width: this.element.outerWidth(),
- height: this.element.outerHeight(),
- top: this.element.css("top"),
- left: this.element.css("left")
- })), this.element = this.element.parent().data("resizable", this.element.data("resizable")), this.elementIsWrapper = !0, this.element.css({
- marginLeft: this.originalElement.css("marginLeft"),
- marginTop: this.originalElement.css("marginTop"),
- marginRight: this.originalElement.css("marginRight"),
- marginBottom: this.originalElement.css("marginBottom")
- }), this.originalElement.css({
- marginLeft: 0,
- marginTop: 0,
- marginRight: 0,
- marginBottom: 0
- }), this.originalResizeStyle = this.originalElement.css("resize"), this.originalElement.css("resize", "none"), this._proportionallyResizeElements.push(this.originalElement.css({
- position: "static",
- zoom: 1,
- display: "block"
- })), this.originalElement.css({
- margin: this.originalElement.css("margin")
- }), this._proportionallyResize()),
- this.handles = c.handles || (a(".ui-resizable-handle", this.element).length ? {
- n: ".ui-resizable-n",
- e: ".ui-resizable-e",
- s: ".ui-resizable-s",
- w: ".ui-resizable-w",
- se: ".ui-resizable-se",
- sw: ".ui-resizable-sw",
- ne: ".ui-resizable-ne",
- nw: ".ui-resizable-nw"
- }: "e,s,se");
- if (this.handles.constructor == String) {
- this.handles == "all" && (this.handles = "n,e,s,w,se,sw,ne,nw");
- var d = this.handles.split(",");
- this.handles = {};
- for (var e = 0; e < d.length; e++) {
- var f = a.trim(d[e]),
- g = "ui-resizable-" + f,
- h = a('<div class="ui-resizable-handle ' + g + '"></div>');
- /sw|se|ne|nw/.test(f) && h.css({
- zIndex: ++c.zIndex
- }),
- "se" == f && h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),
- this.handles[f] = ".ui-resizable-" + f,
- this.element.append(h)
- }
- }
- this._renderAxis = function(b) {
- b = b || this.element;
- for (var c in this.handles) {
- this.handles[c].constructor == String && (this.handles[c] = a(this.handles[c], this.element).show());
- if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {
- var d = a(this.handles[c], this.element),
- e = 0;
- e = /sw|ne|nw|se|n|s/.test(c) ? d.outerHeight() : d.outerWidth();
- var f = ["padding", /ne|nw|n/.test(c) ? "Top": /se|sw|s/.test(c) ? "Bottom": /^e$/.test(c) ? "Right": "Left"].join("");
- b.css(f, e),
- this._proportionallyResize()
- }
- if (!a(this.handles[c]).length) continue
- }
- },
- this._renderAxis(this.element),
- this._handles = a(".ui-resizable-handle", this.element).disableSelection(),
- this._handles.mouseover(function() {
- if (!b.resizing) {
- if (this.className) var a = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
- b.axis = a && a[1] ? a[1] : "se"
- }
- }),
- c.autoHide && (this._handles.hide(), a(this.element).addClass("ui-resizable-autohide").hover(function() {
- c.disabled || (a(this).removeClass("ui-resizable-autohide"), b._handles.show())
- },
- function() {
- c.disabled || b.resizing || (a(this).addClass("ui-resizable-autohide"), b._handles.hide())
- })),
- this._mouseInit()
- },
- destroy: function() {
- this._mouseDestroy();
- var b = function(b) {
- a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()
- };
- if (this.elementIsWrapper) {
- b(this.element);
- var c = this.element;
- c.after(this.originalElement.css({
- position: c.css("position"),
- width: c.outerWidth(),
- height: c.outerHeight(),
- top: c.css("top"),
- left: c.css("left")
- })).remove()
- }
- this.originalElement.css("resize", this.originalResizeStyle),
- b(this.originalElement);
- return this
- },
- _mouseCapture: function(b) {
- var c = !1;
- for (var d in this.handles) a(this.handles[d])[0] == b.target && (c = !0);
- return ! this.options.disabled && c
- },
- _mouseStart: function(b) {
- var d = this.options,
- e = this.element.position(),
- f = this.element;
- this.resizing = !0,
- this.documentScroll = {
- top: a(document).scrollTop(),
- left: a(document).scrollLeft()
- },
- (f.is(".ui-draggable") || /absolute/.test(f.css("position"))) && f.css({
- position: "absolute",
- top: e.top,
- left: e.left
- }),
- this._renderProxy();
- var g = c(this.helper.css("left")),
- h = c(this.helper.css("top"));
- d.containment && (g += a(d.containment).scrollLeft() || 0, h += a(d.containment).scrollTop() || 0),
- this.offset = this.helper.offset(),
- this.position = {
- left: g,
- top: h
- },
- this.size = this._helper ? {
- width: f.outerWidth(),
- height: f.outerHeight()
- }: {
- width: f.width(),
- height: f.height()
- },
- this.originalSize = this._helper ? {
- width: f.outerWidth(),
- height: f.outerHeight()
- }: {
- width: f.width(),
- height: f.height()
- },
- this.originalPosition = {
- left: g,
- top: h
- },
- this.sizeDiff = {
- width: f.outerWidth() - f.width(),
- height: f.outerHeight() - f.height()
- },
- this.originalMousePosition = {
- left: b.pageX,
- top: b.pageY
- },
- this.aspectRatio = typeof d.aspectRatio == "number" ? d.aspectRatio: this.originalSize.width / this.originalSize.height || 1;
- var i = a(".ui-resizable-" + this.axis).css("cursor");
- a("body").css("cursor", i == "auto" ? this.axis + "-resize": i),
- f.addClass("ui-resizable-resizing"),
- this._propagate("start", b);
- return ! 0
- },
- _mouseDrag: function(b) {
- var c = this.helper,
- d = this.options,
- e = {},
- f = this,
- g = this.originalMousePosition,
- h = this.axis,
- i = b.pageX - g.left || 0,
- j = b.pageY - g.top || 0,
- k = this._change[h];
- if (!k) return ! 1;
- var l = k.apply(this, [b, i, j]),
- m = a.browser.msie && a.browser.version < 7,
- n = this.sizeDiff;
- this._updateVirtualBoundaries(b.shiftKey);
- if (this._aspectRatio || b.shiftKey) l = this._updateRatio(l, b);
- l = this._respectSize(l, b),
- this._propagate("resize", b),
- c.css({
- top: this.position.top + "px",
- left: this.position.left + "px",
- width: this.size.width + "px",
- height: this.size.height + "px"
- }),
- !this._helper && this._proportionallyResizeElements.length && this._proportionallyResize(),
- this._updateCache(l),
- this._trigger("resize", b, this.ui());
- return ! 1
- },
- _mouseStop: function(b) {
- this.resizing = !1;
- var c = this.options,
- d = this;
- if (this._helper) {
- var e = this._proportionallyResizeElements,
- f = e.length && /textarea/i.test(e[0].nodeName),
- g = f && a.ui.hasScroll(e[0], "left") ? 0 : d.sizeDiff.height,
- h = f ? 0 : d.sizeDiff.width,
- i = {
- width: d.helper.width() - h,
- height: d.helper.height() - g
- },
- j = parseInt(d.element.css("left"), 10) + (d.position.left - d.originalPosition.left) || null,
- k = parseInt(d.element.css("top"), 10) + (d.position.top - d.originalPosition.top) || null;
- c.animate || this.element.css(a.extend(i, {
- top: k,
- left: j
- })),
- d.helper.height(d.size.height),
- d.helper.width(d.size.width),
- this._helper && !c.animate && this._proportionallyResize()
- }
- a("body").css("cursor", "auto"),
- this.element.removeClass("ui-resizable-resizing"),
- this._propagate("stop", b),
- this._helper && this.helper.remove();
- return ! 1
- },
- _updateVirtualBoundaries: function(a) {
- var b = this.options,
- c, e, f, g, h;
- h = {
- minWidth: d(b.minWidth) ? b.minWidth: 0,
- maxWidth: d(b.maxWidth) ? b.maxWidth: Infinity,
- minHeight: d(b.minHeight) ? b.minHeight: 0,
- maxHeight: d(b.maxHeight) ? b.maxHeight: Infinity
- };
- if (this._aspectRatio || a) c = h.minHeight * this.aspectRatio,
- f = h.minWidth / this.aspectRatio,
- e = h.maxHeight * this.aspectRatio,
- g = h.maxWidth / this.aspectRatio,
- c > h.minWidth && (h.minWidth = c),
- f > h.minHeight && (h.minHeight = f),
- e < h.maxWidth && (h.maxWidth = e),
- g < h.maxHeight && (h.maxHeight = g);
- this._vBoundaries = h
- },
- _updateCache: function(a) {
- var b = this.options;
- this.offset = this.helper.offset(),
- d(a.left) && (this.position.left = a.left),
- d(a.top) && (this.position.top = a.top),
- d(a.height) && (this.size.height = a.height),
- d(a.width) && (this.size.width = a.width)
- },
- _updateRatio: function(a, b) {
- var c = this.options,
- e = this.position,
- f = this.size,
- g = this.axis;
- d(a.height) ? a.width = a.height * this.aspectRatio: d(a.width) && (a.height = a.width / this.aspectRatio),
- g == "sw" && (a.left = e.left + (f.width - a.width), a.top = null),
- g == "nw" && (a.top = e.top + (f.height - a.height), a.left = e.left + (f.width - a.width));
- return a
- },
- _respectSize: function(a, b) {
- var c = this.helper,
- e = this._vBoundaries,
- f = this._aspectRatio || b.shiftKey,
- g = this.axis,
- h = d(a.width) && e.maxWidth && e.maxWidth < a.width,
- i = d(a.height) && e.maxHeight && e.maxHeight < a.height,
- j = d(a.width) && e.minWidth && e.minWidth > a.width,
- k = d(a.height) && e.minHeight && e.minHeight > a.height;
- j && (a.width = e.minWidth),
- k && (a.height = e.minHeight),
- h && (a.width = e.maxWidth),
- i && (a.height = e.maxHeight);
- var l = this.originalPosition.left + this.originalSize.width,
- m = this.position.top + this.size.height,
- n = /sw|nw|w/.test(g),
- o = /nw|ne|n/.test(g);
- j && n && (a.left = l - e.minWidth),
- h && n && (a.left = l - e.maxWidth),
- k && o && (a.top = m - e.minHeight),
- i && o && (a.top = m - e.maxHeight);
- var p = !a.width && !a.height;
- p && !a.left && a.top ? a.top = null: p && !a.top && a.left && (a.left = null);
- return a
- },
- _proportionallyResize: function() {
- var b = this.options;
- if ( !! this._proportionallyResizeElements.length) {
- var c = this.helper || this.element;
- for (var d = 0; d < this._proportionallyResizeElements.length; d++) {
- var e = this._proportionallyResizeElements[d];
- if (!this.borderDif) {
- var f = [e.css("borderTopWidth"), e.css("borderRightWidth"), e.css("borderBottomWidth"), e.css("borderLeftWidth")],
- g = [e.css("paddingTop"), e.css("paddingRight"), e.css("paddingBottom"), e.css("paddingLeft")];
- this.borderDif = a.map(f,
- function(a, b) {
- var c = parseInt(a, 10) || 0,
- d = parseInt(g[b], 10) || 0;
- return c + d
- })
- }
- if (a.browser.msie && ( !! a(c).is(":hidden") || !!a(c).parents(":hidden").length)) continue;
- e.css({
- height: c.height() - this.borderDif[0] - this.borderDif[2] || 0,
- width: c.width() - this.borderDif[1] - this.borderDif[3] || 0
- })
- }
- }
- },
- _renderProxy: function() {
- var b = this.element,
- c = this.options;
- this.elementOffset = b.offset();
- if (this._helper) {
- this.helper = this.helper || a('<div style="overflow:hidden;"></div>');
- var d = a.browser.msie && a.browser.version < 7,
- e = d ? 1 : 0,
- f = d ? 2 : -1;
- this.helper.addClass(this._helper).css({
- width: this.element.outerWidth() + f,
- height: this.element.outerHeight() + f,
- position: "absolute",
- left: this.elementOffset.left - e + "px",
- top: this.elementOffset.top - e + "px",
- zIndex: ++c.zIndex
- }),
- this.helper.appendTo("body").disableSelection()
- } else this.helper = this.element
- },
- _change: {
- e: function(a, b, c) {
- return {
- width: this.originalSize.width + b
- }
- },
- w: function(a, b, c) {
- var d = this.options,
- e = this.originalSize,
- f = this.originalPosition;
- return {
- left: f.left + b,
- width: e.width - b
- }
- },
- n: function(a, b, c) {
- var d = this.options,
- e = this.originalSize,
- f = this.originalPosition;
- return {
- top: f.top + c,
- height: e.height - c
- }
- },
- s: function(a, b, c) {
- return {
- height: this.originalSize.height + c
- }
- },
- se: function(b, c, d) {
- return a.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [b, c, d]))
- },
- sw: function(b, c, d) {
- return a.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [b, c, d]))
- },
- ne: function(b, c, d) {
- return a.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [b, c, d]))
- },
- nw: function(b, c, d) {
- return a.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [b, c, d]))
- }
- },
- _propagate: function(b, c) {
- a.ui.plugin.call(this, b, [c, this.ui()]),
- b != "resize" && this._trigger(b, c, this.ui())
- },
- plugins: {},
- ui: function() {
- return {
- originalElement: this.originalElement,
- element: this.element,
- helper: this.helper,
- position: this.position,
- size: this.size,
- originalSize: this.originalSize,
- originalPosition: this.originalPosition
- }
- }
- }),
- a.extend(a.ui.resizable, {
- version: "1.8.18"
- }),
- a.ui.plugin.add("resizable", "alsoResize", {
- start: function(b, c) {
- var d = a(this).data("resizable"),
- e = d.options,
- f = function(b) {
- a(b).each(function() {
- var b = a(this);
- b.data("resizable-alsoresize", {
- width: parseInt(b.width(), 10),
- height: parseInt(b.height(), 10),
- left: parseInt(b.css("left"), 10),
- top: parseInt(b.css("top"), 10)
- })
- })
- };
- typeof e.alsoResize == "object" && !e.alsoResize.parentNode ? e.alsoResize.length ? (e.alsoResize = e.alsoResize[0], f(e.alsoResize)) : a.each(e.alsoResize,
- function(a) {
- f(a)
- }) : f(e.alsoResize)
- },
- resize: function(b, c) {
- var d = a(this).data("resizable"),
- e = d.options,
- f = d.originalSize,
- g = d.originalPosition,
- h = {
- height: d.size.height - f.height || 0,
- width: d.size.width - f.width || 0,
- top: d.position.top - g.top || 0,
- left: d.position.left - g.left || 0
- },
- i = function(b, d) {
- a(b).each(function() {
- var b = a(this),
- e = a(this).data("resizable-alsoresize"),
- f = {},
- g = d && d.length ? d: b.parents(c.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"];
- a.each(g,
- function(a, b) {
- var c = (e[b] || 0) + (h[b] || 0);
- c && c >= 0 && (f[b] = c || null)
- }),
- b.css(f)
- })
- };
- typeof e.alsoResize == "object" && !e.alsoResize.nodeType ? a.each(e.alsoResize,
- function(a, b) {
- i(a, b)
- }) : i(e.alsoResize)
- },
- stop: function(b, c) {
- a(this).removeData("resizable-alsoresize")
- }
- }),
- a.ui.plugin.add("resizable", "animate", {
- stop: function(b, c) {
- var d = a(this).data("resizable"),
- e = d.options,
- f = d._proportionallyResizeElements,
- g = f.length && /textarea/i.test(f[0].nodeName),
- h = g && a.ui.hasScroll(f[0], "left") ? 0 : d.sizeDiff.height,
- i = g ? 0 : d.sizeDiff.width,
- j = {
- width: d.size.width - i,
- height: d.size.height - h
- },
- k = parseInt(d.element.css("left"), 10) + (d.position.left - d.originalPosition.left) || null,
- l = parseInt(d.element.css("top"), 10) + (d.position.top - d.originalPosition.top) || null;
- d.element.animate(a.extend(j, l && k ? {
- top: l,
- left: k
- }: {}), {
- duration: e.animateDuration,
- easing: e.animateEasing,
- step: function() {
- var c = {
- width: parseInt(d.element.css("width"), 10),
- height: parseInt(d.element.css("height"), 10),
- top: parseInt(d.element.css("top"), 10),
- left: parseInt(d.element.css("left"), 10)
- };
- f && f.length && a(f[0]).css({
- width: c.width,
- height: c.height
- }),
- d._updateCache(c),
- d._propagate("resize", b)
- }
- })
- }
- }),
- a.ui.plugin.add("resizable", "containment", {
- start: function(b, d) {
- var e = a(this).data("resizable"),
- f = e.options,
- g = e.element,
- h = f.containment,
- i = h instanceof a ? h.get(0) : /parent/.test(h) ? g.parent().get(0) : h;
- if ( !! i) {
- e.containerElement = a(i);
- if (/document/.test(h) || h == document) e.containerOffset = {
- left: 0,
- top: 0
- },
- e.containerPosition = {
- left: 0,
- top: 0
- },
- e.parentData = {
- element: a(document),
- left: 0,
- top: 0,
- width: a(document).width(),
- height: a(document).height() || document.body.parentNode.scrollHeight
- };
- else {
- var j = a(i),
- k = [];
- a(["Top", "Right", "Left", "Bottom"]).each(function(a, b) {
- k[a] = c(j.css("padding" + b))
- }),
- e.containerOffset = j.offset(),
- e.containerPosition = j.position(),
- e.containerSize = {
- height: j.innerHeight() - k[3],
- width: j.innerWidth() - k[1]
- };
- var l = e.containerOffset,
- m = e.containerSize.height,
- n = e.containerSize.width,
- o = a.ui.hasScroll(i, "left") ? i.scrollWidth: n,
- p = a.ui.hasScroll(i) ? i.scrollHeight: m;
- e.parentData = {
- element: i,
- left: l.left,
- top: l.top,
- width: o,
- height: p
- }
- }
- }
- },
- resize: function(b, c) {
- var d = a(this).data("resizable"),
- e = d.options,
- f = d.containerSize,
- g = d.containerOffset,
- h = d.size,
- i = d.position,
- j = d._aspectRatio || b.shiftKey,
- k = {
- top: 0,
- left: 0
- },
- l = d.containerElement;
- l[0] != document && /static/.test(l.css("position")) && (k = g),
- i.left < (d._helper ? g.left: 0) && (d.size.width = d.size.width + (d._helper ? d.position.left - g.left: d.position.left - k.left), j && (d.size.height = d.size.width / e.aspectRatio), d.position.left = e.helper ? g.left: 0),
- i.top < (d._helper ? g.top: 0) && (d.size.height = d.size.height + (d._helper ? d.position.top - g.top: d.position.top), j && (d.size.width = d.size.height * e.aspectRatio), d.position.top = d._helper ? g.top: 0),
- d.offset.left = d.parentData.left + d.position.left,
- d.offset.top = d.parentData.top + d.position.top;
- var m = Math.abs((d._helper ? d.offset.left - k.left: d.offset.left - k.left) + d.sizeDiff.width),
- n = Math.abs((d._helper ? d.offset.top - k.top: d.offset.top - g.top) + d.sizeDiff.height),
- o = d.containerElement.get(0) == d.element.parent().get(0),
- p = /relative|absolute/.test(d.containerElement.css("position"));
- o && p && (m -= d.parentData.left),
- m + d.size.width >= d.parentData.width && (d.size.width = d.parentData.width - m, j && (d.size.height = d.size.width / d.aspectRatio)),
- n + d.size.height >= d.parentData.height && (d.size.height = d.parentData.height - n, j && (d.size.width = d.size.height * d.aspectRatio))
- },
- stop: function(b, c) {
- var d = a(this).data("resizable"),
- e = d.options,
- f = d.position,
- g = d.containerOffset,
- h = d.containerPosition,
- i = d.containerElement,
- j = a(d.helper),
- k = j.offset(),
- l = j.outerWidth() - d.sizeDiff.width,
- m = j.outerHeight() - d.sizeDiff.height;
- d._helper && !e.animate && /relative/.test(i.css("position")) && a(this).css({
- left: k.left - h.left - g.left,
- width: l,
- height: m
- }),
- d._helper && !e.animate && /static/.test(i.css("position")) && a(this).css({
- left: k.left - h.left - g.left,
- width: l,
- height: m
- })
- }
- }),
- a.ui.plugin.add("resizable", "ghost", {
- start: function(b, c) {
- var d = a(this).data("resizable"),
- e = d.options,
- f = d.size;
- d.ghost = d.originalElement.clone(),
- d.ghost.css({
- opacity: .25,
- display: "block",
- position: "relative",
- height: f.height,
- width: f.width,
- margin: 0,
- left: 0,
- top: 0
- }).addClass("ui-resizable-ghost").addClass(typeof e.ghost == "string" ? e.ghost: ""),
- d.ghost.appendTo(d.helper)
- },
- resize: function(b, c) {
- var d = a(this).data("resizable"),
- e = d.options;
- d.ghost && d.ghost.css({
- position: "relative",
- height: d.size.height,
- width: d.size.width
- })
- },
- stop: function(b, c) {
- var d = a(this).data("resizable"),
- e = d.options;
- d.ghost && d.helper && d.helper.get(0).removeChild(d.ghost.get(0))
- }
- }),
- a.ui.plugin.add("resizable", "grid", {
- resize: function(b, c) {
- var d = a(this).data("resizable"),
- e = d.options,
- f = d.size,
- g = d.originalSize,
- h = d.originalPosition,
- i = d.axis,
- j = e._aspectRatio || b.shiftKey;
- e.grid = typeof e.grid == "number" ? [e.grid, e.grid] : e.grid;
- var k = Math.round((f.width - g.width) / (e.grid[0] || 1)) * (e.grid[0] || 1),
- l = Math.round((f.height - g.height) / (e.grid[1] || 1)) * (e.grid[1] || 1);
- /^(se|s|e)$/.test(i) ? (d.size.width = g.width + k, d.size.height = g.height + l) : /^(ne)$/.test(i) ? (d.size.width = g.width + k, d.size.height = g.height + l, d.position.top = h.top - l) : /^(sw)$/.test(i) ? (d.size.width = g.width + k, d.size.height = g.height + l, d.position.left = h.left - k) : (d.size.width = g.width + k, d.size.height = g.height + l, d.position.top = h.top - l, d.position.left = h.left - k)
- }
- });
- var c = function(a) {
- return parseInt(a, 10) || 0
- },
- d = function(a) {
- return ! isNaN(parseInt(a, 10))
- }
-})(jQuery);
-/*
- * jQuery UI Selectable 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Selectables
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.mouse.js
- * jquery.ui.widget.js
- */
-(function(a, b) {
- a.widget("ui.selectable", a.ui.mouse, {
- options: {
- appendTo: "body",
- autoRefresh: !0,
- distance: 0,
- filter: "*",
- tolerance: "touch"
- },
- _create: function() {
- var b = this;
- this.element.addClass("ui-selectable"),
- this.dragged = !1;
- var c;
- this.refresh = function() {
- c = a(b.options.filter, b.element[0]),
- c.addClass("ui-selectee"),
- c.each(function() {
- var b = a(this),
- c = b.offset();
- a.data(this, "selectable-item", {
- element: this,
- $element: b,
- left: c.left,
- top: c.top,
- right: c.left + b.outerWidth(),
- bottom: c.top + b.outerHeight(),
- startselected: !1,
- selected: b.hasClass("ui-selected"),
- selecting: b.hasClass("ui-selecting"),
- unselecting: b.hasClass("ui-unselecting")
- })
- })
- },
- this.refresh(),
- this.selectees = c.addClass("ui-selectee"),
- this._mouseInit(),
- this.helper = a("<div class='ui-selectable-helper'></div>")
- },
- destroy: function() {
- this.selectees.removeClass("ui-selectee").removeData("selectable-item"),
- this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),
- this._mouseDestroy();
- return this
- },
- _mouseStart: function(b) {
- var c = this;
- this.opos = [b.pageX, b.pageY];
- if (!this.options.disabled) {
- var d = this.options;
- this.selectees = a(d.filter, this.element[0]),
- this._trigger("start", b),
- a(d.appendTo).append(this.helper),
- this.helper.css({
- left: b.clientX,
- top: b.clientY,
- width: 0,
- height: 0
- }),
- d.autoRefresh && this.refresh(),
- this.selectees.filter(".ui-selected").each(function() {
- var d = a.data(this, "selectable-item");
- d.startselected = !0,
- !b.metaKey && !b.ctrlKey && (d.$element.removeClass("ui-selected"), d.selected = !1, d.$element.addClass("ui-unselecting"), d.unselecting = !0, c._trigger("unselecting", b, {
- unselecting: d.element
- }))
- }),
- a(b.target).parents().andSelf().each(function() {
- var d = a.data(this, "selectable-item");
- if (d) {
- var e = !b.metaKey && !b.ctrlKey || !d.$element.hasClass("ui-selected");
- d.$element.removeClass(e ? "ui-unselecting": "ui-selected").addClass(e ? "ui-selecting": "ui-unselecting"),
- d.unselecting = !e,
- d.selecting = e,
- d.selected = e,
- e ? c._trigger("selecting", b, {
- selecting: d.element
- }) : c._trigger("unselecting", b, {
- unselecting: d.element
- });
- return ! 1
- }
- })
- }
- },
- _mouseDrag: function(b) {
- var c = this;
- this.dragged = !0;
- if (!this.options.disabled) {
- var d = this.options,
- e = this.opos[0],
- f = this.opos[1],
- g = b.pageX,
- h = b.pageY;
- if (e > g) {
- var i = g;
- g = e,
- e = i
- }
- if (f > h) {
- var i = h;
- h = f,
- f = i
- }
- this.helper.css({
- left: e,
- top: f,
- width: g - e,
- height: h - f
- }),
- this.selectees.each(function() {
- var i = a.data(this, "selectable-item");
- if ( !! i && i.element != c.element[0]) {
- var j = !1;
- d.tolerance == "touch" ? j = !(i.left > g || i.right < e || i.top > h || i.bottom < f) : d.tolerance == "fit" && (j = i.left > e && i.right < g && i.top > f && i.bottom < h),
- j ? (i.selected && (i.$element.removeClass("ui-selected"), i.selected = !1), i.unselecting && (i.$element.removeClass("ui-unselecting"), i.unselecting = !1), i.selecting || (i.$element.addClass("ui-selecting"), i.selecting = !0, c._trigger("selecting", b, {
- selecting: i.element
- }))) : (i.selecting && ((b.metaKey || b.ctrlKey) && i.startselected ? (i.$element.removeClass("ui-selecting"), i.selecting = !1, i.$element.addClass("ui-selected"), i.selected = !0) : (i.$element.removeClass("ui-selecting"), i.selecting = !1, i.startselected && (i.$element.addClass("ui-unselecting"), i.unselecting = !0), c._trigger("unselecting", b, {
- unselecting: i.element
- }))), i.selected && !b.metaKey && !b.ctrlKey && !i.startselected && (i.$element.removeClass("ui-selected"), i.selected = !1, i.$element.addClass("ui-unselecting"), i.unselecting = !0, c._trigger("unselecting", b, {
- unselecting: i.element
- })))
- }
- });
- return ! 1
- }
- },
- _mouseStop: function(b) {
- var c = this;
- this.dragged = !1;
- var d = this.options;
- a(".ui-unselecting", this.element[0]).each(function() {
- var d = a.data(this, "selectable-item");
- d.$element.removeClass("ui-unselecting"),
- d.unselecting = !1,
- d.startselected = !1,
- c._trigger("unselected", b, {
- unselected: d.element
- })
- }),
- a(".ui-selecting", this.element[0]).each(function() {
- var d = a.data(this, "selectable-item");
- d.$element.removeClass("ui-selecting").addClass("ui-selected"),
- d.selecting = !1,
- d.selected = !0,
- d.startselected = !0,
- c._trigger("selected", b, {
- selected: d.element
- })
- }),
- this._trigger("stop", b),
- this.helper.remove();
- return ! 1
- }
- }),
- a.extend(a.ui.selectable, {
- version: "1.8.18"
- })
-})(jQuery);
-/*
- * jQuery UI Sortable 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Sortables
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.mouse.js
- * jquery.ui.widget.js
- */
-(function(a, b) {
- a.widget("ui.sortable", a.ui.mouse, {
- widgetEventPrefix: "sort",
- ready: !1,
- options: {
- appendTo: "parent",
- axis: !1,
- connectWith: !1,
- containment: !1,
- cursor: "auto",
- cursorAt: !1,
- dropOnEmpty: !0,
- forcePlaceholderSize: !1,
- forceHelperSize: !1,
- grid: !1,
- handle: !1,
- helper: "original",
- items: "> *",
- opacity: !1,
- placeholder: !1,
- revert: !1,
- scroll: !0,
- scrollSensitivity: 20,
- scrollSpeed: 20,
- scope: "default",
- tolerance: "intersect",
- zIndex: 1e3
- },
- _create: function() {
- var a = this.options;
- this.containerCache = {},
- this.element.addClass("ui-sortable"),
- this.refresh(),
- this.floating = this.items.length ? a.axis === "x" || /left|right/.test(this.items[0].item.css("float")) || /inline|table-cell/.test(this.items[0].item.css("display")) : !1,
- this.offset = this.element.offset(),
- this._mouseInit(),
- this.ready = !0
- },
- destroy: function() {
- a.Widget.prototype.destroy.call(this),
- this.element.removeClass("ui-sortable ui-sortable-disabled"),
- this._mouseDestroy();
- for (var b = this.items.length - 1; b >= 0; b--) this.items[b].item.removeData(this.widgetName + "-item");
- return this
- },
- _setOption: function(b, c) {
- b === "disabled" ? (this.options[b] = c, this.widget()[c ? "addClass": "removeClass"]("ui-sortable-disabled")) : a.Widget.prototype._setOption.apply(this, arguments)
- },
- _mouseCapture: function(b, c) {
- var d = this;
- if (this.reverting) return ! 1;
- if (this.options.disabled || this.options.type == "static") return ! 1;
- this._refreshItems(b);
- var e = null,
- f = this,
- g = a(b.target).parents().each(function() {
- if (a.data(this, d.widgetName + "-item") == f) {
- e = a(this);
- return ! 1
- }
- });
- a.data(b.target, d.widgetName + "-item") == f && (e = a(b.target));
- if (!e) return ! 1;
- if (this.options.handle && !c) {
- var h = !1;
- a(this.options.handle, e).find("*").andSelf().each(function() {
- this == b.target && (h = !0)
- });
- if (!h) return ! 1
- }
- this.currentItem = e,
-
- this._removeCurrentsFromItems();
- return ! 0
- },
- _mouseStart: function(b, c, d) {
- var e = this.options,
- f = this;
- this.currentContainer = this,
- this.refreshPositions(),
- this.helper = this._createHelper(b),
- this._cacheHelperProportions(),
- this._cacheMargins(),
- this.scrollParent = this.helper.scrollParent(),
- this.offset = this.currentItem.offset(),
- this.offset = {
- top: this.offset.top - this.margins.top,
- left: this.offset.left - this.margins.left
- },
- this.helper.css("position", "absolute"),
- this.cssPosition = this.helper.css("position"),
- a.extend(this.offset, {
- click: {
- left: b.pageX - this.offset.left,
- top: b.pageY - this.offset.top
- },
- parent: this._getParentOffset(),
- relative: this._getRelativeOffset()
- }),
- this.originalPosition = this._generatePosition(b),
- this.originalPageX = b.pageX,
- this.originalPageY = b.pageY,
- e.cursorAt && this._adjustOffsetFromHelper(e.cursorAt),
- this.domPosition = {
- prev: this.currentItem.prev()[0],
- parent: this.currentItem.parent()[0]
- },
- this.helper[0] != this.currentItem[0] && this.currentItem.hide(),
- this._createPlaceholder(),
- e.containment && this._setContainment(),
- e.cursor && (a("body").css("cursor") && (this._storedCursor = a("body").css("cursor")), a("body").css("cursor", e.cursor)),
- e.opacity && (this.helper.css("opacity") && (this._storedOpacity = this.helper.css("opacity")), this.helper.css("opacity", e.opacity)),
- e.zIndex && (this.helper.css("zIndex") && (this._storedZIndex = this.helper.css("zIndex")), this.helper.css("zIndex", e.zIndex)),
- this.scrollParent[0] != document && this.scrollParent[0].tagName != "HTML" && (this.overflowOffset = this.scrollParent.offset()),
- this._trigger("start", b, this._uiHash()),
- this._preserveHelperProportions || this._cacheHelperProportions();
- if (!d) for (var g = this.containers.length - 1; g >= 0; g--) this.containers[g]._trigger("activate", b, f._uiHash(this));
- a.ui.ddmanager && (a.ui.ddmanager.current = this),
- a.ui.ddmanager && !e.dropBehaviour && a.ui.ddmanager.prepareOffsets(this, b),
- this.dragging = !0,
- this.helper.addClass("ui-sortable-helper"),
- this._mouseDrag(b);
- return ! 0
- },
- _mouseDrag: function(b) {
- this.position = this._generatePosition(b),
- this.positionAbs = this._convertPositionTo("absolute"),
- this.lastPositionAbs || (this.lastPositionAbs = this.positionAbs);
- if (this.options.scroll) {
- var c = this.options,
- d = !1;
- this.scrollParent[0] != document && this.scrollParent[0].tagName != "HTML" ? (this.overflowOffset.top + this.scrollParent[0].offsetHeight - b.pageY < c.scrollSensitivity ? this.scrollParent[0].scrollTop = d = this.scrollParent[0].scrollTop + c.scrollSpeed: b.pageY - this.overflowOffset.top < c.scrollSensitivity && (this.scrollParent[0].scrollTop = d = this.scrollParent[0].scrollTop - c.scrollSpeed), this.overflowOffset.left + this.scrollParent[0].offsetWidth - b.pageX < c.scrollSensitivity ? this.scrollParent[0].scrollLeft = d = this.scrollParent[0].scrollLeft + c.scrollSpeed: b.pageX - this.overflowOffset.left < c.scrollSensitivity && (this.scrollParent[0].scrollLeft = d = this.scrollParent[0].scrollLeft - c.scrollSpeed)) : (b.pageY - a(document).scrollTop() < c.scrollSensitivity ? d = a(document).scrollTop(a(document).scrollTop() - c.scrollSpeed) : a(window).height() - (b.pageY - a(document).scrollTop()) < c.scrollSensitivity && (d = a(document).scrollTop(a(document).scrollTop() + c.scrollSpeed)), b.pageX - a(document).scrollLeft() < c.scrollSensitivity ? d = a(document).scrollLeft(a(document).scrollLeft() - c.scrollSpeed) : a(window).width() - (b.pageX - a(document).scrollLeft()) < c.scrollSensitivity && (d = a(document).scrollLeft(a(document).scrollLeft() + c.scrollSpeed))),
- d !== !1 && a.ui.ddmanager && !c.dropBehaviour && a.ui.ddmanager.prepareOffsets(this, b)
- }
- this.positionAbs = this._convertPositionTo("absolute");
- if (!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left + "px";
- if (!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top + "px";
- for (var e = this.items.length - 1; e >= 0; e--) {
- var f = this.items[e],
- g = f.item[0],
- h = this._intersectsWithPointer(f);
- if (!h) continue;
- if (g != this.currentItem[0] && this.placeholder[h == 1 ? "next": "prev"]()[0] != g && !a.ui.contains(this.placeholder[0], g) && (this.options.type == "semi-dynamic" ? !a.ui.contains(this.element[0], g) : !0)) {
- this.direction = h == 1 ? "down": "up";
- if (this.options.tolerance == "pointer" || this._intersectsWithSides(f)) this._rearrange(b, f);
- else break;
- this._trigger("change", b, this._uiHash());
- break
- }
- }
- this._contactContainers(b),
- a.ui.ddmanager && a.ui.ddmanager.drag(this, b),
- this._trigger("sort", b, this._uiHash()),
- this.lastPositionAbs = this.positionAbs;
- return ! 1
- },
- _mouseStop: function(b, c) {
- if ( !! b) {
- a.ui.ddmanager && !this.options.dropBehaviour && a.ui.ddmanager.drop(this, b);
- if (this.options.revert) {
- var d = this,
- e = d.placeholder.offset();
- d.reverting = !0,
- a(this.helper).animate({
- left: e.left - this.offset.parent.left - d.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),
- top: e.top - this.offset.parent.top - d.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)
- },
- parseInt(this.options.revert, 10) || 500,
- function() {
- d._clear(b)
- })
- } else this._clear(b, c);
- return ! 1
- }
- },
- cancel: function() {
- var b = this;
- if (this.dragging) {
- this._mouseUp({
- target: null
- }),
- this.options.helper == "original" ? this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper") : this.currentItem.show();
- for (var c = this.containers.length - 1; c >= 0; c--) this.containers[c]._trigger("deactivate", null, b._uiHash(this)),
- this.containers[c].containerCache.over && (this.containers[c]._trigger("out", null, b._uiHash(this)), this.containers[c].containerCache.over = 0)
- }
- this.placeholder && (this.placeholder[0].parentNode && this.placeholder[0].parentNode.removeChild(this.placeholder[0]), this.options.helper != "original" && this.helper && this.helper[0].parentNode && this.helper.remove(), a.extend(this, {
- helper: null,
- dragging: !1,
- reverting: !1,
- _noFinalSort: null
- }), this.domPosition.prev ? a(this.domPosition.prev).after(this.currentItem) : a(this.domPosition.parent).prepend(this.currentItem));
- return this
- },
- serialize: function(b) {
- var c = this._getItemsAsjQuery(b && b.connected),
- d = [];
- b = b || {},
- a(c).each(function() {
- var c = (a(b.item || this).attr(b.attribute || "id") || "").match(b.expression || /(.+)[-=_](.+)/);
- c && d.push((b.key || c[1] + "[]") + "=" + (b.key && b.expression ? c[1] : c[2]))
- }),
- !d.length && b.key && d.push(b.key + "=");
- return d.join("&")
- },
- toArray: function(b) {
- var c = this._getItemsAsjQuery(b && b.connected),
- d = [];
- b = b || {},
- c.each(function() {
- d.push(a(b.item || this).attr(b.attribute || "id") || "")
- });
- return d
- },
- _intersectsWith: function(a) {
- var b = this.positionAbs.left,
- c = b + this.helperProportions.width,
- d = this.positionAbs.top,
- e = d + this.helperProportions.height,
- f = a.left,
- g = f + a.width,
- h = a.top,
- i = h + a.height,
- j = this.offset.click.top,
- k = this.offset.click.left,
- l = d + j > h && d + j < i && b + k > f && b + k < g;
- return this.options.tolerance == "pointer" || this.options.forcePointerForContainers || this.options.tolerance != "pointer" && this.helperProportions[this.floating ? "width": "height"] > a[this.floating ? "width": "height"] ? l: f < b + this.helperProportions.width / 2 && c - this.helperProportions.width / 2 < g && h < d + this.helperProportions.height / 2 && e - this.helperProportions.height / 2 < i
- },
- _intersectsWithPointer: function(b) {
- var c = a.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, b.top, b.height),
- d = a.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, b.left, b.width),
- e = c && d,
- f = this._getDragVerticalDirection(),
- g = this._getDragHorizontalDirection();
- if (!e) return ! 1;
- return this.floating ? g && g == "right" || f == "down" ? 2 : 1 : f && (f == "down" ? 2 : 1)
- },
- _intersectsWithSides: function(b) {
- var c = a.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, b.top + b.height / 2, b.height),
- d = a.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, b.left + b.width / 2, b.width),
- e = this._getDragVerticalDirection(),
- f = this._getDragHorizontalDirection();
- return this.floating && f ? f == "right" && d || f == "left" && !d: e && (e == "down" && c || e == "up" && !c)
- },
- _getDragVerticalDirection: function() {
- var a = this.positionAbs.top - this.lastPositionAbs.top;
- return a != 0 && (a > 0 ? "down": "up")
- },
- _getDragHorizontalDirection: function() {
- var a = this.positionAbs.left - this.lastPositionAbs.left;
- return a != 0 && (a > 0 ? "right": "left")
- },
- refresh: function(a) {
- this._refreshItems(a),
- this.refreshPositions();
- return this
- },
- _connectWith: function() {
- var a = this.options;
- return a.connectWith.constructor == String ? [a.connectWith] : a.connectWith
- },
- _getItemsAsjQuery: function(b) {
- var c = this,
- d = [],
- e = [],
- f = this._connectWith();
- if (f && b) for (var g = f.length - 1; g >= 0; g--) {
- var h = a(f[g]);
- for (var i = h.length - 1; i >= 0; i--) {
- var j = a.data(h[i], this.widgetName);
- j && j != this && !j.options.disabled && e.push([a.isFunction(j.options.items) ? j.options.items.call(j.element) : a(j.options.items, j.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), j])
- }
- }
- e.push([a.isFunction(this.options.items) ? this.options.items.call(this.element, null, {
- options: this.options,
- item: this.currentItem
- }) : a(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]);
- for (var g = e.length - 1; g >= 0; g--) e[g][0].each(function() {
- d.push(this)
- });
- return a(d)
- },
- _removeCurrentsFromItems: function() {
- var a = this.currentItem.find(":data(" + this.widgetName + "-item)");
- for (var b = 0; b < this.items.length; b++) for (var c = 0; c < a.length; c++) a[c] == this.items[b].item[0] && this.items.splice(b, 1)
- },
- _refreshItems: function(b) {
- this.items = [],
- this.containers = [this];
- var c = this.items,
- d = this,
- e = [[a.isFunction(this.options.items) ? this.options.items.call(this.element[0], b, {
- item: this.currentItem
- }) : a(this.options.items, this.element), this]],
- f = this._connectWith();
- if (f && this.ready) for (var g = f.length - 1; g >= 0; g--) {
- var h = a(f[g]);
- for (var i = h.length - 1; i >= 0; i--) {
- var j = a.data(h[i], this.widgetName);
- j && j != this && !j.options.disabled && (e.push([a.isFunction(j.options.items) ? j.options.items.call(j.element[0], b, {
- item: this.currentItem
- }) : a(j.options.items, j.element), j]), this.containers.push(j))
- }
- }
- for (var g = e.length - 1; g >= 0; g--) {
- var k = e[g][1],
- l = e[g][0];
- for (var i = 0,
- m = l.length; i < m; i++) {
- var n = a(l[i]);
- n.data(this.widgetName + "-item", k),
- c.push({
- item: n,
- instance: k,
- width: 0,
- height: 0,
- left: 0,
- top: 0
- })
- }
- }
- },
- refreshPositions: function(b) {
- this.offsetParent && this.helper && (this.offset.parent = this._getParentOffset());
- for (var c = this.items.length - 1; c >= 0; c--) {
- var d = this.items[c];
- if (d.instance != this.currentContainer && this.currentContainer && d.item[0] != this.currentItem[0]) continue;
- var e = this.options.toleranceElement ? a(this.options.toleranceElement, d.item) : d.item;
- b || (d.width = e.outerWidth(), d.height = e.outerHeight());
- var f = e.offset();
- d.left = f.left,
- d.top = f.top
- }
- if (this.options.custom && this.options.custom.refreshContainers) this.options.custom.refreshContainers.call(this);
- else for (var c = this.containers.length - 1; c >= 0; c--) {
- var f = this.containers[c].element.offset();
- this.containers[c].containerCache.left = f.left,
- this.containers[c].containerCache.top = f.top,
- this.containers[c].containerCache.width = this.containers[c].element.outerWidth(),
- this.containers[c].containerCache.height = this.containers[c].element.outerHeight()
- }
- return this
- },
- _createPlaceholder: function(b) {
- var c = b || this,
- d = c.options;
- if (!d.placeholder || d.placeholder.constructor == String) {
- var e = d.placeholder;
- d.placeholder = {
- element: function() {
- var b = a(document.createElement(c.currentItem[0].nodeName)).addClass(e || c.currentItem[0].className + " ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];
- e || (b.style.visibility = "hidden");
- return b
- },
- update: function(a, b) {
- if (!e || !!d.forcePlaceholderSize) b.height() || b.height(c.currentItem.innerHeight() - parseInt(c.currentItem.css("paddingTop") || 0, 10) - parseInt(c.currentItem.css("paddingBottom") || 0, 10)),
- b.width() || b.width(c.currentItem.innerWidth() - parseInt(c.currentItem.css("paddingLeft") || 0, 10) - parseInt(c.currentItem.css("paddingRight") || 0, 10))
- }
- }
- }
- c.placeholder = a(d.placeholder.element.call(c.element, c.currentItem)),
- c.currentItem.after(c.placeholder),
- d.placeholder.update(c, c.placeholder)
- },
- _contactContainers: function(b) {
- var c = null,
- d = null;
- for (var e = this.containers.length - 1; e >= 0; e--) {
- if (a.ui.contains(this.currentItem[0], this.containers[e].element[0])) continue;
- if (this._intersectsWith(this.containers[e].containerCache)) {
- if (c && a.ui.contains(this.containers[e].element[0], c.element[0])) continue;
- c = this.containers[e],
- d = e
- } else this.containers[e].containerCache.over && (this.containers[e]._trigger("out", b, this._uiHash(this)), this.containers[e].containerCache.over = 0)
- }
- if ( !! c) if (this.containers.length === 1) this.containers[d]._trigger("over", b, this._uiHash(this)),
- this.containers[d].containerCache.over = 1;
- else if (this.currentContainer != this.containers[d]) {
- var f = 1e4,
- g = null,
- h = this.positionAbs[this.containers[d].floating ? "left": "top"];
- for (var i = this.items.length - 1; i >= 0; i--) {
- if (!a.ui.contains(this.containers[d].element[0], this.items[i].item[0])) continue;
- var j = this.items[i][this.containers[d].floating ? "left": "top"];
- Math.abs(j - h) < f && (f = Math.abs(j - h), g = this.items[i])
- }
- if (!g && !this.options.dropOnEmpty) return;
- this.currentContainer = this.containers[d],
- g ? this._rearrange(b, g, null, !0) : this._rearrange(b, null, this.containers[d].element, !0),
- this._trigger("change", b, this._uiHash()),
- this.containers[d]._trigger("change", b, this._uiHash(this)),
- this.options.placeholder.update(this.currentContainer, this.placeholder),
- this.containers[d]._trigger("over", b, this._uiHash(this)),
- this.containers[d].containerCache.over = 1
- }
- },
- _createHelper: function(b) {
- var c = this.options,
- d = a.isFunction(c.helper) ? a(c.helper.apply(this.element[0], [b, this.currentItem])) : c.helper == "clone" ? this.currentItem.clone() : this.currentItem;
- d.parents("body").length || a(c.appendTo != "parent" ? c.appendTo: this.currentItem[0].parentNode)[0].appendChild(d[0]),
- d[0] == this.currentItem[0] && (this._storedCSS = {
- width: this.currentItem[0].style.width,
- height: this.currentItem[0].style.height,
- position: this.currentItem.css("position"),
- top: this.currentItem.css("top"),
- left: this.currentItem.css("left")
- }),
- (d[0].style.width == "" || c.forceHelperSize) && d.width(this.currentItem.width()),
- (d[0].style.height == "" || c.forceHelperSize) && d.height(this.currentItem.height());
- return d
- },
- _adjustOffsetFromHelper: function(b) {
- typeof b == "string" && (b = b.split(" ")),
- a.isArray(b) && (b = {
- left: +b[0],
- top: +b[1] || 0
- }),
- "left" in b && (this.offset.click.left = b.left + this.margins.left),
- "right" in b && (this.offset.click.left = this.helperProportions.width - b.right + this.margins.left),
- "top" in b && (this.offset.click.top = b.top + this.margins.top),
- "bottom" in b && (this.offset.click.top = this.helperProportions.height - b.bottom + this.margins.top)
- },
- _getParentOffset: function() {
- this.offsetParent = this.helper.offsetParent();
- var b = this.offsetParent.offset();
- this.cssPosition == "absolute" && this.scrollParent[0] != document && a.ui.contains(this.scrollParent[0], this.offsetParent[0]) && (b.left += this.scrollParent.scrollLeft(), b.top += this.scrollParent.scrollTop());
- if (this.offsetParent[0] == document.body || this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == "html" && a.browser.msie) b = {
- top: 0,
- left: 0
- };
- return {
- top: b.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
- left: b.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
- }
- },
- _getRelativeOffset: function() {
- if (this.cssPosition == "relative") {
- var a = this.currentItem.position();
- return {
- top: a.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(),
- left: a.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft()
- }
- }
- return {
- top: 0,
- left: 0
- }
- },
- _cacheMargins: function() {
- this.margins = {
- left: parseInt(this.currentItem.css("marginLeft"), 10) || 0,
- top: parseInt(this.currentItem.css("marginTop"), 10) || 0
- }
- },
- _cacheHelperProportions: function() {
- this.helperProportions = {
- width: this.helper.outerWidth(),
- height: this.helper.outerHeight()
- }
- },
- _setContainment: function() {
- var b = this.options;
- b.containment == "parent" && (b.containment = this.helper[0].parentNode);
- if (b.containment == "document" || b.containment == "window") this.containment = [0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, a(b.containment == "document" ? document: window).width() - this.helperProportions.width - this.margins.left, (a(b.containment == "document" ? document: window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top];
- if (!/^(document|window|parent)$/.test(b.containment)) {
- var c = a(b.containment)[0],
- d = a(b.containment).offset(),
- e = a(c).css("overflow") != "hidden";
- this.containment = [d.left + (parseInt(a(c).css("borderLeftWidth"), 10) || 0) + (parseInt(a(c).css("paddingLeft"), 10) || 0) - this.margins.left, d.top + (parseInt(a(c).css("borderTopWidth"), 10) || 0) + (parseInt(a(c).css("paddingTop"), 10) || 0) - this.margins.top, d.left + (e ? Math.max(c.scrollWidth, c.offsetWidth) : c.offsetWidth) - (parseInt(a(c).css("borderLeftWidth"), 10) || 0) - (parseInt(a(c).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left, d.top + (e ? Math.max(c.scrollHeight, c.offsetHeight) : c.offsetHeight) - (parseInt(a(c).css("borderTopWidth"), 10) || 0) - (parseInt(a(c).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top]
- }
- },
- _convertPositionTo: function(b, c) {
- c || (c = this.position);
- var d = b == "absolute" ? 1 : -1,
- e = this.options,
- f = this.cssPosition == "absolute" && (this.scrollParent[0] == document || !a.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent: this.scrollParent,
- g = /(html|body)/i.test(f[0].tagName);
- return {
- top: c.top + this.offset.relative.top * d + this.offset.parent.top * d - (a.browser.safari && this.cssPosition == "fixed" ? 0 : (this.cssPosition == "fixed" ? -this.scrollParent.scrollTop() : g ? 0 : f.scrollTop()) * d),
- left: c.left + this.offset.relative.left * d + this.offset.parent.left * d - (a.browser.safari && this.cssPosition == "fixed" ? 0 : (this.cssPosition == "fixed" ? -this.scrollParent.scrollLeft() : g ? 0 : f.scrollLeft()) * d)
- }
- },
- _generatePosition: function(b) {
- var c = this.options,
- d = this.cssPosition == "absolute" && (this.scrollParent[0] == document || !a.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent: this.scrollParent,
- e = /(html|body)/i.test(d[0].tagName);
- this.cssPosition == "relative" && (this.scrollParent[0] == document || this.scrollParent[0] == this.offsetParent[0]) && (this.offset.relative = this._getRelativeOffset());
- var f = b.pageX,
- g = b.pageY;
- if (this.originalPosition) {
- this.containment && (b.pageX - this.offset.click.left < this.containment[0] && (f = this.containment[0] + this.offset.click.left), b.pageY - this.offset.click.top < this.containment[1] && (g = this.containment[1] + this.offset.click.top), b.pageX - this.offset.click.left > this.containment[2] && (f = this.containment[2] + this.offset.click.left), b.pageY - this.offset.click.top > this.containment[3] && (g = this.containment[3] + this.offset.click.top));
- if (c.grid) {
- var h = this.originalPageY + Math.round((g - this.originalPageY) / c.grid[1]) * c.grid[1];
- g = this.containment ? h - this.offset.click.top < this.containment[1] || h - this.offset.click.top > this.containment[3] ? h - this.offset.click.top < this.containment[1] ? h + c.grid[1] : h - c.grid[1] : h: h;
- var i = this.originalPageX + Math.round((f - this.originalPageX) / c.grid[0]) * c.grid[0];
- f = this.containment ? i - this.offset.click.left < this.containment[0] || i - this.offset.click.left > this.containment[2] ? i - this.offset.click.left < this.containment[0] ? i + c.grid[0] : i - c.grid[0] : i: i
- }
- }
- return {
- top: g - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + (a.browser.safari && this.cssPosition == "fixed" ? 0 : this.cssPosition == "fixed" ? -this.scrollParent.scrollTop() : e ? 0 : d.scrollTop()),
- left: f - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + (a.browser.safari && this.cssPosition == "fixed" ? 0 : this.cssPosition == "fixed" ? -this.scrollParent.scrollLeft() : e ? 0 : d.scrollLeft())
- }
- },
- _rearrange: function(a, b, c, d) {
- c ? c[0].appendChild(this.placeholder[0]) : b.item[0].parentNode.insertBefore(this.placeholder[0], this.direction == "down" ? b.item[0] : b.item[0].nextSibling),
- this.counter = this.counter ? ++this.counter: 1;
- var e = this,
- f = this.counter;
- window.setTimeout(function() {
- f == e.counter && e.refreshPositions(!d)
- },
- 0)
- },
- _clear: function(b, c) {
- this.reverting = !1;
- var d = [],
- e = this; ! this._noFinalSort && this.currentItem.parent().length && this.placeholder.before(this.currentItem),
- this._noFinalSort = null;
- if (this.helper[0] == this.currentItem[0]) {
- for (var f in this._storedCSS) if (this._storedCSS[f] == "auto" || this._storedCSS[f] == "static") this._storedCSS[f] = "";
- this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")
- } else this.currentItem.show();
- this.fromOutside && !c && d.push(function(a) {
- this._trigger("receive", a, this._uiHash(this.fromOutside))
- }),
- (this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !c && d.push(function(a) {
- this._trigger("update", a, this._uiHash())
- });
- if (!a.ui.contains(this.element[0], this.currentItem[0])) {
- c || d.push(function(a) {
- this._trigger("remove", a, this._uiHash())
- });
- for (var f = this.containers.length - 1; f >= 0; f--) a.ui.contains(this.containers[f].element[0], this.currentItem[0]) && !c && (d.push(function(a) {
- return function(b) {
- a._trigger("receive", b, this._uiHash(this))
- }
- }.call(this, this.containers[f])), d.push(function(a) {
- return function(b) {
- a._trigger("update", b, this._uiHash(this))
- }
- }.call(this, this.containers[f])))
- }
- for (var f = this.containers.length - 1; f >= 0; f--) c || d.push(function(a) {
- return function(b) {
- a._trigger("deactivate", b, this._uiHash(this))
- }
- }.call(this, this.containers[f])),
- this.containers[f].containerCache.over && (d.push(function(a) {
- return function(b) {
- a._trigger("out", b, this._uiHash(this))
- }
- }.call(this, this.containers[f])), this.containers[f].containerCache.over = 0);
- this._storedCursor && a("body").css("cursor", this._storedCursor),
- this._storedOpacity && this.helper.css("opacity", this._storedOpacity),
- this._storedZIndex && this.helper.css("zIndex", this._storedZIndex == "auto" ? "": this._storedZIndex),
- this.dragging = !1;
- if (this.cancelHelperRemoval) {
- if (!c) {
- this._trigger("beforeStop", b, this._uiHash());
- for (var f = 0; f < d.length; f++) d[f].call(this, b);
- this._trigger("stop", b, this._uiHash())
- }
- return ! 1
- }
- c || this._trigger("beforeStop", b, this._uiHash()),
- this.placeholder[0].parentNode.removeChild(this.placeholder[0]),
- this.helper[0] != this.currentItem[0] && this.helper.remove(),
- this.helper = null;
- if (!c) {
- for (var f = 0; f < d.length; f++) d[f].call(this, b);
- this._trigger("stop", b, this._uiHash())
- }
- this.fromOutside = !1;
- return ! 0
- },
- _trigger: function() {
- a.Widget.prototype._trigger.apply(this, arguments) === !1 && this.cancel()
- },
- _uiHash: function(b) {
- var c = b || this;
- return {
- helper: c.helper,
- placeholder: c.placeholder || a([]),
- position: c.position,
- originalPosition: c.originalPosition,
- offset: c.positionAbs,
- item: c.currentItem,
- sender: b ? b.element: null
- }
- }
- }),
- a.extend(a.ui.sortable, {
- version: "1.8.18"
- })
-})(jQuery);
-/*
- * jQuery UI Datepicker 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker
- *
- * Depends:
- * jquery.ui.core.js
- */
-(function($, undefined) {
- function isArray(a) {
- return a && ($.browser.safari && typeof a == "object" && a.length || a.constructor && a.constructor.toString().match(/\Array\(\)/))
- }
- function extendRemove(a, b) {
- $.extend(a, b);
- for (var c in b) if (b[c] == null || b[c] == undefined) a[c] = b[c];
- return a
- }
- function bindHover(a) {
- var b = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
- return a.bind("mouseout",
- function(a) {
- var c = $(a.target).closest(b); ! c.length || c.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")
- }).bind("mouseover",
- function(c) {
- var d = $(c.target).closest(b); ! $.datepicker._isDisabledDatepicker(instActive.inline ? a.parent()[0] : instActive.input[0]) && !!d.length && (d.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"), d.addClass("ui-state-hover"), d.hasClass("ui-datepicker-prev") && d.addClass("ui-datepicker-prev-hover"), d.hasClass("ui-datepicker-next") && d.addClass("ui-datepicker-next-hover"))
- })
- }
- function Datepicker() {
- this.debug = !1,
- this._curInst = null,
- this._keyEvent = !1,
- this._disabledInputs = [],
- this._datepickerShowing = !1,
- this._inDialog = !1,
- this._mainDivId = "ui-datepicker-div",
- this._inlineClass = "ui-datepicker-inline",
- this._appendClass = "ui-datepicker-append",
- this._triggerClass = "ui-datepicker-trigger",
- this._dialogClass = "ui-datepicker-dialog",
- this._disableClass = "ui-datepicker-disabled",
- this._unselectableClass = "ui-datepicker-unselectable",
- this._currentClass = "ui-datepicker-current-day",
- this._dayOverClass = "ui-datepicker-days-cell-over",
- this.regional = [],
- this.regional[""] = {
- closeText: "Done",
- prevText: "Prev",
- nextText: "Next",
- currentText: "Today",
- monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
- monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
- dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
- dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
- dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
- weekHeader: "Wk",
- dateFormat: "mm/dd/yy",
- firstDay: 0,
- isRTL: !1,
- showMonthAfterYear: !1,
- yearSuffix: ""
- },
- this._defaults = {
- showOn: "focus",
- showAnim: "fadeIn",
- showOptions: {},
- defaultDate: null,
- appendText: "",
- buttonText: "...",
- buttonImage: "",
- buttonImageOnly: !1,
- hideIfNoPrevNext: !1,
- navigationAsDateFormat: !1,
- gotoCurrent: !1,
- changeMonth: !1,
- changeYear: !1,
- yearRange: "c-10:c+10",
- showOtherMonths: !1,
- selectOtherMonths: !1,
- showWeek: !1,
- calculateWeek: this.iso8601Week,
- shortYearCutoff: "+10",
- minDate: null,
- maxDate: null,
- duration: "fast",
- beforeShowDay: null,
- beforeShow: null,
- onSelect: null,
- onChangeMonthYear: null,
- onClose: null,
- numberOfMonths: 1,
- showCurrentAtPos: 0,
- stepMonths: 1,
- stepBigMonths: 12,
- altField: "",
- altFormat: "",
- constrainInput: !0,
- showButtonPanel: !1,
- autoSize: !1,
- disabled: !1
- },
- $.extend(this._defaults, this.regional[""]),
- this.dpDiv = bindHover($('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))
- }
- $.extend($.ui, {
- datepicker: {
- version: "1.8.18"
- }
- });
- var PROP_NAME = "datepicker",
- dpuuid = (new Date).getTime(),
- instActive;
- $.extend(Datepicker.prototype, {
- markerClassName: "hasDatepicker",
- maxRows: 4,
- log: function() {
- this.debug && console.log.apply("", arguments)
- },
- _widgetDatepicker: function() {
- return this.dpDiv
- },
- setDefaults: function(a) {
- extendRemove(this._defaults, a || {});
- return this
- },
- _attachDatepicker: function(target, settings) {
- var inlineSettings = null;
- for (var attrName in this._defaults) {
- var attrValue = target.getAttribute("date:" + attrName);
- if (attrValue) {
- inlineSettings = inlineSettings || {};
- try {
- inlineSettings[attrName] = eval(attrValue)
- } catch(err) {
- inlineSettings[attrName] = attrValue
- }
- }
- }
- var nodeName = target.nodeName.toLowerCase(),
- inline = nodeName == "div" || nodeName == "span";
- target.id || (this.uuid += 1, target.id = "dp" + this.uuid);
- var inst = this._newInst($(target), inline);
- inst.settings = $.extend({},
- settings || {},
- inlineSettings || {}),
- nodeName == "input" ? this._connectDatepicker(target, inst) : inline && this._inlineDatepicker(target, inst)
- },
- _newInst: function(a, b) {
- var c = a[0].id.replace(/([^A-Za-z0-9_-])/g, "\\\\$1");
- return {
- id: c,
- input: a,
- selectedDay: 0,
- selectedMonth: 0,
- selectedYear: 0,
- drawMonth: 0,
- drawYear: 0,
- inline: b,
- dpDiv: b ? bindHover($('<div class="' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')) : this.dpDiv
- }
- },
- _connectDatepicker: function(a, b) {
- var c = $(a);
- b.append = $([]),
- b.trigger = $([]);
- c.hasClass(this.markerClassName) || (this._attachments(c, b), c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",
- function(a, c, d) {
- b.settings[c] = d
- }).bind("getData.datepicker",
- function(a, c) {
- return this._get(b, c)
- }), this._autoSize(b), $.data(a, PROP_NAME, b), b.settings.disabled && this._disableDatepicker(a))
- },
- _attachments: function(a, b) {
- var c = this._get(b, "appendText"),
- d = this._get(b, "isRTL");
- b.append && b.append.remove(),
- c && (b.append = $('<span class="' + this._appendClass + '">' + c + "</span>"), a[d ? "before": "after"](b.append)),
- a.unbind("focus", this._showDatepicker),
- b.trigger && b.trigger.remove();
- var e = this._get(b, "showOn"); (e == "focus" || e == "both") && a.focus(this._showDatepicker);
- if (e == "button" || e == "both") {
- var f = this._get(b, "buttonText"),
- g = this._get(b, "buttonImage");
- b.trigger = $(this._get(b, "buttonImageOnly") ? $("<img/>").addClass(this._triggerClass).attr({
- src: g,
- alt: f,
- title: f
- }) : $('<button type="button"></button>').addClass(this._triggerClass).html(g == "" ? f: $("<img/>").attr({
- src: g,
- alt: f,
- title: f
- }))),
- a[d ? "before": "after"](b.trigger),
- b.trigger.click(function() {
- $.datepicker._datepickerShowing && $.datepicker._lastInput == a[0] ? $.datepicker._hideDatepicker() : $.datepicker._datepickerShowing && $.datepicker._lastInput != a[0] ? ($.datepicker._hideDatepicker(), $.datepicker._showDatepicker(a[0])) : $.datepicker._showDatepicker(a[0]);
- return ! 1
- })
- }
- },
- _autoSize: function(a) {
- if (this._get(a, "autoSize") && !a.inline) {
- var b = new Date(2009, 11, 20),
- c = this._get(a, "dateFormat");
- if (c.match(/[DM]/)) {
- var d = function(a) {
- var b = 0,
- c = 0;
- for (var d = 0; d < a.length; d++) a[d].length > b && (b = a[d].length, c = d);
- return c
- };
- b.setMonth(d(this._get(a, c.match(/MM/) ? "monthNames": "monthNamesShort"))),
- b.setDate(d(this._get(a, c.match(/DD/) ? "dayNames": "dayNamesShort")) + 20 - b.getDay())
- }
- a.input.attr("size", this._formatDate(a, b).length)
- }
- },
- _inlineDatepicker: function(a, b) {
- var c = $(a);
- c.hasClass(this.markerClassName) || (c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",
- function(a, c, d) {
- b.settings[c] = d
- }).bind("getData.datepicker",
- function(a, c) {
- return this._get(b, c)
- }), $.data(a, PROP_NAME, b), this._setDate(b, this._getDefaultDate(b), !0), this._updateDatepicker(b), this._updateAlternate(b), b.settings.disabled && this._disableDatepicker(a), b.dpDiv.css("display", "block"))
- },
- _dialogDatepicker: function(a, b, c, d, e) {
- var f = this._dialogInst;
- if (!f) {
- this.uuid += 1;
- var g = "dp" + this.uuid;
- this._dialogInput = $('<input type="text" id="' + g + '" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>'),
- this._dialogInput.keydown(this._doKeyDown),
- $("body").append(this._dialogInput),
- f = this._dialogInst = this._newInst(this._dialogInput, !1),
- f.settings = {},
- $.data(this._dialogInput[0], PROP_NAME, f)
- }
- extendRemove(f.settings, d || {}),
- b = b && b.constructor == Date ? this._formatDate(f, b) : b,
- this._dialogInput.val(b),
- this._pos = e ? e.length ? e: [e.pageX, e.pageY] : null;
- if (!this._pos) {
- var h = document.documentElement.clientWidth,
- i = document.documentElement.clientHeight,
- j = document.documentElement.scrollLeft || document.body.scrollLeft,
- k = document.documentElement.scrollTop || document.body.scrollTop;
- this._pos = [h / 2 - 100 + j, i / 2 - 150 + k]
- }
- this._dialogInput.css("left", this._pos[0] + 20 + "px").css("top", this._pos[1] + "px"),
- f.settings.onSelect = c,
- this._inDialog = !0,
- this.dpDiv.addClass(this._dialogClass),
- this._showDatepicker(this._dialogInput[0]),
- $.blockUI && $.blockUI(this.dpDiv),
- $.data(this._dialogInput[0], PROP_NAME, f);
- return this
- },
- _destroyDatepicker: function(a) {
- var b = $(a),
- c = $.data(a, PROP_NAME);
- if ( !! b.hasClass(this.markerClassName)) {
- var d = a.nodeName.toLowerCase();
- $.removeData(a, PROP_NAME),
- d == "input" ? (c.append.remove(), c.trigger.remove(), b.removeClass(this.markerClassName).unbind("focus", this._showDatepicker).unbind("keydown", this._doKeyDown).unbind("keypress", this._doKeyPress).unbind("keyup", this._doKeyUp)) : (d == "div" || d == "span") && b.removeClass(this.markerClassName).empty()
- }
- },
- _enableDatepicker: function(a) {
- var b = $(a),
- c = $.data(a, PROP_NAME);
- if ( !! b.hasClass(this.markerClassName)) {
- var d = a.nodeName.toLowerCase();
- if (d == "input") a.disabled = !1,
- c.trigger.filter("button").each(function() {
- this.disabled = !1
- }).end().filter("img").css({
- opacity: "1.0",
- cursor: ""
- });
- else if (d == "div" || d == "span") {
- var e = b.children("." + this._inlineClass);
- e.children().removeClass("ui-state-disabled"),
- e.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")
- }
- this._disabledInputs = $.map(this._disabledInputs,
- function(b) {
- return b == a ? null: b
- })
- }
- },
- _disableDatepicker: function(a) {
- var b = $(a),
- c = $.data(a, PROP_NAME);
- if ( !! b.hasClass(this.markerClassName)) {
- var d = a.nodeName.toLowerCase();
- if (d == "input") a.disabled = !0,
- c.trigger.filter("button").each(function() {
- this.disabled = !0
- }).end().filter("img").css({
- opacity: "0.5",
- cursor: "default"
- });
- else if (d == "div" || d == "span") {
- var e = b.children("." + this._inlineClass);
- e.children().addClass("ui-state-disabled"),
- e.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled", "disabled")
- }
- this._disabledInputs = $.map(this._disabledInputs,
- function(b) {
- return b == a ? null: b
- }),
- this._disabledInputs[this._disabledInputs.length] = a
- }
- },
- _isDisabledDatepicker: function(a) {
- if (!a) return ! 1;
- for (var b = 0; b < this._disabledInputs.length; b++) if (this._disabledInputs[b] == a) return ! 0;
- return ! 1
- },
- _getInst: function(a) {
- try {
- return $.data(a, PROP_NAME)
- } catch(b) {
- throw "Missing instance data for this datepicker"
- }
- },
- _optionDatepicker: function(a, b, c) {
- var d = this._getInst(a);
- if (arguments.length == 2 && typeof b == "string") return b == "defaults" ? $.extend({},
- $.datepicker._defaults) : d ? b == "all" ? $.extend({},
- d.settings) : this._get(d, b) : null;
- var e = b || {};
- typeof b == "string" && (e = {},
- e[b] = c);
- if (d) {
- this._curInst == d && this._hideDatepicker();
- var f = this._getDateDatepicker(a, !0),
- g = this._getMinMaxDate(d, "min"),
- h = this._getMinMaxDate(d, "max");
- extendRemove(d.settings, e),
- g !== null && e.dateFormat !== undefined && e.minDate === undefined && (d.settings.minDate = this._formatDate(d, g)),
- h !== null && e.dateFormat !== undefined && e.maxDate === undefined && (d.settings.maxDate = this._formatDate(d, h)),
- this._attachments($(a), d),
- this._autoSize(d),
- this._setDate(d, f),
- this._updateAlternate(d),
- this._updateDatepicker(d)
- }
- },
- _changeDatepicker: function(a, b, c) {
- this._optionDatepicker(a, b, c)
- },
- _refreshDatepicker: function(a) {
- var b = this._getInst(a);
- b && this._updateDatepicker(b)
- },
- _setDateDatepicker: function(a, b) {
- var c = this._getInst(a);
- c && (this._setDate(c, b), this._updateDatepicker(c), this._updateAlternate(c))
- },
- _getDateDatepicker: function(a, b) {
- var c = this._getInst(a);
- c && !c.inline && this._setDateFromField(c, b);
- return c ? this._getDate(c) : null
- },
- _doKeyDown: function(a) {
- var b = $.datepicker._getInst(a.target),
- c = !0,
- d = b.dpDiv.is(".ui-datepicker-rtl");
- b._keyEvent = !0;
- if ($.datepicker._datepickerShowing) switch (a.keyCode) {
- case 9:
- $.datepicker._hideDatepicker(),
- c = !1;
- break;
- case 13:
- var e = $("td." + $.datepicker._dayOverClass + ":not(." + $.datepicker._currentClass + ")", b.dpDiv);
- e[0] && $.datepicker._selectDay(a.target, b.selectedMonth, b.selectedYear, e[0]);
- var f = $.datepicker._get(b, "onSelect");
- if (f) {
- var g = $.datepicker._formatDate(b);
- f.apply(b.input ? b.input[0] : null, [g, b])
- } else $.datepicker._hideDatepicker();
- return ! 1;
- case 27:
- $.datepicker._hideDatepicker();
- break;
- case 33:
- $.datepicker._adjustDate(a.target, a.ctrlKey ? -$.datepicker._get(b, "stepBigMonths") : -$.datepicker._get(b, "stepMonths"), "M");
- break;
- case 34:
- $.datepicker._adjustDate(a.target, a.ctrlKey ? +$.datepicker._get(b, "stepBigMonths") : +$.datepicker._get(b, "stepMonths"), "M");
- break;
- case 35:
- (a.ctrlKey || a.metaKey) && $.datepicker._clearDate(a.target),
- c = a.ctrlKey || a.metaKey;
- break;
- case 36:
- (a.ctrlKey || a.metaKey) && $.datepicker._gotoToday(a.target),
- c = a.ctrlKey || a.metaKey;
- break;
- case 37:
- (a.ctrlKey || a.metaKey) && $.datepicker._adjustDate(a.target, d ? 1 : -1, "D"),
- c = a.ctrlKey || a.metaKey,
- a.originalEvent.altKey && $.datepicker._adjustDate(a.target, a.ctrlKey ? -$.datepicker._get(b, "stepBigMonths") : -$.datepicker._get(b, "stepMonths"), "M");
- break;
- case 38:
- (a.ctrlKey || a.metaKey) && $.datepicker._adjustDate(a.target, -7, "D"),
- c = a.ctrlKey || a.metaKey;
- break;
- case 39:
- (a.ctrlKey || a.metaKey) && $.datepicker._adjustDate(a.target, d ? -1 : 1, "D"),
- c = a.ctrlKey || a.metaKey,
- a.originalEvent.altKey && $.datepicker._adjustDate(a.target, a.ctrlKey ? +$.datepicker._get(b, "stepBigMonths") : +$.datepicker._get(b, "stepMonths"), "M");
- break;
- case 40:
- (a.ctrlKey || a.metaKey) && $.datepicker._adjustDate(a.target, 7, "D"),
- c = a.ctrlKey || a.metaKey;
- break;
- default:
- c = !1
- } else a.keyCode == 36 && a.ctrlKey ? $.datepicker._showDatepicker(this) : c = !1;
- c && (a.preventDefault(), a.stopPropagation())
- },
- _doKeyPress: function(a) {
- var b = $.datepicker._getInst(a.target);
- if ($.datepicker._get(b, "constrainInput")) {
- var c = $.datepicker._possibleChars($.datepicker._get(b, "dateFormat")),
- d = String.fromCharCode(a.charCode == undefined ? a.keyCode: a.charCode);
- return a.ctrlKey || a.metaKey || d < " " || !c || c.indexOf(d) > -1
- }
- },
- _doKeyUp: function(a) {
- var b = $.datepicker._getInst(a.target);
- if (b.input.val() != b.lastVal) try {
- var c = $.datepicker.parseDate($.datepicker._get(b, "dateFormat"), b.input ? b.input.val() : null, $.datepicker._getFormatConfig(b));
- c && ($.datepicker._setDateFromField(b), $.datepicker._updateAlternate(b), $.datepicker._updateDatepicker(b))
- } catch(a) {
- $.datepicker.log(a)
- }
- return ! 0
- },
- _showDatepicker: function(a) {
- a = a.target || a,
- a.nodeName.toLowerCase() != "input" && (a = $("input", a.parentNode)[0]);
- if (!$.datepicker._isDisabledDatepicker(a) && $.datepicker._lastInput != a) {
- var b = $.datepicker._getInst(a);
- $.datepicker._curInst && $.datepicker._curInst != b && ($.datepicker._curInst.dpDiv.stop(!0, !0), b && $.datepicker._datepickerShowing && $.datepicker._hideDatepicker($.datepicker._curInst.input[0]));
- var c = $.datepicker._get(b, "beforeShow"),
- d = c ? c.apply(a, [a, b]) : {};
- if (d === !1) return;
- extendRemove(b.settings, d),
- b.lastVal = null,
- $.datepicker._lastInput = a,
- $.datepicker._setDateFromField(b),
- $.datepicker._inDialog && (a.value = ""),
- $.datepicker._pos || ($.datepicker._pos = $.datepicker._findPos(a), $.datepicker._pos[1] += a.offsetHeight);
- var e = !1;
- $(a).parents().each(function() {
- e |= $(this).css("position") == "fixed";
- return ! e
- }),
- e && $.browser.opera && ($.datepicker._pos[0] -= document.documentElement.scrollLeft, $.datepicker._pos[1] -= document.documentElement.scrollTop);
- var f = {
- left: $.datepicker._pos[0],
- top: $.datepicker._pos[1]
- };
- $.datepicker._pos = null,
- b.dpDiv.empty(),
- b.dpDiv.css({
- position: "absolute",
- display: "block",
- top: "-1000px"
- }),
- $.datepicker._updateDatepicker(b),
- f = $.datepicker._checkOffset(b, f, e),
- b.dpDiv.css({
- position: $.datepicker._inDialog && $.blockUI ? "static": e ? "fixed": "absolute",
- display: "none",
- left: f.left + "px",
- top: f.top + "px"
- });
- if (!b.inline) {
- var g = $.datepicker._get(b, "showAnim"),
- h = $.datepicker._get(b, "duration"),
- i = function() {
- var a = b.dpDiv.find("iframe.ui-datepicker-cover");
- if ( !! a.length) {
- var c = $.datepicker._getBorders(b.dpDiv);
- a.css({
- left: -c[0],
- top: -c[1],
- width: b.dpDiv.outerWidth(),
- height: b.dpDiv.outerHeight()
- })
- }
- };
- b.dpDiv.zIndex($(a).zIndex() + 1),
- $.datepicker._datepickerShowing = !0,
- $.effects && $.effects[g] ? b.dpDiv.show(g, $.datepicker._get(b, "showOptions"), h, i) : b.dpDiv[g || "show"](g ? h: null, i),
- (!g || !h) && i(),
- b.input.is(":visible") && !b.input.is(":disabled") && b.input.focus(),
- $.datepicker._curInst = b
- }
- }
- },
- _updateDatepicker: function(a) {
- var b = this;
- b.maxRows = 4;
- var c = $.datepicker._getBorders(a.dpDiv);
- instActive = a,
- a.dpDiv.empty().append(this._generateHTML(a));
- var d = a.dpDiv.find("iframe.ui-datepicker-cover"); ! d.length || d.css({
- left: -c[0],
- top: -c[1],
- width: a.dpDiv.outerWidth(),
- height: a.dpDiv.outerHeight()
- }),
- a.dpDiv.find("." + this._dayOverClass + " a").mouseover();
- var e = this._getNumberOfMonths(a),
- f = e[1],
- g = 17;
- a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),
- f > 1 && a.dpDiv.addClass("ui-datepicker-multi-" + f).css("width", g * f + "em"),
- a.dpDiv[(e[0] != 1 || e[1] != 1 ? "add": "remove") + "Class"]("ui-datepicker-multi"),
- a.dpDiv[(this._get(a, "isRTL") ? "add": "remove") + "Class"]("ui-datepicker-rtl"),
- a == $.datepicker._curInst && $.datepicker._datepickerShowing && a.input && a.input.is(":visible") && !a.input.is(":disabled") && a.input[0] != document.activeElement && a.input.focus();
- if (a.yearshtml) {
- var h = a.yearshtml;
- setTimeout(function() {
- h === a.yearshtml && a.yearshtml && a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml),
- h = a.yearshtml = null
- },
- 0)
- }
- },
- _getBorders: function(a) {
- var b = function(a) {
- return {
- thin: 1,
- medium: 2,
- thick: 3
- } [a] || a
- };
- return [parseFloat(b(a.css("border-left-width"))), parseFloat(b(a.css("border-top-width")))]
- },
- _checkOffset: function(a, b, c) {
- var d = a.dpDiv.outerWidth(),
- e = a.dpDiv.outerHeight(),
- f = a.input ? a.input.outerWidth() : 0,
- g = a.input ? a.input.outerHeight() : 0,
- h = document.documentElement.clientWidth + $(document).scrollLeft(),
- i = document.documentElement.clientHeight + $(document).scrollTop();
- b.left -= this._get(a, "isRTL") ? d - f: 0,
- b.left -= c && b.left == a.input.offset().left ? $(document).scrollLeft() : 0,
- b.top -= c && b.top == a.input.offset().top + g ? $(document).scrollTop() : 0,
- b.left -= Math.min(b.left, b.left + d > h && h > d ? Math.abs(b.left + d - h) : 0),
- b.top -= Math.min(b.top, b.top + e > i && i > e ? Math.abs(e + g) : 0);
- return b
- },
- _findPos: function(a) {
- var b = this._getInst(a),
- c = this._get(b, "isRTL");
- while (a && (a.type == "hidden" || a.nodeType != 1 || $.expr.filters.hidden(a))) a = a[c ? "previousSibling": "nextSibling"];
- var d = $(a).offset();
- return [d.left, d.top]
- },
- _hideDatepicker: function(a) {
- var b = this._curInst;
- if (! (!b || a && b != $.data(a, PROP_NAME)) && this._datepickerShowing) {
- var c = this._get(b, "showAnim"),
- d = this._get(b, "duration"),
- e = this,
- f = function() {
- $.datepicker._tidyDialog(b),
- e._curInst = null
- };
- $.effects && $.effects[c] ? b.dpDiv.hide(c, $.datepicker._get(b, "showOptions"), d, f) : b.dpDiv[c == "slideDown" ? "slideUp": c == "fadeIn" ? "fadeOut": "hide"](c ? d: null, f),
- c || f(),
- this._datepickerShowing = !1;
- var g = this._get(b, "onClose");
- g && g.apply(b.input ? b.input[0] : null, [b.input ? b.input.val() : "", b]),
- this._lastInput = null,
- this._inDialog && (this._dialogInput.css({
- position: "absolute",
- left: "0",
- top: "-100px"
- }), $.blockUI && ($.unblockUI(), $("body").append(this.dpDiv))),
- this._inDialog = !1
- }
- },
- _tidyDialog: function(a) {
- a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")
- },
- _checkExternalClick: function(a) {
- if ( !! $.datepicker._curInst) {
- var b = $(a.target),
- c = $.datepicker._getInst(b[0]); (b[0].id != $.datepicker._mainDivId && b.parents("#" + $.datepicker._mainDivId).length == 0 && !b.hasClass($.datepicker.markerClassName) && !b.closest("." + $.datepicker._triggerClass).length && $.datepicker._datepickerShowing && (!$.datepicker._inDialog || !$.blockUI) || b.hasClass($.datepicker.markerClassName) && $.datepicker._curInst != c) && $.datepicker._hideDatepicker()
- }
- },
- _adjustDate: function(a, b, c) {
- var d = $(a),
- e = this._getInst(d[0]);
- this._isDisabledDatepicker(d[0]) || (this._adjustInstDate(e, b + (c == "M" ? this._get(e, "showCurrentAtPos") : 0), c), this._updateDatepicker(e))
- },
- _gotoToday: function(a) {
- var b = $(a),
- c = this._getInst(b[0]);
- if (this._get(c, "gotoCurrent") && c.currentDay) c.selectedDay = c.currentDay,
- c.drawMonth = c.selectedMonth = c.currentMonth,
- c.drawYear = c.selectedYear = c.currentYear;
- else {
- var d = new Date;
- c.selectedDay = d.getDate(),
- c.drawMonth = c.selectedMonth = d.getMonth(),
- c.drawYear = c.selectedYear = d.getFullYear()
- }
- this._notifyChange(c),
- this._adjustDate(b)
- },
- _selectMonthYear: function(a, b, c) {
- var d = $(a),
- e = this._getInst(d[0]);
- e["selected" + (c == "M" ? "Month": "Year")] = e["draw" + (c == "M" ? "Month": "Year")] = parseInt(b.options[b.selectedIndex].value, 10),
- this._notifyChange(e),
- this._adjustDate(d)
- },
- _selectDay: function(a, b, c, d) {
- var e = $(a);
- if (!$(d).hasClass(this._unselectableClass) && !this._isDisabledDatepicker(e[0])) {
- var f = this._getInst(e[0]);
- f.selectedDay = f.currentDay = $("a", d).html(),
- f.selectedMonth = f.currentMonth = b,
- f.selectedYear = f.currentYear = c,
- this._selectDate(a, this._formatDate(f, f.currentDay, f.currentMonth, f.currentYear))
- }
- },
- _clearDate: function(a) {
- var b = $(a),
- c = this._getInst(b[0]);
- this._selectDate(b, "")
- },
- _selectDate: function(a, b) {
- var c = $(a),
- d = this._getInst(c[0]);
- b = b != null ? b: this._formatDate(d),
- d.input && d.input.val(b),
- this._updateAlternate(d);
- var e = this._get(d, "onSelect");
- e ? e.apply(d.input ? d.input[0] : null, [b, d]) : d.input && d.input.trigger("change"),
- d.inline ? this._updateDatepicker(d) : (this._hideDatepicker(), this._lastInput = d.input[0], typeof d.input[0] != "object" && d.input.focus(), this._lastInput = null)
- },
- _updateAlternate: function(a) {
- var b = this._get(a, "altField");
- if (b) {
- var c = this._get(a, "altFormat") || this._get(a, "dateFormat"),
- d = this._getDate(a),
- e = this.formatDate(c, d, this._getFormatConfig(a));
- $(b).each(function() {
- $(this).val(e)
- })
- }
- },
- noWeekends: function(a) {
- var b = a.getDay();
- return [b > 0 && b < 6, ""]
- },
- iso8601Week: function(a) {
- var b = new Date(a.getTime());
- b.setDate(b.getDate() + 4 - (b.getDay() || 7));
- var c = b.getTime();
- b.setMonth(0),
- b.setDate(1);
- return Math.floor(Math.round((c - b) / 864e5) / 7) + 1
- },
- parseDate: function(a, b, c) {
- if (a == null || b == null) throw "Invalid arguments";
- b = typeof b == "object" ? b.toString() : b + "";
- if (b == "") return null;
- var d = (c ? c.shortYearCutoff: null) || this._defaults.shortYearCutoff;
- d = typeof d != "string" ? d: (new Date).getFullYear() % 100 + parseInt(d, 10);
- var e = (c ? c.dayNamesShort: null) || this._defaults.dayNamesShort,
- f = (c ? c.dayNames: null) || this._defaults.dayNames,
- g = (c ? c.monthNamesShort: null) || this._defaults.monthNamesShort,
- h = (c ? c.monthNames: null) || this._defaults.monthNames,
- i = -1,
- j = -1,
- k = -1,
- l = -1,
- m = !1,
- n = function(b) {
- var c = s + 1 < a.length && a.charAt(s + 1) == b;
- c && s++;
- return c
- },
- o = function(a) {
- var c = n(a),
- d = a == "@" ? 14 : a == "!" ? 20 : a == "y" && c ? 4 : a == "o" ? 3 : 2,
- e = new RegExp("^\\d{1," + d + "}"),
- f = b.substring(r).match(e);
- if (!f) throw "Missing number at position " + r;
- r += f[0].length;
- return parseInt(f[0], 10)
- },
- p = function(a, c, d) {
- var e = $.map(n(a) ? d: c,
- function(a, b) {
- return [[b, a]]
- }).sort(function(a, b) {
- return - (a[1].length - b[1].length)
- }),
- f = -1;
- $.each(e,
- function(a, c) {
- var d = c[1];
- if (b.substr(r, d.length).toLowerCase() == d.toLowerCase()) {
- f = c[0],
- r += d.length;
- return ! 1
- }
- });
- if (f != -1) return f + 1;
- throw "Unknown name at position " + r
- },
- q = function() {
- if (b.charAt(r) != a.charAt(s)) throw "Unexpected literal at position " + r;
- r++
- },
- r = 0;
- for (var s = 0; s < a.length; s++) if (m) a.charAt(s) == "'" && !n("'") ? m = !1 : q();
- else switch (a.charAt(s)) {
- case "d":
- k = o("d");
- break;
- case "D":
- p("D", e, f);
- break;
- case "o":
- l = o("o");
- break;
- case "m":
- j = o("m");
- break;
- case "M":
- j = p("M", g, h);
- break;
- case "y":
- i = o("y");
- break;
- case "@":
- var t = new Date(o("@"));
- i = t.getFullYear(),
- j = t.getMonth() + 1,
- k = t.getDate();
- break;
- case "!":
- var t = new Date((o("!") - this._ticksTo1970) / 1e4);
- i = t.getFullYear(),
- j = t.getMonth() + 1,
- k = t.getDate();
- break;
- case "'":
- n("'") ? q() : m = !0;
- break;
- default:
- q()
- }
- if (r < b.length) throw "Extra/unparsed characters found in date: " + b.substring(r);
- i == -1 ? i = (new Date).getFullYear() : i < 100 && (i += (new Date).getFullYear() - (new Date).getFullYear() % 100 + (i <= d ? 0 : -100));
- if (l > -1) {
- j = 1,
- k = l;
- for (;;) {
- var u = this._getDaysInMonth(i, j - 1);
- if (k <= u) break;
- j++,
- k -= u
- }
- }
- var t = this._daylightSavingAdjust(new Date(i, j - 1, k));
- if (t.getFullYear() != i || t.getMonth() + 1 != j || t.getDate() != k) throw "Invalid date";
- return t
- },
- ATOM: "yy-mm-dd",
- COOKIE: "D, dd M yy",
- ISO_8601: "yy-mm-dd",
- RFC_822: "D, d M y",
- RFC_850: "DD, dd-M-y",
- RFC_1036: "D, d M y",
- RFC_1123: "D, d M yy",
- RFC_2822: "D, d M yy",
- RSS: "D, d M y",
- TICKS: "!",
- TIMESTAMP: "@",
- W3C: "yy-mm-dd",
- _ticksTo1970: (718685 + Math.floor(492.5) - Math.floor(19.7) + Math.floor(4.925)) * 24 * 60 * 60 * 1e7,
- formatDate: function(a, b, c) {
- if (!b) return "";
- var d = (c ? c.dayNamesShort: null) || this._defaults.dayNamesShort,
- e = (c ? c.dayNames: null) || this._defaults.dayNames,
- f = (c ? c.monthNamesShort: null) || this._defaults.monthNamesShort,
- g = (c ? c.monthNames: null) || this._defaults.monthNames,
- h = function(b) {
- var c = m + 1 < a.length && a.charAt(m + 1) == b;
- c && m++;
- return c
- },
- i = function(a, b, c) {
- var d = "" + b;
- if (h(a)) while (d.length < c) d = "0" + d;
- return d
- },
- j = function(a, b, c, d) {
- return h(a) ? d[b] : c[b]
- },
- k = "",
- l = !1;
- if (b) for (var m = 0; m < a.length; m++) if (l) a.charAt(m) == "'" && !h("'") ? l = !1 : k += a.charAt(m);
- else switch (a.charAt(m)) {
- case "d":
- k += i("d", b.getDate(), 2);
- break;
- case "D":
- k += j("D", b.getDay(), d, e);
- break;
- case "o":
- k += i("o", Math.round(((new Date(b.getFullYear(), b.getMonth(), b.getDate())).getTime() - (new Date(b.getFullYear(), 0, 0)).getTime()) / 864e5), 3);
- break;
- case "m":
- k += i("m", b.getMonth() + 1, 2);
- break;
- case "M":
- k += j("M", b.getMonth(), f, g);
- break;
- case "y":
- k += h("y") ? b.getFullYear() : (b.getYear() % 100 < 10 ? "0": "") + b.getYear() % 100;
- break;
- case "@":
- k += b.getTime();
- break;
- case "!":
- k += b.getTime() * 1e4 + this._ticksTo1970;
- break;
- case "'":
- h("'") ? k += "'": l = !0;
- break;
- default:
- k += a.charAt(m)
- }
- return k
- },
- _possibleChars: function(a) {
- var b = "",
- c = !1,
- d = function(b) {
- var c = e + 1 < a.length && a.charAt(e + 1) == b;
- c && e++;
- return c
- };
- for (var e = 0; e < a.length; e++) if (c) a.charAt(e) == "'" && !d("'") ? c = !1 : b += a.charAt(e);
- else switch (a.charAt(e)) {
- case "d":
- case "m":
- case "y":
- case "@":
- b += "0123456789";
- break;
- case "D":
- case "M":
- return null;
- case "'":
- d("'") ? b += "'": c = !0;
- break;
- default:
- b += a.charAt(e)
- }
- return b
- },
- _get: function(a, b) {
- return a.settings[b] !== undefined ? a.settings[b] : this._defaults[b]
- },
- _setDateFromField: function(a, b) {
- if (a.input.val() != a.lastVal) {
- var c = this._get(a, "dateFormat"),
- d = a.lastVal = a.input ? a.input.val() : null,
- e,
- f;
- e = f = this._getDefaultDate(a);
- var g = this._getFormatConfig(a);
- try {
- e = this.parseDate(c, d, g) || f
- } catch(h) {
- this.log(h),
- d = b ? "": d
- }
- a.selectedDay = e.getDate(),
- a.drawMonth = a.selectedMonth = e.getMonth(),
- a.drawYear = a.selectedYear = e.getFullYear(),
- a.currentDay = d ? e.getDate() : 0,
- a.currentMonth = d ? e.getMonth() : 0,
- a.currentYear = d ? e.getFullYear() : 0,
- this._adjustInstDate(a)
- }
- },
- _getDefaultDate: function(a) {
- return this._restrictMinMax(a, this._determineDate(a, this._get(a, "defaultDate"), new Date))
- },
- _determineDate: function(a, b, c) {
- var d = function(a) {
- var b = new Date;
- b.setDate(b.getDate() + a);
- return b
- },
- e = function(b) {
- try {
- return $.datepicker.parseDate($.datepicker._get(a, "dateFormat"), b, $.datepicker._getFormatConfig(a))
- } catch(c) {}
- var d = (b.toLowerCase().match(/^c/) ? $.datepicker._getDate(a) : null) || new Date,
- e = d.getFullYear(),
- f = d.getMonth(),
- g = d.getDate(),
- h = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
- i = h.exec(b);
- while (i) {
- switch (i[2] || "d") {
- case "d":
- case "D":
- g += parseInt(i[1], 10);
- break;
- case "w":
- case "W":
- g += parseInt(i[1], 10) * 7;
- break;
- case "m":
- case "M":
- f += parseInt(i[1], 10),
- g = Math.min(g, $.datepicker._getDaysInMonth(e, f));
- break;
- case "y":
- case "Y":
- e += parseInt(i[1], 10),
- g = Math.min(g, $.datepicker._getDaysInMonth(e, f))
- }
- i = h.exec(b)
- }
- return new Date(e, f, g)
- },
- f = b == null || b === "" ? c: typeof b == "string" ? e(b) : typeof b == "number" ? isNaN(b) ? c: d(b) : new Date(b.getTime());
- f = f && f.toString() == "Invalid Date" ? c: f,
- f && (f.setHours(0), f.setMinutes(0), f.setSeconds(0), f.setMilliseconds(0));
- return this._daylightSavingAdjust(f)
- },
- _daylightSavingAdjust: function(a) {
- if (!a) return null;
- a.setHours(a.getHours() > 12 ? a.getHours() + 2 : 0);
- return a
- },
- _setDate: function(a, b, c) {
- var d = !b,
- e = a.selectedMonth,
- f = a.selectedYear,
- g = this._restrictMinMax(a, this._determineDate(a, b, new Date));
- a.selectedDay = a.currentDay = g.getDate(),
- a.drawMonth = a.selectedMonth = a.currentMonth = g.getMonth(),
- a.drawYear = a.selectedYear = a.currentYear = g.getFullYear(),
- (e != a.selectedMonth || f != a.selectedYear) && !c && this._notifyChange(a),
- this._adjustInstDate(a),
- a.input && a.input.val(d ? "": this._formatDate(a))
- },
- _getDate: function(a) {
- var b = !a.currentYear || a.input && a.input.val() == "" ? null: this._daylightSavingAdjust(new Date(a.currentYear, a.currentMonth, a.currentDay));
- return b
- },
- _generateHTML: function(a) {
- var b = new Date;
- b = this._daylightSavingAdjust(new Date(b.getFullYear(), b.getMonth(), b.getDate()));
- var c = this._get(a, "isRTL"),
- d = this._get(a, "showButtonPanel"),
- e = this._get(a, "hideIfNoPrevNext"),
- f = this._get(a, "navigationAsDateFormat"),
- g = this._getNumberOfMonths(a),
- h = this._get(a, "showCurrentAtPos"),
- i = this._get(a, "stepMonths"),
- j = g[0] != 1 || g[1] != 1,
- k = this._daylightSavingAdjust(a.currentDay ? new Date(a.currentYear, a.currentMonth, a.currentDay) : new Date(9999, 9, 9)),
- l = this._getMinMaxDate(a, "min"),
- m = this._getMinMaxDate(a, "max"),
- n = a.drawMonth - h,
- o = a.drawYear;
- n < 0 && (n += 12, o--);
- if (m) {
- var p = this._daylightSavingAdjust(new Date(m.getFullYear(), m.getMonth() - g[0] * g[1] + 1, m.getDate()));
- p = l && p < l ? l: p;
- while (this._daylightSavingAdjust(new Date(o, n, 1)) > p) n--,
- n < 0 && (n = 11, o--)
- }
- a.drawMonth = n,
- a.drawYear = o;
- var q = this._get(a, "prevText");
- q = f ? this.formatDate(q, this._daylightSavingAdjust(new Date(o, n - i, 1)), this._getFormatConfig(a)) : q;
- var r = this._canAdjustMonth(a, -1, o, n) ? '<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_' + dpuuid + ".datepicker._adjustDate('#" + a.id + "', -" + i + ", 'M');\"" + ' title="' + q + '"><span class="ui-icon ui-icon-circle-triangle-' + (c ? "e": "w") + '">' + q + "</span></a>": e ? "": '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="' + q + '"><span class="ui-icon ui-icon-circle-triangle-' + (c ? "e": "w") + '">' + q + "</span></a>",
- s = this._get(a, "nextText");
- s = f ? this.formatDate(s, this._daylightSavingAdjust(new Date(o, n + i, 1)), this._getFormatConfig(a)) : s;
- var t = this._canAdjustMonth(a, 1, o, n) ? '<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_' + dpuuid + ".datepicker._adjustDate('#" + a.id + "', +" + i + ", 'M');\"" + ' title="' + s + '"><span class="ui-icon ui-icon-circle-triangle-' + (c ? "w": "e") + '">' + s + "</span></a>": e ? "": '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="' + s + '"><span class="ui-icon ui-icon-circle-triangle-' + (c ? "w": "e") + '">' + s + "</span></a>",
- u = this._get(a, "currentText"),
- v = this._get(a, "gotoCurrent") && a.currentDay ? k: b;
- u = f ? this.formatDate(u, v, this._getFormatConfig(a)) : u;
- var w = a.inline ? "": '<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_' + dpuuid + '.datepicker._hideDatepicker();">' + this._get(a, "closeText") + "</button>",
- x = d ? '<div class="ui-datepicker-buttonpane ui-widget-content">' + (c ? w: "") + (this._isInRange(a, v) ? '<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_' + dpuuid + ".datepicker._gotoToday('#" + a.id + "');\"" + ">" + u + "</button>": "") + (c ? "": w) + "</div>": "",
- y = parseInt(this._get(a, "firstDay"), 10);
- y = isNaN(y) ? 0 : y;
- var z = this._get(a, "showWeek"),
- A = this._get(a, "dayNames"),
- B = this._get(a, "dayNamesShort"),
- C = this._get(a, "dayNamesMin"),
- D = this._get(a, "monthNames"),
- E = this._get(a, "monthNamesShort"),
- F = this._get(a, "beforeShowDay"),
- G = this._get(a, "showOtherMonths"),
- H = this._get(a, "selectOtherMonths"),
- I = this._get(a, "calculateWeek") || this.iso8601Week,
- J = this._getDefaultDate(a),
- K = "";
- for (var L = 0; L < g[0]; L++) {
- var M = "";
- this.maxRows = 4;
- for (var N = 0; N < g[1]; N++) {
- var O = this._daylightSavingAdjust(new Date(o, n, a.selectedDay)),
- P = " ui-corner-all",
- Q = "";
- if (j) {
- Q += '<div class="ui-datepicker-group';
- if (g[1] > 1) switch (N) {
- case 0:
- Q += " ui-datepicker-group-first",
- P = " ui-corner-" + (c ? "right": "left");
- break;
- case g[1] - 1 : Q += " ui-datepicker-group-last",
- P = " ui-corner-" + (c ? "left": "right");
- break;
- default:
- Q += " ui-datepicker-group-middle",
- P = ""
- }
- Q += '">'
- }
- Q += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix' + P + '">' + (/all|left/.test(P) && L == 0 ? c ? t: r: "") + (/all|right/.test(P) && L == 0 ? c ? r: t: "") + this._generateMonthYearHeader(a, n, o, l, m, L > 0 || N > 0, D, E) + '</div><table class="ui-datepicker-calendar"><thead>' + "<tr>";
- var R = z ? '<th class="ui-datepicker-week-col">' + this._get(a, "weekHeader") + "</th>": "";
- for (var S = 0; S < 7; S++) {
- var T = (S + y) % 7;
- R += "<th" + ((S + y + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end"': "") + ">" + '<span title="' + A[T] + '">' + C[T] + "</span></th>"
- }
- Q += R + "</tr></thead><tbody>";
- var U = this._getDaysInMonth(o, n);
- o == a.selectedYear && n == a.selectedMonth && (a.selectedDay = Math.min(a.selectedDay, U));
- var V = (this._getFirstDayOfMonth(o, n) - y + 7) % 7,
- W = Math.ceil((V + U) / 7),
- X = j ? this.maxRows > W ? this.maxRows: W: W;
- this.maxRows = X;
- var Y = this._daylightSavingAdjust(new Date(o, n, 1 - V));
- for (var Z = 0; Z < X; Z++) {
- Q += "<tr>";
- var _ = z ? '<td class="ui-datepicker-week-col">' + this._get(a, "calculateWeek")(Y) + "</td>": "";
- for (var S = 0; S < 7; S++) {
- var ba = F ? F.apply(a.input ? a.input[0] : null, [Y]) : [!0, ""],
- bb = Y.getMonth() != n,
- bc = bb && !H || !ba[0] || l && Y < l || m && Y > m;
- _ += '<td class="' + ((S + y + 6) % 7 >= 5 ? " ui-datepicker-week-end": "") + (bb ? " ui-datepicker-other-month": "") + (Y.getTime() == O.getTime() && n == a.selectedMonth && a._keyEvent || J.getTime() == Y.getTime() && J.getTime() == O.getTime() ? " " + this._dayOverClass: "") + (bc ? " " + this._unselectableClass + " ui-state-disabled": "") + (bb && !G ? "": " " + ba[1] + (Y.getTime() == k.getTime() ? " " + this._currentClass: "") + (Y.getTime() == b.getTime() ? " ui-datepicker-today": "")) + '"' + ((!bb || G) && ba[2] ? ' title="' + ba[2] + '"': "") + (bc ? "": ' onclick="DP_jQuery_' + dpuuid + ".datepicker._selectDay('#" + a.id + "'," + Y.getMonth() + "," + Y.getFullYear() + ', this);return false;"') + ">" + (bb && !G ? "&#xa0;": bc ? '<span class="ui-state-default">' + Y.getDate() + "</span>": '<a class="ui-state-default' + (Y.getTime() == b.getTime() ? " ui-state-highlight": "") + (Y.getTime() == k.getTime() ? " ui-state-active": "") + (bb ? " ui-priority-secondary": "") + '" href="#">' + Y.getDate() + "</a>") + "</td>",
- Y.setDate(Y.getDate() + 1),
- Y = this._daylightSavingAdjust(Y)
- }
- Q += _ + "</tr>"
- }
- n++,
- n > 11 && (n = 0, o++),
- Q += "</tbody></table>" + (j ? "</div>" + (g[0] > 0 && N == g[1] - 1 ? '<div class="ui-datepicker-row-break"></div>': "") : ""),
- M += Q
- }
- K += M
- }
- K += x + ($.browser.msie && parseInt($.browser.version, 10) < 7 && !a.inline ? '<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>': ""),
- a._keyEvent = !1;
- return K
- },
- _generateMonthYearHeader: function(a, b, c, d, e, f, g, h) {
- var i = this._get(a, "changeMonth"),
- j = this._get(a, "changeYear"),
- k = this._get(a, "showMonthAfterYear"),
- l = '<div class="ui-datepicker-title">',
- m = "";
- if (f || !i) m += '<span class="ui-datepicker-month">' + g[b] + "</span>";
- else {
- var n = d && d.getFullYear() == c,
- o = e && e.getFullYear() == c;
- m += '<select class="ui-datepicker-month" onchange="DP_jQuery_' + dpuuid + ".datepicker._selectMonthYear('#" + a.id + "', this, 'M');\" " + ">";
- for (var p = 0; p < 12; p++)(!n || p >= d.getMonth()) && (!o || p <= e.getMonth()) && (m += '<option value="' + p + '"' + (p == b ? ' selected="selected"': "") + ">" + h[p] + "</option>");
- m += "</select>"
- }
- k || (l += m + (f || !i || !j ? "&#xa0;": ""));
- if (!a.yearshtml) {
- a.yearshtml = "";
- if (f || !j) l += '<span class="ui-datepicker-year">' + c + "</span>";
- else {
- var q = this._get(a, "yearRange").split(":"),
- r = (new Date).getFullYear(),
- s = function(a) {
- var b = a.match(/c[+-].*/) ? c + parseInt(a.substring(1), 10) : a.match(/[+-].*/) ? r + parseInt(a, 10) : parseInt(a, 10);
- return isNaN(b) ? r: b
- },
- t = s(q[0]),
- u = Math.max(t, s(q[1] || ""));
- t = d ? Math.max(t, d.getFullYear()) : t,
- u = e ? Math.min(u, e.getFullYear()) : u,
- a.yearshtml += '<select class="ui-datepicker-year" onchange="DP_jQuery_' + dpuuid + ".datepicker._selectMonthYear('#" + a.id + "', this, 'Y');\" " + ">";
- for (; t <= u; t++) a.yearshtml += '<option value="' + t + '"' + (t == c ? ' selected="selected"': "") + ">" + t + "</option>";
- a.yearshtml += "</select>",
- l += a.yearshtml,
- a.yearshtml = null
- }
- }
- l += this._get(a, "yearSuffix"),
- k && (l += (f || !i || !j ? "&#xa0;": "") + m),
- l += "</div>";
- return l
- },
- _adjustInstDate: function(a, b, c) {
- var d = a.drawYear + (c == "Y" ? b: 0),
- e = a.drawMonth + (c == "M" ? b: 0),
- f = Math.min(a.selectedDay, this._getDaysInMonth(d, e)) + (c == "D" ? b: 0),
- g = this._restrictMinMax(a, this._daylightSavingAdjust(new Date(d, e, f)));
- a.selectedDay = g.getDate(),
- a.drawMonth = a.selectedMonth = g.getMonth(),
- a.drawYear = a.selectedYear = g.getFullYear(),
- (c == "M" || c == "Y") && this._notifyChange(a)
- },
- _restrictMinMax: function(a, b) {
- var c = this._getMinMaxDate(a, "min"),
- d = this._getMinMaxDate(a, "max"),
- e = c && b < c ? c: b;
- e = d && e > d ? d: e;
- return e
- },
- _notifyChange: function(a) {
- var b = this._get(a, "onChangeMonthYear");
- b && b.apply(a.input ? a.input[0] : null, [a.selectedYear, a.selectedMonth + 1, a])
- },
- _getNumberOfMonths: function(a) {
- var b = this._get(a, "numberOfMonths");
- return b == null ? [1, 1] : typeof b == "number" ? [1, b] : b
- },
- _getMinMaxDate: function(a, b) {
- return this._determineDate(a, this._get(a, b + "Date"), null)
- },
- _getDaysInMonth: function(a, b) {
- return 32 - this._daylightSavingAdjust(new Date(a, b, 32)).getDate()
- },
- _getFirstDayOfMonth: function(a, b) {
- return (new Date(a, b, 1)).getDay()
- },
- _canAdjustMonth: function(a, b, c, d) {
- var e = this._getNumberOfMonths(a),
- f = this._daylightSavingAdjust(new Date(c, d + (b < 0 ? b: e[0] * e[1]), 1));
- b < 0 && f.setDate(this._getDaysInMonth(f.getFullYear(), f.getMonth()));
- return this._isInRange(a, f)
- },
- _isInRange: function(a, b) {
- var c = this._getMinMaxDate(a, "min"),
- d = this._getMinMaxDate(a, "max");
- return (!c || b.getTime() >= c.getTime()) && (!d || b.getTime() <= d.getTime())
- },
- _getFormatConfig: function(a) {
- var b = this._get(a, "shortYearCutoff");
- b = typeof b != "string" ? b: (new Date).getFullYear() % 100 + parseInt(b, 10);
- return {
- shortYearCutoff: b,
- dayNamesShort: this._get(a, "dayNamesShort"),
- dayNames: this._get(a, "dayNames"),
- monthNamesShort: this._get(a, "monthNamesShort"),
- monthNames: this._get(a, "monthNames")
- }
- },
- _formatDate: function(a, b, c, d) {
- b || (a.currentDay = a.selectedDay, a.currentMonth = a.selectedMonth, a.currentYear = a.selectedYear);
- var e = b ? typeof b == "object" ? b: this._daylightSavingAdjust(new Date(d, c, b)) : this._daylightSavingAdjust(new Date(a.currentYear, a.currentMonth, a.currentDay));
- return this.formatDate(this._get(a, "dateFormat"), e, this._getFormatConfig(a))
- }
- }),
- $.fn.datepicker = function(a) {
- if (!this.length) return this;
- $.datepicker.initialized || ($(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv), $.datepicker.initialized = !0);
- var b = Array.prototype.slice.call(arguments, 1);
- if (typeof a == "string" && (a == "isDisabled" || a == "getDate" || a == "widget")) return $.datepicker["_" + a + "Datepicker"].apply($.datepicker, [this[0]].concat(b));
- if (a == "option" && arguments.length == 2 && typeof arguments[1] == "string") return $.datepicker["_" + a + "Datepicker"].apply($.datepicker, [this[0]].concat(b));
- return this.each(function() {
- typeof a == "string" ? $.datepicker["_" + a + "Datepicker"].apply($.datepicker, [this].concat(b)) : $.datepicker._attachDatepicker(this, a)
- })
- },
- $.datepicker = new Datepicker,
- $.datepicker.initialized = !1,
- $.datepicker.uuid = (new Date).getTime(),
- $.datepicker.version = "1.8.18",
- window["DP_jQuery_" + dpuuid] = $
-})(jQuery);
-/*
- * jQuery UI Effects 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/
- */
-jQuery.effects ||
-function(a, b) {
- function l(b) {
- if (!b || typeof b == "number" || a.fx.speeds[b]) return ! 0;
- if (typeof b == "string" && !a.effects[b]) return ! 0;
- return ! 1
- }
- function k(b, c, d, e) {
- typeof b == "object" && (e = c, d = null, c = b, b = c.effect),
- a.isFunction(c) && (e = c, d = null, c = {});
- if (typeof c == "number" || a.fx.speeds[c]) e = d,
- d = c,
- c = {};
- a.isFunction(d) && (e = d, d = null),
- c = c || {},
- d = d || c.duration,
- d = a.fx.off ? 0 : typeof d == "number" ? d: d in a.fx.speeds ? a.fx.speeds[d] : a.fx.speeds._default,
- e = e || c.complete;
- return [b, c, d, e]
- }
- function j(a, b) {
- var c = {
- _: 0
- },
- d;
- for (d in b) a[d] != b[d] && (c[d] = b[d]);
- return c
- }
- function i(b) {
- var c, d;
- for (c in b) d = b[c],
- (d == null || a.isFunction(d) || c in g || /scrollbar/.test(c) || !/color/i.test(c) && isNaN(parseFloat(d))) && delete b[c];
- return b
- }
- function h() {
- var a = document.defaultView ? document.defaultView.getComputedStyle(this, null) : this.currentStyle,
- b = {},
- c,
- d;
- if (a && a.length && a[0] && a[a[0]]) {
- var e = a.length;
- while (e--) c = a[e],
- typeof a[c] == "string" && (d = c.replace(/\-(\w)/g,
- function(a, b) {
- return b.toUpperCase()
- }), b[d] = a[c])
- } else for (c in a) typeof a[c] == "string" && (b[c] = a[c]);
- return b
- }
- function d(b, d) {
- var e;
- do {
- e = a.curCSS(b, d);
- if (e != "" && e != "transparent" || a.nodeName(b, "body")) break;
- d = "backgroundColor"
- } while ( b = b . parentNode );
- return c(e)
- }
- function c(b) {
- var c;
- if (b && b.constructor == Array && b.length == 3) return b;
- if (c = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b)) return [parseInt(c[1], 10), parseInt(c[2], 10), parseInt(c[3], 10)];
- if (c = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b)) return [parseFloat(c[1]) * 2.55, parseFloat(c[2]) * 2.55, parseFloat(c[3]) * 2.55];
- if (c = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b)) return [parseInt(c[1], 16), parseInt(c[2], 16), parseInt(c[3], 16)];
- if (c = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b)) return [parseInt(c[1] + c[1], 16), parseInt(c[2] + c[2], 16), parseInt(c[3] + c[3], 16)];
- if (c = /rgba\(0, 0, 0, 0\)/.exec(b)) return e.transparent;
- return e[a.trim(b).toLowerCase()]
- }
- a.effects = {},
- a.each(["backgroundColor", "borderBottomColor", "borderLeftColor", "borderRightColor", "borderTopColor", "borderColor", "color", "outlineColor"],
- function(b, e) {
- a.fx.step[e] = function(a) {
- a.colorInit || (a.start = d(a.elem, e), a.end = c(a.end), a.colorInit = !0),
- a.elem.style[e] = "rgb(" + Math.max(Math.min(parseInt(a.pos * (a.end[0] - a.start[0]) + a.start[0], 10), 255), 0) + "," + Math.max(Math.min(parseInt(a.pos * (a.end[1] - a.start[1]) + a.start[1], 10), 255), 0) + "," + Math.max(Math.min(parseInt(a.pos * (a.end[2] - a.start[2]) + a.start[2], 10), 255), 0) + ")"
- }
- });
- var e = {
- aqua: [0, 255, 255],
- azure: [240, 255, 255],
- beige: [245, 245, 220],
- black: [0, 0, 0],
- blue: [0, 0, 255],
- brown: [165, 42, 42],
- cyan: [0, 255, 255],
- darkblue: [0, 0, 139],
- darkcyan: [0, 139, 139],
- darkgrey: [169, 169, 169],
- darkgreen: [0, 100, 0],
- darkkhaki: [189, 183, 107],
- darkmagenta: [139, 0, 139],
- darkolivegreen: [85, 107, 47],
- darkorange: [255, 140, 0],
- darkorchid: [153, 50, 204],
- darkred: [139, 0, 0],
- darksalmon: [233, 150, 122],
- darkviolet: [148, 0, 211],
- fuchsia: [255, 0, 255],
- gold: [255, 215, 0],
- green: [0, 128, 0],
- indigo: [75, 0, 130],
- khaki: [240, 230, 140],
- lightblue: [173, 216, 230],
- lightcyan: [224, 255, 255],
- lightgreen: [144, 238, 144],
- lightgrey: [211, 211, 211],
- lightpink: [255, 182, 193],
- lightyellow: [255, 255, 224],
- lime: [0, 255, 0],
- magenta: [255, 0, 255],
- maroon: [128, 0, 0],
- navy: [0, 0, 128],
- olive: [128, 128, 0],
- orange: [255, 165, 0],
- pink: [255, 192, 203],
- purple: [128, 0, 128],
- violet: [128, 0, 128],
- red: [255, 0, 0],
- silver: [192, 192, 192],
- white: [255, 255, 255],
- yellow: [255, 255, 0],
- transparent: [255, 255, 255]
- },
- f = ["add", "remove", "toggle"],
- g = {
- border: 1,
- borderBottom: 1,
- borderColor: 1,
- borderLeft: 1,
- borderRight: 1,
- borderTop: 1,
- borderWidth: 1,
- margin: 1,
- padding: 1
- };
- a.effects.animateClass = function(b, c, d, e) {
- a.isFunction(d) && (e = d, d = null);
- return this.queue(function() {
- var g = a(this),
- k = g.attr("style") || " ",
- l = i(h.call(this)),
- m,
- n = g.attr("class");
- a.each(f,
- function(a, c) {
- b[c] && g[c + "Class"](b[c])
- }),
- m = i(h.call(this)),
- g.attr("class", n),
- g.animate(j(l, m), {
- queue: !1,
- duration: c,
- easing: d,
- complete: function() {
- a.each(f,
- function(a, c) {
- b[c] && g[c + "Class"](b[c])
- }),
- typeof g.attr("style") == "object" ? (g.attr("style").cssText = "", g.attr("style").cssText = k) : g.attr("style", k),
- e && e.apply(this, arguments),
- a.dequeue(this)
- }
- })
- })
- },
- a.fn.extend({
- _addClass: a.fn.addClass,
- addClass: function(b, c, d, e) {
- return c ? a.effects.animateClass.apply(this, [{
- add: b
- },
- c, d, e]) : this._addClass(b)
- },
- _removeClass: a.fn.removeClass,
- removeClass: function(b, c, d, e) {
- return c ? a.effects.animateClass.apply(this, [{
- remove: b
- },
- c, d, e]) : this._removeClass(b)
- },
- _toggleClass: a.fn.toggleClass,
- toggleClass: function(c, d, e, f, g) {
- return typeof d == "boolean" || d === b ? e ? a.effects.animateClass.apply(this, [d ? {
- add: c
- }: {
- remove: c
- },
- e, f, g]) : this._toggleClass(c, d) : a.effects.animateClass.apply(this, [{
- toggle: c
- },
- d, e, f])
- },
- switchClass: function(b, c, d, e, f) {
- return a.effects.animateClass.apply(this, [{
- add: c,
- remove: b
- },
- d, e, f])
- }
- }),
- a.extend(a.effects, {
- version: "1.8.18",
- save: function(a, b) {
- for (var c = 0; c < b.length; c++) b[c] !== null && a.data("ec.storage." + b[c], a[0].style[b[c]])
- },
- restore: function(a, b) {
- for (var c = 0; c < b.length; c++) b[c] !== null && a.css(b[c], a.data("ec.storage." + b[c]))
- },
- setMode: function(a, b) {
- b == "toggle" && (b = a.is(":hidden") ? "show": "hide");
- return b
- },
- getBaseline: function(a, b) {
- var c, d;
- switch (a[0]) {
- case "top":
- c = 0;
- break;
- case "middle":
- c = .5;
- break;
- case "bottom":
- c = 1;
- break;
- default:
- c = a[0] / b.height
- }
- switch (a[1]) {
- case "left":
- d = 0;
- break;
- case "center":
- d = .5;
- break;
- case "right":
- d = 1;
- break;
- default:
- d = a[1] / b.width
- }
- return {
- x: d,
- y: c
- }
- },
- createWrapper: function(b) {
- if (b.parent().is(".ui-effects-wrapper")) return b.parent();
- var c = {
- width: b.outerWidth(!0),
- height: b.outerHeight(!0),
- "float": b.css("float")
- },
- d = a("<div></div>").addClass("ui-effects-wrapper").css({
- fontSize: "100%",
- background: "transparent",
- border: "none",
- margin: 0,
- padding: 0
- }),
- e = document.activeElement;
- b.wrap(d),
- (b[0] === e || a.contains(b[0], e)) && a(e).focus(),
- d = b.parent(),
- b.css("position") == "static" ? (d.css({
- position: "relative"
- }), b.css({
- position: "relative"
- })) : (a.extend(c, {
- position: b.css("position"),
- zIndex: b.css("z-index")
- }), a.each(["top", "left", "bottom", "right"],
- function(a, d) {
- c[d] = b.css(d),
- isNaN(parseInt(c[d], 10)) && (c[d] = "auto")
- }), b.css({
- position: "relative",
- top: 0,
- left: 0,
- right: "auto",
- bottom: "auto"
- }));
- return d.css(c).show()
- },
- removeWrapper: function(b) {
- var c, d = document.activeElement;
- if (b.parent().is(".ui-effects-wrapper")) {
- c = b.parent().replaceWith(b),
- (b[0] === d || a.contains(b[0], d)) && a(d).focus();
- return c
- }
- return b
- },
- setTransition: function(b, c, d, e) {
- e = e || {},
- a.each(c,
- function(a, c) {
- unit = b.cssUnit(c),
- unit[0] > 0 && (e[c] = unit[0] * d + unit[1])
- });
- return e
- }
- }),
- a.fn.extend({
- effect: function(b, c, d, e) {
- var f = k.apply(this, arguments),
- g = {
- options: f[1],
- duration: f[2],
- callback: f[3]
- },
- h = g.options.mode,
- i = a.effects[b];
- if (a.fx.off || !i) return h ? this[h](g.duration, g.callback) : this.each(function() {
- g.callback && g.callback.call(this)
- });
- return i.call(this, g)
- },
- _show: a.fn.show,
- show: function(a) {
- if (l(a)) return this._show.apply(this, arguments);
- var b = k.apply(this, arguments);
- b[1].mode = "show";
- return this.effect.apply(this, b)
- },
- _hide: a.fn.hide,
- hide: function(a) {
- if (l(a)) return this._hide.apply(this, arguments);
- var b = k.apply(this, arguments);
- b[1].mode = "hide";
- return this.effect.apply(this, b)
- },
- __toggle: a.fn.toggle,
- toggle: function(b) {
- if (l(b) || typeof b == "boolean" || a.isFunction(b)) return this.__toggle.apply(this, arguments);
- var c = k.apply(this, arguments);
- c[1].mode = "toggle";
- return this.effect.apply(this, c)
- },
- cssUnit: function(b) {
- var c = this.css(b),
- d = [];
- a.each(["em", "px", "%", "pt"],
- function(a, b) {
- c.indexOf(b) > 0 && (d = [parseFloat(c), b])
- });
- return d
- }
- }),
- a.easing.jswing = a.easing.swing,
- a.extend(a.easing, {
- def: "easeOutQuad",
- swing: function(b, c, d, e, f) {
- return a.easing[a.easing.def](b, c, d, e, f)
- },
- easeInQuad: function(a, b, c, d, e) {
- return d * (b /= e) * b + c
- },
- easeOutQuad: function(a, b, c, d, e) {
- return - d * (b /= e) * (b - 2) + c
- },
- easeInOutQuad: function(a, b, c, d, e) {
- if ((b /= e / 2) < 1) return d / 2 * b * b + c;
- return - d / 2 * (--b * (b - 2) - 1) + c
- },
- easeInCubic: function(a, b, c, d, e) {
- return d * (b /= e) * b * b + c
- },
- easeOutCubic: function(a, b, c, d, e) {
- return d * ((b = b / e - 1) * b * b + 1) + c
- },
- easeInOutCubic: function(a, b, c, d, e) {
- if ((b /= e / 2) < 1) return d / 2 * b * b * b + c;
- return d / 2 * ((b -= 2) * b * b + 2) + c
- },
- easeInQuart: function(a, b, c, d, e) {
- return d * (b /= e) * b * b * b + c
- },
- easeOutQuart: function(a, b, c, d, e) {
- return - d * ((b = b / e - 1) * b * b * b - 1) + c
- },
- easeInOutQuart: function(a, b, c, d, e) {
- if ((b /= e / 2) < 1) return d / 2 * b * b * b * b + c;
- return - d / 2 * ((b -= 2) * b * b * b - 2) + c
- },
- easeInQuint: function(a, b, c, d, e) {
- return d * (b /= e) * b * b * b * b + c
- },
- easeOutQuint: function(a, b, c, d, e) {
- return d * ((b = b / e - 1) * b * b * b * b + 1) + c
- },
- easeInOutQuint: function(a, b, c, d, e) {
- if ((b /= e / 2) < 1) return d / 2 * b * b * b * b * b + c;
- return d / 2 * ((b -= 2) * b * b * b * b + 2) + c
- },
- easeInSine: function(a, b, c, d, e) {
- return - d * Math.cos(b / e * (Math.PI / 2)) + d + c
- },
- easeOutSine: function(a, b, c, d, e) {
- return d * Math.sin(b / e * (Math.PI / 2)) + c
- },
- easeInOutSine: function(a, b, c, d, e) {
- return - d / 2 * (Math.cos(Math.PI * b / e) - 1) + c
- },
- easeInExpo: function(a, b, c, d, e) {
- return b == 0 ? c: d * Math.pow(2, 10 * (b / e - 1)) + c
- },
- easeOutExpo: function(a, b, c, d, e) {
- return b == e ? c + d: d * ( - Math.pow(2, -10 * b / e) + 1) + c
- },
- easeInOutExpo: function(a, b, c, d, e) {
- if (b == 0) return c;
- if (b == e) return c + d;
- if ((b /= e / 2) < 1) return d / 2 * Math.pow(2, 10 * (b - 1)) + c;
- return d / 2 * ( - Math.pow(2, -10 * --b) + 2) + c
- },
- easeInCirc: function(a, b, c, d, e) {
- return - d * (Math.sqrt(1 - (b /= e) * b) - 1) + c
- },
- easeOutCirc: function(a, b, c, d, e) {
- return d * Math.sqrt(1 - (b = b / e - 1) * b) + c
- },
- easeInOutCirc: function(a, b, c, d, e) {
- if ((b /= e / 2) < 1) return - d / 2 * (Math.sqrt(1 - b * b) - 1) + c;
- return d / 2 * (Math.sqrt(1 - (b -= 2) * b) + 1) + c
- },
- easeInElastic: function(a, b, c, d, e) {
- var f = 1.70158,
- g = 0,
- h = d;
- if (b == 0) return c;
- if ((b /= e) == 1) return c + d;
- g || (g = e * .3);
- if (h < Math.abs(d)) {
- h = d;
- var f = g / 4
- } else var f = g / (2 * Math.PI) * Math.asin(d / h);
- return - (h * Math.pow(2, 10 * (b -= 1)) * Math.sin((b * e - f) * 2 * Math.PI / g)) + c
- },
- easeOutElastic: function(a, b, c, d, e) {
- var f = 1.70158,
- g = 0,
- h = d;
- if (b == 0) return c;
- if ((b /= e) == 1) return c + d;
- g || (g = e * .3);
- if (h < Math.abs(d)) {
- h = d;
- var f = g / 4
- } else var f = g / (2 * Math.PI) * Math.asin(d / h);
- return h * Math.pow(2, -10 * b) * Math.sin((b * e - f) * 2 * Math.PI / g) + d + c
- },
- easeInOutElastic: function(a, b, c, d, e) {
- var f = 1.70158,
- g = 0,
- h = d;
- if (b == 0) return c;
- if ((b /= e / 2) == 2) return c + d;
- g || (g = e * .3 * 1.5);
- if (h < Math.abs(d)) {
- h = d;
- var f = g / 4
- } else var f = g / (2 * Math.PI) * Math.asin(d / h);
- if (b < 1) return - 0.5 * h * Math.pow(2, 10 * (b -= 1)) * Math.sin((b * e - f) * 2 * Math.PI / g) + c;
- return h * Math.pow(2, -10 * (b -= 1)) * Math.sin((b * e - f) * 2 * Math.PI / g) * .5 + d + c
- },
- easeInBack: function(a, c, d, e, f, g) {
- g == b && (g = 1.70158);
- return e * (c /= f) * c * ((g + 1) * c - g) + d
- },
- easeOutBack: function(a, c, d, e, f, g) {
- g == b && (g = 1.70158);
- return e * ((c = c / f - 1) * c * ((g + 1) * c + g) + 1) + d
- },
- easeInOutBack: function(a, c, d, e, f, g) {
- g == b && (g = 1.70158);
- if ((c /= f / 2) < 1) return e / 2 * c * c * (((g *= 1.525) + 1) * c - g) + d;
- return e / 2 * ((c -= 2) * c * (((g *= 1.525) + 1) * c + g) + 2) + d
- },
- easeInBounce: function(b, c, d, e, f) {
- return e - a.easing.easeOutBounce(b, f - c, 0, e, f) + d
- },
- easeOutBounce: function(a, b, c, d, e) {
- return (b /= e) < 1 / 2.75 ? d * 7.5625 * b * b + c: b < 2 / 2.75 ? d * (7.5625 * (b -= 1.5 / 2.75) * b + .75) + c: b < 2.5 / 2.75 ? d * (7.5625 * (b -= 2.25 / 2.75) * b + .9375) + c: d * (7.5625 * (b -= 2.625 / 2.75) * b + .984375) + c
- },
- easeInOutBounce: function(b, c, d, e, f) {
- if (c < f / 2) return a.easing.easeInBounce(b, c * 2, 0, e, f) * .5 + d;
- return a.easing.easeOutBounce(b, c * 2 - f, 0, e, f) * .5 + e * .5 + d
- }
- })
-} (jQuery);
-/*
- * jQuery UI Effects Blind 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Blind
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function(a, b) {
- a.effects.blind = function(b) {
- return this.queue(function() {
- var c = a(this),
- d = ["position", "top", "bottom", "left", "right"],
- e = a.effects.setMode(c, b.options.mode || "hide"),
- f = b.options.direction || "vertical";
- a.effects.save(c, d),
- c.show();
- var g = a.effects.createWrapper(c).css({
- overflow: "hidden"
- }),
- h = f == "vertical" ? "height": "width",
- i = f == "vertical" ? g.height() : g.width();
- e == "show" && g.css(h, 0);
- var j = {};
- j[h] = e == "show" ? i: 0,
- g.animate(j, b.duration, b.options.easing,
- function() {
- e == "hide" && c.hide(),
- a.effects.restore(c, d),
- a.effects.removeWrapper(c),
- b.callback && b.callback.apply(c[0], arguments),
- c.dequeue()
- })
- })
- }
-})(jQuery);
-/*
- * jQuery UI Effects Bounce 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Bounce
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function(a, b) {
- a.effects.bounce = function(b) {
- return this.queue(function() {
- var c = a(this),
- d = ["position", "top", "bottom", "left", "right"],
- e = a.effects.setMode(c, b.options.mode || "effect"),
- f = b.options.direction || "up",
- g = b.options.distance || 20,
- h = b.options.times || 5,
- i = b.duration || 250;
- /show|hide/.test(e) && d.push("opacity"),
- a.effects.save(c, d),
- c.show(),
- a.effects.createWrapper(c);
- var j = f == "up" || f == "down" ? "top": "left",
- k = f == "up" || f == "left" ? "pos": "neg",
- g = b.options.distance || (j == "top" ? c.outerHeight({
- margin: !0
- }) / 3 : c.outerWidth({
- margin: !0
- }) / 3);
- e == "show" && c.css("opacity", 0).css(j, k == "pos" ? -g: g),
- e == "hide" && (g = g / (h * 2)),
- e != "hide" && h--;
- if (e == "show") {
- var l = {
- opacity: 1
- };
- l[j] = (k == "pos" ? "+=": "-=") + g,
- c.animate(l, i / 2, b.options.easing),
- g = g / 2,
- h--
- }
- for (var m = 0; m < h; m++) {
- var n = {},
- p = {};
- n[j] = (k == "pos" ? "-=": "+=") + g,
- p[j] = (k == "pos" ? "+=": "-=") + g,
- c.animate(n, i / 2, b.options.easing).animate(p, i / 2, b.options.easing),
- g = e == "hide" ? g * 2 : g / 2
- }
- if (e == "hide") {
- var l = {
- opacity: 0
- };
- l[j] = (k == "pos" ? "-=": "+=") + g,
- c.animate(l, i / 2, b.options.easing,
- function() {
- c.hide(),
- a.effects.restore(c, d),
- a.effects.removeWrapper(c),
- b.callback && b.callback.apply(this, arguments)
- })
- } else {
- var n = {},
- p = {};
- n[j] = (k == "pos" ? "-=": "+=") + g,
- p[j] = (k == "pos" ? "+=": "-=") + g,
- c.animate(n, i / 2, b.options.easing).animate(p, i / 2, b.options.easing,
- function() {
- a.effects.restore(c, d),
- a.effects.removeWrapper(c),
- b.callback && b.callback.apply(this, arguments)
- })
- }
- c.queue("fx",
- function() {
- c.dequeue()
- }),
- c.dequeue()
- })
- }
-})(jQuery);
-/*
- * jQuery UI Effects Clip 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Clip
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function(a, b) {
- a.effects.clip = function(b) {
- return this.queue(function() {
- var c = a(this),
- d = ["position", "top", "bottom", "left", "right", "height", "width"],
- e = a.effects.setMode(c, b.options.mode || "hide"),
- f = b.options.direction || "vertical";
- a.effects.save(c, d),
- c.show();
- var g = a.effects.createWrapper(c).css({
- overflow: "hidden"
- }),
- h = c[0].tagName == "IMG" ? g: c,
- i = {
- size: f == "vertical" ? "height": "width",
- position: f == "vertical" ? "top": "left"
- },
- j = f == "vertical" ? h.height() : h.width();
- e == "show" && (h.css(i.size, 0), h.css(i.position, j / 2));
- var k = {};
- k[i.size] = e == "show" ? j: 0,
- k[i.position] = e == "show" ? 0 : j / 2,
- h.animate(k, {
- queue: !1,
- duration: b.duration,
- easing: b.options.easing,
- complete: function() {
- e == "hide" && c.hide(),
- a.effects.restore(c, d),
- a.effects.removeWrapper(c),
- b.callback && b.callback.apply(c[0], arguments),
- c.dequeue()
- }
- })
- })
- }
-})(jQuery);
-/*
- * jQuery UI Effects Drop 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Drop
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function(a, b) {
- a.effects.drop = function(b) {
- return this.queue(function() {
- var c = a(this),
- d = ["position", "top", "bottom", "left", "right", "opacity"],
- e = a.effects.setMode(c, b.options.mode || "hide"),
- f = b.options.direction || "left";
- a.effects.save(c, d),
- c.show(),
- a.effects.createWrapper(c);
- var g = f == "up" || f == "down" ? "top": "left",
- h = f == "up" || f == "left" ? "pos": "neg",
- i = b.options.distance || (g == "top" ? c.outerHeight({
- margin: !0
- }) / 2 : c.outerWidth({
- margin: !0
- }) / 2);
- e == "show" && c.css("opacity", 0).css(g, h == "pos" ? -i: i);
- var j = {
- opacity: e == "show" ? 1 : 0
- };
- j[g] = (e == "show" ? h == "pos" ? "+=": "-=": h == "pos" ? "-=": "+=") + i,
- c.animate(j, {
- queue: !1,
- duration: b.duration,
- easing: b.options.easing,
- complete: function() {
- e == "hide" && c.hide(),
- a.effects.restore(c, d),
- a.effects.removeWrapper(c),
- b.callback && b.callback.apply(this, arguments),
- c.dequeue()
- }
- })
- })
- }
-})(jQuery);
-/*
- * jQuery UI Effects Explode 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Explode
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function(a, b) {
- a.effects.explode = function(b) {
- return this.queue(function() {
- var c = b.options.pieces ? Math.round(Math.sqrt(b.options.pieces)) : 3,
- d = b.options.pieces ? Math.round(Math.sqrt(b.options.pieces)) : 3;
- b.options.mode = b.options.mode == "toggle" ? a(this).is(":visible") ? "hide": "show": b.options.mode;
- var e = a(this).show().css("visibility", "hidden"),
- f = e.offset();
- f.top -= parseInt(e.css("marginTop"), 10) || 0,
- f.left -= parseInt(e.css("marginLeft"), 10) || 0;
- var g = e.outerWidth(!0),
- h = e.outerHeight(!0);
- for (var i = 0; i < c; i++) for (var j = 0; j < d; j++) e.clone().appendTo("body").wrap("<div></div>").css({
- position: "absolute",
- visibility: "visible",
- left: -j * (g / d),
- top: -i * (h / c)
- }).parent().addClass("ui-effects-explode").css({
- position: "absolute",
- overflow: "hidden",
- width: g / d,
- height: h / c,
- left: f.left + j * (g / d) + (b.options.mode == "show" ? (j - Math.floor(d / 2)) * (g / d) : 0),
- top: f.top + i * (h / c) + (b.options.mode == "show" ? (i - Math.floor(c / 2)) * (h / c) : 0),
- opacity: b.options.mode == "show" ? 0 : 1
- }).animate({
- left: f.left + j * (g / d) + (b.options.mode == "show" ? 0 : (j - Math.floor(d / 2)) * (g / d)),
- top: f.top + i * (h / c) + (b.options.mode == "show" ? 0 : (i - Math.floor(c / 2)) * (h / c)),
- opacity: b.options.mode == "show" ? 1 : 0
- },
- b.duration || 500);
- setTimeout(function() {
- b.options.mode == "show" ? e.css({
- visibility: "visible"
- }) : e.css({
- visibility: "visible"
- }).hide(),
- b.callback && b.callback.apply(e[0]),
- e.dequeue(),
- a("div.ui-effects-explode").remove()
- },
- b.duration || 500)
- })
- }
-})(jQuery);
-/*
- * jQuery UI Effects Fade 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Fade
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function(a, b) {
- a.effects.fade = function(b) {
- return this.queue(function() {
- var c = a(this),
- d = a.effects.setMode(c, b.options.mode || "hide");
- c.animate({
- opacity: d
- },
- {
- queue: !1,
- duration: b.duration,
- easing: b.options.easing,
- complete: function() {
- b.callback && b.callback.apply(this, arguments),
- c.dequeue()
- }
- })
- })
- }
-})(jQuery);
-/*
- * jQuery UI Effects Fold 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Fold
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function(a, b) {
- a.effects.fold = function(b) {
- return this.queue(function() {
- var c = a(this),
- d = ["position", "top", "bottom", "left", "right"],
- e = a.effects.setMode(c, b.options.mode || "hide"),
- f = b.options.size || 15,
- g = !!b.options.horizFirst,
- h = b.duration ? b.duration / 2 : a.fx.speeds._default / 2;
- a.effects.save(c, d),
- c.show();
- var i = a.effects.createWrapper(c).css({
- overflow: "hidden"
- }),
- j = e == "show" != g,
- k = j ? ["width", "height"] : ["height", "width"],
- l = j ? [i.width(), i.height()] : [i.height(), i.width()],
- m = /([0-9]+)%/.exec(f);
- m && (f = parseInt(m[1], 10) / 100 * l[e == "hide" ? 0 : 1]),
- e == "show" && i.css(g ? {
- height: 0,
- width: f
- }: {
- height: f,
- width: 0
- });
- var n = {},
- p = {};
- n[k[0]] = e == "show" ? l[0] : f,
- p[k[1]] = e == "show" ? l[1] : 0,
- i.animate(n, h, b.options.easing).animate(p, h, b.options.easing,
- function() {
- e == "hide" && c.hide(),
- a.effects.restore(c, d),
- a.effects.removeWrapper(c),
- b.callback && b.callback.apply(c[0], arguments),
- c.dequeue()
- })
- })
- }
-})(jQuery);
-/*
- * jQuery UI Effects Highlight 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Highlight
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function(a, b) {
- a.effects.highlight = function(b) {
- return this.queue(function() {
- var c = a(this),
- d = ["backgroundImage", "backgroundColor", "opacity"],
- e = a.effects.setMode(c, b.options.mode || "show"),
- f = {
- backgroundColor: c.css("backgroundColor")
- };
- e == "hide" && (f.opacity = 0),
- a.effects.save(c, d),
- c.show().css({
- backgroundImage: "none",
- backgroundColor: b.options.color || "#ffff99"
- }).animate(f, {
- queue: !1,
- duration: b.duration,
- easing: b.options.easing,
- complete: function() {
- e == "hide" && c.hide(),
- a.effects.restore(c, d),
- e == "show" && !a.support.opacity && this.style.removeAttribute("filter"),
- b.callback && b.callback.apply(this, arguments),
- c.dequeue()
- }
- })
- })
- }
-})(jQuery);
-/*
- * jQuery UI Effects Pulsate 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Pulsate
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function(a, b) {
- a.effects.pulsate = function(b) {
- return this.queue(function() {
- var c = a(this),
- d = a.effects.setMode(c, b.options.mode || "show");
- times = (b.options.times || 5) * 2 - 1,
- duration = b.duration ? b.duration / 2 : a.fx.speeds._default / 2,
- isVisible = c.is(":visible"),
- animateTo = 0,
- isVisible || (c.css("opacity", 0).show(), animateTo = 1),
- (d == "hide" && isVisible || d == "show" && !isVisible) && times--;
- for (var e = 0; e < times; e++) c.animate({
- opacity: animateTo
- },
- duration, b.options.easing),
- animateTo = (animateTo + 1) % 2;
- c.animate({
- opacity: animateTo
- },
- duration, b.options.easing,
- function() {
- animateTo == 0 && c.hide(),
- b.callback && b.callback.apply(this, arguments)
- }),
- c.queue("fx",
- function() {
- c.dequeue()
- }).dequeue()
- })
- }
-})(jQuery);
-/*
- * jQuery UI Effects Scale 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Scale
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function(a, b) {
- a.effects.puff = function(b) {
- return this.queue(function() {
- var c = a(this),
- d = a.effects.setMode(c, b.options.mode || "hide"),
- e = parseInt(b.options.percent, 10) || 150,
- f = e / 100,
- g = {
- height: c.height(),
- width: c.width()
- };
- a.extend(b.options, {
- fade: !0,
- mode: d,
- percent: d == "hide" ? e: 100,
- from: d == "hide" ? g: {
- height: g.height * f,
- width: g.width * f
- }
- }),
- c.effect("scale", b.options, b.duration, b.callback),
- c.dequeue()
- })
- },
- a.effects.scale = function(b) {
- return this.queue(function() {
- var c = a(this),
- d = a.extend(!0, {},
- b.options),
- e = a.effects.setMode(c, b.options.mode || "effect"),
- f = parseInt(b.options.percent, 10) || (parseInt(b.options.percent, 10) == 0 ? 0 : e == "hide" ? 0 : 100),
- g = b.options.direction || "both",
- h = b.options.origin;
- e != "effect" && (d.origin = h || ["middle", "center"], d.restore = !0);
- var i = {
- height: c.height(),
- width: c.width()
- };
- c.from = b.options.from || (e == "show" ? {
- height: 0,
- width: 0
- }: i);
- var j = {
- y: g != "horizontal" ? f / 100 : 1,
- x: g != "vertical" ? f / 100 : 1
- };
- c.to = {
- height: i.height * j.y,
- width: i.width * j.x
- },
- b.options.fade && (e == "show" && (c.from.opacity = 0, c.to.opacity = 1), e == "hide" && (c.from.opacity = 1, c.to.opacity = 0)),
- d.from = c.from,
- d.to = c.to,
- d.mode = e,
- c.effect("size", d, b.duration, b.callback),
- c.dequeue()
- })
- },
- a.effects.size = function(b) {
- return this.queue(function() {
- var c = a(this),
- d = ["position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity"],
- e = ["position", "top", "bottom", "left", "right", "overflow", "opacity"],
- f = ["width", "height", "overflow"],
- g = ["fontSize"],
- h = ["borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom"],
- i = ["borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight"],
- j = a.effects.setMode(c, b.options.mode || "effect"),
- k = b.options.restore || !1,
- l = b.options.scale || "both",
- m = b.options.origin,
- n = {
- height: c.height(),
- width: c.width()
- };
- c.from = b.options.from || n,
- c.to = b.options.to || n;
- if (m) {
- var p = a.effects.getBaseline(m, n);
- c.from.top = (n.height - c.from.height) * p.y,
- c.from.left = (n.width - c.from.width) * p.x,
- c.to.top = (n.height - c.to.height) * p.y,
- c.to.left = (n.width - c.to.width) * p.x
- }
- var q = {
- from: {
- y: c.from.height / n.height,
- x: c.from.width / n.width
- },
- to: {
- y: c.to.height / n.height,
- x: c.to.width / n.width
- }
- };
- if (l == "box" || l == "both") q.from.y != q.to.y && (d = d.concat(h), c.from = a.effects.setTransition(c, h, q.from.y, c.from), c.to = a.effects.setTransition(c, h, q.to.y, c.to)),
- q.from.x != q.to.x && (d = d.concat(i), c.from = a.effects.setTransition(c, i, q.from.x, c.from), c.to = a.effects.setTransition(c, i, q.to.x, c.to)); (l == "content" || l == "both") && q.from.y != q.to.y && (d = d.concat(g), c.from = a.effects.setTransition(c, g, q.from.y, c.from), c.to = a.effects.setTransition(c, g, q.to.y, c.to)),
- a.effects.save(c, k ? d: e),
- c.show(),
- a.effects.createWrapper(c),
- c.css("overflow", "hidden").css(c.from);
- if (l == "content" || l == "both") h = h.concat(["marginTop", "marginBottom"]).concat(g),
- i = i.concat(["marginLeft", "marginRight"]),
- f = d.concat(h).concat(i),
- c.find("*[width]").each(function() {
- child = a(this),
- k && a.effects.save(child, f);
- var c = {
- height: child.height(),
- width: child.width()
- };
- child.from = {
- height: c.height * q.from.y,
- width: c.width * q.from.x
- },
- child.to = {
- height: c.height * q.to.y,
- width: c.width * q.to.x
- },
- q.from.y != q.to.y && (child.from = a.effects.setTransition(child, h, q.from.y, child.from), child.to = a.effects.setTransition(child, h, q.to.y, child.to)),
- q.from.x != q.to.x && (child.from = a.effects.setTransition(child, i, q.from.x, child.from), child.to = a.effects.setTransition(child, i, q.to.x, child.to)),
- child.css(child.from),
- child.animate(child.to, b.duration, b.options.easing,
- function() {
- k && a.effects.restore(child, f)
- })
- });
- c.animate(c.to, {
- queue: !1,
- duration: b.duration,
- easing: b.options.easing,
- complete: function() {
- c.to.opacity === 0 && c.css("opacity", c.from.opacity),
- j == "hide" && c.hide(),
- a.effects.restore(c, k ? d: e),
- a.effects.removeWrapper(c),
- b.callback && b.callback.apply(this, arguments),
- c.dequeue()
- }
- })
- })
- }
-})(jQuery);
-/*
- * jQuery UI Effects Shake 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Shake
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function(a, b) {
- a.effects.shake = function(b) {
- return this.queue(function() {
- var c = a(this),
- d = ["position", "top", "bottom", "left", "right"],
- e = a.effects.setMode(c, b.options.mode || "effect"),
- f = b.options.direction || "left",
- g = b.options.distance || 20,
- h = b.options.times || 3,
- i = b.duration || b.options.duration || 140;
- a.effects.save(c, d),
- c.show(),
- a.effects.createWrapper(c);
- var j = f == "up" || f == "down" ? "top": "left",
- k = f == "up" || f == "left" ? "pos": "neg",
- l = {},
- m = {},
- n = {};
- l[j] = (k == "pos" ? "-=": "+=") + g,
- m[j] = (k == "pos" ? "+=": "-=") + g * 2,
- n[j] = (k == "pos" ? "-=": "+=") + g * 2,
- c.animate(l, i, b.options.easing);
- for (var p = 1; p < h; p++) c.animate(m, i, b.options.easing).animate(n, i, b.options.easing);
- c.animate(m, i, b.options.easing).animate(l, i / 2, b.options.easing,
- function() {
- a.effects.restore(c, d),
- a.effects.removeWrapper(c),
- b.callback && b.callback.apply(this, arguments)
- }),
- c.queue("fx",
- function() {
- c.dequeue()
- }),
- c.dequeue()
- })
- }
-})(jQuery);
-/*
- * jQuery UI Effects Slide 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Slide
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function(a, b) {
- a.effects.slide = function(b) {
- return this.queue(function() {
- var c = a(this),
- d = ["position", "top", "bottom", "left", "right"],
- e = a.effects.setMode(c, b.options.mode || "show"),
- f = b.options.direction || "left";
- a.effects.save(c, d),
- c.show(),
- a.effects.createWrapper(c).css({
- overflow: "hidden"
- });
- var g = f == "up" || f == "down" ? "top": "left",
- h = f == "up" || f == "left" ? "pos": "neg",
- i = b.options.distance || (g == "top" ? c.outerHeight({
- margin: !0
- }) : c.outerWidth({
- margin: !0
- }));
- e == "show" && c.css(g, h == "pos" ? isNaN(i) ? "-" + i: -i: i);
- var j = {};
- j[g] = (e == "show" ? h == "pos" ? "+=": "-=": h == "pos" ? "-=": "+=") + i,
- c.animate(j, {
- queue: !1,
- duration: b.duration,
- easing: b.options.easing,
- complete: function() {
- e == "hide" && c.hide(),
- a.effects.restore(c, d),
- a.effects.removeWrapper(c),
- b.callback && b.callback.apply(this, arguments),
- c.dequeue()
- }
- })
- })
- }
-})(jQuery);
-/*
- * jQuery UI Effects Transfer 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Transfer
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function(a, b) {
- a.effects.transfer = function(b) {
- return this.queue(function() {
- var c = a(this),
- d = a(b.options.to),
- e = d.offset(),
- f = {
- top: e.top,
- left: e.left,
- height: d.innerHeight(),
- width: d.innerWidth()
- },
- g = c.offset(),
- h = a('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(b.options.className).css({
- top: g.top,
- left: g.left,
- height: c.innerHeight(),
- width: c.innerWidth(),
- position: "absolute"
- }).animate(f, b.duration, b.options.easing,
- function() {
- h.remove(),
- b.callback && b.callback.apply(c[0], arguments),
- c.dequeue()
- })
- })
- }
-})(jQuery); \ No newline at end of file
+/*!
+ * jQuery UI 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(a, b) {
+ function d(b) {
+ return ! a(b).parents().andSelf().filter(function() {
+ return a.curCSS(this, "visibility") === "hidden" || a.expr.filters.hidden(this)
+ }).length
+ }
+ function c(b, c) {
+ var e = b.nodeName.toLowerCase();
+ if ("area" === e) {
+ var f = b.parentNode,
+ g = f.name,
+ h;
+ if (!b.href || !g || f.nodeName.toLowerCase() !== "map") return ! 1;
+ h = a("img[usemap=#" + g + "]")[0];
+ return !! h && d(h)
+ }
+ return (/input|select|textarea|button|object/.test(e) ? !b.disabled: "a" == e ? b.href || c: c) && d(b)
+ }
+ a.ui = a.ui || {};
+ a.ui.version || (a.extend(a.ui, {
+ version: "1.8.18",
+ keyCode: {
+ ALT: 18,
+ BACKSPACE: 8,
+ CAPS_LOCK: 20,
+ COMMA: 188,
+ COMMAND: 91,
+ COMMAND_LEFT: 91,
+ COMMAND_RIGHT: 93,
+ CONTROL: 17,
+ DELETE: 46,
+ DOWN: 40,
+ END: 35,
+ ENTER: 13,
+ ESCAPE: 27,
+ HOME: 36,
+ INSERT: 45,
+ LEFT: 37,
+ MENU: 93,
+ NUMPAD_ADD: 107,
+ NUMPAD_DECIMAL: 110,
+ NUMPAD_DIVIDE: 111,
+ NUMPAD_ENTER: 108,
+ NUMPAD_MULTIPLY: 106,
+ NUMPAD_SUBTRACT: 109,
+ PAGE_DOWN: 34,
+ PAGE_UP: 33,
+ PERIOD: 190,
+ RIGHT: 39,
+ SHIFT: 16,
+ SPACE: 32,
+ TAB: 9,
+ UP: 38,
+ WINDOWS: 91
+ }
+ }), a.fn.extend({
+ propAttr: a.fn.prop || a.fn.attr,
+ _focus: a.fn.focus,
+ focus: function(b, c) {
+ return typeof b == "number" ? this.each(function() {
+ var d = this;
+ setTimeout(function() {
+ a(d).focus(),
+ c && c.call(d)
+ },
+ b)
+ }) : this._focus.apply(this, arguments)
+ },
+ scrollParent: function() {
+ var b;
+ a.browser.msie && /(static|relative)/.test(this.css("position")) || /absolute/.test(this.css("position")) ? b = this.parents().filter(function() {
+ return /(relative|absolute|fixed)/.test(a.curCSS(this, "position", 1)) && /(auto|scroll)/.test(a.curCSS(this, "overflow", 1) + a.curCSS(this, "overflow-y", 1) + a.curCSS(this, "overflow-x", 1))
+ }).eq(0) : b = this.parents().filter(function() {
+ return /(auto|scroll)/.test(a.curCSS(this, "overflow", 1) + a.curCSS(this, "overflow-y", 1) + a.curCSS(this, "overflow-x", 1))
+ }).eq(0);
+ return /fixed/.test(this.css("position")) || !b.length ? a(document) : b
+ },
+ zIndex: function(c) {
+ if (c !== b) return this.css("zIndex", c);
+ if (this.length) {
+ var d = a(this[0]),
+ e,
+ f;
+ while (d.length && d[0] !== document) {
+ e = d.css("position");
+ if (e === "absolute" || e === "relative" || e === "fixed") {
+ f = parseInt(d.css("zIndex"), 10);
+ if (!isNaN(f) && f !== 0) return f
+ }
+ d = d.parent()
+ }
+ }
+ return 0
+ },
+ disableSelection: function() {
+ return this.bind((a.support.selectstart ? "selectstart": "mousedown") + ".ui-disableSelection",
+ function(a) {
+ a.preventDefault()
+ })
+ },
+ enableSelection: function() {
+ return this.unbind(".ui-disableSelection")
+ }
+ }), a.each(["Width", "Height"],
+ function(c, d) {
+ function h(b, c, d, f) {
+ a.each(e,
+ function() {
+ c -= parseFloat(a.curCSS(b, "padding" + this, !0)) || 0,
+ d && (c -= parseFloat(a.curCSS(b, "border" + this + "Width", !0)) || 0),
+ f && (c -= parseFloat(a.curCSS(b, "margin" + this, !0)) || 0)
+ });
+ return c
+ }
+ var e = d === "Width" ? ["Left", "Right"] : ["Top", "Bottom"],
+ f = d.toLowerCase(),
+ g = {
+ innerWidth: a.fn.innerWidth,
+ innerHeight: a.fn.innerHeight,
+ outerWidth: a.fn.outerWidth,
+ outerHeight: a.fn.outerHeight
+ };
+ a.fn["inner" + d] = function(c) {
+ if (c === b) return g["inner" + d].call(this);
+ return this.each(function() {
+ a(this).css(f, h(this, c) + "px")
+ })
+ },
+ a.fn["outer" + d] = function(b, c) {
+ if (typeof b != "number") return g["outer" + d].call(this, b);
+ return this.each(function() {
+ a(this).css(f, h(this, b, !0, c) + "px")
+ })
+ }
+ }), a.extend(a.expr[":"], {
+ data: function(b, c, d) {
+ return !! a.data(b, d[3])
+ },
+ focusable: function(b) {
+ return c(b, !isNaN(a.attr(b, "tabindex")))
+ },
+ tabbable: function(b) {
+ var d = a.attr(b, "tabindex"),
+ e = isNaN(d);
+ return (e || d >= 0) && c(b, !e)
+ }
+ }), a(function() {
+ var b = document.body,
+ c = b.appendChild(c = document.createElement("div"));
+ c.offsetHeight,
+ a.extend(c.style, {
+ minHeight: "100px",
+ height: "auto",
+ padding: 0,
+ borderWidth: 0
+ }),
+ a.support.minHeight = c.offsetHeight === 100,
+ a.support.selectstart = "onselectstart" in c,
+ b.removeChild(c).style.display = "none"
+ }), a.extend(a.ui, {
+ plugin: {
+ add: function(b, c, d) {
+ var e = a.ui[b].prototype;
+ for (var f in d) e.plugins[f] = e.plugins[f] || [],
+ e.plugins[f].push([c, d[f]])
+ },
+ call: function(a, b, c) {
+ var d = a.plugins[b];
+ if ( !! d && !!a.element[0].parentNode) for (var e = 0; e < d.length; e++) a.options[d[e][0]] && d[e][1].apply(a.element, c)
+ }
+ },
+ contains: function(a, b) {
+ return document.compareDocumentPosition ? a.compareDocumentPosition(b) & 16 : a !== b && a.contains(b)
+ },
+ hasScroll: function(b, c) {
+ if (a(b).css("overflow") === "hidden") return ! 1;
+ var d = c && c === "left" ? "scrollLeft": "scrollTop",
+ e = !1;
+ if (b[d] > 0) return ! 0;
+ b[d] = 1,
+ e = b[d] > 0,
+ b[d] = 0;
+ return e
+ },
+ isOverAxis: function(a, b, c) {
+ return a > b && a < b + c
+ },
+ isOver: function(b, c, d, e, f, g) {
+ return a.ui.isOverAxis(b, d, f) && a.ui.isOverAxis(c, e, g)
+ }
+ }))
+})(jQuery);
+/*!
+ * jQuery UI Widget 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(a, b) {
+ if (a.cleanData) {
+ var c = a.cleanData;
+ a.cleanData = function(b) {
+ for (var d = 0,
+ e; (e = b[d]) != null; d++) try {
+ a(e).triggerHandler("remove")
+ } catch(f) {}
+ c(b)
+ }
+ } else {
+ var d = a.fn.remove;
+ a.fn.remove = function(b, c) {
+ return this.each(function() {
+ c || (!b || a.filter(b, [this]).length) && a("*", this).add([this]).each(function() {
+ try {
+ a(this).triggerHandler("remove")
+ } catch(b) {}
+ });
+ return d.call(a(this), b, c)
+ })
+ }
+ }
+ a.widget = function(b, c, d) {
+ var e = b.split(".")[0],
+ f;
+ b = b.split(".")[1],
+ f = e + "-" + b,
+ d || (d = c, c = a.Widget),
+ a.expr[":"][f] = function(c) {
+ return !! a.data(c, b)
+ },
+ a[e] = a[e] || {},
+ a[e][b] = function(a, b) {
+ arguments.length && this._createWidget(a, b)
+ };
+ var g = new c;
+ g.options = a.extend(!0, {},
+ g.options),
+ a[e][b].prototype = a.extend(!0, g, {
+ namespace: e,
+ widgetName: b,
+ widgetEventPrefix: a[e][b].prototype.widgetEventPrefix || b,
+ widgetBaseClass: f
+ },
+ d),
+ a.widget.bridge(b, a[e][b])
+ },
+ a.widget.bridge = function(c, d) {
+ a.fn[c] = function(e) {
+ var f = typeof e == "string",
+ g = Array.prototype.slice.call(arguments, 1),
+ h = this;
+ e = !f && g.length ? a.extend.apply(null, [!0, e].concat(g)) : e;
+ if (f && e.charAt(0) === "_") return h;
+ f ? this.each(function() {
+ var d = a.data(this, c),
+ f = d && a.isFunction(d[e]) ? d[e].apply(d, g) : d;
+ if (f !== d && f !== b) {
+ h = f;
+ return ! 1
+ }
+ }) : this.each(function() {
+ var b = a.data(this, c);
+ b ? b.option(e || {})._init() : a.data(this, c, new d(e, this))
+ });
+ return h
+ }
+ },
+ a.Widget = function(a, b) {
+ arguments.length && this._createWidget(a, b)
+ },
+ a.Widget.prototype = {
+ widgetName: "widget",
+ widgetEventPrefix: "",
+ options: {
+ disabled: !1
+ },
+ _createWidget: function(b, c) {
+ a.data(c, this.widgetName, this),
+ this.element = a(c),
+ this.options = a.extend(!0, {},
+ this.options, this._getCreateOptions(), b);
+ var d = this;
+ this.element.bind("remove." + this.widgetName,
+ function() {
+ d.destroy()
+ }),
+ this._create(),
+ this._trigger("create"),
+ this._init()
+ },
+ _getCreateOptions: function() {
+ return a.metadata && a.metadata.get(this.element[0])[this.widgetName]
+ },
+ _create: function() {},
+ _init: function() {},
+ destroy: function() {
+ this.element.unbind("." + this.widgetName).removeData(this.widgetName),
+ this.widget().unbind("." + this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass + "-disabled " + "ui-state-disabled")
+ },
+ widget: function() {
+ return this.element
+ },
+ option: function(c, d) {
+ var e = c;
+ if (arguments.length === 0) return a.extend({},
+ this.options);
+ if (typeof c == "string") {
+ if (d === b) return this.options[c];
+ e = {},
+ e[c] = d
+ }
+ this._setOptions(e);
+ return this
+ },
+ _setOptions: function(b) {
+ var c = this;
+ a.each(b,
+ function(a, b) {
+ c._setOption(a, b)
+ });
+ return this
+ },
+ _setOption: function(a, b) {
+ this.options[a] = b,
+ a === "disabled" && this.widget()[b ? "addClass": "removeClass"](this.widgetBaseClass + "-disabled" + " " + "ui-state-disabled").attr("aria-disabled", b);
+ return this
+ },
+ enable: function() {
+ return this._setOption("disabled", !1)
+ },
+ disable: function() {
+ return this._setOption("disabled", !0)
+ },
+ _trigger: function(b, c, d) {
+ var e, f, g = this.options[b];
+ d = d || {},
+ c = a.Event(c),
+ c.type = (b === this.widgetEventPrefix ? b: this.widgetEventPrefix + b).toLowerCase(),
+ c.target = this.element[0],
+ f = c.originalEvent;
+ if (f) for (e in f) e in c || (c[e] = f[e]);
+ this.element.trigger(c, d);
+ return ! (a.isFunction(g) && g.call(this.element[0], c, d) === !1 || c.isDefaultPrevented())
+ }
+ }
+})(jQuery);
+/*!
+ * jQuery UI Mouse 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ * jquery.ui.widget.js
+ */
+(function(a, b) {
+ var c = !1;
+ a(document).mouseup(function(a) {
+ c = !1
+ }),
+ a.widget("ui.mouse", {
+ options: {
+ cancel: ":input,option",
+ distance: 1,
+ delay: 0
+ },
+ _mouseInit: function() {
+ var b = this;
+ this.element.bind("mousedown." + this.widgetName,
+ function(a) {
+ return b._mouseDown(a)
+ }).bind("click." + this.widgetName,
+ function(c) {
+ if (!0 === a.data(c.target, b.widgetName + ".preventClickEvent")) {
+ a.removeData(c.target, b.widgetName + ".preventClickEvent"),
+ c.stopImmediatePropagation();
+ return ! 1
+ }
+ }),
+ this.started = !1
+ },
+ _mouseDestroy: function() {
+ this.element.unbind("." + this.widgetName)
+ },
+ _mouseDown: function(b) {
+ if (!c) {
+ this._mouseStarted && this._mouseUp(b),
+ this._mouseDownEvent = b;
+ var d = this,
+ e = b.which == 1,
+ f = typeof this.options.cancel == "string" && b.target.nodeName ? a(b.target).closest(this.options.cancel).length: !1;
+ if (!e || f || !this._mouseCapture(b)) return ! 0;
+ this.mouseDelayMet = !this.options.delay,
+ this.mouseDelayMet || (this._mouseDelayTimer = setTimeout(function() {
+ d.mouseDelayMet = !0
+ },
+ this.options.delay));
+ if (this._mouseDistanceMet(b) && this._mouseDelayMet(b)) {
+ this._mouseStarted = this._mouseStart(b) !== !1;
+ if (!this._mouseStarted) {
+ b.preventDefault();
+ return ! 0
+ }
+ } ! 0 === a.data(b.target, this.widgetName + ".preventClickEvent") && a.removeData(b.target, this.widgetName + ".preventClickEvent"),
+ this._mouseMoveDelegate = function(a) {
+ return d._mouseMove(a)
+ },
+ this._mouseUpDelegate = function(a) {
+ return d._mouseUp(a)
+ },
+ a(document).bind("mousemove." + this.widgetName, this._mouseMoveDelegate).bind("mouseup." + this.widgetName, this._mouseUpDelegate),
+ b.preventDefault(),
+ c = !0;
+ return ! 0
+ }
+ },
+ _mouseMove: function(b) {
+ if (a.browser.msie && !(document.documentMode >= 9) && !b.button) return this._mouseUp(b);
+ if (this._mouseStarted) {
+ this._mouseDrag(b);
+ return b.preventDefault()
+ }
+ this._mouseDistanceMet(b) && this._mouseDelayMet(b) && (this._mouseStarted = this._mouseStart(this._mouseDownEvent, b) !== !1, this._mouseStarted ? this._mouseDrag(b) : this._mouseUp(b));
+ return ! this._mouseStarted
+ },
+ _mouseUp: function(b) {
+ a(document).unbind("mousemove." + this.widgetName, this._mouseMoveDelegate).unbind("mouseup." + this.widgetName, this._mouseUpDelegate),
+ this._mouseStarted && (this._mouseStarted = !1, b.target == this._mouseDownEvent.target && a.data(b.target, this.widgetName + ".preventClickEvent", !0), this._mouseStop(b));
+ return ! 1
+ },
+ _mouseDistanceMet: function(a) {
+ return Math.max(Math.abs(this._mouseDownEvent.pageX - a.pageX), Math.abs(this._mouseDownEvent.pageY - a.pageY)) >= this.options.distance
+ },
+ _mouseDelayMet: function(a) {
+ return this.mouseDelayMet
+ },
+ _mouseStart: function(a) {},
+ _mouseDrag: function(a) {},
+ _mouseStop: function(a) {},
+ _mouseCapture: function(a) {
+ return ! 0
+ }
+ })
+})(jQuery);
+/*
+ * jQuery UI Position 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Position
+ */
+(function(a, b) {
+ a.ui = a.ui || {};
+ var c = /left|center|right/,
+ d = /top|center|bottom/,
+ e = "center",
+ f = {},
+ g = a.fn.position,
+ h = a.fn.offset;
+ a.fn.position = function(b) {
+ if (!b || !b.of) return g.apply(this, arguments);
+ b = a.extend({},
+ b);
+ var h = a(b.of),
+ i = h[0],
+ j = (b.collision || "flip").split(" "),
+ k = b.offset ? b.offset.split(" ") : [0, 0],
+ l,
+ m,
+ n;
+ i.nodeType === 9 ? (l = h.width(), m = h.height(), n = {
+ top: 0,
+ left: 0
+ }) : i.setTimeout ? (l = h.width(), m = h.height(), n = {
+ top: h.scrollTop(),
+ left: h.scrollLeft()
+ }) : i.preventDefault ? (b.at = "left top", l = m = 0, n = {
+ top: b.of.pageY,
+ left: b.of.pageX
+ }) : (l = h.outerWidth(), m = h.outerHeight(), n = h.offset()),
+ a.each(["my", "at"],
+ function() {
+ var a = (b[this] || "").split(" ");
+ a.length === 1 && (a = c.test(a[0]) ? a.concat([e]) : d.test(a[0]) ? [e].concat(a) : [e, e]),
+ a[0] = c.test(a[0]) ? a[0] : e,
+ a[1] = d.test(a[1]) ? a[1] : e,
+ b[this] = a
+ }),
+ j.length === 1 && (j[1] = j[0]),
+ k[0] = parseInt(k[0], 10) || 0,
+ k.length === 1 && (k[1] = k[0]),
+ k[1] = parseInt(k[1], 10) || 0,
+ b.at[0] === "right" ? n.left += l: b.at[0] === e && (n.left += l / 2),
+ b.at[1] === "bottom" ? n.top += m: b.at[1] === e && (n.top += m / 2),
+ n.left += k[0],
+ n.top += k[1];
+ return this.each(function() {
+ var c = a(this),
+ d = c.outerWidth(),
+ g = c.outerHeight(),
+ h = parseInt(a.curCSS(this, "marginLeft", !0)) || 0,
+ i = parseInt(a.curCSS(this, "marginTop", !0)) || 0,
+ o = d + h + (parseInt(a.curCSS(this, "marginRight", !0)) || 0),
+ p = g + i + (parseInt(a.curCSS(this, "marginBottom", !0)) || 0),
+ q = a.extend({},
+ n),
+ r;
+ b.my[0] === "right" ? q.left -= d: b.my[0] === e && (q.left -= d / 2),
+ b.my[1] === "bottom" ? q.top -= g: b.my[1] === e && (q.top -= g / 2),
+ f.fractions || (q.left = Math.round(q.left), q.top = Math.round(q.top)),
+ r = {
+ left: q.left - h,
+ top: q.top - i
+ },
+ a.each(["left", "top"],
+ function(c, e) {
+ a.ui.position[j[c]] && a.ui.position[j[c]][e](q, {
+ targetWidth: l,
+ targetHeight: m,
+ elemWidth: d,
+ elemHeight: g,
+ collisionPosition: r,
+ collisionWidth: o,
+ collisionHeight: p,
+ offset: k,
+ my: b.my,
+ at: b.at
+ })
+ }),
+ a.fn.bgiframe && c.bgiframe(),
+ c.offset(a.extend(q, {
+ using: b.using
+ }))
+ })
+ },
+ a.ui.position = {
+ fit: {
+ left: function(b, c) {
+ var d = a(window),
+ e = c.collisionPosition.left + c.collisionWidth - d.width() - d.scrollLeft();
+ b.left = e > 0 ? b.left - e: Math.max(b.left - c.collisionPosition.left, b.left)
+ },
+ top: function(b, c) {
+ var d = a(window),
+ e = c.collisionPosition.top + c.collisionHeight - d.height() - d.scrollTop();
+ b.top = e > 0 ? b.top - e: Math.max(b.top - c.collisionPosition.top, b.top)
+ }
+ },
+ flip: {
+ left: function(b, c) {
+ if (c.at[0] !== e) {
+ var d = a(window),
+ f = c.collisionPosition.left + c.collisionWidth - d.width() - d.scrollLeft(),
+ g = c.my[0] === "left" ? -c.elemWidth: c.my[0] === "right" ? c.elemWidth: 0,
+ h = c.at[0] === "left" ? c.targetWidth: -c.targetWidth,
+ i = -2 * c.offset[0];
+ b.left += c.collisionPosition.left < 0 ? g + h + i: f > 0 ? g + h + i: 0
+ }
+ },
+ top: function(b, c) {
+ if (c.at[1] !== e) {
+ var d = a(window),
+ f = c.collisionPosition.top + c.collisionHeight - d.height() - d.scrollTop(),
+ g = c.my[1] === "top" ? -c.elemHeight: c.my[1] === "bottom" ? c.elemHeight: 0,
+ h = c.at[1] === "top" ? c.targetHeight: -c.targetHeight,
+ i = -2 * c.offset[1];
+ b.top += c.collisionPosition.top < 0 ? g + h + i: f > 0 ? g + h + i: 0
+ }
+ }
+ }
+ },
+ a.offset.setOffset || (a.offset.setOffset = function(b, c) { / static / .test(a.curCSS(b, "position")) && (b.style.position = "relative");
+ var d = a(b),
+ e = d.offset(),
+ f = parseInt(a.curCSS(b, "top", !0), 10) || 0,
+ g = parseInt(a.curCSS(b, "left", !0), 10) || 0,
+ h = {
+ top: c.top - e.top + f,
+ left: c.left - e.left + g
+ };
+ "using" in c ? c.using.call(b, h) : d.css(h)
+ },
+ a.fn.offset = function(b) {
+ var c = this[0];
+ if (!c || !c.ownerDocument) return null;
+ if (b) return this.each(function() {
+ a.offset.setOffset(this, b)
+ });
+ return h.call(this)
+ }),
+ function() {
+ var b = document.getElementsByTagName("body")[0],
+ c = document.createElement("div"),
+ d,
+ e,
+ g,
+ h,
+ i;
+ d = document.createElement(b ? "div": "body"),
+ g = {
+ visibility: "hidden",
+ width: 0,
+ height: 0,
+ border: 0,
+ margin: 0,
+ background: "none"
+ },
+ b && a.extend(g, {
+ position: "absolute",
+ left: "-1000px",
+ top: "-1000px"
+ });
+ for (var j in g) d.style[j] = g[j];
+ d.appendChild(c),
+ e = b || document.documentElement,
+ e.insertBefore(d, e.firstChild),
+ c.style.cssText = "position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",
+ h = a(c).offset(function(a, b) {
+ return b
+ }).offset(),
+ d.innerHTML = "",
+ e.removeChild(d),
+ i = h.top + h.left + (b ? 2e3: 0),
+ f.fractions = i > 21 && i < 22
+ } ()
+})(jQuery);
+/*
+ * jQuery UI Draggable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Draggables
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.mouse.js
+ * jquery.ui.widget.js
+ */
+(function(a, b) {
+ a.widget("ui.draggable", a.ui.mouse, {
+ widgetEventPrefix: "drag",
+ options: {
+ addClasses: !0,
+ appendTo: "parent",
+ axis: !1,
+
+ connectToSortable: !1,
+ containment: !1,
+ cursor: "auto",
+ cursorAt: !1,
+ grid: !1,
+ handle: !1,
+ helper: "original",
+ iframeFix: !1,
+ opacity: !1,
+ refreshPositions: !1,
+ revert: !1,
+ revertDuration: 500,
+ scope: "default",
+ scroll: !0,
+ scrollSensitivity: 20,
+ scrollSpeed: 20,
+ snap: !1,
+ snapMode: "both",
+ snapTolerance: 20,
+ stack: !1,
+ zIndex: !1
+ },
+ _create: function() {
+ this.options.helper == "original" && !/^(?:r|a|f)/.test(this.element.css("position")) && (this.element[0].style.position = "relative"),
+ this.options.addClasses && this.element.addClass("ui-draggable"),
+ this.options.disabled && this.element.addClass("ui-draggable-disabled"),
+ this._mouseInit()
+ },
+ destroy: function() {
+ if ( !! this.element.data("draggable")) {
+ this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),
+ this._mouseDestroy();
+ return this
+ }
+ },
+ _mouseCapture: function(b) {
+ var c = this.options;
+ if (this.helper || c.disabled || a(b.target).is(".ui-resizable-handle")) return ! 1;
+ this.handle = this._getHandle(b);
+ if (!this.handle) return ! 1;
+ c.iframeFix && a(c.iframeFix === !0 ? "iframe": c.iframeFix).each(function() {
+ a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({
+ width: this.offsetWidth + "px",
+ height: this.offsetHeight + "px",
+ position: "absolute",
+ opacity: "0.001",
+ zIndex: 1e3
+ }).css(a(this).offset()).appendTo("body")
+ });
+ return ! 0
+ },
+ _mouseStart: function(b) {
+ var c = this.options;
+ this.helper = this._createHelper(b),
+ this._cacheHelperProportions(),
+ a.ui.ddmanager && (a.ui.ddmanager.current = this),
+ this._cacheMargins(),
+ this.cssPosition = this.helper.css("position"),
+ this.scrollParent = this.helper.scrollParent(),
+ this.offset = this.positionAbs = this.element.offset(),
+ this.offset = {
+ top: this.offset.top - this.margins.top,
+ left: this.offset.left - this.margins.left
+ },
+ a.extend(this.offset, {
+ click: {
+ left: b.pageX - this.offset.left,
+ top: b.pageY - this.offset.top
+ },
+ parent: this._getParentOffset(),
+ relative: this._getRelativeOffset()
+ }),
+ this.originalPosition = this.position = this._generatePosition(b),
+ this.originalPageX = b.pageX,
+ this.originalPageY = b.pageY,
+ c.cursorAt && this._adjustOffsetFromHelper(c.cursorAt),
+ c.containment && this._setContainment();
+ if (this._trigger("start", b) === !1) {
+ this._clear();
+ return ! 1
+ }
+ this._cacheHelperProportions(),
+ a.ui.ddmanager && !c.dropBehaviour && a.ui.ddmanager.prepareOffsets(this, b),
+ this.helper.addClass("ui-draggable-dragging"),
+ this._mouseDrag(b, !0),
+ a.ui.ddmanager && a.ui.ddmanager.dragStart(this, b);
+ return ! 0
+ },
+ _mouseDrag: function(b, c) {
+ this.position = this._generatePosition(b),
+ this.positionAbs = this._convertPositionTo("absolute");
+ if (!c) {
+ var d = this._uiHash();
+ if (this._trigger("drag", b, d) === !1) {
+ this._mouseUp({});
+ return ! 1
+ }
+ this.position = d.position
+ }
+ if (!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left + "px";
+ if (!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top + "px";
+ a.ui.ddmanager && a.ui.ddmanager.drag(this, b);
+ return ! 1
+ },
+ _mouseStop: function(b) {
+ var c = !1;
+ a.ui.ddmanager && !this.options.dropBehaviour && (c = a.ui.ddmanager.drop(this, b)),
+ this.dropped && (c = this.dropped, this.dropped = !1);
+ if ((!this.element[0] || !this.element[0].parentNode) && this.options.helper == "original") return ! 1;
+ if (this.options.revert == "invalid" && !c || this.options.revert == "valid" && c || this.options.revert === !0 || a.isFunction(this.options.revert) && this.options.revert.call(this.element, c)) {
+ var d = this;
+ a(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10),
+ function() {
+ d._trigger("stop", b) !== !1 && d._clear()
+ })
+ } else this._trigger("stop", b) !== !1 && this._clear();
+ return ! 1
+ },
+ _mouseUp: function(b) {
+ this.options.iframeFix === !0 && a("div.ui-draggable-iframeFix").each(function() {
+ this.parentNode.removeChild(this)
+ }),
+ a.ui.ddmanager && a.ui.ddmanager.dragStop(this, b);
+ return a.ui.mouse.prototype._mouseUp.call(this, b)
+ },
+ cancel: function() {
+ this.helper.is(".ui-draggable-dragging") ? this._mouseUp({}) : this._clear();
+ return this
+ },
+ _getHandle: function(b) {
+ var c = !this.options.handle || !a(this.options.handle, this.element).length ? !0 : !1;
+ a(this.options.handle, this.element).find("*").andSelf().each(function() {
+ this == b.target && (c = !0)
+ });
+ return c
+ },
+ _createHelper: function(b) {
+ var c = this.options,
+ d = a.isFunction(c.helper) ? a(c.helper.apply(this.element[0], [b])) : c.helper == "clone" ? this.element.clone().removeAttr("id") : this.element;
+ d.parents("body").length || d.appendTo(c.appendTo == "parent" ? this.element[0].parentNode: c.appendTo),
+ d[0] != this.element[0] && !/(fixed|absolute)/.test(d.css("position")) && d.css("position", "absolute");
+ return d
+ },
+ _adjustOffsetFromHelper: function(b) {
+ typeof b == "string" && (b = b.split(" ")),
+ a.isArray(b) && (b = {
+ left: +b[0],
+ top: +b[1] || 0
+ }),
+ "left" in b && (this.offset.click.left = b.left + this.margins.left),
+ "right" in b && (this.offset.click.left = this.helperProportions.width - b.right + this.margins.left),
+ "top" in b && (this.offset.click.top = b.top + this.margins.top),
+ "bottom" in b && (this.offset.click.top = this.helperProportions.height - b.bottom + this.margins.top)
+ },
+ _getParentOffset: function() {
+ this.offsetParent = this.helper.offsetParent();
+ var b = this.offsetParent.offset();
+ this.cssPosition == "absolute" && this.scrollParent[0] != document && a.ui.contains(this.scrollParent[0], this.offsetParent[0]) && (b.left += this.scrollParent.scrollLeft(), b.top += this.scrollParent.scrollTop());
+ if (this.offsetParent[0] == document.body || this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == "html" && a.browser.msie) b = {
+ top: 0,
+ left: 0
+ };
+ return {
+ top: b.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
+ left: b.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
+ }
+ },
+ _getRelativeOffset: function() {
+ if (this.cssPosition == "relative") {
+ var a = this.element.position();
+ return {
+ top: a.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(),
+ left: a.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft()
+ }
+ }
+ return {
+ top: 0,
+ left: 0
+ }
+ },
+ _cacheMargins: function() {
+ this.margins = {
+ left: parseInt(this.element.css("marginLeft"), 10) || 0,
+ top: parseInt(this.element.css("marginTop"), 10) || 0,
+ right: parseInt(this.element.css("marginRight"), 10) || 0,
+ bottom: parseInt(this.element.css("marginBottom"), 10) || 0
+ }
+ },
+ _cacheHelperProportions: function() {
+ this.helperProportions = {
+ width: this.helper.outerWidth(),
+ height: this.helper.outerHeight()
+ }
+ },
+ _setContainment: function() {
+ var b = this.options;
+ b.containment == "parent" && (b.containment = this.helper[0].parentNode);
+ if (b.containment == "document" || b.containment == "window") this.containment = [b.containment == "document" ? 0 : a(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, b.containment == "document" ? 0 : a(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, (b.containment == "document" ? 0 : a(window).scrollLeft()) + a(b.containment == "document" ? document: window).width() - this.helperProportions.width - this.margins.left, (b.containment == "document" ? 0 : a(window).scrollTop()) + (a(b.containment == "document" ? document: window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top];
+ if (!/^(document|window|parent)$/.test(b.containment) && b.containment.constructor != Array) {
+ var c = a(b.containment),
+ d = c[0];
+ if (!d) return;
+ var e = c.offset(),
+ f = a(d).css("overflow") != "hidden";
+ this.containment = [(parseInt(a(d).css("borderLeftWidth"), 10) || 0) + (parseInt(a(d).css("paddingLeft"), 10) || 0), (parseInt(a(d).css("borderTopWidth"), 10) || 0) + (parseInt(a(d).css("paddingTop"), 10) || 0), (f ? Math.max(d.scrollWidth, d.offsetWidth) : d.offsetWidth) - (parseInt(a(d).css("borderLeftWidth"), 10) || 0) - (parseInt(a(d).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, (f ? Math.max(d.scrollHeight, d.offsetHeight) : d.offsetHeight) - (parseInt(a(d).css("borderTopWidth"), 10) || 0) - (parseInt(a(d).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom],
+ this.relative_container = c
+ } else b.containment.constructor == Array && (this.containment = b.containment)
+ },
+ _convertPositionTo: function(b, c) {
+ c || (c = this.position);
+ var d = b == "absolute" ? 1 : -1,
+ e = this.options,
+ f = this.cssPosition == "absolute" && (this.scrollParent[0] == document || !a.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent: this.scrollParent,
+ g = /(html|body)/i.test(f[0].tagName);
+ return {
+ top: c.top + this.offset.relative.top * d + this.offset.parent.top * d - (a.browser.safari && a.browser.version < 526 && this.cssPosition == "fixed" ? 0 : (this.cssPosition == "fixed" ? -this.scrollParent.scrollTop() : g ? 0 : f.scrollTop()) * d),
+ left: c.left + this.offset.relative.left * d + this.offset.parent.left * d - (a.browser.safari && a.browser.version < 526 && this.cssPosition == "fixed" ? 0 : (this.cssPosition == "fixed" ? -this.scrollParent.scrollLeft() : g ? 0 : f.scrollLeft()) * d)
+ }
+ },
+ _generatePosition: function(b) {
+ var c = this.options,
+ d = this.cssPosition == "absolute" && (this.scrollParent[0] == document || !a.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent: this.scrollParent,
+ e = /(html|body)/i.test(d[0].tagName),
+ f = b.pageX,
+ g = b.pageY;
+ if (this.originalPosition) {
+ var h;
+ if (this.containment) {
+ if (this.relative_container) {
+ var i = this.relative_container.offset();
+ h = [this.containment[0] + i.left, this.containment[1] + i.top, this.containment[2] + i.left, this.containment[3] + i.top]
+ } else h = this.containment;
+ b.pageX - this.offset.click.left < h[0] && (f = h[0] + this.offset.click.left),
+ b.pageY - this.offset.click.top < h[1] && (g = h[1] + this.offset.click.top),
+ b.pageX - this.offset.click.left > h[2] && (f = h[2] + this.offset.click.left),
+ b.pageY - this.offset.click.top > h[3] && (g = h[3] + this.offset.click.top)
+ }
+ if (c.grid) {
+ var j = c.grid[1] ? this.originalPageY + Math.round((g - this.originalPageY) / c.grid[1]) * c.grid[1] : this.originalPageY;
+ g = h ? j - this.offset.click.top < h[1] || j - this.offset.click.top > h[3] ? j - this.offset.click.top < h[1] ? j + c.grid[1] : j - c.grid[1] : j: j;
+ var k = c.grid[0] ? this.originalPageX + Math.round((f - this.originalPageX) / c.grid[0]) * c.grid[0] : this.originalPageX;
+ f = h ? k - this.offset.click.left < h[0] || k - this.offset.click.left > h[2] ? k - this.offset.click.left < h[0] ? k + c.grid[0] : k - c.grid[0] : k: k
+ }
+ }
+ return {
+ top: g - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + (a.browser.safari && a.browser.version < 526 && this.cssPosition == "fixed" ? 0 : this.cssPosition == "fixed" ? -this.scrollParent.scrollTop() : e ? 0 : d.scrollTop()),
+ left: f - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + (a.browser.safari && a.browser.version < 526 && this.cssPosition == "fixed" ? 0 : this.cssPosition == "fixed" ? -this.scrollParent.scrollLeft() : e ? 0 : d.scrollLeft())
+ }
+ },
+ _clear: function() {
+ this.helper.removeClass("ui-draggable-dragging"),
+ this.helper[0] != this.element[0] && !this.cancelHelperRemoval && this.helper.remove(),
+ this.helper = null,
+ this.cancelHelperRemoval = !1
+ },
+ _trigger: function(b, c, d) {
+ d = d || this._uiHash(),
+ a.ui.plugin.call(this, b, [c, d]),
+ b == "drag" && (this.positionAbs = this._convertPositionTo("absolute"));
+ return a.Widget.prototype._trigger.call(this, b, c, d)
+ },
+ plugins: {},
+ _uiHash: function(a) {
+ return {
+ helper: this.helper,
+ position: this.position,
+ originalPosition: this.originalPosition,
+ offset: this.positionAbs
+ }
+ }
+ }),
+ a.extend(a.ui.draggable, {
+ version: "1.8.18"
+ }),
+ a.ui.plugin.add("draggable", "connectToSortable", {
+ start: function(b, c) {
+ var d = a(this).data("draggable"),
+ e = d.options,
+ f = a.extend({},
+ c, {
+ item: d.element
+ });
+ d.sortables = [],
+ a(e.connectToSortable).each(function() {
+ var c = a.data(this, "sortable");
+ c && !c.options.disabled && (d.sortables.push({
+ instance: c,
+ shouldRevert: c.options.revert
+ }), c.refreshPositions(), c._trigger("activate", b, f))
+ })
+ },
+ stop: function(b, c) {
+ var d = a(this).data("draggable"),
+ e = a.extend({},
+ c, {
+ item: d.element
+ });
+ a.each(d.sortables,
+ function() {
+ this.instance.isOver ? (this.instance.isOver = 0, d.cancelHelperRemoval = !0, this.instance.cancelHelperRemoval = !1, this.shouldRevert && (this.instance.options.revert = !0), this.instance._mouseStop(b), this.instance.options.helper = this.instance.options._helper, d.options.helper == "original" && this.instance.currentItem.css({
+ top: "auto",
+ left: "auto"
+ })) : (this.instance.cancelHelperRemoval = !1, this.instance._trigger("deactivate", b, e))
+ })
+ },
+ drag: function(b, c) {
+ var d = a(this).data("draggable"),
+ e = this,
+ f = function(b) {
+ var c = this.offset.click.top,
+ d = this.offset.click.left,
+ e = this.positionAbs.top,
+ f = this.positionAbs.left,
+ g = b.height,
+ h = b.width,
+ i = b.top,
+ j = b.left;
+ return a.ui.isOver(e + c, f + d, i, j, g, h)
+ };
+ a.each(d.sortables,
+ function(f) {
+ this.instance.positionAbs = d.positionAbs,
+ this.instance.helperProportions = d.helperProportions,
+ this.instance.offset.click = d.offset.click,
+ this.instance._intersectsWith(this.instance.containerCache) ? (this.instance.isOver || (this.instance.isOver = 1, this.instance.currentItem = a(e).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item", !0), this.instance.options._helper = this.instance.options.helper, this.instance.options.helper = function() {
+ return c.helper[0]
+ },
+ b.target = this.instance.currentItem[0], this.instance._mouseCapture(b, !0), this.instance._mouseStart(b, !0, !0), this.instance.offset.click.top = d.offset.click.top, this.instance.offset.click.left = d.offset.click.left, this.instance.offset.parent.left -= d.offset.parent.left - this.instance.offset.parent.left, this.instance.offset.parent.top -= d.offset.parent.top - this.instance.offset.parent.top, d._trigger("toSortable", b), d.dropped = this.instance.element, d.currentItem = d.element, this.instance.fromOutside = d), this.instance.currentItem && this.instance._mouseDrag(b)) : this.instance.isOver && (this.instance.isOver = 0, this.instance.cancelHelperRemoval = !0, this.instance.options.revert = !1, this.instance._trigger("out", b, this.instance._uiHash(this.instance)), this.instance._mouseStop(b, !0), this.instance.options.helper = this.instance.options._helper, this.instance.currentItem.remove(), this.instance.placeholder && this.instance.placeholder.remove(), d._trigger("fromSortable", b), d.dropped = !1)
+ })
+ }
+ }),
+ a.ui.plugin.add("draggable", "cursor", {
+ start: function(b, c) {
+ var d = a("body"),
+ e = a(this).data("draggable").options;
+ d.css("cursor") && (e._cursor = d.css("cursor")),
+ d.css("cursor", e.cursor)
+ },
+ stop: function(b, c) {
+ var d = a(this).data("draggable").options;
+ d._cursor && a("body").css("cursor", d._cursor)
+ }
+ }),
+ a.ui.plugin.add("draggable", "opacity", {
+ start: function(b, c) {
+ var d = a(c.helper),
+ e = a(this).data("draggable").options;
+ d.css("opacity") && (e._opacity = d.css("opacity")),
+ d.css("opacity", e.opacity)
+ },
+ stop: function(b, c) {
+ var d = a(this).data("draggable").options;
+ d._opacity && a(c.helper).css("opacity", d._opacity)
+ }
+ }),
+ a.ui.plugin.add("draggable", "scroll", {
+ start: function(b, c) {
+ var d = a(this).data("draggable");
+ d.scrollParent[0] != document && d.scrollParent[0].tagName != "HTML" && (d.overflowOffset = d.scrollParent.offset())
+ },
+ drag: function(b, c) {
+ var d = a(this).data("draggable"),
+ e = d.options,
+ f = !1;
+ if (d.scrollParent[0] != document && d.scrollParent[0].tagName != "HTML") {
+ if (!e.axis || e.axis != "x") d.overflowOffset.top + d.scrollParent[0].offsetHeight - b.pageY < e.scrollSensitivity ? d.scrollParent[0].scrollTop = f = d.scrollParent[0].scrollTop + e.scrollSpeed: b.pageY - d.overflowOffset.top < e.scrollSensitivity && (d.scrollParent[0].scrollTop = f = d.scrollParent[0].scrollTop - e.scrollSpeed);
+ if (!e.axis || e.axis != "y") d.overflowOffset.left + d.scrollParent[0].offsetWidth - b.pageX < e.scrollSensitivity ? d.scrollParent[0].scrollLeft = f = d.scrollParent[0].scrollLeft + e.scrollSpeed: b.pageX - d.overflowOffset.left < e.scrollSensitivity && (d.scrollParent[0].scrollLeft = f = d.scrollParent[0].scrollLeft - e.scrollSpeed)
+ } else {
+ if (!e.axis || e.axis != "x") b.pageY - a(document).scrollTop() < e.scrollSensitivity ? f = a(document).scrollTop(a(document).scrollTop() - e.scrollSpeed) : a(window).height() - (b.pageY - a(document).scrollTop()) < e.scrollSensitivity && (f = a(document).scrollTop(a(document).scrollTop() + e.scrollSpeed));
+ if (!e.axis || e.axis != "y") b.pageX - a(document).scrollLeft() < e.scrollSensitivity ? f = a(document).scrollLeft(a(document).scrollLeft() - e.scrollSpeed) : a(window).width() - (b.pageX - a(document).scrollLeft()) < e.scrollSensitivity && (f = a(document).scrollLeft(a(document).scrollLeft() + e.scrollSpeed))
+ }
+ f !== !1 && a.ui.ddmanager && !e.dropBehaviour && a.ui.ddmanager.prepareOffsets(d, b)
+ }
+ }),
+ a.ui.plugin.add("draggable", "snap", {
+ start: function(b, c) {
+ var d = a(this).data("draggable"),
+ e = d.options;
+ d.snapElements = [],
+ a(e.snap.constructor != String ? e.snap.items || ":data(draggable)": e.snap).each(function() {
+ var b = a(this),
+ c = b.offset();
+ this != d.element[0] && d.snapElements.push({
+ item: this,
+ width: b.outerWidth(),
+ height: b.outerHeight(),
+ top: c.top,
+ left: c.left
+ })
+ })
+ },
+ drag: function(b, c) {
+ var d = a(this).data("draggable"),
+ e = d.options,
+ f = e.snapTolerance,
+ g = c.offset.left,
+ h = g + d.helperProportions.width,
+ i = c.offset.top,
+ j = i + d.helperProportions.height;
+ for (var k = d.snapElements.length - 1; k >= 0; k--) {
+ var l = d.snapElements[k].left,
+ m = l + d.snapElements[k].width,
+ n = d.snapElements[k].top,
+ o = n + d.snapElements[k].height;
+ if (! (l - f < g && g < m + f && n - f < i && i < o + f || l - f < g && g < m + f && n - f < j && j < o + f || l - f < h && h < m + f && n - f < i && i < o + f || l - f < h && h < m + f && n - f < j && j < o + f)) {
+ d.snapElements[k].snapping && d.options.snap.release && d.options.snap.release.call(d.element, b, a.extend(d._uiHash(), {
+ snapItem: d.snapElements[k].item
+ })),
+ d.snapElements[k].snapping = !1;
+ continue
+ }
+ if (e.snapMode != "inner") {
+ var p = Math.abs(n - j) <= f,
+ q = Math.abs(o - i) <= f,
+ r = Math.abs(l - h) <= f,
+ s = Math.abs(m - g) <= f;
+ p && (c.position.top = d._convertPositionTo("relative", {
+ top: n - d.helperProportions.height,
+ left: 0
+ }).top - d.margins.top),
+ q && (c.position.top = d._convertPositionTo("relative", {
+ top: o,
+ left: 0
+ }).top - d.margins.top),
+ r && (c.position.left = d._convertPositionTo("relative", {
+ top: 0,
+ left: l - d.helperProportions.width
+ }).left - d.margins.left),
+ s && (c.position.left = d._convertPositionTo("relative", {
+ top: 0,
+ left: m
+ }).left - d.margins.left)
+ }
+ var t = p || q || r || s;
+ if (e.snapMode != "outer") {
+ var p = Math.abs(n - i) <= f,
+ q = Math.abs(o - j) <= f,
+ r = Math.abs(l - g) <= f,
+ s = Math.abs(m - h) <= f;
+ p && (c.position.top = d._convertPositionTo("relative", {
+ top: n,
+ left: 0
+ }).top - d.margins.top),
+ q && (c.position.top = d._convertPositionTo("relative", {
+ top: o - d.helperProportions.height,
+ left: 0
+ }).top - d.margins.top),
+ r && (c.position.left = d._convertPositionTo("relative", {
+ top: 0,
+ left: l
+ }).left - d.margins.left),
+ s && (c.position.left = d._convertPositionTo("relative", {
+ top: 0,
+ left: m - d.helperProportions.width
+ }).left - d.margins.left)
+ } ! d.snapElements[k].snapping && (p || q || r || s || t) && d.options.snap.snap && d.options.snap.snap.call(d.element, b, a.extend(d._uiHash(), {
+ snapItem: d.snapElements[k].item
+ })),
+ d.snapElements[k].snapping = p || q || r || s || t
+ }
+ }
+ }),
+ a.ui.plugin.add("draggable", "stack", {
+ start: function(b, c) {
+ var d = a(this).data("draggable").options,
+ e = a.makeArray(a(d.stack)).sort(function(b, c) {
+ return (parseInt(a(b).css("zIndex"), 10) || 0) - (parseInt(a(c).css("zIndex"), 10) || 0)
+ });
+ if ( !! e.length) {
+ var f = parseInt(e[0].style.zIndex) || 0;
+ a(e).each(function(a) {
+ this.style.zIndex = f + a
+ }),
+ this[0].style.zIndex = f + e.length
+ }
+ }
+ }),
+ a.ui.plugin.add("draggable", "zIndex", {
+ start: function(b, c) {
+ var d = a(c.helper),
+ e = a(this).data("draggable").options;
+ d.css("zIndex") && (e._zIndex = d.css("zIndex")),
+ d.css("zIndex", e.zIndex)
+ },
+ stop: function(b, c) {
+ var d = a(this).data("draggable").options;
+ d._zIndex && a(c.helper).css("zIndex", d._zIndex)
+ }
+ })
+})(jQuery);
+/*
+ * jQuery UI Droppable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Droppables
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.widget.js
+ * jquery.ui.mouse.js
+ * jquery.ui.draggable.js
+ */
+(function(a, b) {
+ a.widget("ui.droppable", {
+ widgetEventPrefix: "drop",
+ options: {
+ accept: "*",
+ activeClass: !1,
+ addClasses: !0,
+ greedy: !1,
+ hoverClass: !1,
+ scope: "default",
+ tolerance: "intersect"
+ },
+ _create: function() {
+ var b = this.options,
+ c = b.accept;
+ this.isover = 0,
+ this.isout = 1,
+ this.accept = a.isFunction(c) ? c: function(a) {
+ return a.is(c)
+ },
+ this.proportions = {
+ width: this.element[0].offsetWidth,
+ height: this.element[0].offsetHeight
+ },
+ a.ui.ddmanager.droppables[b.scope] = a.ui.ddmanager.droppables[b.scope] || [],
+ a.ui.ddmanager.droppables[b.scope].push(this),
+ b.addClasses && this.element.addClass("ui-droppable")
+ },
+ destroy: function() {
+ var b = a.ui.ddmanager.droppables[this.options.scope];
+ for (var c = 0; c < b.length; c++) b[c] == this && b.splice(c, 1);
+ this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");
+ return this
+ },
+ _setOption: function(b, c) {
+ b == "accept" && (this.accept = a.isFunction(c) ? c: function(a) {
+ return a.is(c)
+ }),
+ a.Widget.prototype._setOption.apply(this, arguments)
+ },
+ _activate: function(b) {
+ var c = a.ui.ddmanager.current;
+ this.options.activeClass && this.element.addClass(this.options.activeClass),
+ c && this._trigger("activate", b, this.ui(c))
+ },
+ _deactivate: function(b) {
+ var c = a.ui.ddmanager.current;
+ this.options.activeClass && this.element.removeClass(this.options.activeClass),
+ c && this._trigger("deactivate", b, this.ui(c))
+ },
+ _over: function(b) {
+ var c = a.ui.ddmanager.current; !! c && (c.currentItem || c.element)[0] != this.element[0] && this.accept.call(this.element[0], c.currentItem || c.element) && (this.options.hoverClass && this.element.addClass(this.options.hoverClass), this._trigger("over", b, this.ui(c)))
+ },
+ _out: function(b) {
+ var c = a.ui.ddmanager.current; !! c && (c.currentItem || c.element)[0] != this.element[0] && this.accept.call(this.element[0], c.currentItem || c.element) && (this.options.hoverClass && this.element.removeClass(this.options.hoverClass), this._trigger("out", b, this.ui(c)))
+ },
+ _drop: function(b, c) {
+ var d = c || a.ui.ddmanager.current;
+ if (!d || (d.currentItem || d.element)[0] == this.element[0]) return ! 1;
+ var e = !1;
+ this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function() {
+ var b = a.data(this, "droppable");
+ if (b.options.greedy && !b.options.disabled && b.options.scope == d.options.scope && b.accept.call(b.element[0], d.currentItem || d.element) && a.ui.intersect(d, a.extend(b, {
+ offset: b.element.offset()
+ }), b.options.tolerance)) {
+ e = !0;
+ return ! 1
+ }
+ });
+ if (e) return ! 1;
+ if (this.accept.call(this.element[0], d.currentItem || d.element)) {
+ this.options.activeClass && this.element.removeClass(this.options.activeClass),
+ this.options.hoverClass && this.element.removeClass(this.options.hoverClass),
+ this._trigger("drop", b, this.ui(d));
+ return this.element
+ }
+ return ! 1
+ },
+ ui: function(a) {
+ return {
+ draggable: a.currentItem || a.element,
+ helper: a.helper,
+ position: a.position,
+ offset: a.positionAbs
+ }
+ }
+ }),
+ a.extend(a.ui.droppable, {
+ version: "1.8.18"
+ }),
+ a.ui.intersect = function(b, c, d) {
+ if (!c.offset) return ! 1;
+ var e = (b.positionAbs || b.position.absolute).left,
+ f = e + b.helperProportions.width,
+ g = (b.positionAbs || b.position.absolute).top,
+ h = g + b.helperProportions.height,
+ i = c.offset.left,
+ j = i + c.proportions.width,
+ k = c.offset.top,
+ l = k + c.proportions.height;
+ switch (d) {
+ case "fit":
+ return i <= e && f <= j && k <= g && h <= l;
+ case "intersect":
+ return i < e + b.helperProportions.width / 2 && f - b.helperProportions.width / 2 < j && k < g + b.helperProportions.height / 2 && h - b.helperProportions.height / 2 < l;
+ case "pointer":
+ var m = (b.positionAbs || b.position.absolute).left + (b.clickOffset || b.offset.click).left,
+ n = (b.positionAbs || b.position.absolute).top + (b.clickOffset || b.offset.click).top,
+ o = a.ui.isOver(n, m, k, i, c.proportions.height, c.proportions.width);
+ return o;
+ case "touch":
+ return (g >= k && g <= l || h >= k && h <= l || g < k && h > l) && (e >= i && e <= j || f >= i && f <= j || e < i && f > j);
+ default:
+ return ! 1
+ }
+ },
+ a.ui.ddmanager = {
+ current: null,
+ droppables: {
+ "default": []
+ },
+ prepareOffsets: function(b, c) {
+ var d = a.ui.ddmanager.droppables[b.options.scope] || [],
+ e = c ? c.type: null,
+ f = (b.currentItem || b.element).find(":data(droppable)").andSelf();
+ droppablesLoop: for (var g = 0; g < d.length; g++) {
+ if (d[g].options.disabled || b && !d[g].accept.call(d[g].element[0], b.currentItem || b.element)) continue;
+ for (var h = 0; h < f.length; h++) if (f[h] == d[g].element[0]) {
+ d[g].proportions.height = 0;
+ continue droppablesLoop
+ }
+ d[g].visible = d[g].element.css("display") != "none";
+ if (!d[g].visible) continue;
+ e == "mousedown" && d[g]._activate.call(d[g], c),
+ d[g].offset = d[g].element.offset(),
+ d[g].proportions = {
+ width: d[g].element[0].offsetWidth,
+ height: d[g].element[0].offsetHeight
+ }
+ }
+ },
+ drop: function(b, c) {
+ var d = !1;
+ a.each(a.ui.ddmanager.droppables[b.options.scope] || [],
+ function() { ! this.options || (!this.options.disabled && this.visible && a.ui.intersect(b, this, this.options.tolerance) && (d = this._drop.call(this, c) || d), !this.options.disabled && this.visible && this.accept.call(this.element[0], b.currentItem || b.element) && (this.isout = 1, this.isover = 0, this._deactivate.call(this, c)))
+ });
+ return d
+ },
+ dragStart: function(b, c) {
+ b.element.parents(":not(body,html)").bind("scroll.droppable",
+ function() {
+ b.options.refreshPositions || a.ui.ddmanager.prepareOffsets(b, c)
+ })
+ },
+ drag: function(b, c) {
+ b.options.refreshPositions && a.ui.ddmanager.prepareOffsets(b, c),
+ a.each(a.ui.ddmanager.droppables[b.options.scope] || [],
+ function() {
+ if (! (this.options.disabled || this.greedyChild || !this.visible)) {
+ var d = a.ui.intersect(b, this, this.options.tolerance),
+ e = !d && this.isover == 1 ? "isout": d && this.isover == 0 ? "isover": null;
+ if (!e) return;
+ var f;
+ if (this.options.greedy) {
+ var g = this.element.parents(":data(droppable):eq(0)");
+ g.length && (f = a.data(g[0], "droppable"), f.greedyChild = e == "isover" ? 1 : 0)
+ }
+ f && e == "isover" && (f.isover = 0, f.isout = 1, f._out.call(f, c)),
+ this[e] = 1,
+ this[e == "isout" ? "isover": "isout"] = 0,
+ this[e == "isover" ? "_over": "_out"].call(this, c),
+ f && e == "isout" && (f.isout = 0, f.isover = 1, f._over.call(f, c))
+ }
+ })
+ },
+ dragStop: function(b, c) {
+ b.element.parents(":not(body,html)").unbind("scroll.droppable"),
+ b.options.refreshPositions || a.ui.ddmanager.prepareOffsets(b, c)
+ }
+ }
+})(jQuery);
+/*
+ * jQuery UI Resizable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizables
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.mouse.js
+ * jquery.ui.widget.js
+ */
+(function(a, b) {
+ a.widget("ui.resizable", a.ui.mouse, {
+ widgetEventPrefix: "resize",
+ options: {
+ alsoResize: !1,
+ animate: !1,
+ animateDuration: "slow",
+ animateEasing: "swing",
+ aspectRatio: !1,
+ autoHide: !1,
+ containment: !1,
+ ghost: !1,
+ grid: !1,
+ handles: "e,s,se",
+ helper: !1,
+ maxHeight: null,
+ maxWidth: null,
+ minHeight: 10,
+ minWidth: 10,
+ zIndex: 1e3
+ },
+ _create: function() {
+ var b = this,
+ c = this.options;
+ this.element.addClass("ui-resizable"),
+ a.extend(this, {
+ _aspectRatio: !!c.aspectRatio,
+ aspectRatio: c.aspectRatio,
+ originalElement: this.element,
+ _proportionallyResizeElements: [],
+ _helper: c.helper || c.ghost || c.animate ? c.helper || "ui-resizable-helper": null
+ }),
+ this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i) && (this.element.wrap(a('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({
+ position: this.element.css("position"),
+ width: this.element.outerWidth(),
+ height: this.element.outerHeight(),
+ top: this.element.css("top"),
+ left: this.element.css("left")
+ })), this.element = this.element.parent().data("resizable", this.element.data("resizable")), this.elementIsWrapper = !0, this.element.css({
+ marginLeft: this.originalElement.css("marginLeft"),
+ marginTop: this.originalElement.css("marginTop"),
+ marginRight: this.originalElement.css("marginRight"),
+ marginBottom: this.originalElement.css("marginBottom")
+ }), this.originalElement.css({
+ marginLeft: 0,
+ marginTop: 0,
+ marginRight: 0,
+ marginBottom: 0
+ }), this.originalResizeStyle = this.originalElement.css("resize"), this.originalElement.css("resize", "none"), this._proportionallyResizeElements.push(this.originalElement.css({
+ position: "static",
+ zoom: 1,
+ display: "block"
+ })), this.originalElement.css({
+ margin: this.originalElement.css("margin")
+ }), this._proportionallyResize()),
+ this.handles = c.handles || (a(".ui-resizable-handle", this.element).length ? {
+ n: ".ui-resizable-n",
+ e: ".ui-resizable-e",
+ s: ".ui-resizable-s",
+ w: ".ui-resizable-w",
+ se: ".ui-resizable-se",
+ sw: ".ui-resizable-sw",
+ ne: ".ui-resizable-ne",
+ nw: ".ui-resizable-nw"
+ }: "e,s,se");
+ if (this.handles.constructor == String) {
+ this.handles == "all" && (this.handles = "n,e,s,w,se,sw,ne,nw");
+ var d = this.handles.split(",");
+ this.handles = {};
+ for (var e = 0; e < d.length; e++) {
+ var f = a.trim(d[e]),
+ g = "ui-resizable-" + f,
+ h = a('<div class="ui-resizable-handle ' + g + '"></div>');
+ /sw|se|ne|nw/.test(f) && h.css({
+ zIndex: ++c.zIndex
+ }),
+ "se" == f && h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),
+ this.handles[f] = ".ui-resizable-" + f,
+ this.element.append(h)
+ }
+ }
+ this._renderAxis = function(b) {
+ b = b || this.element;
+ for (var c in this.handles) {
+ this.handles[c].constructor == String && (this.handles[c] = a(this.handles[c], this.element).show());
+ if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {
+ var d = a(this.handles[c], this.element),
+ e = 0;
+ e = /sw|ne|nw|se|n|s/.test(c) ? d.outerHeight() : d.outerWidth();
+ var f = ["padding", /ne|nw|n/.test(c) ? "Top": /se|sw|s/.test(c) ? "Bottom": /^e$/.test(c) ? "Right": "Left"].join("");
+ b.css(f, e),
+ this._proportionallyResize()
+ }
+ if (!a(this.handles[c]).length) continue
+ }
+ },
+ this._renderAxis(this.element),
+ this._handles = a(".ui-resizable-handle", this.element).disableSelection(),
+ this._handles.mouseover(function() {
+ if (!b.resizing) {
+ if (this.className) var a = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
+ b.axis = a && a[1] ? a[1] : "se"
+ }
+ }),
+ c.autoHide && (this._handles.hide(), a(this.element).addClass("ui-resizable-autohide").hover(function() {
+ c.disabled || (a(this).removeClass("ui-resizable-autohide"), b._handles.show())
+ },
+ function() {
+ c.disabled || b.resizing || (a(this).addClass("ui-resizable-autohide"), b._handles.hide())
+ })),
+ this._mouseInit()
+ },
+ destroy: function() {
+ this._mouseDestroy();
+ var b = function(b) {
+ a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()
+ };
+ if (this.elementIsWrapper) {
+ b(this.element);
+ var c = this.element;
+ c.after(this.originalElement.css({
+ position: c.css("position"),
+ width: c.outerWidth(),
+ height: c.outerHeight(),
+ top: c.css("top"),
+ left: c.css("left")
+ })).remove()
+ }
+ this.originalElement.css("resize", this.originalResizeStyle),
+ b(this.originalElement);
+ return this
+ },
+ _mouseCapture: function(b) {
+ var c = !1;
+ for (var d in this.handles) a(this.handles[d])[0] == b.target && (c = !0);
+ return ! this.options.disabled && c
+ },
+ _mouseStart: function(b) {
+ var d = this.options,
+ e = this.element.position(),
+ f = this.element;
+ this.resizing = !0,
+ this.documentScroll = {
+ top: a(document).scrollTop(),
+ left: a(document).scrollLeft()
+ },
+ (f.is(".ui-draggable") || /absolute/.test(f.css("position"))) && f.css({
+ position: "absolute",
+ top: e.top,
+ left: e.left
+ }),
+ this._renderProxy();
+ var g = c(this.helper.css("left")),
+ h = c(this.helper.css("top"));
+ d.containment && (g += a(d.containment).scrollLeft() || 0, h += a(d.containment).scrollTop() || 0),
+ this.offset = this.helper.offset(),
+ this.position = {
+ left: g,
+ top: h
+ },
+ this.size = this._helper ? {
+ width: f.outerWidth(),
+ height: f.outerHeight()
+ }: {
+ width: f.width(),
+ height: f.height()
+ },
+ this.originalSize = this._helper ? {
+ width: f.outerWidth(),
+ height: f.outerHeight()
+ }: {
+ width: f.width(),
+ height: f.height()
+ },
+ this.originalPosition = {
+ left: g,
+ top: h
+ },
+ this.sizeDiff = {
+ width: f.outerWidth() - f.width(),
+ height: f.outerHeight() - f.height()
+ },
+ this.originalMousePosition = {
+ left: b.pageX,
+ top: b.pageY
+ },
+ this.aspectRatio = typeof d.aspectRatio == "number" ? d.aspectRatio: this.originalSize.width / this.originalSize.height || 1;
+ var i = a(".ui-resizable-" + this.axis).css("cursor");
+ a("body").css("cursor", i == "auto" ? this.axis + "-resize": i),
+ f.addClass("ui-resizable-resizing"),
+ this._propagate("start", b);
+ return ! 0
+ },
+ _mouseDrag: function(b) {
+ var c = this.helper,
+ d = this.options,
+ e = {},
+ f = this,
+ g = this.originalMousePosition,
+ h = this.axis,
+ i = b.pageX - g.left || 0,
+ j = b.pageY - g.top || 0,
+ k = this._change[h];
+ if (!k) return ! 1;
+ var l = k.apply(this, [b, i, j]),
+ m = a.browser.msie && a.browser.version < 7,
+ n = this.sizeDiff;
+ this._updateVirtualBoundaries(b.shiftKey);
+ if (this._aspectRatio || b.shiftKey) l = this._updateRatio(l, b);
+ l = this._respectSize(l, b),
+ this._propagate("resize", b),
+ c.css({
+ top: this.position.top + "px",
+ left: this.position.left + "px",
+ width: this.size.width + "px",
+ height: this.size.height + "px"
+ }),
+ !this._helper && this._proportionallyResizeElements.length && this._proportionallyResize(),
+ this._updateCache(l),
+ this._trigger("resize", b, this.ui());
+ return ! 1
+ },
+ _mouseStop: function(b) {
+ this.resizing = !1;
+ var c = this.options,
+ d = this;
+ if (this._helper) {
+ var e = this._proportionallyResizeElements,
+ f = e.length && /textarea/i.test(e[0].nodeName),
+ g = f && a.ui.hasScroll(e[0], "left") ? 0 : d.sizeDiff.height,
+ h = f ? 0 : d.sizeDiff.width,
+ i = {
+ width: d.helper.width() - h,
+ height: d.helper.height() - g
+ },
+ j = parseInt(d.element.css("left"), 10) + (d.position.left - d.originalPosition.left) || null,
+ k = parseInt(d.element.css("top"), 10) + (d.position.top - d.originalPosition.top) || null;
+ c.animate || this.element.css(a.extend(i, {
+ top: k,
+ left: j
+ })),
+ d.helper.height(d.size.height),
+ d.helper.width(d.size.width),
+ this._helper && !c.animate && this._proportionallyResize()
+ }
+ a("body").css("cursor", "auto"),
+ this.element.removeClass("ui-resizable-resizing"),
+ this._propagate("stop", b),
+ this._helper && this.helper.remove();
+ return ! 1
+ },
+ _updateVirtualBoundaries: function(a) {
+ var b = this.options,
+ c, e, f, g, h;
+ h = {
+ minWidth: d(b.minWidth) ? b.minWidth: 0,
+ maxWidth: d(b.maxWidth) ? b.maxWidth: Infinity,
+ minHeight: d(b.minHeight) ? b.minHeight: 0,
+ maxHeight: d(b.maxHeight) ? b.maxHeight: Infinity
+ };
+ if (this._aspectRatio || a) c = h.minHeight * this.aspectRatio,
+ f = h.minWidth / this.aspectRatio,
+ e = h.maxHeight * this.aspectRatio,
+ g = h.maxWidth / this.aspectRatio,
+ c > h.minWidth && (h.minWidth = c),
+ f > h.minHeight && (h.minHeight = f),
+ e < h.maxWidth && (h.maxWidth = e),
+ g < h.maxHeight && (h.maxHeight = g);
+ this._vBoundaries = h
+ },
+ _updateCache: function(a) {
+ var b = this.options;
+ this.offset = this.helper.offset(),
+ d(a.left) && (this.position.left = a.left),
+ d(a.top) && (this.position.top = a.top),
+ d(a.height) && (this.size.height = a.height),
+ d(a.width) && (this.size.width = a.width)
+ },
+ _updateRatio: function(a, b) {
+ var c = this.options,
+ e = this.position,
+ f = this.size,
+ g = this.axis;
+ d(a.height) ? a.width = a.height * this.aspectRatio: d(a.width) && (a.height = a.width / this.aspectRatio),
+ g == "sw" && (a.left = e.left + (f.width - a.width), a.top = null),
+ g == "nw" && (a.top = e.top + (f.height - a.height), a.left = e.left + (f.width - a.width));
+ return a
+ },
+ _respectSize: function(a, b) {
+ var c = this.helper,
+ e = this._vBoundaries,
+ f = this._aspectRatio || b.shiftKey,
+ g = this.axis,
+ h = d(a.width) && e.maxWidth && e.maxWidth < a.width,
+ i = d(a.height) && e.maxHeight && e.maxHeight < a.height,
+ j = d(a.width) && e.minWidth && e.minWidth > a.width,
+ k = d(a.height) && e.minHeight && e.minHeight > a.height;
+ j && (a.width = e.minWidth),
+ k && (a.height = e.minHeight),
+ h && (a.width = e.maxWidth),
+ i && (a.height = e.maxHeight);
+ var l = this.originalPosition.left + this.originalSize.width,
+ m = this.position.top + this.size.height,
+ n = /sw|nw|w/.test(g),
+ o = /nw|ne|n/.test(g);
+ j && n && (a.left = l - e.minWidth),
+ h && n && (a.left = l - e.maxWidth),
+ k && o && (a.top = m - e.minHeight),
+ i && o && (a.top = m - e.maxHeight);
+ var p = !a.width && !a.height;
+ p && !a.left && a.top ? a.top = null: p && !a.top && a.left && (a.left = null);
+ return a
+ },
+ _proportionallyResize: function() {
+ var b = this.options;
+ if ( !! this._proportionallyResizeElements.length) {
+ var c = this.helper || this.element;
+ for (var d = 0; d < this._proportionallyResizeElements.length; d++) {
+ var e = this._proportionallyResizeElements[d];
+ if (!this.borderDif) {
+ var f = [e.css("borderTopWidth"), e.css("borderRightWidth"), e.css("borderBottomWidth"), e.css("borderLeftWidth")],
+ g = [e.css("paddingTop"), e.css("paddingRight"), e.css("paddingBottom"), e.css("paddingLeft")];
+ this.borderDif = a.map(f,
+ function(a, b) {
+ var c = parseInt(a, 10) || 0,
+ d = parseInt(g[b], 10) || 0;
+ return c + d
+ })
+ }
+ if (a.browser.msie && ( !! a(c).is(":hidden") || !!a(c).parents(":hidden").length)) continue;
+ e.css({
+ height: c.height() - this.borderDif[0] - this.borderDif[2] || 0,
+ width: c.width() - this.borderDif[1] - this.borderDif[3] || 0
+ })
+ }
+ }
+ },
+ _renderProxy: function() {
+ var b = this.element,
+ c = this.options;
+ this.elementOffset = b.offset();
+ if (this._helper) {
+ this.helper = this.helper || a('<div style="overflow:hidden;"></div>');
+ var d = a.browser.msie && a.browser.version < 7,
+ e = d ? 1 : 0,
+ f = d ? 2 : -1;
+ this.helper.addClass(this._helper).css({
+ width: this.element.outerWidth() + f,
+ height: this.element.outerHeight() + f,
+ position: "absolute",
+ left: this.elementOffset.left - e + "px",
+ top: this.elementOffset.top - e + "px",
+ zIndex: ++c.zIndex
+ }),
+ this.helper.appendTo("body").disableSelection()
+ } else this.helper = this.element
+ },
+ _change: {
+ e: function(a, b, c) {
+ return {
+ width: this.originalSize.width + b
+ }
+ },
+ w: function(a, b, c) {
+ var d = this.options,
+ e = this.originalSize,
+ f = this.originalPosition;
+ return {
+ left: f.left + b,
+ width: e.width - b
+ }
+ },
+ n: function(a, b, c) {
+ var d = this.options,
+ e = this.originalSize,
+ f = this.originalPosition;
+ return {
+ top: f.top + c,
+ height: e.height - c
+ }
+ },
+ s: function(a, b, c) {
+ return {
+ height: this.originalSize.height + c
+ }
+ },
+ se: function(b, c, d) {
+ return a.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [b, c, d]))
+ },
+ sw: function(b, c, d) {
+ return a.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [b, c, d]))
+ },
+ ne: function(b, c, d) {
+ return a.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [b, c, d]))
+ },
+ nw: function(b, c, d) {
+ return a.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [b, c, d]))
+ }
+ },
+ _propagate: function(b, c) {
+ a.ui.plugin.call(this, b, [c, this.ui()]),
+ b != "resize" && this._trigger(b, c, this.ui())
+ },
+ plugins: {},
+ ui: function() {
+ return {
+ originalElement: this.originalElement,
+ element: this.element,
+ helper: this.helper,
+ position: this.position,
+ size: this.size,
+ originalSize: this.originalSize,
+ originalPosition: this.originalPosition
+ }
+ }
+ }),
+ a.extend(a.ui.resizable, {
+ version: "1.8.18"
+ }),
+ a.ui.plugin.add("resizable", "alsoResize", {
+ start: function(b, c) {
+ var d = a(this).data("resizable"),
+ e = d.options,
+ f = function(b) {
+ a(b).each(function() {
+ var b = a(this);
+ b.data("resizable-alsoresize", {
+ width: parseInt(b.width(), 10),
+ height: parseInt(b.height(), 10),
+ left: parseInt(b.css("left"), 10),
+ top: parseInt(b.css("top"), 10)
+ })
+ })
+ };
+ typeof e.alsoResize == "object" && !e.alsoResize.parentNode ? e.alsoResize.length ? (e.alsoResize = e.alsoResize[0], f(e.alsoResize)) : a.each(e.alsoResize,
+ function(a) {
+ f(a)
+ }) : f(e.alsoResize)
+ },
+ resize: function(b, c) {
+ var d = a(this).data("resizable"),
+ e = d.options,
+ f = d.originalSize,
+ g = d.originalPosition,
+ h = {
+ height: d.size.height - f.height || 0,
+ width: d.size.width - f.width || 0,
+ top: d.position.top - g.top || 0,
+ left: d.position.left - g.left || 0
+ },
+ i = function(b, d) {
+ a(b).each(function() {
+ var b = a(this),
+ e = a(this).data("resizable-alsoresize"),
+ f = {},
+ g = d && d.length ? d: b.parents(c.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"];
+ a.each(g,
+ function(a, b) {
+ var c = (e[b] || 0) + (h[b] || 0);
+ c && c >= 0 && (f[b] = c || null)
+ }),
+ b.css(f)
+ })
+ };
+ typeof e.alsoResize == "object" && !e.alsoResize.nodeType ? a.each(e.alsoResize,
+ function(a, b) {
+ i(a, b)
+ }) : i(e.alsoResize)
+ },
+ stop: function(b, c) {
+ a(this).removeData("resizable-alsoresize")
+ }
+ }),
+ a.ui.plugin.add("resizable", "animate", {
+ stop: function(b, c) {
+ var d = a(this).data("resizable"),
+ e = d.options,
+ f = d._proportionallyResizeElements,
+ g = f.length && /textarea/i.test(f[0].nodeName),
+ h = g && a.ui.hasScroll(f[0], "left") ? 0 : d.sizeDiff.height,
+ i = g ? 0 : d.sizeDiff.width,
+ j = {
+ width: d.size.width - i,
+ height: d.size.height - h
+ },
+ k = parseInt(d.element.css("left"), 10) + (d.position.left - d.originalPosition.left) || null,
+ l = parseInt(d.element.css("top"), 10) + (d.position.top - d.originalPosition.top) || null;
+ d.element.animate(a.extend(j, l && k ? {
+ top: l,
+ left: k
+ }: {}), {
+ duration: e.animateDuration,
+ easing: e.animateEasing,
+ step: function() {
+ var c = {
+ width: parseInt(d.element.css("width"), 10),
+ height: parseInt(d.element.css("height"), 10),
+ top: parseInt(d.element.css("top"), 10),
+ left: parseInt(d.element.css("left"), 10)
+ };
+ f && f.length && a(f[0]).css({
+ width: c.width,
+ height: c.height
+ }),
+ d._updateCache(c),
+ d._propagate("resize", b)
+ }
+ })
+ }
+ }),
+ a.ui.plugin.add("resizable", "containment", {
+ start: function(b, d) {
+ var e = a(this).data("resizable"),
+ f = e.options,
+ g = e.element,
+ h = f.containment,
+ i = h instanceof a ? h.get(0) : /parent/.test(h) ? g.parent().get(0) : h;
+ if ( !! i) {
+ e.containerElement = a(i);
+ if (/document/.test(h) || h == document) e.containerOffset = {
+ left: 0,
+ top: 0
+ },
+ e.containerPosition = {
+ left: 0,
+ top: 0
+ },
+ e.parentData = {
+ element: a(document),
+ left: 0,
+ top: 0,
+ width: a(document).width(),
+ height: a(document).height() || document.body.parentNode.scrollHeight
+ };
+ else {
+ var j = a(i),
+ k = [];
+ a(["Top", "Right", "Left", "Bottom"]).each(function(a, b) {
+ k[a] = c(j.css("padding" + b))
+ }),
+ e.containerOffset = j.offset(),
+ e.containerPosition = j.position(),
+ e.containerSize = {
+ height: j.innerHeight() - k[3],
+ width: j.innerWidth() - k[1]
+ };
+ var l = e.containerOffset,
+ m = e.containerSize.height,
+ n = e.containerSize.width,
+ o = a.ui.hasScroll(i, "left") ? i.scrollWidth: n,
+ p = a.ui.hasScroll(i) ? i.scrollHeight: m;
+ e.parentData = {
+ element: i,
+ left: l.left,
+ top: l.top,
+ width: o,
+ height: p
+ }
+ }
+ }
+ },
+ resize: function(b, c) {
+ var d = a(this).data("resizable"),
+ e = d.options,
+ f = d.containerSize,
+ g = d.containerOffset,
+ h = d.size,
+ i = d.position,
+ j = d._aspectRatio || b.shiftKey,
+ k = {
+ top: 0,
+ left: 0
+ },
+ l = d.containerElement;
+ l[0] != document && /static/.test(l.css("position")) && (k = g),
+ i.left < (d._helper ? g.left: 0) && (d.size.width = d.size.width + (d._helper ? d.position.left - g.left: d.position.left - k.left), j && (d.size.height = d.size.width / e.aspectRatio), d.position.left = e.helper ? g.left: 0),
+ i.top < (d._helper ? g.top: 0) && (d.size.height = d.size.height + (d._helper ? d.position.top - g.top: d.position.top), j && (d.size.width = d.size.height * e.aspectRatio), d.position.top = d._helper ? g.top: 0),
+ d.offset.left = d.parentData.left + d.position.left,
+ d.offset.top = d.parentData.top + d.position.top;
+ var m = Math.abs((d._helper ? d.offset.left - k.left: d.offset.left - k.left) + d.sizeDiff.width),
+ n = Math.abs((d._helper ? d.offset.top - k.top: d.offset.top - g.top) + d.sizeDiff.height),
+ o = d.containerElement.get(0) == d.element.parent().get(0),
+ p = /relative|absolute/.test(d.containerElement.css("position"));
+ o && p && (m -= d.parentData.left),
+ m + d.size.width >= d.parentData.width && (d.size.width = d.parentData.width - m, j && (d.size.height = d.size.width / d.aspectRatio)),
+ n + d.size.height >= d.parentData.height && (d.size.height = d.parentData.height - n, j && (d.size.width = d.size.height * d.aspectRatio))
+ },
+ stop: function(b, c) {
+ var d = a(this).data("resizable"),
+ e = d.options,
+ f = d.position,
+ g = d.containerOffset,
+ h = d.containerPosition,
+ i = d.containerElement,
+ j = a(d.helper),
+ k = j.offset(),
+ l = j.outerWidth() - d.sizeDiff.width,
+ m = j.outerHeight() - d.sizeDiff.height;
+ d._helper && !e.animate && /relative/.test(i.css("position")) && a(this).css({
+ left: k.left - h.left - g.left,
+ width: l,
+ height: m
+ }),
+ d._helper && !e.animate && /static/.test(i.css("position")) && a(this).css({
+ left: k.left - h.left - g.left,
+ width: l,
+ height: m
+ })
+ }
+ }),
+ a.ui.plugin.add("resizable", "ghost", {
+ start: function(b, c) {
+ var d = a(this).data("resizable"),
+ e = d.options,
+ f = d.size;
+ d.ghost = d.originalElement.clone(),
+ d.ghost.css({
+ opacity: .25,
+ display: "block",
+ position: "relative",
+ height: f.height,
+ width: f.width,
+ margin: 0,
+ left: 0,
+ top: 0
+ }).addClass("ui-resizable-ghost").addClass(typeof e.ghost == "string" ? e.ghost: ""),
+ d.ghost.appendTo(d.helper)
+ },
+ resize: function(b, c) {
+ var d = a(this).data("resizable"),
+ e = d.options;
+ d.ghost && d.ghost.css({
+ position: "relative",
+ height: d.size.height,
+ width: d.size.width
+ })
+ },
+ stop: function(b, c) {
+ var d = a(this).data("resizable"),
+ e = d.options;
+ d.ghost && d.helper && d.helper.get(0).removeChild(d.ghost.get(0))
+ }
+ }),
+ a.ui.plugin.add("resizable", "grid", {
+ resize: function(b, c) {
+ var d = a(this).data("resizable"),
+ e = d.options,
+ f = d.size,
+ g = d.originalSize,
+ h = d.originalPosition,
+ i = d.axis,
+ j = e._aspectRatio || b.shiftKey;
+ e.grid = typeof e.grid == "number" ? [e.grid, e.grid] : e.grid;
+ var k = Math.round((f.width - g.width) / (e.grid[0] || 1)) * (e.grid[0] || 1),
+ l = Math.round((f.height - g.height) / (e.grid[1] || 1)) * (e.grid[1] || 1);
+ /^(se|s|e)$/.test(i) ? (d.size.width = g.width + k, d.size.height = g.height + l) : /^(ne)$/.test(i) ? (d.size.width = g.width + k, d.size.height = g.height + l, d.position.top = h.top - l) : /^(sw)$/.test(i) ? (d.size.width = g.width + k, d.size.height = g.height + l, d.position.left = h.left - k) : (d.size.width = g.width + k, d.size.height = g.height + l, d.position.top = h.top - l, d.position.left = h.left - k)
+ }
+ });
+ var c = function(a) {
+ return parseInt(a, 10) || 0
+ },
+ d = function(a) {
+ return ! isNaN(parseInt(a, 10))
+ }
+})(jQuery);
+/*
+ * jQuery UI Selectable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectables
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.mouse.js
+ * jquery.ui.widget.js
+ */
+(function(a, b) {
+ a.widget("ui.selectable", a.ui.mouse, {
+ options: {
+ appendTo: "body",
+ autoRefresh: !0,
+ distance: 0,
+ filter: "*",
+ tolerance: "touch"
+ },
+ _create: function() {
+ var b = this;
+ this.element.addClass("ui-selectable"),
+ this.dragged = !1;
+ var c;
+ this.refresh = function() {
+ c = a(b.options.filter, b.element[0]),
+ c.addClass("ui-selectee"),
+ c.each(function() {
+ var b = a(this),
+ c = b.offset();
+ a.data(this, "selectable-item", {
+ element: this,
+ $element: b,
+ left: c.left,
+ top: c.top,
+ right: c.left + b.outerWidth(),
+ bottom: c.top + b.outerHeight(),
+ startselected: !1,
+ selected: b.hasClass("ui-selected"),
+ selecting: b.hasClass("ui-selecting"),
+ unselecting: b.hasClass("ui-unselecting")
+ })
+ })
+ },
+ this.refresh(),
+ this.selectees = c.addClass("ui-selectee"),
+ this._mouseInit(),
+ this.helper = a("<div class='ui-selectable-helper'></div>")
+ },
+ destroy: function() {
+ this.selectees.removeClass("ui-selectee").removeData("selectable-item"),
+ this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),
+ this._mouseDestroy();
+ return this
+ },
+ _mouseStart: function(b) {
+ var c = this;
+ this.opos = [b.pageX, b.pageY];
+ if (!this.options.disabled) {
+ var d = this.options;
+ this.selectees = a(d.filter, this.element[0]),
+ this._trigger("start", b),
+ a(d.appendTo).append(this.helper),
+ this.helper.css({
+ left: b.clientX,
+ top: b.clientY,
+ width: 0,
+ height: 0
+ }),
+ d.autoRefresh && this.refresh(),
+ this.selectees.filter(".ui-selected").each(function() {
+ var d = a.data(this, "selectable-item");
+ d.startselected = !0,
+ !b.metaKey && !b.ctrlKey && (d.$element.removeClass("ui-selected"), d.selected = !1, d.$element.addClass("ui-unselecting"), d.unselecting = !0, c._trigger("unselecting", b, {
+ unselecting: d.element
+ }))
+ }),
+ a(b.target).parents().andSelf().each(function() {
+ var d = a.data(this, "selectable-item");
+ if (d) {
+ var e = !b.metaKey && !b.ctrlKey || !d.$element.hasClass("ui-selected");
+ d.$element.removeClass(e ? "ui-unselecting": "ui-selected").addClass(e ? "ui-selecting": "ui-unselecting"),
+ d.unselecting = !e,
+ d.selecting = e,
+ d.selected = e,
+ e ? c._trigger("selecting", b, {
+ selecting: d.element
+ }) : c._trigger("unselecting", b, {
+ unselecting: d.element
+ });
+ return ! 1
+ }
+ })
+ }
+ },
+ _mouseDrag: function(b) {
+ var c = this;
+ this.dragged = !0;
+ if (!this.options.disabled) {
+ var d = this.options,
+ e = this.opos[0],
+ f = this.opos[1],
+ g = b.pageX,
+ h = b.pageY;
+ if (e > g) {
+ var i = g;
+ g = e,
+ e = i
+ }
+ if (f > h) {
+ var i = h;
+ h = f,
+ f = i
+ }
+ this.helper.css({
+ left: e,
+ top: f,
+ width: g - e,
+ height: h - f
+ }),
+ this.selectees.each(function() {
+ var i = a.data(this, "selectable-item");
+ if ( !! i && i.element != c.element[0]) {
+ var j = !1;
+ d.tolerance == "touch" ? j = !(i.left > g || i.right < e || i.top > h || i.bottom < f) : d.tolerance == "fit" && (j = i.left > e && i.right < g && i.top > f && i.bottom < h),
+ j ? (i.selected && (i.$element.removeClass("ui-selected"), i.selected = !1), i.unselecting && (i.$element.removeClass("ui-unselecting"), i.unselecting = !1), i.selecting || (i.$element.addClass("ui-selecting"), i.selecting = !0, c._trigger("selecting", b, {
+ selecting: i.element
+ }))) : (i.selecting && ((b.metaKey || b.ctrlKey) && i.startselected ? (i.$element.removeClass("ui-selecting"), i.selecting = !1, i.$element.addClass("ui-selected"), i.selected = !0) : (i.$element.removeClass("ui-selecting"), i.selecting = !1, i.startselected && (i.$element.addClass("ui-unselecting"), i.unselecting = !0), c._trigger("unselecting", b, {
+ unselecting: i.element
+ }))), i.selected && !b.metaKey && !b.ctrlKey && !i.startselected && (i.$element.removeClass("ui-selected"), i.selected = !1, i.$element.addClass("ui-unselecting"), i.unselecting = !0, c._trigger("unselecting", b, {
+ unselecting: i.element
+ })))
+ }
+ });
+ return ! 1
+ }
+ },
+ _mouseStop: function(b) {
+ var c = this;
+ this.dragged = !1;
+ var d = this.options;
+ a(".ui-unselecting", this.element[0]).each(function() {
+ var d = a.data(this, "selectable-item");
+ d.$element.removeClass("ui-unselecting"),
+ d.unselecting = !1,
+ d.startselected = !1,
+ c._trigger("unselected", b, {
+ unselected: d.element
+ })
+ }),
+ a(".ui-selecting", this.element[0]).each(function() {
+ var d = a.data(this, "selectable-item");
+ d.$element.removeClass("ui-selecting").addClass("ui-selected"),
+ d.selecting = !1,
+ d.selected = !0,
+ d.startselected = !0,
+ c._trigger("selected", b, {
+ selected: d.element
+ })
+ }),
+ this._trigger("stop", b),
+ this.helper.remove();
+ return ! 1
+ }
+ }),
+ a.extend(a.ui.selectable, {
+ version: "1.8.18"
+ })
+})(jQuery);
+/*
+ * jQuery UI Sortable 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Sortables
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.mouse.js
+ * jquery.ui.widget.js
+ */
+(function(a, b) {
+ a.widget("ui.sortable", a.ui.mouse, {
+ widgetEventPrefix: "sort",
+ ready: !1,
+ options: {
+ appendTo: "parent",
+ axis: !1,
+ connectWith: !1,
+ containment: !1,
+ cursor: "auto",
+ cursorAt: !1,
+ dropOnEmpty: !0,
+ forcePlaceholderSize: !1,
+ forceHelperSize: !1,
+ grid: !1,
+ handle: !1,
+ helper: "original",
+ items: "> *",
+ opacity: !1,
+ placeholder: !1,
+ revert: !1,
+ scroll: !0,
+ scrollSensitivity: 20,
+ scrollSpeed: 20,
+ scope: "default",
+ tolerance: "intersect",
+ zIndex: 1e3
+ },
+ _create: function() {
+ var a = this.options;
+ this.containerCache = {},
+ this.element.addClass("ui-sortable"),
+ this.refresh(),
+ this.floating = this.items.length ? a.axis === "x" || /left|right/.test(this.items[0].item.css("float")) || /inline|table-cell/.test(this.items[0].item.css("display")) : !1,
+ this.offset = this.element.offset(),
+ this._mouseInit(),
+ this.ready = !0
+ },
+ destroy: function() {
+ a.Widget.prototype.destroy.call(this),
+ this.element.removeClass("ui-sortable ui-sortable-disabled"),
+ this._mouseDestroy();
+ for (var b = this.items.length - 1; b >= 0; b--) this.items[b].item.removeData(this.widgetName + "-item");
+ return this
+ },
+ _setOption: function(b, c) {
+ b === "disabled" ? (this.options[b] = c, this.widget()[c ? "addClass": "removeClass"]("ui-sortable-disabled")) : a.Widget.prototype._setOption.apply(this, arguments)
+ },
+ _mouseCapture: function(b, c) {
+ var d = this;
+ if (this.reverting) return ! 1;
+ if (this.options.disabled || this.options.type == "static") return ! 1;
+ this._refreshItems(b);
+ var e = null,
+ f = this,
+ g = a(b.target).parents().each(function() {
+ if (a.data(this, d.widgetName + "-item") == f) {
+ e = a(this);
+ return ! 1
+ }
+ });
+ a.data(b.target, d.widgetName + "-item") == f && (e = a(b.target));
+ if (!e) return ! 1;
+ if (this.options.handle && !c) {
+ var h = !1;
+ a(this.options.handle, e).find("*").andSelf().each(function() {
+ this == b.target && (h = !0)
+ });
+ if (!h) return ! 1
+ }
+ this.currentItem = e,
+
+ this._removeCurrentsFromItems();
+ return ! 0
+ },
+ _mouseStart: function(b, c, d) {
+ var e = this.options,
+ f = this;
+ this.currentContainer = this,
+ this.refreshPositions(),
+ this.helper = this._createHelper(b),
+ this._cacheHelperProportions(),
+ this._cacheMargins(),
+ this.scrollParent = this.helper.scrollParent(),
+ this.offset = this.currentItem.offset(),
+ this.offset = {
+ top: this.offset.top - this.margins.top,
+ left: this.offset.left - this.margins.left
+ },
+ this.helper.css("position", "absolute"),
+ this.cssPosition = this.helper.css("position"),
+ a.extend(this.offset, {
+ click: {
+ left: b.pageX - this.offset.left,
+ top: b.pageY - this.offset.top
+ },
+ parent: this._getParentOffset(),
+ relative: this._getRelativeOffset()
+ }),
+ this.originalPosition = this._generatePosition(b),
+ this.originalPageX = b.pageX,
+ this.originalPageY = b.pageY,
+ e.cursorAt && this._adjustOffsetFromHelper(e.cursorAt),
+ this.domPosition = {
+ prev: this.currentItem.prev()[0],
+ parent: this.currentItem.parent()[0]
+ },
+ this.helper[0] != this.currentItem[0] && this.currentItem.hide(),
+ this._createPlaceholder(),
+ e.containment && this._setContainment(),
+ e.cursor && (a("body").css("cursor") && (this._storedCursor = a("body").css("cursor")), a("body").css("cursor", e.cursor)),
+ e.opacity && (this.helper.css("opacity") && (this._storedOpacity = this.helper.css("opacity")), this.helper.css("opacity", e.opacity)),
+ e.zIndex && (this.helper.css("zIndex") && (this._storedZIndex = this.helper.css("zIndex")), this.helper.css("zIndex", e.zIndex)),
+ this.scrollParent[0] != document && this.scrollParent[0].tagName != "HTML" && (this.overflowOffset = this.scrollParent.offset()),
+ this._trigger("start", b, this._uiHash()),
+ this._preserveHelperProportions || this._cacheHelperProportions();
+ if (!d) for (var g = this.containers.length - 1; g >= 0; g--) this.containers[g]._trigger("activate", b, f._uiHash(this));
+ a.ui.ddmanager && (a.ui.ddmanager.current = this),
+ a.ui.ddmanager && !e.dropBehaviour && a.ui.ddmanager.prepareOffsets(this, b),
+ this.dragging = !0,
+ this.helper.addClass("ui-sortable-helper"),
+ this._mouseDrag(b);
+ return ! 0
+ },
+ _mouseDrag: function(b) {
+ this.position = this._generatePosition(b),
+ this.positionAbs = this._convertPositionTo("absolute"),
+ this.lastPositionAbs || (this.lastPositionAbs = this.positionAbs);
+ if (this.options.scroll) {
+ var c = this.options,
+ d = !1;
+ this.scrollParent[0] != document && this.scrollParent[0].tagName != "HTML" ? (this.overflowOffset.top + this.scrollParent[0].offsetHeight - b.pageY < c.scrollSensitivity ? this.scrollParent[0].scrollTop = d = this.scrollParent[0].scrollTop + c.scrollSpeed: b.pageY - this.overflowOffset.top < c.scrollSensitivity && (this.scrollParent[0].scrollTop = d = this.scrollParent[0].scrollTop - c.scrollSpeed), this.overflowOffset.left + this.scrollParent[0].offsetWidth - b.pageX < c.scrollSensitivity ? this.scrollParent[0].scrollLeft = d = this.scrollParent[0].scrollLeft + c.scrollSpeed: b.pageX - this.overflowOffset.left < c.scrollSensitivity && (this.scrollParent[0].scrollLeft = d = this.scrollParent[0].scrollLeft - c.scrollSpeed)) : (b.pageY - a(document).scrollTop() < c.scrollSensitivity ? d = a(document).scrollTop(a(document).scrollTop() - c.scrollSpeed) : a(window).height() - (b.pageY - a(document).scrollTop()) < c.scrollSensitivity && (d = a(document).scrollTop(a(document).scrollTop() + c.scrollSpeed)), b.pageX - a(document).scrollLeft() < c.scrollSensitivity ? d = a(document).scrollLeft(a(document).scrollLeft() - c.scrollSpeed) : a(window).width() - (b.pageX - a(document).scrollLeft()) < c.scrollSensitivity && (d = a(document).scrollLeft(a(document).scrollLeft() + c.scrollSpeed))),
+ d !== !1 && a.ui.ddmanager && !c.dropBehaviour && a.ui.ddmanager.prepareOffsets(this, b)
+ }
+ this.positionAbs = this._convertPositionTo("absolute");
+ if (!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left + "px";
+ if (!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top + "px";
+ for (var e = this.items.length - 1; e >= 0; e--) {
+ var f = this.items[e],
+ g = f.item[0],
+ h = this._intersectsWithPointer(f);
+ if (!h) continue;
+ if (g != this.currentItem[0] && this.placeholder[h == 1 ? "next": "prev"]()[0] != g && !a.ui.contains(this.placeholder[0], g) && (this.options.type == "semi-dynamic" ? !a.ui.contains(this.element[0], g) : !0)) {
+ this.direction = h == 1 ? "down": "up";
+ if (this.options.tolerance == "pointer" || this._intersectsWithSides(f)) this._rearrange(b, f);
+ else break;
+ this._trigger("change", b, this._uiHash());
+ break
+ }
+ }
+ this._contactContainers(b),
+ a.ui.ddmanager && a.ui.ddmanager.drag(this, b),
+ this._trigger("sort", b, this._uiHash()),
+ this.lastPositionAbs = this.positionAbs;
+ return ! 1
+ },
+ _mouseStop: function(b, c) {
+ if ( !! b) {
+ a.ui.ddmanager && !this.options.dropBehaviour && a.ui.ddmanager.drop(this, b);
+ if (this.options.revert) {
+ var d = this,
+ e = d.placeholder.offset();
+ d.reverting = !0,
+ a(this.helper).animate({
+ left: e.left - this.offset.parent.left - d.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),
+ top: e.top - this.offset.parent.top - d.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)
+ },
+ parseInt(this.options.revert, 10) || 500,
+ function() {
+ d._clear(b)
+ })
+ } else this._clear(b, c);
+ return ! 1
+ }
+ },
+ cancel: function() {
+ var b = this;
+ if (this.dragging) {
+ this._mouseUp({
+ target: null
+ }),
+ this.options.helper == "original" ? this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper") : this.currentItem.show();
+ for (var c = this.containers.length - 1; c >= 0; c--) this.containers[c]._trigger("deactivate", null, b._uiHash(this)),
+ this.containers[c].containerCache.over && (this.containers[c]._trigger("out", null, b._uiHash(this)), this.containers[c].containerCache.over = 0)
+ }
+ this.placeholder && (this.placeholder[0].parentNode && this.placeholder[0].parentNode.removeChild(this.placeholder[0]), this.options.helper != "original" && this.helper && this.helper[0].parentNode && this.helper.remove(), a.extend(this, {
+ helper: null,
+ dragging: !1,
+ reverting: !1,
+ _noFinalSort: null
+ }), this.domPosition.prev ? a(this.domPosition.prev).after(this.currentItem) : a(this.domPosition.parent).prepend(this.currentItem));
+ return this
+ },
+ serialize: function(b) {
+ var c = this._getItemsAsjQuery(b && b.connected),
+ d = [];
+ b = b || {},
+ a(c).each(function() {
+ var c = (a(b.item || this).attr(b.attribute || "id") || "").match(b.expression || /(.+)[-=_](.+)/);
+ c && d.push((b.key || c[1] + "[]") + "=" + (b.key && b.expression ? c[1] : c[2]))
+ }),
+ !d.length && b.key && d.push(b.key + "=");
+ return d.join("&")
+ },
+ toArray: function(b) {
+ var c = this._getItemsAsjQuery(b && b.connected),
+ d = [];
+ b = b || {},
+ c.each(function() {
+ d.push(a(b.item || this).attr(b.attribute || "id") || "")
+ });
+ return d
+ },
+ _intersectsWith: function(a) {
+ var b = this.positionAbs.left,
+ c = b + this.helperProportions.width,
+ d = this.positionAbs.top,
+ e = d + this.helperProportions.height,
+ f = a.left,
+ g = f + a.width,
+ h = a.top,
+ i = h + a.height,
+ j = this.offset.click.top,
+ k = this.offset.click.left,
+ l = d + j > h && d + j < i && b + k > f && b + k < g;
+ return this.options.tolerance == "pointer" || this.options.forcePointerForContainers || this.options.tolerance != "pointer" && this.helperProportions[this.floating ? "width": "height"] > a[this.floating ? "width": "height"] ? l: f < b + this.helperProportions.width / 2 && c - this.helperProportions.width / 2 < g && h < d + this.helperProportions.height / 2 && e - this.helperProportions.height / 2 < i
+ },
+ _intersectsWithPointer: function(b) {
+ var c = a.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, b.top, b.height),
+ d = a.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, b.left, b.width),
+ e = c && d,
+ f = this._getDragVerticalDirection(),
+ g = this._getDragHorizontalDirection();
+ if (!e) return ! 1;
+ return this.floating ? g && g == "right" || f == "down" ? 2 : 1 : f && (f == "down" ? 2 : 1)
+ },
+ _intersectsWithSides: function(b) {
+ var c = a.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, b.top + b.height / 2, b.height),
+ d = a.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, b.left + b.width / 2, b.width),
+ e = this._getDragVerticalDirection(),
+ f = this._getDragHorizontalDirection();
+ return this.floating && f ? f == "right" && d || f == "left" && !d: e && (e == "down" && c || e == "up" && !c)
+ },
+ _getDragVerticalDirection: function() {
+ var a = this.positionAbs.top - this.lastPositionAbs.top;
+ return a != 0 && (a > 0 ? "down": "up")
+ },
+ _getDragHorizontalDirection: function() {
+ var a = this.positionAbs.left - this.lastPositionAbs.left;
+ return a != 0 && (a > 0 ? "right": "left")
+ },
+ refresh: function(a) {
+ this._refreshItems(a),
+ this.refreshPositions();
+ return this
+ },
+ _connectWith: function() {
+ var a = this.options;
+ return a.connectWith.constructor == String ? [a.connectWith] : a.connectWith
+ },
+ _getItemsAsjQuery: function(b) {
+ var c = this,
+ d = [],
+ e = [],
+ f = this._connectWith();
+ if (f && b) for (var g = f.length - 1; g >= 0; g--) {
+ var h = a(f[g]);
+ for (var i = h.length - 1; i >= 0; i--) {
+ var j = a.data(h[i], this.widgetName);
+ j && j != this && !j.options.disabled && e.push([a.isFunction(j.options.items) ? j.options.items.call(j.element) : a(j.options.items, j.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), j])
+ }
+ }
+ e.push([a.isFunction(this.options.items) ? this.options.items.call(this.element, null, {
+ options: this.options,
+ item: this.currentItem
+ }) : a(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]);
+ for (var g = e.length - 1; g >= 0; g--) e[g][0].each(function() {
+ d.push(this)
+ });
+ return a(d)
+ },
+ _removeCurrentsFromItems: function() {
+ var a = this.currentItem.find(":data(" + this.widgetName + "-item)");
+ for (var b = 0; b < this.items.length; b++) for (var c = 0; c < a.length; c++) a[c] == this.items[b].item[0] && this.items.splice(b, 1)
+ },
+ _refreshItems: function(b) {
+ this.items = [],
+ this.containers = [this];
+ var c = this.items,
+ d = this,
+ e = [[a.isFunction(this.options.items) ? this.options.items.call(this.element[0], b, {
+ item: this.currentItem
+ }) : a(this.options.items, this.element), this]],
+ f = this._connectWith();
+ if (f && this.ready) for (var g = f.length - 1; g >= 0; g--) {
+ var h = a(f[g]);
+ for (var i = h.length - 1; i >= 0; i--) {
+ var j = a.data(h[i], this.widgetName);
+ j && j != this && !j.options.disabled && (e.push([a.isFunction(j.options.items) ? j.options.items.call(j.element[0], b, {
+ item: this.currentItem
+ }) : a(j.options.items, j.element), j]), this.containers.push(j))
+ }
+ }
+ for (var g = e.length - 1; g >= 0; g--) {
+ var k = e[g][1],
+ l = e[g][0];
+ for (var i = 0,
+ m = l.length; i < m; i++) {
+ var n = a(l[i]);
+ n.data(this.widgetName + "-item", k),
+ c.push({
+ item: n,
+ instance: k,
+ width: 0,
+ height: 0,
+ left: 0,
+ top: 0
+ })
+ }
+ }
+ },
+ refreshPositions: function(b) {
+ this.offsetParent && this.helper && (this.offset.parent = this._getParentOffset());
+ for (var c = this.items.length - 1; c >= 0; c--) {
+ var d = this.items[c];
+ if (d.instance != this.currentContainer && this.currentContainer && d.item[0] != this.currentItem[0]) continue;
+ var e = this.options.toleranceElement ? a(this.options.toleranceElement, d.item) : d.item;
+ b || (d.width = e.outerWidth(), d.height = e.outerHeight());
+ var f = e.offset();
+ d.left = f.left,
+ d.top = f.top
+ }
+ if (this.options.custom && this.options.custom.refreshContainers) this.options.custom.refreshContainers.call(this);
+ else for (var c = this.containers.length - 1; c >= 0; c--) {
+ var f = this.containers[c].element.offset();
+ this.containers[c].containerCache.left = f.left,
+ this.containers[c].containerCache.top = f.top,
+ this.containers[c].containerCache.width = this.containers[c].element.outerWidth(),
+ this.containers[c].containerCache.height = this.containers[c].element.outerHeight()
+ }
+ return this
+ },
+ _createPlaceholder: function(b) {
+ var c = b || this,
+ d = c.options;
+ if (!d.placeholder || d.placeholder.constructor == String) {
+ var e = d.placeholder;
+ d.placeholder = {
+ element: function() {
+ var b = a(document.createElement(c.currentItem[0].nodeName)).addClass(e || c.currentItem[0].className + " ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];
+ e || (b.style.visibility = "hidden");
+ return b
+ },
+ update: function(a, b) {
+ if (!e || !!d.forcePlaceholderSize) b.height() || b.height(c.currentItem.innerHeight() - parseInt(c.currentItem.css("paddingTop") || 0, 10) - parseInt(c.currentItem.css("paddingBottom") || 0, 10)),
+ b.width() || b.width(c.currentItem.innerWidth() - parseInt(c.currentItem.css("paddingLeft") || 0, 10) - parseInt(c.currentItem.css("paddingRight") || 0, 10))
+ }
+ }
+ }
+ c.placeholder = a(d.placeholder.element.call(c.element, c.currentItem)),
+ c.currentItem.after(c.placeholder),
+ d.placeholder.update(c, c.placeholder)
+ },
+ _contactContainers: function(b) {
+ var c = null,
+ d = null;
+ for (var e = this.containers.length - 1; e >= 0; e--) {
+ if (a.ui.contains(this.currentItem[0], this.containers[e].element[0])) continue;
+ if (this._intersectsWith(this.containers[e].containerCache)) {
+ if (c && a.ui.contains(this.containers[e].element[0], c.element[0])) continue;
+ c = this.containers[e],
+ d = e
+ } else this.containers[e].containerCache.over && (this.containers[e]._trigger("out", b, this._uiHash(this)), this.containers[e].containerCache.over = 0)
+ }
+ if ( !! c) if (this.containers.length === 1) this.containers[d]._trigger("over", b, this._uiHash(this)),
+ this.containers[d].containerCache.over = 1;
+ else if (this.currentContainer != this.containers[d]) {
+ var f = 1e4,
+ g = null,
+ h = this.positionAbs[this.containers[d].floating ? "left": "top"];
+ for (var i = this.items.length - 1; i >= 0; i--) {
+ if (!a.ui.contains(this.containers[d].element[0], this.items[i].item[0])) continue;
+ var j = this.items[i][this.containers[d].floating ? "left": "top"];
+ Math.abs(j - h) < f && (f = Math.abs(j - h), g = this.items[i])
+ }
+ if (!g && !this.options.dropOnEmpty) return;
+ this.currentContainer = this.containers[d],
+ g ? this._rearrange(b, g, null, !0) : this._rearrange(b, null, this.containers[d].element, !0),
+ this._trigger("change", b, this._uiHash()),
+ this.containers[d]._trigger("change", b, this._uiHash(this)),
+ this.options.placeholder.update(this.currentContainer, this.placeholder),
+ this.containers[d]._trigger("over", b, this._uiHash(this)),
+ this.containers[d].containerCache.over = 1
+ }
+ },
+ _createHelper: function(b) {
+ var c = this.options,
+ d = a.isFunction(c.helper) ? a(c.helper.apply(this.element[0], [b, this.currentItem])) : c.helper == "clone" ? this.currentItem.clone() : this.currentItem;
+ d.parents("body").length || a(c.appendTo != "parent" ? c.appendTo: this.currentItem[0].parentNode)[0].appendChild(d[0]),
+ d[0] == this.currentItem[0] && (this._storedCSS = {
+ width: this.currentItem[0].style.width,
+ height: this.currentItem[0].style.height,
+ position: this.currentItem.css("position"),
+ top: this.currentItem.css("top"),
+ left: this.currentItem.css("left")
+ }),
+ (d[0].style.width == "" || c.forceHelperSize) && d.width(this.currentItem.width()),
+ (d[0].style.height == "" || c.forceHelperSize) && d.height(this.currentItem.height());
+ return d
+ },
+ _adjustOffsetFromHelper: function(b) {
+ typeof b == "string" && (b = b.split(" ")),
+ a.isArray(b) && (b = {
+ left: +b[0],
+ top: +b[1] || 0
+ }),
+ "left" in b && (this.offset.click.left = b.left + this.margins.left),
+ "right" in b && (this.offset.click.left = this.helperProportions.width - b.right + this.margins.left),
+ "top" in b && (this.offset.click.top = b.top + this.margins.top),
+ "bottom" in b && (this.offset.click.top = this.helperProportions.height - b.bottom + this.margins.top)
+ },
+ _getParentOffset: function() {
+ this.offsetParent = this.helper.offsetParent();
+ var b = this.offsetParent.offset();
+ this.cssPosition == "absolute" && this.scrollParent[0] != document && a.ui.contains(this.scrollParent[0], this.offsetParent[0]) && (b.left += this.scrollParent.scrollLeft(), b.top += this.scrollParent.scrollTop());
+ if (this.offsetParent[0] == document.body || this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == "html" && a.browser.msie) b = {
+ top: 0,
+ left: 0
+ };
+ return {
+ top: b.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
+ left: b.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
+ }
+ },
+ _getRelativeOffset: function() {
+ if (this.cssPosition == "relative") {
+ var a = this.currentItem.position();
+ return {
+ top: a.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(),
+ left: a.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft()
+ }
+ }
+ return {
+ top: 0,
+ left: 0
+ }
+ },
+ _cacheMargins: function() {
+ this.margins = {
+ left: parseInt(this.currentItem.css("marginLeft"), 10) || 0,
+ top: parseInt(this.currentItem.css("marginTop"), 10) || 0
+ }
+ },
+ _cacheHelperProportions: function() {
+ this.helperProportions = {
+ width: this.helper.outerWidth(),
+ height: this.helper.outerHeight()
+ }
+ },
+ _setContainment: function() {
+ var b = this.options;
+ b.containment == "parent" && (b.containment = this.helper[0].parentNode);
+ if (b.containment == "document" || b.containment == "window") this.containment = [0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, a(b.containment == "document" ? document: window).width() - this.helperProportions.width - this.margins.left, (a(b.containment == "document" ? document: window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top];
+ if (!/^(document|window|parent)$/.test(b.containment)) {
+ var c = a(b.containment)[0],
+ d = a(b.containment).offset(),
+ e = a(c).css("overflow") != "hidden";
+ this.containment = [d.left + (parseInt(a(c).css("borderLeftWidth"), 10) || 0) + (parseInt(a(c).css("paddingLeft"), 10) || 0) - this.margins.left, d.top + (parseInt(a(c).css("borderTopWidth"), 10) || 0) + (parseInt(a(c).css("paddingTop"), 10) || 0) - this.margins.top, d.left + (e ? Math.max(c.scrollWidth, c.offsetWidth) : c.offsetWidth) - (parseInt(a(c).css("borderLeftWidth"), 10) || 0) - (parseInt(a(c).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left, d.top + (e ? Math.max(c.scrollHeight, c.offsetHeight) : c.offsetHeight) - (parseInt(a(c).css("borderTopWidth"), 10) || 0) - (parseInt(a(c).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top]
+ }
+ },
+ _convertPositionTo: function(b, c) {
+ c || (c = this.position);
+ var d = b == "absolute" ? 1 : -1,
+ e = this.options,
+ f = this.cssPosition == "absolute" && (this.scrollParent[0] == document || !a.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent: this.scrollParent,
+ g = /(html|body)/i.test(f[0].tagName);
+ return {
+ top: c.top + this.offset.relative.top * d + this.offset.parent.top * d - (a.browser.safari && this.cssPosition == "fixed" ? 0 : (this.cssPosition == "fixed" ? -this.scrollParent.scrollTop() : g ? 0 : f.scrollTop()) * d),
+ left: c.left + this.offset.relative.left * d + this.offset.parent.left * d - (a.browser.safari && this.cssPosition == "fixed" ? 0 : (this.cssPosition == "fixed" ? -this.scrollParent.scrollLeft() : g ? 0 : f.scrollLeft()) * d)
+ }
+ },
+ _generatePosition: function(b) {
+ var c = this.options,
+ d = this.cssPosition == "absolute" && (this.scrollParent[0] == document || !a.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent: this.scrollParent,
+ e = /(html|body)/i.test(d[0].tagName);
+ this.cssPosition == "relative" && (this.scrollParent[0] == document || this.scrollParent[0] == this.offsetParent[0]) && (this.offset.relative = this._getRelativeOffset());
+ var f = b.pageX,
+ g = b.pageY;
+ if (this.originalPosition) {
+ this.containment && (b.pageX - this.offset.click.left < this.containment[0] && (f = this.containment[0] + this.offset.click.left), b.pageY - this.offset.click.top < this.containment[1] && (g = this.containment[1] + this.offset.click.top), b.pageX - this.offset.click.left > this.containment[2] && (f = this.containment[2] + this.offset.click.left), b.pageY - this.offset.click.top > this.containment[3] && (g = this.containment[3] + this.offset.click.top));
+ if (c.grid) {
+ var h = this.originalPageY + Math.round((g - this.originalPageY) / c.grid[1]) * c.grid[1];
+ g = this.containment ? h - this.offset.click.top < this.containment[1] || h - this.offset.click.top > this.containment[3] ? h - this.offset.click.top < this.containment[1] ? h + c.grid[1] : h - c.grid[1] : h: h;
+ var i = this.originalPageX + Math.round((f - this.originalPageX) / c.grid[0]) * c.grid[0];
+ f = this.containment ? i - this.offset.click.left < this.containment[0] || i - this.offset.click.left > this.containment[2] ? i - this.offset.click.left < this.containment[0] ? i + c.grid[0] : i - c.grid[0] : i: i
+ }
+ }
+ return {
+ top: g - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + (a.browser.safari && this.cssPosition == "fixed" ? 0 : this.cssPosition == "fixed" ? -this.scrollParent.scrollTop() : e ? 0 : d.scrollTop()),
+ left: f - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + (a.browser.safari && this.cssPosition == "fixed" ? 0 : this.cssPosition == "fixed" ? -this.scrollParent.scrollLeft() : e ? 0 : d.scrollLeft())
+ }
+ },
+ _rearrange: function(a, b, c, d) {
+ c ? c[0].appendChild(this.placeholder[0]) : b.item[0].parentNode.insertBefore(this.placeholder[0], this.direction == "down" ? b.item[0] : b.item[0].nextSibling),
+ this.counter = this.counter ? ++this.counter: 1;
+ var e = this,
+ f = this.counter;
+ window.setTimeout(function() {
+ f == e.counter && e.refreshPositions(!d)
+ },
+ 0)
+ },
+ _clear: function(b, c) {
+ this.reverting = !1;
+ var d = [],
+ e = this; ! this._noFinalSort && this.currentItem.parent().length && this.placeholder.before(this.currentItem),
+ this._noFinalSort = null;
+ if (this.helper[0] == this.currentItem[0]) {
+ for (var f in this._storedCSS) if (this._storedCSS[f] == "auto" || this._storedCSS[f] == "static") this._storedCSS[f] = "";
+ this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")
+ } else this.currentItem.show();
+ this.fromOutside && !c && d.push(function(a) {
+ this._trigger("receive", a, this._uiHash(this.fromOutside))
+ }),
+ (this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !c && d.push(function(a) {
+ this._trigger("update", a, this._uiHash())
+ });
+ if (!a.ui.contains(this.element[0], this.currentItem[0])) {
+ c || d.push(function(a) {
+ this._trigger("remove", a, this._uiHash())
+ });
+ for (var f = this.containers.length - 1; f >= 0; f--) a.ui.contains(this.containers[f].element[0], this.currentItem[0]) && !c && (d.push(function(a) {
+ return function(b) {
+ a._trigger("receive", b, this._uiHash(this))
+ }
+ }.call(this, this.containers[f])), d.push(function(a) {
+ return function(b) {
+ a._trigger("update", b, this._uiHash(this))
+ }
+ }.call(this, this.containers[f])))
+ }
+ for (var f = this.containers.length - 1; f >= 0; f--) c || d.push(function(a) {
+ return function(b) {
+ a._trigger("deactivate", b, this._uiHash(this))
+ }
+ }.call(this, this.containers[f])),
+ this.containers[f].containerCache.over && (d.push(function(a) {
+ return function(b) {
+ a._trigger("out", b, this._uiHash(this))
+ }
+ }.call(this, this.containers[f])), this.containers[f].containerCache.over = 0);
+ this._storedCursor && a("body").css("cursor", this._storedCursor),
+ this._storedOpacity && this.helper.css("opacity", this._storedOpacity),
+ this._storedZIndex && this.helper.css("zIndex", this._storedZIndex == "auto" ? "": this._storedZIndex),
+ this.dragging = !1;
+ if (this.cancelHelperRemoval) {
+ if (!c) {
+ this._trigger("beforeStop", b, this._uiHash());
+ for (var f = 0; f < d.length; f++) d[f].call(this, b);
+ this._trigger("stop", b, this._uiHash())
+ }
+ return ! 1
+ }
+ c || this._trigger("beforeStop", b, this._uiHash()),
+ this.placeholder[0].parentNode.removeChild(this.placeholder[0]),
+ this.helper[0] != this.currentItem[0] && this.helper.remove(),
+ this.helper = null;
+ if (!c) {
+ for (var f = 0; f < d.length; f++) d[f].call(this, b);
+ this._trigger("stop", b, this._uiHash())
+ }
+ this.fromOutside = !1;
+ return ! 0
+ },
+ _trigger: function() {
+ a.Widget.prototype._trigger.apply(this, arguments) === !1 && this.cancel()
+ },
+ _uiHash: function(b) {
+ var c = b || this;
+ return {
+ helper: c.helper,
+ placeholder: c.placeholder || a([]),
+ position: c.position,
+ originalPosition: c.originalPosition,
+ offset: c.positionAbs,
+ item: c.currentItem,
+ sender: b ? b.element: null
+ }
+ }
+ }),
+ a.extend(a.ui.sortable, {
+ version: "1.8.18"
+ })
+})(jQuery);
+/*
+ * jQuery UI Datepicker 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker
+ *
+ * Depends:
+ * jquery.ui.core.js
+ */
+(function($, undefined) {
+ function isArray(a) {
+ return a && ($.browser.safari && typeof a == "object" && a.length || a.constructor && a.constructor.toString().match(/\Array\(\)/))
+ }
+ function extendRemove(a, b) {
+ $.extend(a, b);
+ for (var c in b) if (b[c] == null || b[c] == undefined) a[c] = b[c];
+ return a
+ }
+ function bindHover(a) {
+ var b = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
+ return a.bind("mouseout",
+ function(a) {
+ var c = $(a.target).closest(b); ! c.length || c.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")
+ }).bind("mouseover",
+ function(c) {
+ var d = $(c.target).closest(b); ! $.datepicker._isDisabledDatepicker(instActive.inline ? a.parent()[0] : instActive.input[0]) && !!d.length && (d.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"), d.addClass("ui-state-hover"), d.hasClass("ui-datepicker-prev") && d.addClass("ui-datepicker-prev-hover"), d.hasClass("ui-datepicker-next") && d.addClass("ui-datepicker-next-hover"))
+ })
+ }
+ function Datepicker() {
+ this.debug = !1,
+ this._curInst = null,
+ this._keyEvent = !1,
+ this._disabledInputs = [],
+ this._datepickerShowing = !1,
+ this._inDialog = !1,
+ this._mainDivId = "ui-datepicker-div",
+ this._inlineClass = "ui-datepicker-inline",
+ this._appendClass = "ui-datepicker-append",
+ this._triggerClass = "ui-datepicker-trigger",
+ this._dialogClass = "ui-datepicker-dialog",
+ this._disableClass = "ui-datepicker-disabled",
+ this._unselectableClass = "ui-datepicker-unselectable",
+ this._currentClass = "ui-datepicker-current-day",
+ this._dayOverClass = "ui-datepicker-days-cell-over",
+ this.regional = [],
+ this.regional[""] = {
+ closeText: "Done",
+ prevText: "Prev",
+ nextText: "Next",
+ currentText: "Today",
+ monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+ monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+ dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+ dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+ dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
+ weekHeader: "Wk",
+ dateFormat: "mm/dd/yy",
+ firstDay: 0,
+ isRTL: !1,
+ showMonthAfterYear: !1,
+ yearSuffix: ""
+ },
+ this._defaults = {
+ showOn: "focus",
+ showAnim: "fadeIn",
+ showOptions: {},
+ defaultDate: null,
+ appendText: "",
+ buttonText: "...",
+ buttonImage: "",
+ buttonImageOnly: !1,
+ hideIfNoPrevNext: !1,
+ navigationAsDateFormat: !1,
+ gotoCurrent: !1,
+ changeMonth: !1,
+ changeYear: !1,
+ yearRange: "c-10:c+10",
+ showOtherMonths: !1,
+ selectOtherMonths: !1,
+ showWeek: !1,
+ calculateWeek: this.iso8601Week,
+ shortYearCutoff: "+10",
+ minDate: null,
+ maxDate: null,
+ duration: "fast",
+ beforeShowDay: null,
+ beforeShow: null,
+ onSelect: null,
+ onChangeMonthYear: null,
+ onClose: null,
+ numberOfMonths: 1,
+ showCurrentAtPos: 0,
+ stepMonths: 1,
+ stepBigMonths: 12,
+ altField: "",
+ altFormat: "",
+ constrainInput: !0,
+ showButtonPanel: !1,
+ autoSize: !1,
+ disabled: !1
+ },
+ $.extend(this._defaults, this.regional[""]),
+ this.dpDiv = bindHover($('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))
+ }
+ $.extend($.ui, {
+ datepicker: {
+ version: "1.8.18"
+ }
+ });
+ var PROP_NAME = "datepicker",
+ dpuuid = (new Date).getTime(),
+ instActive;
+ $.extend(Datepicker.prototype, {
+ markerClassName: "hasDatepicker",
+ maxRows: 4,
+ log: function() {
+ this.debug && console.log.apply("", arguments)
+ },
+ _widgetDatepicker: function() {
+ return this.dpDiv
+ },
+ setDefaults: function(a) {
+ extendRemove(this._defaults, a || {});
+ return this
+ },
+ _attachDatepicker: function(target, settings) {
+ var inlineSettings = null;
+ for (var attrName in this._defaults) {
+ var attrValue = target.getAttribute("date:" + attrName);
+ if (attrValue) {
+ inlineSettings = inlineSettings || {};
+ try {
+ inlineSettings[attrName] = eval(attrValue)
+ } catch(err) {
+ inlineSettings[attrName] = attrValue
+ }
+ }
+ }
+ var nodeName = target.nodeName.toLowerCase(),
+ inline = nodeName == "div" || nodeName == "span";
+ target.id || (this.uuid += 1, target.id = "dp" + this.uuid);
+ var inst = this._newInst($(target), inline);
+ inst.settings = $.extend({},
+ settings || {},
+ inlineSettings || {}),
+ nodeName == "input" ? this._connectDatepicker(target, inst) : inline && this._inlineDatepicker(target, inst)
+ },
+ _newInst: function(a, b) {
+ var c = a[0].id.replace(/([^A-Za-z0-9_-])/g, "\\\\$1");
+ return {
+ id: c,
+ input: a,
+ selectedDay: 0,
+ selectedMonth: 0,
+ selectedYear: 0,
+ drawMonth: 0,
+ drawYear: 0,
+ inline: b,
+ dpDiv: b ? bindHover($('<div class="' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')) : this.dpDiv
+ }
+ },
+ _connectDatepicker: function(a, b) {
+ var c = $(a);
+ b.append = $([]),
+ b.trigger = $([]);
+ c.hasClass(this.markerClassName) || (this._attachments(c, b), c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",
+ function(a, c, d) {
+ b.settings[c] = d
+ }).bind("getData.datepicker",
+ function(a, c) {
+ return this._get(b, c)
+ }), this._autoSize(b), $.data(a, PROP_NAME, b), b.settings.disabled && this._disableDatepicker(a))
+ },
+ _attachments: function(a, b) {
+ var c = this._get(b, "appendText"),
+ d = this._get(b, "isRTL");
+ b.append && b.append.remove(),
+ c && (b.append = $('<span class="' + this._appendClass + '">' + c + "</span>"), a[d ? "before": "after"](b.append)),
+ a.unbind("focus", this._showDatepicker),
+ b.trigger && b.trigger.remove();
+ var e = this._get(b, "showOn"); (e == "focus" || e == "both") && a.focus(this._showDatepicker);
+ if (e == "button" || e == "both") {
+ var f = this._get(b, "buttonText"),
+ g = this._get(b, "buttonImage");
+ b.trigger = $(this._get(b, "buttonImageOnly") ? $("<img/>").addClass(this._triggerClass).attr({
+ src: g,
+ alt: f,
+ title: f
+ }) : $('<button type="button"></button>').addClass(this._triggerClass).html(g == "" ? f: $("<img/>").attr({
+ src: g,
+ alt: f,
+ title: f
+ }))),
+ a[d ? "before": "after"](b.trigger),
+ b.trigger.click(function() {
+ $.datepicker._datepickerShowing && $.datepicker._lastInput == a[0] ? $.datepicker._hideDatepicker() : $.datepicker._datepickerShowing && $.datepicker._lastInput != a[0] ? ($.datepicker._hideDatepicker(), $.datepicker._showDatepicker(a[0])) : $.datepicker._showDatepicker(a[0]);
+ return ! 1
+ })
+ }
+ },
+ _autoSize: function(a) {
+ if (this._get(a, "autoSize") && !a.inline) {
+ var b = new Date(2009, 11, 20),
+ c = this._get(a, "dateFormat");
+ if (c.match(/[DM]/)) {
+ var d = function(a) {
+ var b = 0,
+ c = 0;
+ for (var d = 0; d < a.length; d++) a[d].length > b && (b = a[d].length, c = d);
+ return c
+ };
+ b.setMonth(d(this._get(a, c.match(/MM/) ? "monthNames": "monthNamesShort"))),
+ b.setDate(d(this._get(a, c.match(/DD/) ? "dayNames": "dayNamesShort")) + 20 - b.getDay())
+ }
+ a.input.attr("size", this._formatDate(a, b).length)
+ }
+ },
+ _inlineDatepicker: function(a, b) {
+ var c = $(a);
+ c.hasClass(this.markerClassName) || (c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",
+ function(a, c, d) {
+ b.settings[c] = d
+ }).bind("getData.datepicker",
+ function(a, c) {
+ return this._get(b, c)
+ }), $.data(a, PROP_NAME, b), this._setDate(b, this._getDefaultDate(b), !0), this._updateDatepicker(b), this._updateAlternate(b), b.settings.disabled && this._disableDatepicker(a), b.dpDiv.css("display", "block"))
+ },
+ _dialogDatepicker: function(a, b, c, d, e) {
+ var f = this._dialogInst;
+ if (!f) {
+ this.uuid += 1;
+ var g = "dp" + this.uuid;
+ this._dialogInput = $('<input type="text" id="' + g + '" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>'),
+ this._dialogInput.keydown(this._doKeyDown),
+ $("body").append(this._dialogInput),
+ f = this._dialogInst = this._newInst(this._dialogInput, !1),
+ f.settings = {},
+ $.data(this._dialogInput[0], PROP_NAME, f)
+ }
+ extendRemove(f.settings, d || {}),
+ b = b && b.constructor == Date ? this._formatDate(f, b) : b,
+ this._dialogInput.val(b),
+ this._pos = e ? e.length ? e: [e.pageX, e.pageY] : null;
+ if (!this._pos) {
+ var h = document.documentElement.clientWidth,
+ i = document.documentElement.clientHeight,
+ j = document.documentElement.scrollLeft || document.body.scrollLeft,
+ k = document.documentElement.scrollTop || document.body.scrollTop;
+ this._pos = [h / 2 - 100 + j, i / 2 - 150 + k]
+ }
+ this._dialogInput.css("left", this._pos[0] + 20 + "px").css("top", this._pos[1] + "px"),
+ f.settings.onSelect = c,
+ this._inDialog = !0,
+ this.dpDiv.addClass(this._dialogClass),
+ this._showDatepicker(this._dialogInput[0]),
+ $.blockUI && $.blockUI(this.dpDiv),
+ $.data(this._dialogInput[0], PROP_NAME, f);
+ return this
+ },
+ _destroyDatepicker: function(a) {
+ var b = $(a),
+ c = $.data(a, PROP_NAME);
+ if ( !! b.hasClass(this.markerClassName)) {
+ var d = a.nodeName.toLowerCase();
+ $.removeData(a, PROP_NAME),
+ d == "input" ? (c.append.remove(), c.trigger.remove(), b.removeClass(this.markerClassName).unbind("focus", this._showDatepicker).unbind("keydown", this._doKeyDown).unbind("keypress", this._doKeyPress).unbind("keyup", this._doKeyUp)) : (d == "div" || d == "span") && b.removeClass(this.markerClassName).empty()
+ }
+ },
+ _enableDatepicker: function(a) {
+ var b = $(a),
+ c = $.data(a, PROP_NAME);
+ if ( !! b.hasClass(this.markerClassName)) {
+ var d = a.nodeName.toLowerCase();
+ if (d == "input") a.disabled = !1,
+ c.trigger.filter("button").each(function() {
+ this.disabled = !1
+ }).end().filter("img").css({
+ opacity: "1.0",
+ cursor: ""
+ });
+ else if (d == "div" || d == "span") {
+ var e = b.children("." + this._inlineClass);
+ e.children().removeClass("ui-state-disabled"),
+ e.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")
+ }
+ this._disabledInputs = $.map(this._disabledInputs,
+ function(b) {
+ return b == a ? null: b
+ })
+ }
+ },
+ _disableDatepicker: function(a) {
+ var b = $(a),
+ c = $.data(a, PROP_NAME);
+ if ( !! b.hasClass(this.markerClassName)) {
+ var d = a.nodeName.toLowerCase();
+ if (d == "input") a.disabled = !0,
+ c.trigger.filter("button").each(function() {
+ this.disabled = !0
+ }).end().filter("img").css({
+ opacity: "0.5",
+ cursor: "default"
+ });
+ else if (d == "div" || d == "span") {
+ var e = b.children("." + this._inlineClass);
+ e.children().addClass("ui-state-disabled"),
+ e.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled", "disabled")
+ }
+ this._disabledInputs = $.map(this._disabledInputs,
+ function(b) {
+ return b == a ? null: b
+ }),
+ this._disabledInputs[this._disabledInputs.length] = a
+ }
+ },
+ _isDisabledDatepicker: function(a) {
+ if (!a) return ! 1;
+ for (var b = 0; b < this._disabledInputs.length; b++) if (this._disabledInputs[b] == a) return ! 0;
+ return ! 1
+ },
+ _getInst: function(a) {
+ try {
+ return $.data(a, PROP_NAME)
+ } catch(b) {
+ throw "Missing instance data for this datepicker"
+ }
+ },
+ _optionDatepicker: function(a, b, c) {
+ var d = this._getInst(a);
+ if (arguments.length == 2 && typeof b == "string") return b == "defaults" ? $.extend({},
+ $.datepicker._defaults) : d ? b == "all" ? $.extend({},
+ d.settings) : this._get(d, b) : null;
+ var e = b || {};
+ typeof b == "string" && (e = {},
+ e[b] = c);
+ if (d) {
+ this._curInst == d && this._hideDatepicker();
+ var f = this._getDateDatepicker(a, !0),
+ g = this._getMinMaxDate(d, "min"),
+ h = this._getMinMaxDate(d, "max");
+ extendRemove(d.settings, e),
+ g !== null && e.dateFormat !== undefined && e.minDate === undefined && (d.settings.minDate = this._formatDate(d, g)),
+ h !== null && e.dateFormat !== undefined && e.maxDate === undefined && (d.settings.maxDate = this._formatDate(d, h)),
+ this._attachments($(a), d),
+ this._autoSize(d),
+ this._setDate(d, f),
+ this._updateAlternate(d),
+ this._updateDatepicker(d)
+ }
+ },
+ _changeDatepicker: function(a, b, c) {
+ this._optionDatepicker(a, b, c)
+ },
+ _refreshDatepicker: function(a) {
+ var b = this._getInst(a);
+ b && this._updateDatepicker(b)
+ },
+ _setDateDatepicker: function(a, b) {
+ var c = this._getInst(a);
+ c && (this._setDate(c, b), this._updateDatepicker(c), this._updateAlternate(c))
+ },
+ _getDateDatepicker: function(a, b) {
+ var c = this._getInst(a);
+ c && !c.inline && this._setDateFromField(c, b);
+ return c ? this._getDate(c) : null
+ },
+ _doKeyDown: function(a) {
+ var b = $.datepicker._getInst(a.target),
+ c = !0,
+ d = b.dpDiv.is(".ui-datepicker-rtl");
+ b._keyEvent = !0;
+ if ($.datepicker._datepickerShowing) switch (a.keyCode) {
+ case 9:
+ $.datepicker._hideDatepicker(),
+ c = !1;
+ break;
+ case 13:
+ var e = $("td." + $.datepicker._dayOverClass + ":not(." + $.datepicker._currentClass + ")", b.dpDiv);
+ e[0] && $.datepicker._selectDay(a.target, b.selectedMonth, b.selectedYear, e[0]);
+ var f = $.datepicker._get(b, "onSelect");
+ if (f) {
+ var g = $.datepicker._formatDate(b);
+ f.apply(b.input ? b.input[0] : null, [g, b])
+ } else $.datepicker._hideDatepicker();
+ return ! 1;
+ case 27:
+ $.datepicker._hideDatepicker();
+ break;
+ case 33:
+ $.datepicker._adjustDate(a.target, a.ctrlKey ? -$.datepicker._get(b, "stepBigMonths") : -$.datepicker._get(b, "stepMonths"), "M");
+ break;
+ case 34:
+ $.datepicker._adjustDate(a.target, a.ctrlKey ? +$.datepicker._get(b, "stepBigMonths") : +$.datepicker._get(b, "stepMonths"), "M");
+ break;
+ case 35:
+ (a.ctrlKey || a.metaKey) && $.datepicker._clearDate(a.target),
+ c = a.ctrlKey || a.metaKey;
+ break;
+ case 36:
+ (a.ctrlKey || a.metaKey) && $.datepicker._gotoToday(a.target),
+ c = a.ctrlKey || a.metaKey;
+ break;
+ case 37:
+ (a.ctrlKey || a.metaKey) && $.datepicker._adjustDate(a.target, d ? 1 : -1, "D"),
+ c = a.ctrlKey || a.metaKey,
+ a.originalEvent.altKey && $.datepicker._adjustDate(a.target, a.ctrlKey ? -$.datepicker._get(b, "stepBigMonths") : -$.datepicker._get(b, "stepMonths"), "M");
+ break;
+ case 38:
+ (a.ctrlKey || a.metaKey) && $.datepicker._adjustDate(a.target, -7, "D"),
+ c = a.ctrlKey || a.metaKey;
+ break;
+ case 39:
+ (a.ctrlKey || a.metaKey) && $.datepicker._adjustDate(a.target, d ? -1 : 1, "D"),
+ c = a.ctrlKey || a.metaKey,
+ a.originalEvent.altKey && $.datepicker._adjustDate(a.target, a.ctrlKey ? +$.datepicker._get(b, "stepBigMonths") : +$.datepicker._get(b, "stepMonths"), "M");
+ break;
+ case 40:
+ (a.ctrlKey || a.metaKey) && $.datepicker._adjustDate(a.target, 7, "D"),
+ c = a.ctrlKey || a.metaKey;
+ break;
+ default:
+ c = !1
+ } else a.keyCode == 36 && a.ctrlKey ? $.datepicker._showDatepicker(this) : c = !1;
+ c && (a.preventDefault(), a.stopPropagation())
+ },
+ _doKeyPress: function(a) {
+ var b = $.datepicker._getInst(a.target);
+ if ($.datepicker._get(b, "constrainInput")) {
+ var c = $.datepicker._possibleChars($.datepicker._get(b, "dateFormat")),
+ d = String.fromCharCode(a.charCode == undefined ? a.keyCode: a.charCode);
+ return a.ctrlKey || a.metaKey || d < " " || !c || c.indexOf(d) > -1
+ }
+ },
+ _doKeyUp: function(a) {
+ var b = $.datepicker._getInst(a.target);
+ if (b.input.val() != b.lastVal) try {
+ var c = $.datepicker.parseDate($.datepicker._get(b, "dateFormat"), b.input ? b.input.val() : null, $.datepicker._getFormatConfig(b));
+ c && ($.datepicker._setDateFromField(b), $.datepicker._updateAlternate(b), $.datepicker._updateDatepicker(b))
+ } catch(a) {
+ $.datepicker.log(a)
+ }
+ return ! 0
+ },
+ _showDatepicker: function(a) {
+ a = a.target || a,
+ a.nodeName.toLowerCase() != "input" && (a = $("input", a.parentNode)[0]);
+ if (!$.datepicker._isDisabledDatepicker(a) && $.datepicker._lastInput != a) {
+ var b = $.datepicker._getInst(a);
+ $.datepicker._curInst && $.datepicker._curInst != b && ($.datepicker._curInst.dpDiv.stop(!0, !0), b && $.datepicker._datepickerShowing && $.datepicker._hideDatepicker($.datepicker._curInst.input[0]));
+ var c = $.datepicker._get(b, "beforeShow"),
+ d = c ? c.apply(a, [a, b]) : {};
+ if (d === !1) return;
+ extendRemove(b.settings, d),
+ b.lastVal = null,
+ $.datepicker._lastInput = a,
+ $.datepicker._setDateFromField(b),
+ $.datepicker._inDialog && (a.value = ""),
+ $.datepicker._pos || ($.datepicker._pos = $.datepicker._findPos(a), $.datepicker._pos[1] += a.offsetHeight);
+ var e = !1;
+ $(a).parents().each(function() {
+ e |= $(this).css("position") == "fixed";
+ return ! e
+ }),
+ e && $.browser.opera && ($.datepicker._pos[0] -= document.documentElement.scrollLeft, $.datepicker._pos[1] -= document.documentElement.scrollTop);
+ var f = {
+ left: $.datepicker._pos[0],
+ top: $.datepicker._pos[1]
+ };
+ $.datepicker._pos = null,
+ b.dpDiv.empty(),
+ b.dpDiv.css({
+ position: "absolute",
+ display: "block",
+ top: "-1000px"
+ }),
+ $.datepicker._updateDatepicker(b),
+ f = $.datepicker._checkOffset(b, f, e),
+ b.dpDiv.css({
+ position: $.datepicker._inDialog && $.blockUI ? "static": e ? "fixed": "absolute",
+ display: "none",
+ left: f.left + "px",
+ top: f.top + "px"
+ });
+ if (!b.inline) {
+ var g = $.datepicker._get(b, "showAnim"),
+ h = $.datepicker._get(b, "duration"),
+ i = function() {
+ var a = b.dpDiv.find("iframe.ui-datepicker-cover");
+ if ( !! a.length) {
+ var c = $.datepicker._getBorders(b.dpDiv);
+ a.css({
+ left: -c[0],
+ top: -c[1],
+ width: b.dpDiv.outerWidth(),
+ height: b.dpDiv.outerHeight()
+ })
+ }
+ };
+ b.dpDiv.zIndex($(a).zIndex() + 1),
+ $.datepicker._datepickerShowing = !0,
+ $.effects && $.effects[g] ? b.dpDiv.show(g, $.datepicker._get(b, "showOptions"), h, i) : b.dpDiv[g || "show"](g ? h: null, i),
+ (!g || !h) && i(),
+ b.input.is(":visible") && !b.input.is(":disabled") && b.input.focus(),
+ $.datepicker._curInst = b
+ }
+ }
+ },
+ _updateDatepicker: function(a) {
+ var b = this;
+ b.maxRows = 4;
+ var c = $.datepicker._getBorders(a.dpDiv);
+ instActive = a,
+ a.dpDiv.empty().append(this._generateHTML(a));
+ var d = a.dpDiv.find("iframe.ui-datepicker-cover"); ! d.length || d.css({
+ left: -c[0],
+ top: -c[1],
+ width: a.dpDiv.outerWidth(),
+ height: a.dpDiv.outerHeight()
+ }),
+ a.dpDiv.find("." + this._dayOverClass + " a").mouseover();
+ var e = this._getNumberOfMonths(a),
+ f = e[1],
+ g = 17;
+ a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),
+ f > 1 && a.dpDiv.addClass("ui-datepicker-multi-" + f).css("width", g * f + "em"),
+ a.dpDiv[(e[0] != 1 || e[1] != 1 ? "add": "remove") + "Class"]("ui-datepicker-multi"),
+ a.dpDiv[(this._get(a, "isRTL") ? "add": "remove") + "Class"]("ui-datepicker-rtl"),
+ a == $.datepicker._curInst && $.datepicker._datepickerShowing && a.input && a.input.is(":visible") && !a.input.is(":disabled") && a.input[0] != document.activeElement && a.input.focus();
+ if (a.yearshtml) {
+ var h = a.yearshtml;
+ setTimeout(function() {
+ h === a.yearshtml && a.yearshtml && a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml),
+ h = a.yearshtml = null
+ },
+ 0)
+ }
+ },
+ _getBorders: function(a) {
+ var b = function(a) {
+ return {
+ thin: 1,
+ medium: 2,
+ thick: 3
+ } [a] || a
+ };
+ return [parseFloat(b(a.css("border-left-width"))), parseFloat(b(a.css("border-top-width")))]
+ },
+ _checkOffset: function(a, b, c) {
+ var d = a.dpDiv.outerWidth(),
+ e = a.dpDiv.outerHeight(),
+ f = a.input ? a.input.outerWidth() : 0,
+ g = a.input ? a.input.outerHeight() : 0,
+ h = document.documentElement.clientWidth + $(document).scrollLeft(),
+ i = document.documentElement.clientHeight + $(document).scrollTop();
+ b.left -= this._get(a, "isRTL") ? d - f: 0,
+ b.left -= c && b.left == a.input.offset().left ? $(document).scrollLeft() : 0,
+ b.top -= c && b.top == a.input.offset().top + g ? $(document).scrollTop() : 0,
+ b.left -= Math.min(b.left, b.left + d > h && h > d ? Math.abs(b.left + d - h) : 0),
+ b.top -= Math.min(b.top, b.top + e > i && i > e ? Math.abs(e + g) : 0);
+ return b
+ },
+ _findPos: function(a) {
+ var b = this._getInst(a),
+ c = this._get(b, "isRTL");
+ while (a && (a.type == "hidden" || a.nodeType != 1 || $.expr.filters.hidden(a))) a = a[c ? "previousSibling": "nextSibling"];
+ var d = $(a).offset();
+ return [d.left, d.top]
+ },
+ _hideDatepicker: function(a) {
+ var b = this._curInst;
+ if (! (!b || a && b != $.data(a, PROP_NAME)) && this._datepickerShowing) {
+ var c = this._get(b, "showAnim"),
+ d = this._get(b, "duration"),
+ e = this,
+ f = function() {
+ $.datepicker._tidyDialog(b),
+ e._curInst = null
+ };
+ $.effects && $.effects[c] ? b.dpDiv.hide(c, $.datepicker._get(b, "showOptions"), d, f) : b.dpDiv[c == "slideDown" ? "slideUp": c == "fadeIn" ? "fadeOut": "hide"](c ? d: null, f),
+ c || f(),
+ this._datepickerShowing = !1;
+ var g = this._get(b, "onClose");
+ g && g.apply(b.input ? b.input[0] : null, [b.input ? b.input.val() : "", b]),
+ this._lastInput = null,
+ this._inDialog && (this._dialogInput.css({
+ position: "absolute",
+ left: "0",
+ top: "-100px"
+ }), $.blockUI && ($.unblockUI(), $("body").append(this.dpDiv))),
+ this._inDialog = !1
+ }
+ },
+ _tidyDialog: function(a) {
+ a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")
+ },
+ _checkExternalClick: function(a) {
+ if ( !! $.datepicker._curInst) {
+ var b = $(a.target),
+ c = $.datepicker._getInst(b[0]); (b[0].id != $.datepicker._mainDivId && b.parents("#" + $.datepicker._mainDivId).length == 0 && !b.hasClass($.datepicker.markerClassName) && !b.closest("." + $.datepicker._triggerClass).length && $.datepicker._datepickerShowing && (!$.datepicker._inDialog || !$.blockUI) || b.hasClass($.datepicker.markerClassName) && $.datepicker._curInst != c) && $.datepicker._hideDatepicker()
+ }
+ },
+ _adjustDate: function(a, b, c) {
+ var d = $(a),
+ e = this._getInst(d[0]);
+ this._isDisabledDatepicker(d[0]) || (this._adjustInstDate(e, b + (c == "M" ? this._get(e, "showCurrentAtPos") : 0), c), this._updateDatepicker(e))
+ },
+ _gotoToday: function(a) {
+ var b = $(a),
+ c = this._getInst(b[0]);
+ if (this._get(c, "gotoCurrent") && c.currentDay) c.selectedDay = c.currentDay,
+ c.drawMonth = c.selectedMonth = c.currentMonth,
+ c.drawYear = c.selectedYear = c.currentYear;
+ else {
+ var d = new Date;
+ c.selectedDay = d.getDate(),
+ c.drawMonth = c.selectedMonth = d.getMonth(),
+ c.drawYear = c.selectedYear = d.getFullYear()
+ }
+ this._notifyChange(c),
+ this._adjustDate(b)
+ },
+ _selectMonthYear: function(a, b, c) {
+ var d = $(a),
+ e = this._getInst(d[0]);
+ e["selected" + (c == "M" ? "Month": "Year")] = e["draw" + (c == "M" ? "Month": "Year")] = parseInt(b.options[b.selectedIndex].value, 10),
+ this._notifyChange(e),
+ this._adjustDate(d)
+ },
+ _selectDay: function(a, b, c, d) {
+ var e = $(a);
+ if (!$(d).hasClass(this._unselectableClass) && !this._isDisabledDatepicker(e[0])) {
+ var f = this._getInst(e[0]);
+ f.selectedDay = f.currentDay = $("a", d).html(),
+ f.selectedMonth = f.currentMonth = b,
+ f.selectedYear = f.currentYear = c,
+ this._selectDate(a, this._formatDate(f, f.currentDay, f.currentMonth, f.currentYear))
+ }
+ },
+ _clearDate: function(a) {
+ var b = $(a),
+ c = this._getInst(b[0]);
+ this._selectDate(b, "")
+ },
+ _selectDate: function(a, b) {
+ var c = $(a),
+ d = this._getInst(c[0]);
+ b = b != null ? b: this._formatDate(d),
+ d.input && d.input.val(b),
+ this._updateAlternate(d);
+ var e = this._get(d, "onSelect");
+ e ? e.apply(d.input ? d.input[0] : null, [b, d]) : d.input && d.input.trigger("change"),
+ d.inline ? this._updateDatepicker(d) : (this._hideDatepicker(), this._lastInput = d.input[0], typeof d.input[0] != "object" && d.input.focus(), this._lastInput = null)
+ },
+ _updateAlternate: function(a) {
+ var b = this._get(a, "altField");
+ if (b) {
+ var c = this._get(a, "altFormat") || this._get(a, "dateFormat"),
+ d = this._getDate(a),
+ e = this.formatDate(c, d, this._getFormatConfig(a));
+ $(b).each(function() {
+ $(this).val(e)
+ })
+ }
+ },
+ noWeekends: function(a) {
+ var b = a.getDay();
+ return [b > 0 && b < 6, ""]
+ },
+ iso8601Week: function(a) {
+ var b = new Date(a.getTime());
+ b.setDate(b.getDate() + 4 - (b.getDay() || 7));
+ var c = b.getTime();
+ b.setMonth(0),
+ b.setDate(1);
+ return Math.floor(Math.round((c - b) / 864e5) / 7) + 1
+ },
+ parseDate: function(a, b, c) {
+ if (a == null || b == null) throw "Invalid arguments";
+ b = typeof b == "object" ? b.toString() : b + "";
+ if (b == "") return null;
+ var d = (c ? c.shortYearCutoff: null) || this._defaults.shortYearCutoff;
+ d = typeof d != "string" ? d: (new Date).getFullYear() % 100 + parseInt(d, 10);
+ var e = (c ? c.dayNamesShort: null) || this._defaults.dayNamesShort,
+ f = (c ? c.dayNames: null) || this._defaults.dayNames,
+ g = (c ? c.monthNamesShort: null) || this._defaults.monthNamesShort,
+ h = (c ? c.monthNames: null) || this._defaults.monthNames,
+ i = -1,
+ j = -1,
+ k = -1,
+ l = -1,
+ m = !1,
+ n = function(b) {
+ var c = s + 1 < a.length && a.charAt(s + 1) == b;
+ c && s++;
+ return c
+ },
+ o = function(a) {
+ var c = n(a),
+ d = a == "@" ? 14 : a == "!" ? 20 : a == "y" && c ? 4 : a == "o" ? 3 : 2,
+ e = new RegExp("^\\d{1," + d + "}"),
+ f = b.substring(r).match(e);
+ if (!f) throw "Missing number at position " + r;
+ r += f[0].length;
+ return parseInt(f[0], 10)
+ },
+ p = function(a, c, d) {
+ var e = $.map(n(a) ? d: c,
+ function(a, b) {
+ return [[b, a]]
+ }).sort(function(a, b) {
+ return - (a[1].length - b[1].length)
+ }),
+ f = -1;
+ $.each(e,
+ function(a, c) {
+ var d = c[1];
+ if (b.substr(r, d.length).toLowerCase() == d.toLowerCase()) {
+ f = c[0],
+ r += d.length;
+ return ! 1
+ }
+ });
+ if (f != -1) return f + 1;
+ throw "Unknown name at position " + r
+ },
+ q = function() {
+ if (b.charAt(r) != a.charAt(s)) throw "Unexpected literal at position " + r;
+ r++
+ },
+ r = 0;
+ for (var s = 0; s < a.length; s++) if (m) a.charAt(s) == "'" && !n("'") ? m = !1 : q();
+ else switch (a.charAt(s)) {
+ case "d":
+ k = o("d");
+ break;
+ case "D":
+ p("D", e, f);
+ break;
+ case "o":
+ l = o("o");
+ break;
+ case "m":
+ j = o("m");
+ break;
+ case "M":
+ j = p("M", g, h);
+ break;
+ case "y":
+ i = o("y");
+ break;
+ case "@":
+ var t = new Date(o("@"));
+ i = t.getFullYear(),
+ j = t.getMonth() + 1,
+ k = t.getDate();
+ break;
+ case "!":
+ var t = new Date((o("!") - this._ticksTo1970) / 1e4);
+ i = t.getFullYear(),
+ j = t.getMonth() + 1,
+ k = t.getDate();
+ break;
+ case "'":
+ n("'") ? q() : m = !0;
+ break;
+ default:
+ q()
+ }
+ if (r < b.length) throw "Extra/unparsed characters found in date: " + b.substring(r);
+ i == -1 ? i = (new Date).getFullYear() : i < 100 && (i += (new Date).getFullYear() - (new Date).getFullYear() % 100 + (i <= d ? 0 : -100));
+ if (l > -1) {
+ j = 1,
+ k = l;
+ for (;;) {
+ var u = this._getDaysInMonth(i, j - 1);
+ if (k <= u) break;
+ j++,
+ k -= u
+ }
+ }
+ var t = this._daylightSavingAdjust(new Date(i, j - 1, k));
+ if (t.getFullYear() != i || t.getMonth() + 1 != j || t.getDate() != k) throw "Invalid date";
+ return t
+ },
+ ATOM: "yy-mm-dd",
+ COOKIE: "D, dd M yy",
+ ISO_8601: "yy-mm-dd",
+ RFC_822: "D, d M y",
+ RFC_850: "DD, dd-M-y",
+ RFC_1036: "D, d M y",
+ RFC_1123: "D, d M yy",
+ RFC_2822: "D, d M yy",
+ RSS: "D, d M y",
+ TICKS: "!",
+ TIMESTAMP: "@",
+ W3C: "yy-mm-dd",
+ _ticksTo1970: (718685 + Math.floor(492.5) - Math.floor(19.7) + Math.floor(4.925)) * 24 * 60 * 60 * 1e7,
+ formatDate: function(a, b, c) {
+ if (!b) return "";
+ var d = (c ? c.dayNamesShort: null) || this._defaults.dayNamesShort,
+ e = (c ? c.dayNames: null) || this._defaults.dayNames,
+ f = (c ? c.monthNamesShort: null) || this._defaults.monthNamesShort,
+ g = (c ? c.monthNames: null) || this._defaults.monthNames,
+ h = function(b) {
+ var c = m + 1 < a.length && a.charAt(m + 1) == b;
+ c && m++;
+ return c
+ },
+ i = function(a, b, c) {
+ var d = "" + b;
+ if (h(a)) while (d.length < c) d = "0" + d;
+ return d
+ },
+ j = function(a, b, c, d) {
+ return h(a) ? d[b] : c[b]
+ },
+ k = "",
+ l = !1;
+ if (b) for (var m = 0; m < a.length; m++) if (l) a.charAt(m) == "'" && !h("'") ? l = !1 : k += a.charAt(m);
+ else switch (a.charAt(m)) {
+ case "d":
+ k += i("d", b.getDate(), 2);
+ break;
+ case "D":
+ k += j("D", b.getDay(), d, e);
+ break;
+ case "o":
+ k += i("o", Math.round(((new Date(b.getFullYear(), b.getMonth(), b.getDate())).getTime() - (new Date(b.getFullYear(), 0, 0)).getTime()) / 864e5), 3);
+ break;
+ case "m":
+ k += i("m", b.getMonth() + 1, 2);
+ break;
+ case "M":
+ k += j("M", b.getMonth(), f, g);
+ break;
+ case "y":
+ k += h("y") ? b.getFullYear() : (b.getYear() % 100 < 10 ? "0": "") + b.getYear() % 100;
+ break;
+ case "@":
+ k += b.getTime();
+ break;
+ case "!":
+ k += b.getTime() * 1e4 + this._ticksTo1970;
+ break;
+ case "'":
+ h("'") ? k += "'": l = !0;
+ break;
+ default:
+ k += a.charAt(m)
+ }
+ return k
+ },
+ _possibleChars: function(a) {
+ var b = "",
+ c = !1,
+ d = function(b) {
+ var c = e + 1 < a.length && a.charAt(e + 1) == b;
+ c && e++;
+ return c
+ };
+ for (var e = 0; e < a.length; e++) if (c) a.charAt(e) == "'" && !d("'") ? c = !1 : b += a.charAt(e);
+ else switch (a.charAt(e)) {
+ case "d":
+ case "m":
+ case "y":
+ case "@":
+ b += "0123456789";
+ break;
+ case "D":
+ case "M":
+ return null;
+ case "'":
+ d("'") ? b += "'": c = !0;
+ break;
+ default:
+ b += a.charAt(e)
+ }
+ return b
+ },
+ _get: function(a, b) {
+ return a.settings[b] !== undefined ? a.settings[b] : this._defaults[b]
+ },
+ _setDateFromField: function(a, b) {
+ if (a.input.val() != a.lastVal) {
+ var c = this._get(a, "dateFormat"),
+ d = a.lastVal = a.input ? a.input.val() : null,
+ e,
+ f;
+ e = f = this._getDefaultDate(a);
+ var g = this._getFormatConfig(a);
+ try {
+ e = this.parseDate(c, d, g) || f
+ } catch(h) {
+ this.log(h),
+ d = b ? "": d
+ }
+ a.selectedDay = e.getDate(),
+ a.drawMonth = a.selectedMonth = e.getMonth(),
+ a.drawYear = a.selectedYear = e.getFullYear(),
+ a.currentDay = d ? e.getDate() : 0,
+ a.currentMonth = d ? e.getMonth() : 0,
+ a.currentYear = d ? e.getFullYear() : 0,
+ this._adjustInstDate(a)
+ }
+ },
+ _getDefaultDate: function(a) {
+ return this._restrictMinMax(a, this._determineDate(a, this._get(a, "defaultDate"), new Date))
+ },
+ _determineDate: function(a, b, c) {
+ var d = function(a) {
+ var b = new Date;
+ b.setDate(b.getDate() + a);
+ return b
+ },
+ e = function(b) {
+ try {
+ return $.datepicker.parseDate($.datepicker._get(a, "dateFormat"), b, $.datepicker._getFormatConfig(a))
+ } catch(c) {}
+ var d = (b.toLowerCase().match(/^c/) ? $.datepicker._getDate(a) : null) || new Date,
+ e = d.getFullYear(),
+ f = d.getMonth(),
+ g = d.getDate(),
+ h = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
+ i = h.exec(b);
+ while (i) {
+ switch (i[2] || "d") {
+ case "d":
+ case "D":
+ g += parseInt(i[1], 10);
+ break;
+ case "w":
+ case "W":
+ g += parseInt(i[1], 10) * 7;
+ break;
+ case "m":
+ case "M":
+ f += parseInt(i[1], 10),
+ g = Math.min(g, $.datepicker._getDaysInMonth(e, f));
+ break;
+ case "y":
+ case "Y":
+ e += parseInt(i[1], 10),
+ g = Math.min(g, $.datepicker._getDaysInMonth(e, f))
+ }
+ i = h.exec(b)
+ }
+ return new Date(e, f, g)
+ },
+ f = b == null || b === "" ? c: typeof b == "string" ? e(b) : typeof b == "number" ? isNaN(b) ? c: d(b) : new Date(b.getTime());
+ f = f && f.toString() == "Invalid Date" ? c: f,
+ f && (f.setHours(0), f.setMinutes(0), f.setSeconds(0), f.setMilliseconds(0));
+ return this._daylightSavingAdjust(f)
+ },
+ _daylightSavingAdjust: function(a) {
+ if (!a) return null;
+ a.setHours(a.getHours() > 12 ? a.getHours() + 2 : 0);
+ return a
+ },
+ _setDate: function(a, b, c) {
+ var d = !b,
+ e = a.selectedMonth,
+ f = a.selectedYear,
+ g = this._restrictMinMax(a, this._determineDate(a, b, new Date));
+ a.selectedDay = a.currentDay = g.getDate(),
+ a.drawMonth = a.selectedMonth = a.currentMonth = g.getMonth(),
+ a.drawYear = a.selectedYear = a.currentYear = g.getFullYear(),
+ (e != a.selectedMonth || f != a.selectedYear) && !c && this._notifyChange(a),
+ this._adjustInstDate(a),
+ a.input && a.input.val(d ? "": this._formatDate(a))
+ },
+ _getDate: function(a) {
+ var b = !a.currentYear || a.input && a.input.val() == "" ? null: this._daylightSavingAdjust(new Date(a.currentYear, a.currentMonth, a.currentDay));
+ return b
+ },
+ _generateHTML: function(a) {
+ var b = new Date;
+ b = this._daylightSavingAdjust(new Date(b.getFullYear(), b.getMonth(), b.getDate()));
+ var c = this._get(a, "isRTL"),
+ d = this._get(a, "showButtonPanel"),
+ e = this._get(a, "hideIfNoPrevNext"),
+ f = this._get(a, "navigationAsDateFormat"),
+ g = this._getNumberOfMonths(a),
+ h = this._get(a, "showCurrentAtPos"),
+ i = this._get(a, "stepMonths"),
+ j = g[0] != 1 || g[1] != 1,
+ k = this._daylightSavingAdjust(a.currentDay ? new Date(a.currentYear, a.currentMonth, a.currentDay) : new Date(9999, 9, 9)),
+ l = this._getMinMaxDate(a, "min"),
+ m = this._getMinMaxDate(a, "max"),
+ n = a.drawMonth - h,
+ o = a.drawYear;
+ n < 0 && (n += 12, o--);
+ if (m) {
+ var p = this._daylightSavingAdjust(new Date(m.getFullYear(), m.getMonth() - g[0] * g[1] + 1, m.getDate()));
+ p = l && p < l ? l: p;
+ while (this._daylightSavingAdjust(new Date(o, n, 1)) > p) n--,
+ n < 0 && (n = 11, o--)
+ }
+ a.drawMonth = n,
+ a.drawYear = o;
+ var q = this._get(a, "prevText");
+ q = f ? this.formatDate(q, this._daylightSavingAdjust(new Date(o, n - i, 1)), this._getFormatConfig(a)) : q;
+ var r = this._canAdjustMonth(a, -1, o, n) ? '<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_' + dpuuid + ".datepicker._adjustDate('#" + a.id + "', -" + i + ", 'M');\"" + ' title="' + q + '"><span class="ui-icon ui-icon-circle-triangle-' + (c ? "e": "w") + '">' + q + "</span></a>": e ? "": '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="' + q + '"><span class="ui-icon ui-icon-circle-triangle-' + (c ? "e": "w") + '">' + q + "</span></a>",
+ s = this._get(a, "nextText");
+ s = f ? this.formatDate(s, this._daylightSavingAdjust(new Date(o, n + i, 1)), this._getFormatConfig(a)) : s;
+ var t = this._canAdjustMonth(a, 1, o, n) ? '<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_' + dpuuid + ".datepicker._adjustDate('#" + a.id + "', +" + i + ", 'M');\"" + ' title="' + s + '"><span class="ui-icon ui-icon-circle-triangle-' + (c ? "w": "e") + '">' + s + "</span></a>": e ? "": '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="' + s + '"><span class="ui-icon ui-icon-circle-triangle-' + (c ? "w": "e") + '">' + s + "</span></a>",
+ u = this._get(a, "currentText"),
+ v = this._get(a, "gotoCurrent") && a.currentDay ? k: b;
+ u = f ? this.formatDate(u, v, this._getFormatConfig(a)) : u;
+ var w = a.inline ? "": '<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_' + dpuuid + '.datepicker._hideDatepicker();">' + this._get(a, "closeText") + "</button>",
+ x = d ? '<div class="ui-datepicker-buttonpane ui-widget-content">' + (c ? w: "") + (this._isInRange(a, v) ? '<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_' + dpuuid + ".datepicker._gotoToday('#" + a.id + "');\"" + ">" + u + "</button>": "") + (c ? "": w) + "</div>": "",
+ y = parseInt(this._get(a, "firstDay"), 10);
+ y = isNaN(y) ? 0 : y;
+ var z = this._get(a, "showWeek"),
+ A = this._get(a, "dayNames"),
+ B = this._get(a, "dayNamesShort"),
+ C = this._get(a, "dayNamesMin"),
+ D = this._get(a, "monthNames"),
+ E = this._get(a, "monthNamesShort"),
+ F = this._get(a, "beforeShowDay"),
+ G = this._get(a, "showOtherMonths"),
+ H = this._get(a, "selectOtherMonths"),
+ I = this._get(a, "calculateWeek") || this.iso8601Week,
+ J = this._getDefaultDate(a),
+ K = "";
+ for (var L = 0; L < g[0]; L++) {
+ var M = "";
+ this.maxRows = 4;
+ for (var N = 0; N < g[1]; N++) {
+ var O = this._daylightSavingAdjust(new Date(o, n, a.selectedDay)),
+ P = " ui-corner-all",
+ Q = "";
+ if (j) {
+ Q += '<div class="ui-datepicker-group';
+ if (g[1] > 1) switch (N) {
+ case 0:
+ Q += " ui-datepicker-group-first",
+ P = " ui-corner-" + (c ? "right": "left");
+ break;
+ case g[1] - 1 : Q += " ui-datepicker-group-last",
+ P = " ui-corner-" + (c ? "left": "right");
+ break;
+ default:
+ Q += " ui-datepicker-group-middle",
+ P = ""
+ }
+ Q += '">'
+ }
+ Q += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix' + P + '">' + (/all|left/.test(P) && L == 0 ? c ? t: r: "") + (/all|right/.test(P) && L == 0 ? c ? r: t: "") + this._generateMonthYearHeader(a, n, o, l, m, L > 0 || N > 0, D, E) + '</div><table class="ui-datepicker-calendar"><thead>' + "<tr>";
+ var R = z ? '<th class="ui-datepicker-week-col">' + this._get(a, "weekHeader") + "</th>": "";
+ for (var S = 0; S < 7; S++) {
+ var T = (S + y) % 7;
+ R += "<th" + ((S + y + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end"': "") + ">" + '<span title="' + A[T] + '">' + C[T] + "</span></th>"
+ }
+ Q += R + "</tr></thead><tbody>";
+ var U = this._getDaysInMonth(o, n);
+ o == a.selectedYear && n == a.selectedMonth && (a.selectedDay = Math.min(a.selectedDay, U));
+ var V = (this._getFirstDayOfMonth(o, n) - y + 7) % 7,
+ W = Math.ceil((V + U) / 7),
+ X = j ? this.maxRows > W ? this.maxRows: W: W;
+ this.maxRows = X;
+ var Y = this._daylightSavingAdjust(new Date(o, n, 1 - V));
+ for (var Z = 0; Z < X; Z++) {
+ Q += "<tr>";
+ var _ = z ? '<td class="ui-datepicker-week-col">' + this._get(a, "calculateWeek")(Y) + "</td>": "";
+ for (var S = 0; S < 7; S++) {
+ var ba = F ? F.apply(a.input ? a.input[0] : null, [Y]) : [!0, ""],
+ bb = Y.getMonth() != n,
+ bc = bb && !H || !ba[0] || l && Y < l || m && Y > m;
+ _ += '<td class="' + ((S + y + 6) % 7 >= 5 ? " ui-datepicker-week-end": "") + (bb ? " ui-datepicker-other-month": "") + (Y.getTime() == O.getTime() && n == a.selectedMonth && a._keyEvent || J.getTime() == Y.getTime() && J.getTime() == O.getTime() ? " " + this._dayOverClass: "") + (bc ? " " + this._unselectableClass + " ui-state-disabled": "") + (bb && !G ? "": " " + ba[1] + (Y.getTime() == k.getTime() ? " " + this._currentClass: "") + (Y.getTime() == b.getTime() ? " ui-datepicker-today": "")) + '"' + ((!bb || G) && ba[2] ? ' title="' + ba[2] + '"': "") + (bc ? "": ' onclick="DP_jQuery_' + dpuuid + ".datepicker._selectDay('#" + a.id + "'," + Y.getMonth() + "," + Y.getFullYear() + ', this);return false;"') + ">" + (bb && !G ? "&#xa0;": bc ? '<span class="ui-state-default">' + Y.getDate() + "</span>": '<a class="ui-state-default' + (Y.getTime() == b.getTime() ? " ui-state-highlight": "") + (Y.getTime() == k.getTime() ? " ui-state-active": "") + (bb ? " ui-priority-secondary": "") + '" href="#">' + Y.getDate() + "</a>") + "</td>",
+ Y.setDate(Y.getDate() + 1),
+ Y = this._daylightSavingAdjust(Y)
+ }
+ Q += _ + "</tr>"
+ }
+ n++,
+ n > 11 && (n = 0, o++),
+ Q += "</tbody></table>" + (j ? "</div>" + (g[0] > 0 && N == g[1] - 1 ? '<div class="ui-datepicker-row-break"></div>': "") : ""),
+ M += Q
+ }
+ K += M
+ }
+ K += x + ($.browser.msie && parseInt($.browser.version, 10) < 7 && !a.inline ? '<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>': ""),
+ a._keyEvent = !1;
+ return K
+ },
+ _generateMonthYearHeader: function(a, b, c, d, e, f, g, h) {
+ var i = this._get(a, "changeMonth"),
+ j = this._get(a, "changeYear"),
+ k = this._get(a, "showMonthAfterYear"),
+ l = '<div class="ui-datepicker-title">',
+ m = "";
+ if (f || !i) m += '<span class="ui-datepicker-month">' + g[b] + "</span>";
+ else {
+ var n = d && d.getFullYear() == c,
+ o = e && e.getFullYear() == c;
+ m += '<select class="ui-datepicker-month" onchange="DP_jQuery_' + dpuuid + ".datepicker._selectMonthYear('#" + a.id + "', this, 'M');\" " + ">";
+ for (var p = 0; p < 12; p++)(!n || p >= d.getMonth()) && (!o || p <= e.getMonth()) && (m += '<option value="' + p + '"' + (p == b ? ' selected="selected"': "") + ">" + h[p] + "</option>");
+ m += "</select>"
+ }
+ k || (l += m + (f || !i || !j ? "&#xa0;": ""));
+ if (!a.yearshtml) {
+ a.yearshtml = "";
+ if (f || !j) l += '<span class="ui-datepicker-year">' + c + "</span>";
+ else {
+ var q = this._get(a, "yearRange").split(":"),
+ r = (new Date).getFullYear(),
+ s = function(a) {
+ var b = a.match(/c[+-].*/) ? c + parseInt(a.substring(1), 10) : a.match(/[+-].*/) ? r + parseInt(a, 10) : parseInt(a, 10);
+ return isNaN(b) ? r: b
+ },
+ t = s(q[0]),
+ u = Math.max(t, s(q[1] || ""));
+ t = d ? Math.max(t, d.getFullYear()) : t,
+ u = e ? Math.min(u, e.getFullYear()) : u,
+ a.yearshtml += '<select class="ui-datepicker-year" onchange="DP_jQuery_' + dpuuid + ".datepicker._selectMonthYear('#" + a.id + "', this, 'Y');\" " + ">";
+ for (; t <= u; t++) a.yearshtml += '<option value="' + t + '"' + (t == c ? ' selected="selected"': "") + ">" + t + "</option>";
+ a.yearshtml += "</select>",
+ l += a.yearshtml,
+ a.yearshtml = null
+ }
+ }
+ l += this._get(a, "yearSuffix"),
+ k && (l += (f || !i || !j ? "&#xa0;": "") + m),
+ l += "</div>";
+ return l
+ },
+ _adjustInstDate: function(a, b, c) {
+ var d = a.drawYear + (c == "Y" ? b: 0),
+ e = a.drawMonth + (c == "M" ? b: 0),
+ f = Math.min(a.selectedDay, this._getDaysInMonth(d, e)) + (c == "D" ? b: 0),
+ g = this._restrictMinMax(a, this._daylightSavingAdjust(new Date(d, e, f)));
+ a.selectedDay = g.getDate(),
+ a.drawMonth = a.selectedMonth = g.getMonth(),
+ a.drawYear = a.selectedYear = g.getFullYear(),
+ (c == "M" || c == "Y") && this._notifyChange(a)
+ },
+ _restrictMinMax: function(a, b) {
+ var c = this._getMinMaxDate(a, "min"),
+ d = this._getMinMaxDate(a, "max"),
+ e = c && b < c ? c: b;
+ e = d && e > d ? d: e;
+ return e
+ },
+ _notifyChange: function(a) {
+ var b = this._get(a, "onChangeMonthYear");
+ b && b.apply(a.input ? a.input[0] : null, [a.selectedYear, a.selectedMonth + 1, a])
+ },
+ _getNumberOfMonths: function(a) {
+ var b = this._get(a, "numberOfMonths");
+ return b == null ? [1, 1] : typeof b == "number" ? [1, b] : b
+ },
+ _getMinMaxDate: function(a, b) {
+ return this._determineDate(a, this._get(a, b + "Date"), null)
+ },
+ _getDaysInMonth: function(a, b) {
+ return 32 - this._daylightSavingAdjust(new Date(a, b, 32)).getDate()
+ },
+ _getFirstDayOfMonth: function(a, b) {
+ return (new Date(a, b, 1)).getDay()
+ },
+ _canAdjustMonth: function(a, b, c, d) {
+ var e = this._getNumberOfMonths(a),
+ f = this._daylightSavingAdjust(new Date(c, d + (b < 0 ? b: e[0] * e[1]), 1));
+ b < 0 && f.setDate(this._getDaysInMonth(f.getFullYear(), f.getMonth()));
+ return this._isInRange(a, f)
+ },
+ _isInRange: function(a, b) {
+ var c = this._getMinMaxDate(a, "min"),
+ d = this._getMinMaxDate(a, "max");
+ return (!c || b.getTime() >= c.getTime()) && (!d || b.getTime() <= d.getTime())
+ },
+ _getFormatConfig: function(a) {
+ var b = this._get(a, "shortYearCutoff");
+ b = typeof b != "string" ? b: (new Date).getFullYear() % 100 + parseInt(b, 10);
+ return {
+ shortYearCutoff: b,
+ dayNamesShort: this._get(a, "dayNamesShort"),
+ dayNames: this._get(a, "dayNames"),
+ monthNamesShort: this._get(a, "monthNamesShort"),
+ monthNames: this._get(a, "monthNames")
+ }
+ },
+ _formatDate: function(a, b, c, d) {
+ b || (a.currentDay = a.selectedDay, a.currentMonth = a.selectedMonth, a.currentYear = a.selectedYear);
+ var e = b ? typeof b == "object" ? b: this._daylightSavingAdjust(new Date(d, c, b)) : this._daylightSavingAdjust(new Date(a.currentYear, a.currentMonth, a.currentDay));
+ return this.formatDate(this._get(a, "dateFormat"), e, this._getFormatConfig(a))
+ }
+ }),
+ $.fn.datepicker = function(a) {
+ if (!this.length) return this;
+ $.datepicker.initialized || ($(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv), $.datepicker.initialized = !0);
+ var b = Array.prototype.slice.call(arguments, 1);
+ if (typeof a == "string" && (a == "isDisabled" || a == "getDate" || a == "widget")) return $.datepicker["_" + a + "Datepicker"].apply($.datepicker, [this[0]].concat(b));
+ if (a == "option" && arguments.length == 2 && typeof arguments[1] == "string") return $.datepicker["_" + a + "Datepicker"].apply($.datepicker, [this[0]].concat(b));
+ return this.each(function() {
+ typeof a == "string" ? $.datepicker["_" + a + "Datepicker"].apply($.datepicker, [this].concat(b)) : $.datepicker._attachDatepicker(this, a)
+ })
+ },
+ $.datepicker = new Datepicker,
+ $.datepicker.initialized = !1,
+ $.datepicker.uuid = (new Date).getTime(),
+ $.datepicker.version = "1.8.18",
+ window["DP_jQuery_" + dpuuid] = $
+})(jQuery);
+/*
+ * jQuery UI Effects 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/
+ */
+jQuery.effects ||
+function(a, b) {
+ function l(b) {
+ if (!b || typeof b == "number" || a.fx.speeds[b]) return ! 0;
+ if (typeof b == "string" && !a.effects[b]) return ! 0;
+ return ! 1
+ }
+ function k(b, c, d, e) {
+ typeof b == "object" && (e = c, d = null, c = b, b = c.effect),
+ a.isFunction(c) && (e = c, d = null, c = {});
+ if (typeof c == "number" || a.fx.speeds[c]) e = d,
+ d = c,
+ c = {};
+ a.isFunction(d) && (e = d, d = null),
+ c = c || {},
+ d = d || c.duration,
+ d = a.fx.off ? 0 : typeof d == "number" ? d: d in a.fx.speeds ? a.fx.speeds[d] : a.fx.speeds._default,
+ e = e || c.complete;
+ return [b, c, d, e]
+ }
+ function j(a, b) {
+ var c = {
+ _: 0
+ },
+ d;
+ for (d in b) a[d] != b[d] && (c[d] = b[d]);
+ return c
+ }
+ function i(b) {
+ var c, d;
+ for (c in b) d = b[c],
+ (d == null || a.isFunction(d) || c in g || /scrollbar/.test(c) || !/color/i.test(c) && isNaN(parseFloat(d))) && delete b[c];
+ return b
+ }
+ function h() {
+ var a = document.defaultView ? document.defaultView.getComputedStyle(this, null) : this.currentStyle,
+ b = {},
+ c,
+ d;
+ if (a && a.length && a[0] && a[a[0]]) {
+ var e = a.length;
+ while (e--) c = a[e],
+ typeof a[c] == "string" && (d = c.replace(/\-(\w)/g,
+ function(a, b) {
+ return b.toUpperCase()
+ }), b[d] = a[c])
+ } else for (c in a) typeof a[c] == "string" && (b[c] = a[c]);
+ return b
+ }
+ function d(b, d) {
+ var e;
+ do {
+ e = a.curCSS(b, d);
+ if (e != "" && e != "transparent" || a.nodeName(b, "body")) break;
+ d = "backgroundColor"
+ } while ( b = b . parentNode );
+ return c(e)
+ }
+ function c(b) {
+ var c;
+ if (b && b.constructor == Array && b.length == 3) return b;
+ if (c = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b)) return [parseInt(c[1], 10), parseInt(c[2], 10), parseInt(c[3], 10)];
+ if (c = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b)) return [parseFloat(c[1]) * 2.55, parseFloat(c[2]) * 2.55, parseFloat(c[3]) * 2.55];
+ if (c = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b)) return [parseInt(c[1], 16), parseInt(c[2], 16), parseInt(c[3], 16)];
+ if (c = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b)) return [parseInt(c[1] + c[1], 16), parseInt(c[2] + c[2], 16), parseInt(c[3] + c[3], 16)];
+ if (c = /rgba\(0, 0, 0, 0\)/.exec(b)) return e.transparent;
+ return e[a.trim(b).toLowerCase()]
+ }
+ a.effects = {},
+ a.each(["backgroundColor", "borderBottomColor", "borderLeftColor", "borderRightColor", "borderTopColor", "borderColor", "color", "outlineColor"],
+ function(b, e) {
+ a.fx.step[e] = function(a) {
+ a.colorInit || (a.start = d(a.elem, e), a.end = c(a.end), a.colorInit = !0),
+ a.elem.style[e] = "rgb(" + Math.max(Math.min(parseInt(a.pos * (a.end[0] - a.start[0]) + a.start[0], 10), 255), 0) + "," + Math.max(Math.min(parseInt(a.pos * (a.end[1] - a.start[1]) + a.start[1], 10), 255), 0) + "," + Math.max(Math.min(parseInt(a.pos * (a.end[2] - a.start[2]) + a.start[2], 10), 255), 0) + ")"
+ }
+ });
+ var e = {
+ aqua: [0, 255, 255],
+ azure: [240, 255, 255],
+ beige: [245, 245, 220],
+ black: [0, 0, 0],
+ blue: [0, 0, 255],
+ brown: [165, 42, 42],
+ cyan: [0, 255, 255],
+ darkblue: [0, 0, 139],
+ darkcyan: [0, 139, 139],
+ darkgrey: [169, 169, 169],
+ darkgreen: [0, 100, 0],
+ darkkhaki: [189, 183, 107],
+ darkmagenta: [139, 0, 139],
+ darkolivegreen: [85, 107, 47],
+ darkorange: [255, 140, 0],
+ darkorchid: [153, 50, 204],
+ darkred: [139, 0, 0],
+ darksalmon: [233, 150, 122],
+ darkviolet: [148, 0, 211],
+ fuchsia: [255, 0, 255],
+ gold: [255, 215, 0],
+ green: [0, 128, 0],
+ indigo: [75, 0, 130],
+ khaki: [240, 230, 140],
+ lightblue: [173, 216, 230],
+ lightcyan: [224, 255, 255],
+ lightgreen: [144, 238, 144],
+ lightgrey: [211, 211, 211],
+ lightpink: [255, 182, 193],
+ lightyellow: [255, 255, 224],
+ lime: [0, 255, 0],
+ magenta: [255, 0, 255],
+ maroon: [128, 0, 0],
+ navy: [0, 0, 128],
+ olive: [128, 128, 0],
+ orange: [255, 165, 0],
+ pink: [255, 192, 203],
+ purple: [128, 0, 128],
+ violet: [128, 0, 128],
+ red: [255, 0, 0],
+ silver: [192, 192, 192],
+ white: [255, 255, 255],
+ yellow: [255, 255, 0],
+ transparent: [255, 255, 255]
+ },
+ f = ["add", "remove", "toggle"],
+ g = {
+ border: 1,
+ borderBottom: 1,
+ borderColor: 1,
+ borderLeft: 1,
+ borderRight: 1,
+ borderTop: 1,
+ borderWidth: 1,
+ margin: 1,
+ padding: 1
+ };
+ a.effects.animateClass = function(b, c, d, e) {
+ a.isFunction(d) && (e = d, d = null);
+ return this.queue(function() {
+ var g = a(this),
+ k = g.attr("style") || " ",
+ l = i(h.call(this)),
+ m,
+ n = g.attr("class");
+ a.each(f,
+ function(a, c) {
+ b[c] && g[c + "Class"](b[c])
+ }),
+ m = i(h.call(this)),
+ g.attr("class", n),
+ g.animate(j(l, m), {
+ queue: !1,
+ duration: c,
+ easing: d,
+ complete: function() {
+ a.each(f,
+ function(a, c) {
+ b[c] && g[c + "Class"](b[c])
+ }),
+ typeof g.attr("style") == "object" ? (g.attr("style").cssText = "", g.attr("style").cssText = k) : g.attr("style", k),
+ e && e.apply(this, arguments),
+ a.dequeue(this)
+ }
+ })
+ })
+ },
+ a.fn.extend({
+ _addClass: a.fn.addClass,
+ addClass: function(b, c, d, e) {
+ return c ? a.effects.animateClass.apply(this, [{
+ add: b
+ },
+ c, d, e]) : this._addClass(b)
+ },
+ _removeClass: a.fn.removeClass,
+ removeClass: function(b, c, d, e) {
+ return c ? a.effects.animateClass.apply(this, [{
+ remove: b
+ },
+ c, d, e]) : this._removeClass(b)
+ },
+ _toggleClass: a.fn.toggleClass,
+ toggleClass: function(c, d, e, f, g) {
+ return typeof d == "boolean" || d === b ? e ? a.effects.animateClass.apply(this, [d ? {
+ add: c
+ }: {
+ remove: c
+ },
+ e, f, g]) : this._toggleClass(c, d) : a.effects.animateClass.apply(this, [{
+ toggle: c
+ },
+ d, e, f])
+ },
+ switchClass: function(b, c, d, e, f) {
+ return a.effects.animateClass.apply(this, [{
+ add: c,
+ remove: b
+ },
+ d, e, f])
+ }
+ }),
+ a.extend(a.effects, {
+ version: "1.8.18",
+ save: function(a, b) {
+ for (var c = 0; c < b.length; c++) b[c] !== null && a.data("ec.storage." + b[c], a[0].style[b[c]])
+ },
+ restore: function(a, b) {
+ for (var c = 0; c < b.length; c++) b[c] !== null && a.css(b[c], a.data("ec.storage." + b[c]))
+ },
+ setMode: function(a, b) {
+ b == "toggle" && (b = a.is(":hidden") ? "show": "hide");
+ return b
+ },
+ getBaseline: function(a, b) {
+ var c, d;
+ switch (a[0]) {
+ case "top":
+ c = 0;
+ break;
+ case "middle":
+ c = .5;
+ break;
+ case "bottom":
+ c = 1;
+ break;
+ default:
+ c = a[0] / b.height
+ }
+ switch (a[1]) {
+ case "left":
+ d = 0;
+ break;
+ case "center":
+ d = .5;
+ break;
+ case "right":
+ d = 1;
+ break;
+ default:
+ d = a[1] / b.width
+ }
+ return {
+ x: d,
+ y: c
+ }
+ },
+ createWrapper: function(b) {
+ if (b.parent().is(".ui-effects-wrapper")) return b.parent();
+ var c = {
+ width: b.outerWidth(!0),
+ height: b.outerHeight(!0),
+ "float": b.css("float")
+ },
+ d = a("<div></div>").addClass("ui-effects-wrapper").css({
+ fontSize: "100%",
+ background: "transparent",
+ border: "none",
+ margin: 0,
+ padding: 0
+ }),
+ e = document.activeElement;
+ b.wrap(d),
+ (b[0] === e || a.contains(b[0], e)) && a(e).focus(),
+ d = b.parent(),
+ b.css("position") == "static" ? (d.css({
+ position: "relative"
+ }), b.css({
+ position: "relative"
+ })) : (a.extend(c, {
+ position: b.css("position"),
+ zIndex: b.css("z-index")
+ }), a.each(["top", "left", "bottom", "right"],
+ function(a, d) {
+ c[d] = b.css(d),
+ isNaN(parseInt(c[d], 10)) && (c[d] = "auto")
+ }), b.css({
+ position: "relative",
+ top: 0,
+ left: 0,
+ right: "auto",
+ bottom: "auto"
+ }));
+ return d.css(c).show()
+ },
+ removeWrapper: function(b) {
+ var c, d = document.activeElement;
+ if (b.parent().is(".ui-effects-wrapper")) {
+ c = b.parent().replaceWith(b),
+ (b[0] === d || a.contains(b[0], d)) && a(d).focus();
+ return c
+ }
+ return b
+ },
+ setTransition: function(b, c, d, e) {
+ e = e || {},
+ a.each(c,
+ function(a, c) {
+ unit = b.cssUnit(c),
+ unit[0] > 0 && (e[c] = unit[0] * d + unit[1])
+ });
+ return e
+ }
+ }),
+ a.fn.extend({
+ effect: function(b, c, d, e) {
+ var f = k.apply(this, arguments),
+ g = {
+ options: f[1],
+ duration: f[2],
+ callback: f[3]
+ },
+ h = g.options.mode,
+ i = a.effects[b];
+ if (a.fx.off || !i) return h ? this[h](g.duration, g.callback) : this.each(function() {
+ g.callback && g.callback.call(this)
+ });
+ return i.call(this, g)
+ },
+ _show: a.fn.show,
+ show: function(a) {
+ if (l(a)) return this._show.apply(this, arguments);
+ var b = k.apply(this, arguments);
+ b[1].mode = "show";
+ return this.effect.apply(this, b)
+ },
+ _hide: a.fn.hide,
+ hide: function(a) {
+ if (l(a)) return this._hide.apply(this, arguments);
+ var b = k.apply(this, arguments);
+ b[1].mode = "hide";
+ return this.effect.apply(this, b)
+ },
+ __toggle: a.fn.toggle,
+ toggle: function(b) {
+ if (l(b) || typeof b == "boolean" || a.isFunction(b)) return this.__toggle.apply(this, arguments);
+ var c = k.apply(this, arguments);
+ c[1].mode = "toggle";
+ return this.effect.apply(this, c)
+ },
+ cssUnit: function(b) {
+ var c = this.css(b),
+ d = [];
+ a.each(["em", "px", "%", "pt"],
+ function(a, b) {
+ c.indexOf(b) > 0 && (d = [parseFloat(c), b])
+ });
+ return d
+ }
+ }),
+ a.easing.jswing = a.easing.swing,
+ a.extend(a.easing, {
+ def: "easeOutQuad",
+ swing: function(b, c, d, e, f) {
+ return a.easing[a.easing.def](b, c, d, e, f)
+ },
+ easeInQuad: function(a, b, c, d, e) {
+ return d * (b /= e) * b + c
+ },
+ easeOutQuad: function(a, b, c, d, e) {
+ return - d * (b /= e) * (b - 2) + c
+ },
+ easeInOutQuad: function(a, b, c, d, e) {
+ if ((b /= e / 2) < 1) return d / 2 * b * b + c;
+ return - d / 2 * (--b * (b - 2) - 1) + c
+ },
+ easeInCubic: function(a, b, c, d, e) {
+ return d * (b /= e) * b * b + c
+ },
+ easeOutCubic: function(a, b, c, d, e) {
+ return d * ((b = b / e - 1) * b * b + 1) + c
+ },
+ easeInOutCubic: function(a, b, c, d, e) {
+ if ((b /= e / 2) < 1) return d / 2 * b * b * b + c;
+ return d / 2 * ((b -= 2) * b * b + 2) + c
+ },
+ easeInQuart: function(a, b, c, d, e) {
+ return d * (b /= e) * b * b * b + c
+ },
+ easeOutQuart: function(a, b, c, d, e) {
+ return - d * ((b = b / e - 1) * b * b * b - 1) + c
+ },
+ easeInOutQuart: function(a, b, c, d, e) {
+ if ((b /= e / 2) < 1) return d / 2 * b * b * b * b + c;
+ return - d / 2 * ((b -= 2) * b * b * b - 2) + c
+ },
+ easeInQuint: function(a, b, c, d, e) {
+ return d * (b /= e) * b * b * b * b + c
+ },
+ easeOutQuint: function(a, b, c, d, e) {
+ return d * ((b = b / e - 1) * b * b * b * b + 1) + c
+ },
+ easeInOutQuint: function(a, b, c, d, e) {
+ if ((b /= e / 2) < 1) return d / 2 * b * b * b * b * b + c;
+ return d / 2 * ((b -= 2) * b * b * b * b + 2) + c
+ },
+ easeInSine: function(a, b, c, d, e) {
+ return - d * Math.cos(b / e * (Math.PI / 2)) + d + c
+ },
+ easeOutSine: function(a, b, c, d, e) {
+ return d * Math.sin(b / e * (Math.PI / 2)) + c
+ },
+ easeInOutSine: function(a, b, c, d, e) {
+ return - d / 2 * (Math.cos(Math.PI * b / e) - 1) + c
+ },
+ easeInExpo: function(a, b, c, d, e) {
+ return b == 0 ? c: d * Math.pow(2, 10 * (b / e - 1)) + c
+ },
+ easeOutExpo: function(a, b, c, d, e) {
+ return b == e ? c + d: d * ( - Math.pow(2, -10 * b / e) + 1) + c
+ },
+ easeInOutExpo: function(a, b, c, d, e) {
+ if (b == 0) return c;
+ if (b == e) return c + d;
+ if ((b /= e / 2) < 1) return d / 2 * Math.pow(2, 10 * (b - 1)) + c;
+ return d / 2 * ( - Math.pow(2, -10 * --b) + 2) + c
+ },
+ easeInCirc: function(a, b, c, d, e) {
+ return - d * (Math.sqrt(1 - (b /= e) * b) - 1) + c
+ },
+ easeOutCirc: function(a, b, c, d, e) {
+ return d * Math.sqrt(1 - (b = b / e - 1) * b) + c
+ },
+ easeInOutCirc: function(a, b, c, d, e) {
+ if ((b /= e / 2) < 1) return - d / 2 * (Math.sqrt(1 - b * b) - 1) + c;
+ return d / 2 * (Math.sqrt(1 - (b -= 2) * b) + 1) + c
+ },
+ easeInElastic: function(a, b, c, d, e) {
+ var f = 1.70158,
+ g = 0,
+ h = d;
+ if (b == 0) return c;
+ if ((b /= e) == 1) return c + d;
+ g || (g = e * .3);
+ if (h < Math.abs(d)) {
+ h = d;
+ var f = g / 4
+ } else var f = g / (2 * Math.PI) * Math.asin(d / h);
+ return - (h * Math.pow(2, 10 * (b -= 1)) * Math.sin((b * e - f) * 2 * Math.PI / g)) + c
+ },
+ easeOutElastic: function(a, b, c, d, e) {
+ var f = 1.70158,
+ g = 0,
+ h = d;
+ if (b == 0) return c;
+ if ((b /= e) == 1) return c + d;
+ g || (g = e * .3);
+ if (h < Math.abs(d)) {
+ h = d;
+ var f = g / 4
+ } else var f = g / (2 * Math.PI) * Math.asin(d / h);
+ return h * Math.pow(2, -10 * b) * Math.sin((b * e - f) * 2 * Math.PI / g) + d + c
+ },
+ easeInOutElastic: function(a, b, c, d, e) {
+ var f = 1.70158,
+ g = 0,
+ h = d;
+ if (b == 0) return c;
+ if ((b /= e / 2) == 2) return c + d;
+ g || (g = e * .3 * 1.5);
+ if (h < Math.abs(d)) {
+ h = d;
+ var f = g / 4
+ } else var f = g / (2 * Math.PI) * Math.asin(d / h);
+ if (b < 1) return - 0.5 * h * Math.pow(2, 10 * (b -= 1)) * Math.sin((b * e - f) * 2 * Math.PI / g) + c;
+ return h * Math.pow(2, -10 * (b -= 1)) * Math.sin((b * e - f) * 2 * Math.PI / g) * .5 + d + c
+ },
+ easeInBack: function(a, c, d, e, f, g) {
+ g == b && (g = 1.70158);
+ return e * (c /= f) * c * ((g + 1) * c - g) + d
+ },
+ easeOutBack: function(a, c, d, e, f, g) {
+ g == b && (g = 1.70158);
+ return e * ((c = c / f - 1) * c * ((g + 1) * c + g) + 1) + d
+ },
+ easeInOutBack: function(a, c, d, e, f, g) {
+ g == b && (g = 1.70158);
+ if ((c /= f / 2) < 1) return e / 2 * c * c * (((g *= 1.525) + 1) * c - g) + d;
+ return e / 2 * ((c -= 2) * c * (((g *= 1.525) + 1) * c + g) + 2) + d
+ },
+ easeInBounce: function(b, c, d, e, f) {
+ return e - a.easing.easeOutBounce(b, f - c, 0, e, f) + d
+ },
+ easeOutBounce: function(a, b, c, d, e) {
+ return (b /= e) < 1 / 2.75 ? d * 7.5625 * b * b + c: b < 2 / 2.75 ? d * (7.5625 * (b -= 1.5 / 2.75) * b + .75) + c: b < 2.5 / 2.75 ? d * (7.5625 * (b -= 2.25 / 2.75) * b + .9375) + c: d * (7.5625 * (b -= 2.625 / 2.75) * b + .984375) + c
+ },
+ easeInOutBounce: function(b, c, d, e, f) {
+ if (c < f / 2) return a.easing.easeInBounce(b, c * 2, 0, e, f) * .5 + d;
+ return a.easing.easeOutBounce(b, c * 2 - f, 0, e, f) * .5 + e * .5 + d
+ }
+ })
+} (jQuery);
+/*
+ * jQuery UI Effects Blind 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Blind
+ *
+ * Depends:
+ * jquery.effects.core.js
+ */
+(function(a, b) {
+ a.effects.blind = function(b) {
+ return this.queue(function() {
+ var c = a(this),
+ d = ["position", "top", "bottom", "left", "right"],
+ e = a.effects.setMode(c, b.options.mode || "hide"),
+ f = b.options.direction || "vertical";
+ a.effects.save(c, d),
+ c.show();
+ var g = a.effects.createWrapper(c).css({
+ overflow: "hidden"
+ }),
+ h = f == "vertical" ? "height": "width",
+ i = f == "vertical" ? g.height() : g.width();
+ e == "show" && g.css(h, 0);
+ var j = {};
+ j[h] = e == "show" ? i: 0,
+ g.animate(j, b.duration, b.options.easing,
+ function() {
+ e == "hide" && c.hide(),
+ a.effects.restore(c, d),
+ a.effects.removeWrapper(c),
+ b.callback && b.callback.apply(c[0], arguments),
+ c.dequeue()
+ })
+ })
+ }
+})(jQuery);
+/*
+ * jQuery UI Effects Bounce 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Bounce
+ *
+ * Depends:
+ * jquery.effects.core.js
+ */
+(function(a, b) {
+ a.effects.bounce = function(b) {
+ return this.queue(function() {
+ var c = a(this),
+ d = ["position", "top", "bottom", "left", "right"],
+ e = a.effects.setMode(c, b.options.mode || "effect"),
+ f = b.options.direction || "up",
+ g = b.options.distance || 20,
+ h = b.options.times || 5,
+ i = b.duration || 250;
+ /show|hide/.test(e) && d.push("opacity"),
+ a.effects.save(c, d),
+ c.show(),
+ a.effects.createWrapper(c);
+ var j = f == "up" || f == "down" ? "top": "left",
+ k = f == "up" || f == "left" ? "pos": "neg",
+ g = b.options.distance || (j == "top" ? c.outerHeight({
+ margin: !0
+ }) / 3 : c.outerWidth({
+ margin: !0
+ }) / 3);
+ e == "show" && c.css("opacity", 0).css(j, k == "pos" ? -g: g),
+ e == "hide" && (g = g / (h * 2)),
+ e != "hide" && h--;
+ if (e == "show") {
+ var l = {
+ opacity: 1
+ };
+ l[j] = (k == "pos" ? "+=": "-=") + g,
+ c.animate(l, i / 2, b.options.easing),
+ g = g / 2,
+ h--
+ }
+ for (var m = 0; m < h; m++) {
+ var n = {},
+ p = {};
+ n[j] = (k == "pos" ? "-=": "+=") + g,
+ p[j] = (k == "pos" ? "+=": "-=") + g,
+ c.animate(n, i / 2, b.options.easing).animate(p, i / 2, b.options.easing),
+ g = e == "hide" ? g * 2 : g / 2
+ }
+ if (e == "hide") {
+ var l = {
+ opacity: 0
+ };
+ l[j] = (k == "pos" ? "-=": "+=") + g,
+ c.animate(l, i / 2, b.options.easing,
+ function() {
+ c.hide(),
+ a.effects.restore(c, d),
+ a.effects.removeWrapper(c),
+ b.callback && b.callback.apply(this, arguments)
+ })
+ } else {
+ var n = {},
+ p = {};
+ n[j] = (k == "pos" ? "-=": "+=") + g,
+ p[j] = (k == "pos" ? "+=": "-=") + g,
+ c.animate(n, i / 2, b.options.easing).animate(p, i / 2, b.options.easing,
+ function() {
+ a.effects.restore(c, d),
+ a.effects.removeWrapper(c),
+ b.callback && b.callback.apply(this, arguments)
+ })
+ }
+ c.queue("fx",
+ function() {
+ c.dequeue()
+ }),
+ c.dequeue()
+ })
+ }
+})(jQuery);
+/*
+ * jQuery UI Effects Clip 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Clip
+ *
+ * Depends:
+ * jquery.effects.core.js
+ */
+(function(a, b) {
+ a.effects.clip = function(b) {
+ return this.queue(function() {
+ var c = a(this),
+ d = ["position", "top", "bottom", "left", "right", "height", "width"],
+ e = a.effects.setMode(c, b.options.mode || "hide"),
+ f = b.options.direction || "vertical";
+ a.effects.save(c, d),
+ c.show();
+ var g = a.effects.createWrapper(c).css({
+ overflow: "hidden"
+ }),
+ h = c[0].tagName == "IMG" ? g: c,
+ i = {
+ size: f == "vertical" ? "height": "width",
+ position: f == "vertical" ? "top": "left"
+ },
+ j = f == "vertical" ? h.height() : h.width();
+ e == "show" && (h.css(i.size, 0), h.css(i.position, j / 2));
+ var k = {};
+ k[i.size] = e == "show" ? j: 0,
+ k[i.position] = e == "show" ? 0 : j / 2,
+ h.animate(k, {
+ queue: !1,
+ duration: b.duration,
+ easing: b.options.easing,
+ complete: function() {
+ e == "hide" && c.hide(),
+ a.effects.restore(c, d),
+ a.effects.removeWrapper(c),
+ b.callback && b.callback.apply(c[0], arguments),
+ c.dequeue()
+ }
+ })
+ })
+ }
+})(jQuery);
+/*
+ * jQuery UI Effects Drop 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Drop
+ *
+ * Depends:
+ * jquery.effects.core.js
+ */
+(function(a, b) {
+ a.effects.drop = function(b) {
+ return this.queue(function() {
+ var c = a(this),
+ d = ["position", "top", "bottom", "left", "right", "opacity"],
+ e = a.effects.setMode(c, b.options.mode || "hide"),
+ f = b.options.direction || "left";
+ a.effects.save(c, d),
+ c.show(),
+ a.effects.createWrapper(c);
+ var g = f == "up" || f == "down" ? "top": "left",
+ h = f == "up" || f == "left" ? "pos": "neg",
+ i = b.options.distance || (g == "top" ? c.outerHeight({
+ margin: !0
+ }) / 2 : c.outerWidth({
+ margin: !0
+ }) / 2);
+ e == "show" && c.css("opacity", 0).css(g, h == "pos" ? -i: i);
+ var j = {
+ opacity: e == "show" ? 1 : 0
+ };
+ j[g] = (e == "show" ? h == "pos" ? "+=": "-=": h == "pos" ? "-=": "+=") + i,
+ c.animate(j, {
+ queue: !1,
+ duration: b.duration,
+ easing: b.options.easing,
+ complete: function() {
+ e == "hide" && c.hide(),
+ a.effects.restore(c, d),
+ a.effects.removeWrapper(c),
+ b.callback && b.callback.apply(this, arguments),
+ c.dequeue()
+ }
+ })
+ })
+ }
+})(jQuery);
+/*
+ * jQuery UI Effects Explode 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Explode
+ *
+ * Depends:
+ * jquery.effects.core.js
+ */
+(function(a, b) {
+ a.effects.explode = function(b) {
+ return this.queue(function() {
+ var c = b.options.pieces ? Math.round(Math.sqrt(b.options.pieces)) : 3,
+ d = b.options.pieces ? Math.round(Math.sqrt(b.options.pieces)) : 3;
+ b.options.mode = b.options.mode == "toggle" ? a(this).is(":visible") ? "hide": "show": b.options.mode;
+ var e = a(this).show().css("visibility", "hidden"),
+ f = e.offset();
+ f.top -= parseInt(e.css("marginTop"), 10) || 0,
+ f.left -= parseInt(e.css("marginLeft"), 10) || 0;
+ var g = e.outerWidth(!0),
+ h = e.outerHeight(!0);
+ for (var i = 0; i < c; i++) for (var j = 0; j < d; j++) e.clone().appendTo("body").wrap("<div></div>").css({
+ position: "absolute",
+ visibility: "visible",
+ left: -j * (g / d),
+ top: -i * (h / c)
+ }).parent().addClass("ui-effects-explode").css({
+ position: "absolute",
+ overflow: "hidden",
+ width: g / d,
+ height: h / c,
+ left: f.left + j * (g / d) + (b.options.mode == "show" ? (j - Math.floor(d / 2)) * (g / d) : 0),
+ top: f.top + i * (h / c) + (b.options.mode == "show" ? (i - Math.floor(c / 2)) * (h / c) : 0),
+ opacity: b.options.mode == "show" ? 0 : 1
+ }).animate({
+ left: f.left + j * (g / d) + (b.options.mode == "show" ? 0 : (j - Math.floor(d / 2)) * (g / d)),
+ top: f.top + i * (h / c) + (b.options.mode == "show" ? 0 : (i - Math.floor(c / 2)) * (h / c)),
+ opacity: b.options.mode == "show" ? 1 : 0
+ },
+ b.duration || 500);
+ setTimeout(function() {
+ b.options.mode == "show" ? e.css({
+ visibility: "visible"
+ }) : e.css({
+ visibility: "visible"
+ }).hide(),
+ b.callback && b.callback.apply(e[0]),
+ e.dequeue(),
+ a("div.ui-effects-explode").remove()
+ },
+ b.duration || 500)
+ })
+ }
+})(jQuery);
+/*
+ * jQuery UI Effects Fade 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Fade
+ *
+ * Depends:
+ * jquery.effects.core.js
+ */
+(function(a, b) {
+ a.effects.fade = function(b) {
+ return this.queue(function() {
+ var c = a(this),
+ d = a.effects.setMode(c, b.options.mode || "hide");
+ c.animate({
+ opacity: d
+ },
+ {
+ queue: !1,
+ duration: b.duration,
+ easing: b.options.easing,
+ complete: function() {
+ b.callback && b.callback.apply(this, arguments),
+ c.dequeue()
+ }
+ })
+ })
+ }
+})(jQuery);
+/*
+ * jQuery UI Effects Fold 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Fold
+ *
+ * Depends:
+ * jquery.effects.core.js
+ */
+(function(a, b) {
+ a.effects.fold = function(b) {
+ return this.queue(function() {
+ var c = a(this),
+ d = ["position", "top", "bottom", "left", "right"],
+ e = a.effects.setMode(c, b.options.mode || "hide"),
+ f = b.options.size || 15,
+ g = !!b.options.horizFirst,
+ h = b.duration ? b.duration / 2 : a.fx.speeds._default / 2;
+ a.effects.save(c, d),
+ c.show();
+ var i = a.effects.createWrapper(c).css({
+ overflow: "hidden"
+ }),
+ j = e == "show" != g,
+ k = j ? ["width", "height"] : ["height", "width"],
+ l = j ? [i.width(), i.height()] : [i.height(), i.width()],
+ m = /([0-9]+)%/.exec(f);
+ m && (f = parseInt(m[1], 10) / 100 * l[e == "hide" ? 0 : 1]),
+ e == "show" && i.css(g ? {
+ height: 0,
+ width: f
+ }: {
+ height: f,
+ width: 0
+ });
+ var n = {},
+ p = {};
+ n[k[0]] = e == "show" ? l[0] : f,
+ p[k[1]] = e == "show" ? l[1] : 0,
+ i.animate(n, h, b.options.easing).animate(p, h, b.options.easing,
+ function() {
+ e == "hide" && c.hide(),
+ a.effects.restore(c, d),
+ a.effects.removeWrapper(c),
+ b.callback && b.callback.apply(c[0], arguments),
+ c.dequeue()
+ })
+ })
+ }
+})(jQuery);
+/*
+ * jQuery UI Effects Highlight 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Highlight
+ *
+ * Depends:
+ * jquery.effects.core.js
+ */
+(function(a, b) {
+ a.effects.highlight = function(b) {
+ return this.queue(function() {
+ var c = a(this),
+ d = ["backgroundImage", "backgroundColor", "opacity"],
+ e = a.effects.setMode(c, b.options.mode || "show"),
+ f = {
+ backgroundColor: c.css("backgroundColor")
+ };
+ e == "hide" && (f.opacity = 0),
+ a.effects.save(c, d),
+ c.show().css({
+ backgroundImage: "none",
+ backgroundColor: b.options.color || "#ffff99"
+ }).animate(f, {
+ queue: !1,
+ duration: b.duration,
+ easing: b.options.easing,
+ complete: function() {
+ e == "hide" && c.hide(),
+ a.effects.restore(c, d),
+ e == "show" && !a.support.opacity && this.style.removeAttribute("filter"),
+ b.callback && b.callback.apply(this, arguments),
+ c.dequeue()
+ }
+ })
+ })
+ }
+})(jQuery);
+/*
+ * jQuery UI Effects Pulsate 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Pulsate
+ *
+ * Depends:
+ * jquery.effects.core.js
+ */
+(function(a, b) {
+ a.effects.pulsate = function(b) {
+ return this.queue(function() {
+ var c = a(this),
+ d = a.effects.setMode(c, b.options.mode || "show");
+ times = (b.options.times || 5) * 2 - 1,
+ duration = b.duration ? b.duration / 2 : a.fx.speeds._default / 2,
+ isVisible = c.is(":visible"),
+ animateTo = 0,
+ isVisible || (c.css("opacity", 0).show(), animateTo = 1),
+ (d == "hide" && isVisible || d == "show" && !isVisible) && times--;
+ for (var e = 0; e < times; e++) c.animate({
+ opacity: animateTo
+ },
+ duration, b.options.easing),
+ animateTo = (animateTo + 1) % 2;
+ c.animate({
+ opacity: animateTo
+ },
+ duration, b.options.easing,
+ function() {
+ animateTo == 0 && c.hide(),
+ b.callback && b.callback.apply(this, arguments)
+ }),
+ c.queue("fx",
+ function() {
+ c.dequeue()
+ }).dequeue()
+ })
+ }
+})(jQuery);
+/*
+ * jQuery UI Effects Scale 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Scale
+ *
+ * Depends:
+ * jquery.effects.core.js
+ */
+(function(a, b) {
+ a.effects.puff = function(b) {
+ return this.queue(function() {
+ var c = a(this),
+ d = a.effects.setMode(c, b.options.mode || "hide"),
+ e = parseInt(b.options.percent, 10) || 150,
+ f = e / 100,
+ g = {
+ height: c.height(),
+ width: c.width()
+ };
+ a.extend(b.options, {
+ fade: !0,
+ mode: d,
+ percent: d == "hide" ? e: 100,
+ from: d == "hide" ? g: {
+ height: g.height * f,
+ width: g.width * f
+ }
+ }),
+ c.effect("scale", b.options, b.duration, b.callback),
+ c.dequeue()
+ })
+ },
+ a.effects.scale = function(b) {
+ return this.queue(function() {
+ var c = a(this),
+ d = a.extend(!0, {},
+ b.options),
+ e = a.effects.setMode(c, b.options.mode || "effect"),
+ f = parseInt(b.options.percent, 10) || (parseInt(b.options.percent, 10) == 0 ? 0 : e == "hide" ? 0 : 100),
+ g = b.options.direction || "both",
+ h = b.options.origin;
+ e != "effect" && (d.origin = h || ["middle", "center"], d.restore = !0);
+ var i = {
+ height: c.height(),
+ width: c.width()
+ };
+ c.from = b.options.from || (e == "show" ? {
+ height: 0,
+ width: 0
+ }: i);
+ var j = {
+ y: g != "horizontal" ? f / 100 : 1,
+ x: g != "vertical" ? f / 100 : 1
+ };
+ c.to = {
+ height: i.height * j.y,
+ width: i.width * j.x
+ },
+ b.options.fade && (e == "show" && (c.from.opacity = 0, c.to.opacity = 1), e == "hide" && (c.from.opacity = 1, c.to.opacity = 0)),
+ d.from = c.from,
+ d.to = c.to,
+ d.mode = e,
+ c.effect("size", d, b.duration, b.callback),
+ c.dequeue()
+ })
+ },
+ a.effects.size = function(b) {
+ return this.queue(function() {
+ var c = a(this),
+ d = ["position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity"],
+ e = ["position", "top", "bottom", "left", "right", "overflow", "opacity"],
+ f = ["width", "height", "overflow"],
+ g = ["fontSize"],
+ h = ["borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom"],
+ i = ["borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight"],
+ j = a.effects.setMode(c, b.options.mode || "effect"),
+ k = b.options.restore || !1,
+ l = b.options.scale || "both",
+ m = b.options.origin,
+ n = {
+ height: c.height(),
+ width: c.width()
+ };
+ c.from = b.options.from || n,
+ c.to = b.options.to || n;
+ if (m) {
+ var p = a.effects.getBaseline(m, n);
+ c.from.top = (n.height - c.from.height) * p.y,
+ c.from.left = (n.width - c.from.width) * p.x,
+ c.to.top = (n.height - c.to.height) * p.y,
+ c.to.left = (n.width - c.to.width) * p.x
+ }
+ var q = {
+ from: {
+ y: c.from.height / n.height,
+ x: c.from.width / n.width
+ },
+ to: {
+ y: c.to.height / n.height,
+ x: c.to.width / n.width
+ }
+ };
+ if (l == "box" || l == "both") q.from.y != q.to.y && (d = d.concat(h), c.from = a.effects.setTransition(c, h, q.from.y, c.from), c.to = a.effects.setTransition(c, h, q.to.y, c.to)),
+ q.from.x != q.to.x && (d = d.concat(i), c.from = a.effects.setTransition(c, i, q.from.x, c.from), c.to = a.effects.setTransition(c, i, q.to.x, c.to)); (l == "content" || l == "both") && q.from.y != q.to.y && (d = d.concat(g), c.from = a.effects.setTransition(c, g, q.from.y, c.from), c.to = a.effects.setTransition(c, g, q.to.y, c.to)),
+ a.effects.save(c, k ? d: e),
+ c.show(),
+ a.effects.createWrapper(c),
+ c.css("overflow", "hidden").css(c.from);
+ if (l == "content" || l == "both") h = h.concat(["marginTop", "marginBottom"]).concat(g),
+ i = i.concat(["marginLeft", "marginRight"]),
+ f = d.concat(h).concat(i),
+ c.find("*[width]").each(function() {
+ child = a(this),
+ k && a.effects.save(child, f);
+ var c = {
+ height: child.height(),
+ width: child.width()
+ };
+ child.from = {
+ height: c.height * q.from.y,
+ width: c.width * q.from.x
+ },
+ child.to = {
+ height: c.height * q.to.y,
+ width: c.width * q.to.x
+ },
+ q.from.y != q.to.y && (child.from = a.effects.setTransition(child, h, q.from.y, child.from), child.to = a.effects.setTransition(child, h, q.to.y, child.to)),
+ q.from.x != q.to.x && (child.from = a.effects.setTransition(child, i, q.from.x, child.from), child.to = a.effects.setTransition(child, i, q.to.x, child.to)),
+ child.css(child.from),
+ child.animate(child.to, b.duration, b.options.easing,
+ function() {
+ k && a.effects.restore(child, f)
+ })
+ });
+ c.animate(c.to, {
+ queue: !1,
+ duration: b.duration,
+ easing: b.options.easing,
+ complete: function() {
+ c.to.opacity === 0 && c.css("opacity", c.from.opacity),
+ j == "hide" && c.hide(),
+ a.effects.restore(c, k ? d: e),
+ a.effects.removeWrapper(c),
+ b.callback && b.callback.apply(this, arguments),
+ c.dequeue()
+ }
+ })
+ })
+ }
+})(jQuery);
+/*
+ * jQuery UI Effects Shake 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Shake
+ *
+ * Depends:
+ * jquery.effects.core.js
+ */
+(function(a, b) {
+ a.effects.shake = function(b) {
+ return this.queue(function() {
+ var c = a(this),
+ d = ["position", "top", "bottom", "left", "right"],
+ e = a.effects.setMode(c, b.options.mode || "effect"),
+ f = b.options.direction || "left",
+ g = b.options.distance || 20,
+ h = b.options.times || 3,
+ i = b.duration || b.options.duration || 140;
+ a.effects.save(c, d),
+ c.show(),
+ a.effects.createWrapper(c);
+ var j = f == "up" || f == "down" ? "top": "left",
+ k = f == "up" || f == "left" ? "pos": "neg",
+ l = {},
+ m = {},
+ n = {};
+ l[j] = (k == "pos" ? "-=": "+=") + g,
+ m[j] = (k == "pos" ? "+=": "-=") + g * 2,
+ n[j] = (k == "pos" ? "-=": "+=") + g * 2,
+ c.animate(l, i, b.options.easing);
+ for (var p = 1; p < h; p++) c.animate(m, i, b.options.easing).animate(n, i, b.options.easing);
+ c.animate(m, i, b.options.easing).animate(l, i / 2, b.options.easing,
+ function() {
+ a.effects.restore(c, d),
+ a.effects.removeWrapper(c),
+ b.callback && b.callback.apply(this, arguments)
+ }),
+ c.queue("fx",
+ function() {
+ c.dequeue()
+ }),
+ c.dequeue()
+ })
+ }
+})(jQuery);
+/*
+ * jQuery UI Effects Slide 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Slide
+ *
+ * Depends:
+ * jquery.effects.core.js
+ */
+(function(a, b) {
+ a.effects.slide = function(b) {
+ return this.queue(function() {
+ var c = a(this),
+ d = ["position", "top", "bottom", "left", "right"],
+ e = a.effects.setMode(c, b.options.mode || "show"),
+ f = b.options.direction || "left";
+ a.effects.save(c, d),
+ c.show(),
+ a.effects.createWrapper(c).css({
+ overflow: "hidden"
+ });
+ var g = f == "up" || f == "down" ? "top": "left",
+ h = f == "up" || f == "left" ? "pos": "neg",
+ i = b.options.distance || (g == "top" ? c.outerHeight({
+ margin: !0
+ }) : c.outerWidth({
+ margin: !0
+ }));
+ e == "show" && c.css(g, h == "pos" ? isNaN(i) ? "-" + i: -i: i);
+ var j = {};
+ j[g] = (e == "show" ? h == "pos" ? "+=": "-=": h == "pos" ? "-=": "+=") + i,
+ c.animate(j, {
+ queue: !1,
+ duration: b.duration,
+ easing: b.options.easing,
+ complete: function() {
+ e == "hide" && c.hide(),
+ a.effects.restore(c, d),
+ a.effects.removeWrapper(c),
+ b.callback && b.callback.apply(this, arguments),
+ c.dequeue()
+ }
+ })
+ })
+ }
+})(jQuery);
+/*
+ * jQuery UI Effects Transfer 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Transfer
+ *
+ * Depends:
+ * jquery.effects.core.js
+ */
+(function(a, b) {
+ a.effects.transfer = function(b) {
+ return this.queue(function() {
+ var c = a(this),
+ d = a(b.options.to),
+ e = d.offset(),
+ f = {
+ top: e.top,
+ left: e.left,
+ height: d.innerHeight(),
+ width: d.innerWidth()
+ },
+ g = c.offset(),
+ h = a('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(b.options.className).css({
+ top: g.top,
+ left: g.left,
+ height: c.innerHeight(),
+ width: c.innerWidth(),
+ position: "absolute"
+ }).animate(f, b.duration, b.options.easing,
+ function() {
+ h.remove(),
+ b.callback && b.callback.apply(c[0], arguments),
+ c.dequeue()
+ })
+ })
+ }
+})(jQuery);
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/ar-ma.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/ar-ma.js
new file mode 100644
index 0000000..5be502c
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/ar-ma.js
@@ -0,0 +1,5 @@
+// moment.js language configuration
+// language : Moroccan Arabic (ar-ma)
+// author : ElFadili Yassine : https://github.com/ElFadiliY
+// author : Abdel Said : https://github.com/abdelsaid
+!function(){function e(e){e.lang("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:6,doy:12}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/ar.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/ar.js
new file mode 100644
index 0000000..90308eb
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/ar.js
@@ -0,0 +1,5 @@
+// moment.js language configuration
+// language : Arabic (ar)
+// author : Abdel Said : https://github.com/abdelsaid
+// changes in months, weekdays : Ahmed Elkhatib
+!function(){function e(e){e.lang("ar",{months:"\u064a\u0646\u0627\u064a\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0641\u0628\u0631\u0627\u064a\u0631/ \u0634\u0628\u0627\u0637_\u0645\u0627\u0631\u0633/ \u0622\u0630\u0627\u0631_\u0623\u0628\u0631\u064a\u0644/ \u0646\u064a\u0633\u0627\u0646_\u0645\u0627\u064a\u0648/ \u0623\u064a\u0627\u0631_\u064a\u0648\u0646\u064a\u0648/ \u062d\u0632\u064a\u0631\u0627\u0646_\u064a\u0648\u0644\u064a\u0648/ \u062a\u0645\u0648\u0632_\u0623\u063a\u0633\u0637\u0633/ \u0622\u0628_\u0633\u0628\u062a\u0645\u0628\u0631/ \u0623\u064a\u0644\u0648\u0644_\u0623\u0643\u062a\u0648\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644_\u0646\u0648\u0641\u0645\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u062f\u064a\u0633\u0645\u0628\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0641\u0628\u0631\u0627\u064a\u0631/ \u0634\u0628\u0627\u0637_\u0645\u0627\u0631\u0633/ \u0622\u0630\u0627\u0631_\u0623\u0628\u0631\u064a\u0644/ \u0646\u064a\u0633\u0627\u0646_\u0645\u0627\u064a\u0648/ \u0623\u064a\u0627\u0631_\u064a\u0648\u0646\u064a\u0648/ \u062d\u0632\u064a\u0631\u0627\u0646_\u064a\u0648\u0644\u064a\u0648/ \u062a\u0645\u0648\u0632_\u0623\u063a\u0633\u0637\u0633/ \u0622\u0628_\u0633\u0628\u062a\u0645\u0628\u0631/ \u0623\u064a\u0644\u0648\u0644_\u0623\u0643\u062a\u0648\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644_\u0646\u0648\u0641\u0645\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u062f\u064a\u0633\u0645\u0628\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:6,doy:12}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/bg.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/bg.js
new file mode 100644
index 0000000..e1ae41d
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/bg.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : bulgarian (bg)
+// author : Krasen Borisov : https://github.com/kraz
+!function(){function e(e){e.lang("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0440_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"h:mm",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u043d\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},ordinal:function(e){var t=e%10,a=e%100;return 0===e?e+"-\u0435\u0432":0===a?e+"-\u0435\u043d":a>10&&20>a?e+"-\u0442\u0438":1===t?e+"-\u0432\u0438":2===t?e+"-\u0440\u0438":7===t||8===t?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/br.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/br.js
new file mode 100644
index 0000000..077cc93
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/br.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : breton (br)
+// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
+!function(){function e(e){function t(e,t,a){var n={mm:"munutenn",MM:"miz",dd:"devezh"};return e+" "+_(n[a],e)}function a(e){switch(n(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}function n(e){return e>9?n(e%10):e}function _(e,t){return 2===t?s(e):e}function s(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}e.lang("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),longDateFormat:{LT:"h[e]mm A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY LT",LLLL:"dddd, D [a viz] MMMM YYYY LT"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondenno\xf9",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:a},ordinal:function(e){var t=1===e?"a\xf1":"vet";return e+t},week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/ca.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/ca.js
new file mode 100644
index 0000000..74052cb
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/ca.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : catalan (ca)
+// author : Juan G. Hurtado : https://github.com/juanghurtado
+!function(){function e(e){e.lang("ca",{months:"Gener_Febrer_Mar\xe7_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"),monthsShort:"Gen._Febr._Mar._Abr._Mai._Jun._Jul._Ag._Set._Oct._Nov._Des.".split("_"),weekdays:"Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"),weekdaysShort:"Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[dem\xe0 a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:"%d\xba",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/cs.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/cs.js
new file mode 100644
index 0000000..a6a3f9c
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/cs.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : czech (cs)
+// author : petrbela : https://github.com/petrbela
+!function(){function e(e){function t(e){return e>1&&5>e&&1!==~~(e/10)}function a(e,a,n,_){var s=e+" ";switch(n){case"s":return a||_?"p\xe1r vte\u0159in":"p\xe1r vte\u0159inami";case"m":return a?"minuta":_?"minutu":"minutou";case"mm":return a||_?s+(t(e)?"minuty":"minut"):s+"minutami";break;case"h":return a?"hodina":_?"hodinu":"hodinou";case"hh":return a||_?s+(t(e)?"hodiny":"hodin"):s+"hodinami";break;case"d":return a||_?"den":"dnem";case"dd":return a||_?s+(t(e)?"dny":"dn\xed"):s+"dny";break;case"M":return a||_?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return a||_?s+(t(e)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):s+"m\u011bs\xedci";break;case"y":return a||_?"rok":"rokem";case"yy":return a||_?s+(t(e)?"roky":"let"):s+"lety"}}var n="leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),_="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_");e.lang("cs",{months:n,monthsShort:_,monthsParse:function(e,t){var a,n=[];for(a=0;12>a;a++)n[a]=new RegExp("^"+e[a]+"$|^"+t[a]+"$","i");return n}(n,_),weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes v] LT",nextDay:"[z\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/cv.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/cv.js
new file mode 100644
index 0000000..3d9e8ce
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/cv.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : chuvash (cv)
+// author : Anatoly Mironov : https://github.com/mirontoli
+!function(){function e(e){e.lang("cv",{months:"\u043a\u0103\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u0103\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\xe7\u0115\u0440\u0442\u043c\u0435_\u0443\u0442\u0103_\xe7\u0443\u0440\u043b\u0430_\u0430\u0432\u0103\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u0103\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\xe7\u0115\u0440_\u0443\u0442\u0103_\xe7\u0443\u0440_\u0430\u0432_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u0115\xe7\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u0103\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u0115\xe7_\u044d\u0440\u043d_\u0448\u0103\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\xe7_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"YYYY [\xe7\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u0103\u0445\u0115\u043d] D[-\u043c\u0115\u0448\u0115]",LLL:"YYYY [\xe7\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u0103\u0445\u0115\u043d] D[-\u043c\u0115\u0448\u0115], LT",LLLL:"dddd, YYYY [\xe7\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u0103\u0445\u0115\u043d] D[-\u043c\u0115\u0448\u0115], LT"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u0114\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\xc7\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u0115] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(e){var t=/\u0441\u0435\u0445\u0435\u0442$/i.exec(e)?"\u0440\u0435\u043d":/\xe7\u0443\u043b$/i.exec(e)?"\u0442\u0430\u043d":"\u0440\u0430\u043d";return e+t},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u0115\u0440-\u0438\u043a \xe7\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u0115\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u0115\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u0115\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u0115\u0440 \u0443\u0439\u0103\u0445",MM:"%d \u0443\u0439\u0103\u0445",y:"\u043f\u0115\u0440 \xe7\u0443\u043b",yy:"%d \xe7\u0443\u043b"},ordinal:"%d-\u043c\u0115\u0448",week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/da.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/da.js
new file mode 100644
index 0000000..4fd21b1
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/da.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : danish (da)
+// author : Ulrik Nielsen : https://github.com/mrbase
+!function(){function e(e){e.lang("da",{months:"Januar_Februar_Marts_April_Maj_Juni_Juli_August_September_Oktober_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Maj_Jun_Jul_Aug_Sep_Okt_Nov_Dec".split("_"),weekdays:"S\xf8ndag_Mandag_Tirsdag_Onsdag_Torsdag_Fredag_L\xf8rdag".split("_"),weekdaysShort:"S\xf8n_Man_Tir_Ons_Tor_Fre_L\xf8r".split("_"),weekdaysMin:"S\xf8_Ma_Ti_On_To_Fr_L\xf8".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D. MMMM, YYYY LT"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I g\xe5r kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/de.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/de.js
new file mode 100644
index 0000000..d5886c4
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/de.js
@@ -0,0 +1,5 @@
+// moment.js language configuration
+// language : german (de)
+// author : lluchs : https://github.com/lluchs
+// author: Menelion Elensúle: https://github.com/Oire
+!function(){function e(e){function t(e,t,a){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[a][0]:n[a][1]}e.lang("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Uhr]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Heute um] LT",sameElse:"L",nextDay:"[Morgen um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gestern um] LT",lastWeek:"[letzten] dddd [um] LT"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/el.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/el.js
new file mode 100644
index 0000000..2f5c03b
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/el.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : modern greek (el)
+// author : Aggelos Karalias : https://github.com/mehiel
+!function(){function e(e){e.lang("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(e,t){return/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(e,t,a){return e>11?a?"\u03bc\u03bc":"\u039c\u039c":a?"\u03c0\u03bc":"\u03a0\u039c"},longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendarEl:{sameDay:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT",sameElse:"L"},calendar:function(e,t){var a=this._calendarEl[e],n=t&&t.hours();return a.replace("{}",1===n%12?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},ordinal:function(e){return e+"\u03b7"},week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/en-ca.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/en-ca.js
new file mode 100644
index 0000000..f9277f6
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/en-ca.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : canadian english (en-ca)
+// author : Jonathan Abourbih : https://github.com/jonbca
+!function(){function e(e){e.lang("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"YYYY-MM-DD",LL:"D MMMM, YYYY",LLL:"D MMMM, YYYY LT",LLLL:"dddd, D MMMM, YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/en-gb.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/en-gb.js
new file mode 100644
index 0000000..1f86186
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/en-gb.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : great britain english (en-gb)
+// author : Chris Gedrim : https://github.com/chrisgedrim
+!function(){function e(e){e.lang("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/eo.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/eo.js
new file mode 100644
index 0000000..f619932
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/eo.js
@@ -0,0 +1,6 @@
+// moment.js language configuration
+// language : esperanto (eo)
+// author : Colin Dean : https://github.com/colindean
+// komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
+// Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
+!function(){function e(e){e.lang("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_a\u016dg_sep_okt_nov_dec".split("_"),weekdays:"Diman\u0109o_Lundo_Mardo_Merkredo_\u0134a\u016ddo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_\u0134a\u016d_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_\u0134a_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY LT",LLLL:"dddd, [la] D[-an de] MMMM, YYYY LT"},meridiem:function(e,t,a){return e>11?a?"p.t.m.":"P.T.M.":a?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"anta\u016d %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinal:"%da",week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/es.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/es.js
new file mode 100644
index 0000000..da7f10c
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/es.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : spanish (es)
+// author : Julio Napurí : https://github.com/julionc
+!function(){function e(e){e.lang("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"Do_Lu_Ma_Mi_Ju_Vi_S\xe1".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},ordinal:"%d\xba",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/et.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/et.js
new file mode 100644
index 0000000..d8ade47
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/et.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : estonian (et)
+// author : Henry Kehlmann : https://github.com/madhenry
+!function(){function e(e){function t(e,t,a,n){return n||t?"paari sekundi":"paar sekundit"}e.lang("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[T\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:t,m:"minut",mm:"%d minutit",h:"tund",hh:"%d tundi",d:"p\xe4ev",dd:"%d p\xe4eva",M:"kuu",MM:"%d kuud",y:"aasta",yy:"%d aastat"},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/eu.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/eu.js
new file mode 100644
index 0000000..e88821d
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/eu.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : euskara (eu)
+// author : Eneko Illarramendi : https://github.com/eillarra
+!function(){function e(e){e.lang("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] LT",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] LT",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] LT",llll:"ddd, YYYY[ko] MMM D[a] LT"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinal:"%d.",week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/fa.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/fa.js
new file mode 100644
index 0000000..0a03570
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/fa.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : Persian Language
+// author : Ebrahim Byagowi : https://github.com/ebraminio
+!function(){function e(e){var t={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},a={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"};e.lang("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},meridiem:function(e){return 12>e?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f\u06cc\u0646 \u062b\u0627\u0646\u06cc\u0647",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/[\u06f0-\u06f9]/g,function(e){return a[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"\u060c")},ordinal:"%d\u0645",week:{dow:6,doy:12}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/fi.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/fi.js
new file mode 100644
index 0000000..4075a6f
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/fi.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : finnish (fi)
+// author : Tarmo Aidantausta : https://github.com/bleadof
+!function(){function e(e){function t(e,t,n,_){var s="";switch(n){case"s":return _?"muutaman sekunnin":"muutama sekunti";case"m":return _?"minuutin":"minuutti";case"mm":s=_?"minuutin":"minuuttia";break;case"h":return _?"tunnin":"tunti";case"hh":s=_?"tunnin":"tuntia";break;case"d":return _?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":s=_?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return _?"kuukauden":"kuukausi";case"MM":s=_?"kuukauden":"kuukautta";break;case"y":return _?"vuoden":"vuosi";case"yy":s=_?"vuoden":"vuotta"}return s=a(e,_)+" "+s}function a(e,t){return 10>e?t?_[e]:n[e]:e}var n="nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" "),_=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",n[7],n[8],n[9]];e.lang("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] LT",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] LT",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] LT",llll:"ddd, Do MMM YYYY, [klo] LT"},calendar:{sameDay:"[t\xe4n\xe4\xe4n] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/fr-ca.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/fr-ca.js
new file mode 100644
index 0000000..f8f314a
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/fr-ca.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : canadian french (fr-ca)
+// author : Jonathan Abourbih : https://github.com/jonbca
+!function(){function e(e){e.lang("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return e+(1===e?"er":"")}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/fr.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/fr.js
new file mode 100644
index 0000000..a8325d8
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/fr.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : french (fr)
+// author : John Fischer : https://github.com/jfroffice
+!function(){function e(e){e.lang("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return e+(1===e?"er":"")},week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/gl.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/gl.js
new file mode 100644
index 0000000..aac8504
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/gl.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : galician (gl)
+// author : Juan G. Hurtado : https://github.com/juanghurtado
+!function(){function e(e){e.lang("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xu\xf1o_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xu\xf1._Xul._Ago._Set._Out._Nov._Dec.".split("_"),weekdays:"Domingo_Luns_Martes_M\xe9rcores_Xoves_Venres_S\xe1bado".split("_"),weekdaysShort:"Dom._Lun._Mar._M\xe9r._Xov._Ven._S\xe1b.".split("_"),weekdaysMin:"Do_Lu_Ma_M\xe9_Xo_Ve_S\xe1".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return"uns segundos"===e?"nuns segundos":"en "+e},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinal:"%d\xba",week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/he.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/he.js
new file mode 100644
index 0000000..46dec54
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/he.js
@@ -0,0 +1,5 @@
+// moment.js language configuration
+// language : Hebrew (he)
+// author : Tomer Cohen : https://github.com/tomer
+// author : Moshe Simantov : https://github.com/DevelopmentIL
+!function(){function e(e){e.lang("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY LT",LLLL:"dddd, D [\u05d1]MMMM YYYY LT",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY LT",llll:"ddd, D MMM YYYY LT"},calendar:{sameDay:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:"%d \u05e9\u05e2\u05d5\u05ea",d:"\u05d9\u05d5\u05dd",dd:"%d \u05d9\u05de\u05d9\u05dd",M:"\u05d7\u05d5\u05d3\u05e9",MM:"%d \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd",y:"\u05e9\u05e0\u05d4",yy:"%d \u05e9\u05e0\u05d9\u05dd"}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/hi.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/hi.js
new file mode 100644
index 0000000..60a171d
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/hi.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : hindi (hi)
+// author : Mayank Singhal : https://github.com/mayanksinghal
+!function(){function e(e){var t={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},a={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};e.lang("hi",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiem:function(e){return 4>e?"\u0930\u093e\u0924":10>e?"\u0938\u0941\u092c\u0939":17>e?"\u0926\u094b\u092a\u0939\u0930":20>e?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/hu.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/hu.js
new file mode 100644
index 0000000..90c0d81
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/hu.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : hungarian (hu)
+// author : Adam Brunner : https://github.com/adambrunner
+!function(){function e(e){function t(e,t,n,a){var _=e;switch(n){case"s":return a||t?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"m":return"egy"+(a||t?" perc":" perce");case"mm":return _+(a||t?" perc":" perce");case"h":return"egy"+(a||t?" \xf3ra":" \xf3r\xe1ja");case"hh":return _+(a||t?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(a||t?" nap":" napja");case"dd":return _+(a||t?" nap":" napja");case"M":return"egy"+(a||t?" h\xf3nap":" h\xf3napja");case"MM":return _+(a||t?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(a||t?" \xe9v":" \xe9ve");case"yy":return _+(a||t?" \xe9v":" \xe9ve")}return""}function n(e){return(e?"":"[m\xfalt] ")+"["+a[this.day()]+"] LT[-kor]"}var a="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");e.lang("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan_feb_m\xe1rc_\xe1pr_m\xe1j_j\xfan_j\xfal_aug_szept_okt_nov_dec".split("_"),weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D., LT",LLLL:"YYYY. MMMM D., dddd LT"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return n.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return n.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m\xfalva",past:"%s",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinal:"%d.",week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/id.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/id.js
new file mode 100644
index 0000000..18ac26c
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/id.js
@@ -0,0 +1,5 @@
+// moment.js language configuration
+// language : Bahasa Indonesia (id)
+// author : Mohammad Satrio Utomo : https://github.com/tyok
+// reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
+!function(){function e(e){e.lang("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(e){return 11>e?"pagi":15>e?"siang":19>e?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/is.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/is.js
new file mode 100644
index 0000000..221f7ef
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/is.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : icelandic (is)
+// author : Hinrik Örn Sigurðsson : https://github.com/hinrik
+!function(){function e(e){function t(e){return 11===e%100?!0:1===e%10?!1:!0}function n(e,n,a,_){var s=e+" ";switch(a){case"s":return n||_?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"m":return n?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return t(e)?s+(n||_?"m\xedn\xfatur":"m\xedn\xfatum"):n?s+"m\xedn\xfata":s+"m\xedn\xfatu";case"hh":return t(e)?s+(n||_?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return n?"dagur":_?"dag":"degi";case"dd":return t(e)?n?s+"dagar":s+(_?"daga":"d\xf6gum"):n?s+"dagur":s+(_?"dag":"degi");case"M":return n?"m\xe1nu\xf0ur":_?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return t(e)?n?s+"m\xe1nu\xf0ir":s+(_?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):n?s+"m\xe1nu\xf0ur":s+(_?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return n||_?"\xe1r":"\xe1ri";case"yy":return t(e)?s+(n||_?"\xe1r":"\xe1rum"):s+(n||_?"\xe1r":"\xe1ri")}}e.lang("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_La".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] LT",LLLL:"dddd, D. MMMM YYYY [kl.] LT"},calendar:{sameDay:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/it.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/it.js
new file mode 100644
index 0000000..8b2e081
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/it.js
@@ -0,0 +1,5 @@
+// moment.js language configuration
+// language : italian (it)
+// author : Lorenzo : https://github.com/aliem
+// author: Mattia Larentis: https://github.com/nostalgiaz
+!function(){function e(e){e.lang("it",{months:"Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"),monthsShort:"Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"),weekdays:"Domenica_Luned\xec_Marted\xec_Mercoled\xec_Gioved\xec_Venerd\xec_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"D_L_Ma_Me_G_V_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:"[lo scorso] dddd [alle] LT",sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:"%d\xba",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/ja.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/ja.js
new file mode 100644
index 0000000..ec00b2f
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/ja.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : japanese (ja)
+// author : LI Long : https://github.com/baryon
+!function(){function e(e){e.lang("ja",{months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"Ah\u6642m\u5206",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5LT",LLLL:"YYYY\u5e74M\u6708D\u65e5LT dddd"},meridiem:function(e){return 12>e?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:"[\u6765\u9031]dddd LT",lastDay:"[\u6628\u65e5] LT",lastWeek:"[\u524d\u9031]dddd LT",sameElse:"L"},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/ka.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/ka.js
new file mode 100644
index 0000000..381f9f7
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/ka.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : Georgian (ka)
+// author : Irakli Janiashvili : https://github.com/irakli-janiashvili
+!function(){function e(e){function t(e,t){var n={nominative:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),accusative:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10e1_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10e1_\u10db\u10d0\u10e0\u10e2\u10e1_\u10d0\u10de\u10e0\u10d8\u10da\u10d8\u10e1_\u10db\u10d0\u10d8\u10e1\u10e1_\u10d8\u10d5\u10dc\u10d8\u10e1\u10e1_\u10d8\u10d5\u10da\u10d8\u10e1\u10e1_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10e1_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10e1_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10e1".split("_")},a=/D[oD] *MMMM?/.test(t)?"accusative":"nominative";return n[a][e.month()]}function n(e,t){var n={nominative:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),accusative:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_")},a=/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/.test(t)?"accusative":"nominative";return n[a][e.day()]}e.lang("ka",{months:t,monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:n,weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10ec\u10d4\u10da\u10d8)/.test(e)?e.replace(/\u10d8$/,"\u10e8\u10d8"):e+"\u10e8\u10d8"},past:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(e)?e.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(e)?e.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):void 0},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},ordinal:function(e){return 0===e?e:1===e?e+"-\u10da\u10d8":20>e||100>=e&&0===e%20||0===e%100?"\u10db\u10d4-"+e:e+"-\u10d4"},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/ko.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/ko.js
new file mode 100644
index 0000000..1634bb9
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/ko.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : korean (ko)
+// author : Kyungwook, Park : https://github.com/kyungw00k
+!function(){function e(e){e.lang("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h\uc2dc mm\ubd84",L:"YYYY.MM.DD",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c LT",LLLL:"YYYY\ub144 MMMM D\uc77c dddd LT"},meridiem:function(e){return 12>e?"\uc624\uc804":"\uc624\ud6c4"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87\ucd08",ss:"%d\ucd08",m:"\uc77c\ubd84",mm:"%d\ubd84",h:"\ud55c\uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c\ub2ec",MM:"%d\ub2ec",y:"\uc77c\ub144",yy:"%d\ub144"},ordinal:"%d\uc77c"})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/lv.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/lv.js
new file mode 100644
index 0000000..f4b9f97
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/lv.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : latvian (lv)
+// author : Kristaps Karlsons : https://github.com/skakri
+!function(){function e(e){function t(e,t,n){var a=e.split("_");return n?1===t%10&&11!==t?a[2]:a[3]:1===t%10&&11!==t?a[0]:a[1]}function n(e,n,_){return e+" "+t(a[_],e,n)}var a={mm:"min\u016bti_min\u016btes_min\u016bte_min\u016btes",hh:"stundu_stundas_stunda_stundas",dd:"dienu_dienas_diena_dienas",MM:"m\u0113nesi_m\u0113ne\u0161us_m\u0113nesis_m\u0113ne\u0161i",yy:"gadu_gadus_gads_gadi"};e.lang("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, LT",LLLL:"YYYY. [gada] D. MMMM, dddd, LT"},calendar:{sameDay:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"%s v\u0113l\u0101k",past:"%s agr\u0101k",s:"da\u017eas sekundes",m:"min\u016bti",mm:n,h:"stundu",hh:n,d:"dienu",dd:n,M:"m\u0113nesi",MM:n,y:"gadu",yy:n},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/ms-my.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/ms-my.js
new file mode 100644
index 0000000..57d7383
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/ms-my.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : Bahasa Malaysia (ms-MY)
+// author : Weldan Jamili : https://github.com/weldan
+!function(){function e(e){e.lang("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(e){return 11>e?"pagi":15>e?"tengahari":19>e?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/nb.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/nb.js
new file mode 100644
index 0000000..9f29b94
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/nb.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : norwegian bokmål (nb)
+// author : Espen Hovlandsdal : https://github.com/rexxars
+!function(){function e(e){e.lang("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[I dag klokken] LT",nextDay:"[I morgen klokken] LT",nextWeek:"dddd [klokken] LT",lastDay:"[I g\xe5r klokken] LT",lastWeek:"[Forrige] dddd [klokken] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/ne.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/ne.js
new file mode 100644
index 0000000..615734b
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/ne.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : nepali/nepalese
+// author : suvash : https://github.com/suvash
+!function(){function e(e){var t={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},n={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};e.lang("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906\u0907._\u0938\u094b._\u092e\u0919\u094d_\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiem:function(e){return 3>e?"\u0930\u093e\u0924\u0940":10>e?"\u092c\u093f\u0939\u093e\u0928":15>e?"\u0926\u093f\u0909\u0901\u0938\u094b":18>e?"\u092c\u0947\u0932\u0941\u0915\u093e":20>e?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u0940"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u0940] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u0940",s:"\u0915\u0947\u0939\u0940 \u0938\u092e\u092f",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/nl.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/nl.js
new file mode 100644
index 0000000..7cf3e16
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/nl.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : dutch (nl)
+// author : Joris Röling : https://github.com/jjupiter
+!function(){function e(e){var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_");e.lang("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return/-MMM-/.test(a)?n[e.month()]:t[e.month()]},weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Vandaag om] LT",nextDay:"[Morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/nn.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/nn.js
new file mode 100644
index 0000000..f784115
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/nn.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : norwegian nynorsk (nn)
+// author : https://github.com/mechuwind
+!function(){function e(e){e.lang("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_m\xe5n_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I g\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ende] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekund",m:"ett minutt",mm:"%d minutt",h:"en time",hh:"%d timar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/pl.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/pl.js
new file mode 100644
index 0000000..3064c54
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/pl.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : polish (pl)
+// author : Rafal Hirsz : https://github.com/evoL
+!function(){function e(e){function t(e){return 5>e%10&&e%10>1&&1!==~~(e/10)}function n(e,n,a){var _=e+" ";switch(a){case"m":return n?"minuta":"minut\u0119";case"mm":return _+(t(e)?"minuty":"minut");case"h":return n?"godzina":"godzin\u0119";case"hh":return _+(t(e)?"godziny":"godzin");case"MM":return _+(t(e)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return _+(t(e)?"lata":"lat")}}var a="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),_="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_");e.lang("pl",{months:function(e,t){return/D MMMM/.test(t)?_[e.month()]:a[e.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"nie_pon_wt_\u015br_czw_pt_sb".split("_"),weekdaysMin:"N_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Dzi\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:n,mm:n,h:n,hh:n,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:n,y:"rok",yy:n},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/pt-br.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/pt-br.js
new file mode 100644
index 0000000..34c6123
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/pt-br.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : brazilian portuguese (pt-br)
+// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
+!function(){function e(e){e.lang("pt-br",{months:"Janeiro_Fevereiro_Mar\xe7o_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Dom_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1b".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atr\xe1s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%d\xba"})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/pt.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/pt.js
new file mode 100644
index 0000000..fe54406
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/pt.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : portuguese (pt)
+// author : Jefferson : https://github.com/jalex79
+!function(){function e(e){e.lang("pt",{months:"Janeiro_Fevereiro_Mar\xe7o_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Dom_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1b".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atr\xe1s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%d\xba",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/ro.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/ro.js
new file mode 100644
index 0000000..00ce440
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/ro.js
@@ -0,0 +1,5 @@
+// moment.js language configuration
+// language : romanian (ro)
+// author : Vlad Gurdiga : https://github.com/gurdiga
+// author : Valentin Agachi : https://github.com/avaly
+!function(){function e(e){e.lang("ro",{months:"Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"),monthsShort:"Ian_Feb_Mar_Apr_Mai_Iun_Iul_Aug_Sep_Oct_Noi_Dec".split("_"),weekdays:"Duminic\u0103_Luni_Mar\u0163i_Miercuri_Joi_Vineri_S\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[m\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",m:"un minut",mm:"%d minute",h:"o or\u0103",hh:"%d ore",d:"o zi",dd:"%d zile",M:"o lun\u0103",MM:"%d luni",y:"un an",yy:"%d ani"},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/ru.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/ru.js
new file mode 100644
index 0000000..a0c5153
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/ru.js
@@ -0,0 +1,5 @@
+// moment.js language configuration
+// language : russian (ru)
+// author : Viktorminator : https://github.com/Viktorminator
+// Author : Menelion Elensúle : https://github.com/Oire
+!function(){function e(e){function t(e,t){var n=e.split("_");return 1===t%10&&11!==t%100?n[0]:t%10>=2&&4>=t%10&&(10>t%100||t%100>=20)?n[1]:n[2]}function n(e,n,a){var _={mm:"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"};return"m"===a?n?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":e+" "+t(_[a],+e)}function a(e,t){var n={nominative:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),accusative:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_")},a=/D[oD]? *MMMM?/.test(t)?"accusative":"nominative";return n[a][e.month()]}function _(e,t){var n={nominative:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),accusative:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_")},a=/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e)? ?\] ?dddd/.test(t)?"accusative":"nominative";return n[a][e.day()]}e.lang("ru",{months:a,monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:_,weekdaysShort:"\u0432\u0441\u043a_\u043f\u043d\u0434_\u0432\u0442\u0440_\u0441\u0440\u0434_\u0447\u0442\u0432_\u043f\u0442\u043d_\u0441\u0431\u0442".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., LT",LLLL:"dddd, D MMMM YYYY \u0433., LT"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430 \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",nextWeek:function(){return 2===this.day()?"[\u0412\u043e] dddd [\u0432] LT":"[\u0412] dddd [\u0432] LT"},lastWeek:function(){switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",m:n,mm:n,h:"\u0447\u0430\u0441",hh:n,d:"\u0434\u0435\u043d\u044c",dd:n,M:"\u043c\u0435\u0441\u044f\u0446",MM:n,y:"\u0433\u043e\u0434",yy:n},ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-\u0439";case"D":return e+"-\u0433\u043e";case"w":case"W":return e+"-\u044f";default:return e}},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/sk.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/sk.js
new file mode 100644
index 0000000..605abca
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/sk.js
@@ -0,0 +1,5 @@
+// moment.js language configuration
+// language : slovak (sk)
+// author : Martin Minka : https://github.com/k2s
+// based on work of petrbela : https://github.com/petrbela
+!function(){function e(e){function t(e){return e>1&&5>e}function n(e,n,a,_){var d=e+" ";switch(a){case"s":return n||_?"p\xe1r sek\xfand":"p\xe1r sekundami";case"m":return n?"min\xfata":_?"min\xfatu":"min\xfatou";case"mm":return n||_?d+(t(e)?"min\xfaty":"min\xfat"):d+"min\xfatami";break;case"h":return n?"hodina":_?"hodinu":"hodinou";case"hh":return n||_?d+(t(e)?"hodiny":"hod\xedn"):d+"hodinami";break;case"d":return n||_?"de\u0148":"d\u0148om";case"dd":return n||_?d+(t(e)?"dni":"dn\xed"):d+"d\u0148ami";break;case"M":return n||_?"mesiac":"mesiacom";case"MM":return n||_?d+(t(e)?"mesiace":"mesiacov"):d+"mesiacmi";break;case"y":return n||_?"rok":"rokom";case"yy":return n||_?d+(t(e)?"roky":"rokov"):d+"rokmi"}}var a="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),_="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_");e.lang("sk",{months:a,monthsShort:_,monthsParse:function(e,t){var n,a=[];for(n=0;12>n;n++)a[n]=new RegExp("^"+e[n]+"$|^"+t[n]+"$","i");return a}(a,_),weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nede\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/sl.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/sl.js
new file mode 100644
index 0000000..43bd03c
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/sl.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : slovenian (sl)
+// author : Robert Sedovšek : https://github.com/sedovsek
+!function(){function e(e){function t(e,t,n){var a=e+" ";switch(n){case"m":return t?"ena minuta":"eno minuto";case"mm":return a+=1===e?"minuta":2===e?"minuti":3===e||4===e?"minute":"minut";case"h":return t?"ena ura":"eno uro";case"hh":return a+=1===e?"ura":2===e?"uri":3===e||4===e?"ure":"ur";case"dd":return a+=1===e?"dan":"dni";case"MM":return a+=1===e?"mesec":2===e?"meseca":3===e||4===e?"mesece":"mesecev";case"yy":return a+=1===e?"leto":2===e?"leti":3===e||4===e?"leta":"let"}}e.lang("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[v\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[prej\u0161nja] dddd [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"%s nazaj",s:"nekaj sekund",m:t,mm:t,h:t,hh:t,d:"en dan",dd:t,M:"en mesec",MM:t,y:"eno leto",yy:t},ordinal:"%d.",week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/sq.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/sq.js
new file mode 100644
index 0000000..43615c2
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/sq.js
@@ -0,0 +1,5 @@
+// moment.js language configuration
+// language : Albanian (sq)
+// author : Flakërim Ismani : https://github.com/flakerimi
+// author: Menelion Elensúle: https://github.com/Oire (tests)
+!function(){function e(e){e.lang("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Marte_E M\xebrkure_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Sot n\xeb] LT",nextDay:"[Neser n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s me par\xeb",s:"disa seconda",m:"nj\xeb minut",mm:"%d minutea",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/sv.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/sv.js
new file mode 100644
index 0000000..2640eca
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/sv.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : swedish (sv)
+// author : Jens Alm : https://github.com/ulmus
+!function(){function e(e){e.lang("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Ig\xe5r] LT",nextWeek:"dddd LT",lastWeek:"[F\xf6rra] dddd[en] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},ordinal:function(e){var n=e%10,t=1===~~(e%100/10)?"e":1===n?"a":2===n?"a":3===n?"e":"e";return e+t},week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/th.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/th.js
new file mode 100644
index 0000000..5ba5bda
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/th.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : thai (th)
+// author : Kridsada Thanabulpong : https://github.com/sirn
+!function(){function e(e){e.lang("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21\u0e01\u0e23\u0e32_\u0e01\u0e38\u0e21\u0e20\u0e32_\u0e21\u0e35\u0e19\u0e32_\u0e40\u0e21\u0e29\u0e32_\u0e1e\u0e24\u0e29\u0e20\u0e32_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32_\u0e01\u0e23\u0e01\u0e0e\u0e32_\u0e2a\u0e34\u0e07\u0e2b\u0e32_\u0e01\u0e31\u0e19\u0e22\u0e32_\u0e15\u0e38\u0e25\u0e32_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32_\u0e18\u0e31\u0e19\u0e27\u0e32".split("_"),weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),longDateFormat:{LT:"H \u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32 m \u0e19\u0e32\u0e17\u0e35",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 LT",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 LT"},meridiem:function(e){return 12>e?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/tr.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/tr.js
new file mode 100644
index 0000000..95d0319
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/tr.js
@@ -0,0 +1,5 @@
+// moment.js language configuration
+// language : turkish (tr)
+// authors : Erhan Gundogan : https://github.com/erhangundogan,
+// Burak Yiğit Kaya: https://github.com/BYK
+!function(){function e(e){var n={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};e.lang("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(e){if(0===e)return e+"'\u0131nc\u0131";var t=e%10,a=e%100-t,_=e>=100?100:null;return e+(n[t]||n[a]||n[_])},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/tzm-la.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/tzm-la.js
new file mode 100644
index 0000000..93b0904
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/tzm-la.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : Morocco Central Atlas Tamaziɣt in Latin (tzm-la)
+// author : Abdel Said : https://github.com/abdelsaid
+!function(){function e(e){e.lang("tzm-la",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/tzm.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/tzm.js
new file mode 100644
index 0000000..e81f5cf
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/tzm.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : Morocco Central Atlas Tamaziɣt (tzm)
+// author : Abdel Said : https://github.com/abdelsaid
+!function(){function e(e){e.lang("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/uk.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/uk.js
new file mode 100644
index 0000000..998a295
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/uk.js
@@ -0,0 +1,5 @@
+// moment.js language configuration
+// language : ukrainian (uk)
+// author : zemlanin : https://github.com/zemlanin
+// Author : Menelion Elensúle : https://github.com/Oire
+!function(){function e(e){function n(e,n){var t=e.split("_");return 1===n%10&&11!==n%100?t[0]:n%10>=2&&4>=n%10&&(10>n%100||n%100>=20)?t[1]:t[2]}function t(e,t,a){var _={mm:"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"};return"m"===a?t?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===a?t?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":e+" "+n(_[a],+e)}function a(e,n){var t={nominative:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_"),accusative:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_")},a=/D[oD]? *MMMM?/.test(n)?"accusative":"nominative";return t[a][e.month()]}function _(e,n){var t={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")},a=/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(n)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(n)?"genitive":"nominative";return t[a][e.day()]}function d(e){return function(){return e+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}e.lang("uk",{months:a,monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456_\u0442\u0440\u0430_\u0447\u0435\u0440_\u043b\u0438\u043f_\u0441\u0435\u0440_\u0432\u0435\u0440_\u0436\u043e\u0432_\u043b\u0438\u0441_\u0433\u0440\u0443".split("_"),weekdays:_,weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0456\u0432_\u0441\u0440\u0434_\u0447\u0435\u0442_\u043f\u0442\u043d_\u0441\u0443\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., LT",LLLL:"dddd, D MMMM YYYY \u0440., LT"},calendar:{sameDay:d("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:d("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:d("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:d("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return d("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return d("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",m:t,mm:t,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:t,d:"\u0434\u0435\u043d\u044c",dd:t,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:t,y:"\u0440\u0456\u043a",yy:t},ordinal:function(e,n){switch(n){case"M":case"d":case"DDD":case"w":case"W":return e+"-\u0439";case"D":return e+"-\u0433\u043e";default:return e}},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/zh-cn.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/zh-cn.js
new file mode 100644
index 0000000..c8fa795
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/zh-cn.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : chinese
+// author : suupic : https://github.com/suupic
+!function(){function e(e){e.lang("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"Ah\u70b9mm",L:"YYYY\u5e74MMMD\u65e5",LL:"YYYY\u5e74MMMD\u65e5",LLL:"YYYY\u5e74MMMD\u65e5LT",LLLL:"YYYY\u5e74MMMD\u65e5ddddLT",l:"YYYY\u5e74MMMD\u65e5",ll:"YYYY\u5e74MMMD\u65e5",lll:"YYYY\u5e74MMMD\u65e5LT",llll:"YYYY\u5e74MMMD\u65e5ddddLT"},meridiem:function(e,n){return 9>e?"\u65e9\u4e0a":11>e&&30>n?"\u4e0a\u5348":13>e&&30>n?"\u4e2d\u5348":18>e?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},ordinal:function(e,n){switch(n){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u5468";default:return e}},relativeTime:{future:"%s\u5185",past:"%s\u524d",s:"\u51e0\u79d2",m:"1\u5206\u949f",mm:"%d\u5206\u949f",h:"1\u5c0f\u65f6",hh:"%d\u5c0f\u65f6",d:"1\u5929",dd:"%d\u5929",M:"1\u4e2a\u6708",MM:"%d\u4e2a\u6708",y:"1\u5e74",yy:"%d\u5e74"}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/lang/zh-tw.js b/97suifangqa/apps/indicator/static/plugins/moment/lang/zh-tw.js
new file mode 100644
index 0000000..c0a047c
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/lang/zh-tw.js
@@ -0,0 +1,4 @@
+// moment.js language configuration
+// language : traditional chinese (zh-tw)
+// author : Ben : https://github.com/ben-lin
+!function(){function e(e){e.lang("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"Ah\u9edemm",L:"YYYY\u5e74MMMD\u65e5",LL:"YYYY\u5e74MMMD\u65e5",LLL:"YYYY\u5e74MMMD\u65e5LT",LLLL:"YYYY\u5e74MMMD\u65e5ddddLT",l:"YYYY\u5e74MMMD\u65e5",ll:"YYYY\u5e74MMMD\u65e5",lll:"YYYY\u5e74MMMD\u65e5LT",llll:"YYYY\u5e74MMMD\u65e5ddddLT"},meridiem:function(e,n){return 9>e?"\u65e9\u4e0a":11>e&&30>n?"\u4e0a\u5348":13>e&&30>n?"\u4e2d\u5348":18>e?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},ordinal:function(e,n){switch(n){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",m:"\u4e00\u5206\u9418",mm:"%d\u5206\u9418",h:"\u4e00\u5c0f\u6642",hh:"%d\u5c0f\u6642",d:"\u4e00\u5929",dd:"%d\u5929",M:"\u4e00\u500b\u6708",MM:"%d\u500b\u6708",y:"\u4e00\u5e74",yy:"%d\u5e74"}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/langs.js b/97suifangqa/apps/indicator/static/plugins/moment/langs.js
new file mode 100644
index 0000000..c124403
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/langs.js
@@ -0,0 +1,3693 @@
+(function(){
+ function onload (moment) {
+(function(){
+// moment.js language configuration
+// language : Moroccan Arabic (ar-ma)
+// author : ElFadili Yassine : https://github.com/ElFadiliY
+// author : Abdel Said : https://github.com/abdelsaid
+
+moment.lang('ar-ma', {
+ months : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),
+ monthsShort : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),
+ weekdays : "الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
+ weekdaysShort : "احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),
+ weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay: "[اليوم على الساعة] LT",
+ nextDay: '[غدا على الساعة] LT',
+ nextWeek: 'dddd [على الساعة] LT',
+ lastDay: '[أمس على الساعة] LT',
+ lastWeek: 'dddd [على الساعة] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "في %s",
+ past : "منذ %s",
+ s : "ثوان",
+ m : "دقيقة",
+ mm : "%d دقائق",
+ h : "ساعة",
+ hh : "%d ساعات",
+ d : "يوم",
+ dd : "%d أيام",
+ M : "شهر",
+ MM : "%d أشهر",
+ y : "سنة",
+ yy : "%d سنوات"
+ },
+ week : {
+ dow : 6, // Saturday is the first day of the week.
+ doy : 12 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : Arabic (ar)
+// author : Abdel Said : https://github.com/abdelsaid
+// changes in months, weekdays : Ahmed Elkhatib
+
+moment.lang('ar', {
+ months : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),
+ monthsShort : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),
+ weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
+ weekdaysShort : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
+ weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay: "[اليوم على الساعة] LT",
+ nextDay: '[غدا على الساعة] LT',
+ nextWeek: 'dddd [على الساعة] LT',
+ lastDay: '[أمس على الساعة] LT',
+ lastWeek: 'dddd [على الساعة] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "في %s",
+ past : "منذ %s",
+ s : "ثوان",
+ m : "دقيقة",
+ mm : "%d دقائق",
+ h : "ساعة",
+ hh : "%d ساعات",
+ d : "يوم",
+ dd : "%d أيام",
+ M : "شهر",
+ MM : "%d أشهر",
+ y : "سنة",
+ yy : "%d سنوات"
+ },
+ week : {
+ dow : 6, // Saturday is the first day of the week.
+ doy : 12 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : bulgarian (bg)
+// author : Krasen Borisov : https://github.com/kraz
+
+moment.lang('bg', {
+ months : "януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),
+ monthsShort : "янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),
+ weekdays : "неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),
+ weekdaysShort : "нед_пон_вто_сря_чет_пет_съб".split("_"),
+ weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"),
+ longDateFormat : {
+ LT : "h:mm",
+ L : "D.MM.YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd, D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay : '[Днес в] LT',
+ nextDay : '[Утре в] LT',
+ nextWeek : 'dddd [в] LT',
+ lastDay : '[Вчера в] LT',
+ lastWeek : function () {
+ switch (this.day()) {
+ case 0:
+ case 3:
+ case 6:
+ return '[В изминалата] dddd [в] LT';
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ return '[В изминалия] dddd [в] LT';
+ }
+ },
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "след %s",
+ past : "преди %s",
+ s : "няколко секунди",
+ m : "минута",
+ mm : "%d минути",
+ h : "час",
+ hh : "%d часа",
+ d : "ден",
+ dd : "%d дни",
+ M : "месец",
+ MM : "%d месеца",
+ y : "година",
+ yy : "%d години"
+ },
+ ordinal : function (number) {
+ var lastDigit = number % 10,
+ last2Digits = number % 100;
+ if (number === 0) {
+ return number + '-ев';
+ } else if (last2Digits === 0) {
+ return number + '-ен';
+ } else if (last2Digits > 10 && last2Digits < 20) {
+ return number + '-ти';
+ } else if (lastDigit === 1) {
+ return number + '-ви';
+ } else if (lastDigit === 2) {
+ return number + '-ри';
+ } else if (lastDigit === 7 || lastDigit === 8) {
+ return number + '-ми';
+ } else {
+ return number + '-ти';
+ }
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : breton (br)
+// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
+
+function relativeTimeWithMutation(number, withoutSuffix, key) {
+ var format = {
+ 'mm': "munutenn",
+ 'MM': "miz",
+ 'dd': "devezh"
+ };
+ return number + ' ' + mutation(format[key], number);
+}
+
+function specialMutationForYears(number) {
+ switch (lastNumber(number)) {
+ case 1:
+ case 3:
+ case 4:
+ case 5:
+ case 9:
+ return number + ' bloaz';
+ default:
+ return number + ' vloaz';
+ }
+}
+
+function lastNumber(number) {
+ if (number > 9) {
+ return lastNumber(number % 10);
+ }
+ return number;
+}
+
+function mutation(text, number) {
+ if (number === 2) {
+ return softMutation(text);
+ }
+ return text;
+}
+
+function softMutation(text) {
+ var mutationTable = {
+ 'm': 'v',
+ 'b': 'v',
+ 'd': 'z'
+ };
+ if (mutationTable[text.charAt(0)] === undefined) {
+ return text;
+ }
+ return mutationTable[text.charAt(0)] + text.substring(1);
+}
+
+moment.lang('br', {
+ months : "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),
+ monthsShort : "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),
+ weekdays : "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),
+ weekdaysShort : "Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),
+ weekdaysMin : "Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),
+ longDateFormat : {
+ LT : "h[e]mm A",
+ L : "DD/MM/YYYY",
+ LL : "D [a viz] MMMM YYYY",
+ LLL : "D [a viz] MMMM YYYY LT",
+ LLLL : "dddd, D [a viz] MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay : '[Hiziv da] LT',
+ nextDay : '[Warc\'hoazh da] LT',
+ nextWeek : 'dddd [da] LT',
+ lastDay : '[Dec\'h da] LT',
+ lastWeek : 'dddd [paset da] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "a-benn %s",
+ past : "%s 'zo",
+ s : "un nebeud segondennoù",
+ m : "ur vunutenn",
+ mm : relativeTimeWithMutation,
+ h : "un eur",
+ hh : "%d eur",
+ d : "un devezh",
+ dd : relativeTimeWithMutation,
+ M : "ur miz",
+ MM : relativeTimeWithMutation,
+ y : "ur bloaz",
+ yy : specialMutationForYears
+ },
+ ordinal : function (number) {
+ var output = (number === 1) ? 'añ' : 'vet';
+ return number + output;
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : catalan (ca)
+// author : Juan G. Hurtado : https://github.com/juanghurtado
+
+moment.lang('ca', {
+ months : "Gener_Febrer_Març_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"),
+ monthsShort : "Gen._Febr._Mar._Abr._Mai._Jun._Jul._Ag._Set._Oct._Nov._Des.".split("_"),
+ weekdays : "Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"),
+ weekdaysShort : "Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"),
+ weekdaysMin : "Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),
+ longDateFormat : {
+ LT : "H:mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay : function () {
+ return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
+ },
+ nextDay : function () {
+ return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
+ },
+ nextWeek : function () {
+ return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
+ },
+ lastDay : function () {
+ return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
+ },
+ lastWeek : function () {
+ return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
+ },
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "en %s",
+ past : "fa %s",
+ s : "uns segons",
+ m : "un minut",
+ mm : "%d minuts",
+ h : "una hora",
+ hh : "%d hores",
+ d : "un dia",
+ dd : "%d dies",
+ M : "un mes",
+ MM : "%d mesos",
+ y : "un any",
+ yy : "%d anys"
+ },
+ ordinal : '%dº',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : czech (cs)
+// author : petrbela : https://github.com/petrbela
+
+var months = "leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),
+ monthsShort = "led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");
+
+function plural(n) {
+ return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
+}
+
+function translate(number, withoutSuffix, key, isFuture) {
+ var result = number + " ";
+ switch (key) {
+ case 's': // a few seconds / in a few seconds / a few seconds ago
+ return (withoutSuffix || isFuture) ? 'pár vteřin' : 'pár vteřinami';
+ case 'm': // a minute / in a minute / a minute ago
+ return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
+ case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'minuty' : 'minut');
+ } else {
+ return result + 'minutami';
+ }
+ break;
+ case 'h': // an hour / in an hour / an hour ago
+ return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
+ case 'hh': // 9 hours / in 9 hours / 9 hours ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'hodiny' : 'hodin');
+ } else {
+ return result + 'hodinami';
+ }
+ break;
+ case 'd': // a day / in a day / a day ago
+ return (withoutSuffix || isFuture) ? 'den' : 'dnem';
+ case 'dd': // 9 days / in 9 days / 9 days ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'dny' : 'dní');
+ } else {
+ return result + 'dny';
+ }
+ break;
+ case 'M': // a month / in a month / a month ago
+ return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
+ case 'MM': // 9 months / in 9 months / 9 months ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'měsíce' : 'měsíců');
+ } else {
+ return result + 'měsíci';
+ }
+ break;
+ case 'y': // a year / in a year / a year ago
+ return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
+ case 'yy': // 9 years / in 9 years / 9 years ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'roky' : 'let');
+ } else {
+ return result + 'lety';
+ }
+ break;
+ }
+}
+
+moment.lang('cs', {
+ months : months,
+ monthsShort : monthsShort,
+ monthsParse : (function (months, monthsShort) {
+ var i, _monthsParse = [];
+ for (i = 0; i < 12; i++) {
+ // use custom parser to solve problem with July (červenec)
+ _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
+ }
+ return _monthsParse;
+ }(months, monthsShort)),
+ weekdays : "neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),
+ weekdaysShort : "ne_po_út_st_čt_pá_so".split("_"),
+ weekdaysMin : "ne_po_út_st_čt_pá_so".split("_"),
+ longDateFormat : {
+ LT: "H:mm",
+ L : "DD.MM.YYYY",
+ LL : "D. MMMM YYYY",
+ LLL : "D. MMMM YYYY LT",
+ LLLL : "dddd D. MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay: "[dnes v] LT",
+ nextDay: '[zítra v] LT',
+ nextWeek: function () {
+ switch (this.day()) {
+ case 0:
+ return '[v neděli v] LT';
+ case 1:
+ case 2:
+ return '[v] dddd [v] LT';
+ case 3:
+ return '[ve středu v] LT';
+ case 4:
+ return '[ve čtvrtek v] LT';
+ case 5:
+ return '[v pátek v] LT';
+ case 6:
+ return '[v sobotu v] LT';
+ }
+ },
+ lastDay: '[včera v] LT',
+ lastWeek: function () {
+ switch (this.day()) {
+ case 0:
+ return '[minulou neděli v] LT';
+ case 1:
+ case 2:
+ return '[minulé] dddd [v] LT';
+ case 3:
+ return '[minulou středu v] LT';
+ case 4:
+ case 5:
+ return '[minulý] dddd [v] LT';
+ case 6:
+ return '[minulou sobotu v] LT';
+ }
+ },
+ sameElse: "L"
+ },
+ relativeTime : {
+ future : "za %s",
+ past : "před %s",
+ s : translate,
+ m : translate,
+ mm : translate,
+ h : translate,
+ hh : translate,
+ d : translate,
+ dd : translate,
+ M : translate,
+ MM : translate,
+ y : translate,
+ yy : translate
+ },
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : chuvash (cv)
+// author : Anatoly Mironov : https://github.com/mirontoli
+
+
+moment.lang('cv', {
+ months : "кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав".split("_"),
+ monthsShort : "кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш".split("_"),
+ weekdays : "вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун".split("_"),
+ weekdaysShort : "выр_тун_ытл_юн_кĕç_эрн_шăм".split("_"),
+ weekdaysMin : "вр_тн_ыт_юн_кç_эр_шм".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD-MM-YYYY",
+ LL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]",
+ LLL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT",
+ LLLL : "dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT"
+ },
+ calendar : {
+ sameDay: '[Паян] LT [сехетре]',
+ nextDay: '[Ыран] LT [сехетре]',
+ lastDay: '[Ĕнер] LT [сехетре]',
+ nextWeek: '[Çитес] dddd LT [сехетре]',
+ lastWeek: '[Иртнĕ] dddd LT [сехетре]',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : function (output) {
+ var affix = /сехет$/i.exec(output) ? "рен" : /çул$/i.exec(output) ? "тан" : "ран";
+ return output + affix;
+ },
+ past : "%s каялла",
+ s : "пĕр-ик çеккунт",
+ m : "пĕр минут",
+ mm : "%d минут",
+ h : "пĕр сехет",
+ hh : "%d сехет",
+ d : "пĕр кун",
+ dd : "%d кун",
+ M : "пĕр уйăх",
+ MM : "%d уйăх",
+ y : "пĕр çул",
+ yy : "%d çул"
+ },
+ ordinal : '%d-мĕш',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : danish (da)
+// author : Ulrik Nielsen : https://github.com/mrbase
+
+moment.lang('da', {
+ months : "Januar_Februar_Marts_April_Maj_Juni_Juli_August_September_Oktober_November_December".split("_"),
+ monthsShort : "Jan_Feb_Mar_Apr_Maj_Jun_Jul_Aug_Sep_Okt_Nov_Dec".split("_"),
+ weekdays : "Søndag_Mandag_Tirsdag_Onsdag_Torsdag_Fredag_Lørdag".split("_"),
+ weekdaysShort : "Søn_Man_Tir_Ons_Tor_Fre_Lør".split("_"),
+ weekdaysMin : "Sø_Ma_Ti_On_To_Fr_Lø".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd D. MMMM, YYYY LT"
+ },
+ calendar : {
+ sameDay : '[I dag kl.] LT',
+ nextDay : '[I morgen kl.] LT',
+ nextWeek : 'dddd [kl.] LT',
+ lastDay : '[I går kl.] LT',
+ lastWeek : '[sidste] dddd [kl] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "om %s",
+ past : "%s siden",
+ s : "få sekunder",
+ m : "et minut",
+ mm : "%d minutter",
+ h : "en time",
+ hh : "%d timer",
+ d : "en dag",
+ dd : "%d dage",
+ M : "en måned",
+ MM : "%d måneder",
+ y : "et år",
+ yy : "%d år"
+ },
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : german (de)
+// author : lluchs : https://github.com/lluchs
+// author: Menelion Elensúle: https://github.com/Oire
+
+function processRelativeTime(number, withoutSuffix, key, isFuture) {
+ var format = {
+ 'm': ['eine Minute', 'einer Minute'],
+ 'h': ['eine Stunde', 'einer Stunde'],
+ 'd': ['ein Tag', 'einem Tag'],
+ 'dd': [number + ' Tage', number + ' Tagen'],
+ 'M': ['ein Monat', 'einem Monat'],
+ 'MM': [number + ' Monate', number + ' Monaten'],
+ 'y': ['ein Jahr', 'einem Jahr'],
+ 'yy': [number + ' Jahre', number + ' Jahren']
+ };
+ return withoutSuffix ? format[key][0] : format[key][1];
+}
+
+moment.lang('de', {
+ months : "Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),
+ monthsShort : "Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),
+ weekdays : "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),
+ weekdaysShort : "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),
+ weekdaysMin : "So_Mo_Di_Mi_Do_Fr_Sa".split("_"),
+ longDateFormat : {
+ LT: "H:mm [Uhr]",
+ L : "DD.MM.YYYY",
+ LL : "D. MMMM YYYY",
+ LLL : "D. MMMM YYYY LT",
+ LLLL : "dddd, D. MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay: "[Heute um] LT",
+ sameElse: "L",
+ nextDay: '[Morgen um] LT',
+ nextWeek: 'dddd [um] LT',
+ lastDay: '[Gestern um] LT',
+ lastWeek: '[letzten] dddd [um] LT'
+ },
+ relativeTime : {
+ future : "in %s",
+ past : "vor %s",
+ s : "ein paar Sekunden",
+ m : processRelativeTime,
+ mm : "%d Minuten",
+ h : processRelativeTime,
+ hh : "%d Stunden",
+ d : processRelativeTime,
+ dd : processRelativeTime,
+ M : processRelativeTime,
+ MM : processRelativeTime,
+ y : processRelativeTime,
+ yy : processRelativeTime
+ },
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : modern greek (el)
+// author : Aggelos Karalias : https://github.com/mehiel
+
+moment.lang('el', {
+ monthsNominativeEl : "Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),
+ monthsGenitiveEl : "Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),
+ months : function (momentToFormat, format) {
+ if (/D/.test(format.substring(0, format.indexOf("MMMM")))) { // if there is a day number before 'MMMM'
+ return this._monthsGenitiveEl[momentToFormat.month()];
+ } else {
+ return this._monthsNominativeEl[momentToFormat.month()];
+ }
+ },
+ monthsShort : "Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),
+ weekdays : "Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),
+ weekdaysShort : "Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),
+ weekdaysMin : "Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),
+ meridiem : function (hours, minutes, isLower) {
+ if (hours > 11) {
+ return isLower ? 'μμ' : 'ΜΜ';
+ } else {
+ return isLower ? 'πμ' : 'ΠΜ';
+ }
+ },
+ longDateFormat : {
+ LT : "h:mm A",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd, D MMMM YYYY LT"
+ },
+ calendarEl : {
+ sameDay : '[Σήμερα {}] LT',
+ nextDay : '[Αύριο {}] LT',
+ nextWeek : 'dddd [{}] LT',
+ lastDay : '[Χθες {}] LT',
+ lastWeek : '[την προηγούμενη] dddd [{}] LT',
+ sameElse : 'L'
+ },
+ calendar : function (key, mom) {
+ var output = this._calendarEl[key],
+ hours = mom && mom.hours();
+
+ return output.replace("{}", (hours % 12 === 1 ? "στη" : "στις"));
+ },
+ relativeTime : {
+ future : "σε %s",
+ past : "%s πριν",
+ s : "δευτερόλεπτα",
+ m : "ένα λεπτό",
+ mm : "%d λεπτά",
+ h : "μία ώρα",
+ hh : "%d ώρες",
+ d : "μία μέρα",
+ dd : "%d μέρες",
+ M : "ένας μήνας",
+ MM : "%d μήνες",
+ y : "ένας χρόνος",
+ yy : "%d χρόνια"
+ },
+ ordinal : function (number) {
+ return number + 'η';
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : canadian english (en-ca)
+// author : Jonathan Abourbih : https://github.com/jonbca
+
+moment.lang('en-ca', {
+ months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
+ monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
+ weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
+ weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
+ weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
+ longDateFormat : {
+ LT : "h:mm A",
+ L : "YYYY-MM-DD",
+ LL : "D MMMM, YYYY",
+ LLL : "D MMMM, YYYY LT",
+ LLLL : "dddd, D MMMM, YYYY LT"
+ },
+ calendar : {
+ sameDay : '[Today at] LT',
+ nextDay : '[Tomorrow at] LT',
+ nextWeek : 'dddd [at] LT',
+ lastDay : '[Yesterday at] LT',
+ lastWeek : '[Last] dddd [at] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "in %s",
+ past : "%s ago",
+ s : "a few seconds",
+ m : "a minute",
+ mm : "%d minutes",
+ h : "an hour",
+ hh : "%d hours",
+ d : "a day",
+ dd : "%d days",
+ M : "a month",
+ MM : "%d months",
+ y : "a year",
+ yy : "%d years"
+ },
+ ordinal : function (number) {
+ var b = number % 10,
+ output = (~~ (number % 100 / 10) === 1) ? 'th' :
+ (b === 1) ? 'st' :
+ (b === 2) ? 'nd' :
+ (b === 3) ? 'rd' : 'th';
+ return number + output;
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : great britain english (en-gb)
+// author : Chris Gedrim : https://github.com/chrisgedrim
+
+moment.lang('en-gb', {
+ months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
+ monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
+ weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
+ weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
+ weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd, D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay : '[Today at] LT',
+ nextDay : '[Tomorrow at] LT',
+ nextWeek : 'dddd [at] LT',
+ lastDay : '[Yesterday at] LT',
+ lastWeek : '[Last] dddd [at] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "in %s",
+ past : "%s ago",
+ s : "a few seconds",
+ m : "a minute",
+ mm : "%d minutes",
+ h : "an hour",
+ hh : "%d hours",
+ d : "a day",
+ dd : "%d days",
+ M : "a month",
+ MM : "%d months",
+ y : "a year",
+ yy : "%d years"
+ },
+ ordinal : function (number) {
+ var b = number % 10,
+ output = (~~ (number % 100 / 10) === 1) ? 'th' :
+ (b === 1) ? 'st' :
+ (b === 2) ? 'nd' :
+ (b === 3) ? 'rd' : 'th';
+ return number + output;
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : esperanto (eo)
+// author : Colin Dean : https://github.com/colindean
+// komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
+// Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
+
+moment.lang('eo', {
+ months : "januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),
+ monthsShort : "jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),
+ weekdays : "Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),
+ weekdaysShort : "Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"),
+ weekdaysMin : "Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "YYYY-MM-DD",
+ LL : "D[-an de] MMMM, YYYY",
+ LLL : "D[-an de] MMMM, YYYY LT",
+ LLLL : "dddd, [la] D[-an de] MMMM, YYYY LT"
+ },
+ meridiem : function (hours, minutes, isLower) {
+ if (hours > 11) {
+ return isLower ? 'p.t.m.' : 'P.T.M.';
+ } else {
+ return isLower ? 'a.t.m.' : 'A.T.M.';
+ }
+ },
+ calendar : {
+ sameDay : '[Hodiaŭ je] LT',
+ nextDay : '[Morgaŭ je] LT',
+ nextWeek : 'dddd [je] LT',
+ lastDay : '[Hieraŭ je] LT',
+ lastWeek : '[pasinta] dddd [je] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "je %s",
+ past : "antaŭ %s",
+ s : "sekundoj",
+ m : "minuto",
+ mm : "%d minutoj",
+ h : "horo",
+ hh : "%d horoj",
+ d : "tago",//ne 'diurno', ĉar estas uzita por proksimumo
+ dd : "%d tagoj",
+ M : "monato",
+ MM : "%d monatoj",
+ y : "jaro",
+ yy : "%d jaroj"
+ },
+ ordinal : "%da",
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : spanish (es)
+// author : Julio Napurí : https://github.com/julionc
+
+moment.lang('es', {
+ months : "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),
+ monthsShort : "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),
+ weekdays : "domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),
+ weekdaysShort : "dom._lun._mar._mié._jue._vie._sáb.".split("_"),
+ weekdaysMin : "Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"),
+ longDateFormat : {
+ LT : "H:mm",
+ L : "DD/MM/YYYY",
+ LL : "D [de] MMMM [de] YYYY",
+ LLL : "D [de] MMMM [de] YYYY LT",
+ LLLL : "dddd, D [de] MMMM [de] YYYY LT"
+ },
+ calendar : {
+ sameDay : function () {
+ return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
+ },
+ nextDay : function () {
+ return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
+ },
+ nextWeek : function () {
+ return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
+ },
+ lastDay : function () {
+ return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
+ },
+ lastWeek : function () {
+ return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
+ },
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "en %s",
+ past : "hace %s",
+ s : "unos segundos",
+ m : "un minuto",
+ mm : "%d minutos",
+ h : "una hora",
+ hh : "%d horas",
+ d : "un día",
+ dd : "%d días",
+ M : "un mes",
+ MM : "%d meses",
+ y : "un año",
+ yy : "%d años"
+ },
+ ordinal : '%dº',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : estonian (et)
+// author : Henry Kehlmann : https://github.com/madhenry
+
+function translateSeconds(number, withoutSuffix, key, isFuture) {
+ return (isFuture || withoutSuffix) ? 'paari sekundi' : 'paar sekundit';
+}
+
+moment.lang('et', {
+ months : "jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),
+ monthsShort : "jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),
+ weekdays : "pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),
+ weekdaysShort : "P_E_T_K_N_R_L".split("_"),
+ weekdaysMin : "P_E_T_K_N_R_L".split("_"),
+ longDateFormat : {
+ LT : "H:mm",
+ L : "DD.MM.YYYY",
+ LL : "D. MMMM YYYY",
+ LLL : "D. MMMM YYYY LT",
+ LLLL : "dddd, D. MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay : '[Täna,] LT',
+ nextDay : '[Homme,] LT',
+ nextWeek : '[Järgmine] dddd LT',
+ lastDay : '[Eile,] LT',
+ lastWeek : '[Eelmine] dddd LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "%s pärast",
+ past : "%s tagasi",
+ s : translateSeconds,
+ m : "minut",
+ mm : "%d minutit",
+ h : "tund",
+ hh : "%d tundi",
+ d : "päev",
+ dd : "%d päeva",
+ M : "kuu",
+ MM : "%d kuud",
+ y : "aasta",
+ yy : "%d aastat"
+ },
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : euskara (eu)
+// author : Eneko Illarramendi : https://github.com/eillarra
+
+moment.lang('eu', {
+ months : "urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),
+ monthsShort : "urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),
+ weekdays : "igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),
+ weekdaysShort : "ig._al._ar._az._og._ol._lr.".split("_"),
+ weekdaysMin : "ig_al_ar_az_og_ol_lr".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "YYYY-MM-DD",
+ LL : "YYYY[ko] MMMM[ren] D[a]",
+ LLL : "YYYY[ko] MMMM[ren] D[a] LT",
+ LLLL : "dddd, YYYY[ko] MMMM[ren] D[a] LT",
+ l : "YYYY-M-D",
+ ll : "YYYY[ko] MMM D[a]",
+ lll : "YYYY[ko] MMM D[a] LT",
+ llll : "ddd, YYYY[ko] MMM D[a] LT"
+ },
+ calendar : {
+ sameDay : '[gaur] LT[etan]',
+ nextDay : '[bihar] LT[etan]',
+ nextWeek : 'dddd LT[etan]',
+ lastDay : '[atzo] LT[etan]',
+ lastWeek : '[aurreko] dddd LT[etan]',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "%s barru",
+ past : "duela %s",
+ s : "segundo batzuk",
+ m : "minutu bat",
+ mm : "%d minutu",
+ h : "ordu bat",
+ hh : "%d ordu",
+ d : "egun bat",
+ dd : "%d egun",
+ M : "hilabete bat",
+ MM : "%d hilabete",
+ y : "urte bat",
+ yy : "%d urte"
+ },
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : Persian Language
+// author : Ebrahim Byagowi : https://github.com/ebraminio
+var symbolMap = {
+ '1': '۱',
+ '2': '۲',
+ '3': '۳',
+ '4': '۴',
+ '5': '۵',
+ '6': '۶',
+ '7': '۷',
+ '8': '۸',
+ '9': '۹',
+ '0': '۰'
+}, numberMap = {
+ '۱': '1',
+ '۲': '2',
+ '۳': '3',
+ '۴': '4',
+ '۵': '5',
+ '۶': '6',
+ '۷': '7',
+ '۸': '8',
+ '۹': '9',
+ '۰': '0'
+};
+
+moment.lang('fa', {
+ months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
+ monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
+ weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
+ weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
+ weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
+ longDateFormat : {
+ LT : 'HH:mm',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY LT',
+ LLLL : 'dddd, D MMMM YYYY LT'
+ },
+ meridiem : function (hour, minute, isLower) {
+ if (hour < 12) {
+ return "قبل از ظهر";
+ } else {
+ return "بعد از ظهر";
+ }
+ },
+ calendar : {
+ sameDay : '[امروز ساعت] LT',
+ nextDay : '[فردا ساعت] LT',
+ nextWeek : 'dddd [ساعت] LT',
+ lastDay : '[دیروز ساعت] LT',
+ lastWeek : 'dddd [پیش] [ساعت] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : 'در %s',
+ past : '%s پیش',
+ s : 'چندین ثانیه',
+ m : 'یک دقیقه',
+ mm : '%d دقیقه',
+ h : 'یک ساعت',
+ hh : '%d ساعت',
+ d : 'یک روز',
+ dd : '%d روز',
+ M : 'یک ماه',
+ MM : '%d ماه',
+ y : 'یک سال',
+ yy : '%d سال'
+ },
+ preparse: function (string) {
+ return string.replace(/[۰-۹]/g, function (match) {
+ return numberMap[match];
+ }).replace(/،/g, ',');
+ },
+ postformat: function (string) {
+ return string.replace(/\d/g, function (match) {
+ return symbolMap[match];
+ }).replace(/,/g, '،');
+ },
+ ordinal : '%dم',
+ week : {
+ dow : 6, // Saturday is the first day of the week.
+ doy : 12 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : finnish (fi)
+// author : Tarmo Aidantausta : https://github.com/bleadof
+
+var numbers_past = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),
+ numbers_future = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
+ numbers_past[7], numbers_past[8], numbers_past[9]];
+
+function translate(number, withoutSuffix, key, isFuture) {
+ var result = "";
+ switch (key) {
+ case 's':
+ return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
+ case 'm':
+ return isFuture ? 'minuutin' : 'minuutti';
+ case 'mm':
+ result = isFuture ? 'minuutin' : 'minuuttia';
+ break;
+ case 'h':
+ return isFuture ? 'tunnin' : 'tunti';
+ case 'hh':
+ result = isFuture ? 'tunnin' : 'tuntia';
+ break;
+ case 'd':
+ return isFuture ? 'päivän' : 'päivä';
+ case 'dd':
+ result = isFuture ? 'päivän' : 'päivää';
+ break;
+ case 'M':
+ return isFuture ? 'kuukauden' : 'kuukausi';
+ case 'MM':
+ result = isFuture ? 'kuukauden' : 'kuukautta';
+ break;
+ case 'y':
+ return isFuture ? 'vuoden' : 'vuosi';
+ case 'yy':
+ result = isFuture ? 'vuoden' : 'vuotta';
+ break;
+ }
+ result = verbal_number(number, isFuture) + " " + result;
+ return result;
+}
+
+function verbal_number(number, isFuture) {
+ return number < 10 ? (isFuture ? numbers_future[number] : numbers_past[number]) : number;
+}
+
+moment.lang('fi', {
+ months : "tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),
+ monthsShort : "tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),
+ weekdays : "sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),
+ weekdaysShort : "su_ma_ti_ke_to_pe_la".split("_"),
+ weekdaysMin : "su_ma_ti_ke_to_pe_la".split("_"),
+ longDateFormat : {
+ LT : "HH.mm",
+ L : "DD.MM.YYYY",
+ LL : "Do MMMM[ta] YYYY",
+ LLL : "Do MMMM[ta] YYYY, [klo] LT",
+ LLLL : "dddd, Do MMMM[ta] YYYY, [klo] LT",
+ l : "D.M.YYYY",
+ ll : "Do MMM YYYY",
+ lll : "Do MMM YYYY, [klo] LT",
+ llll : "ddd, Do MMM YYYY, [klo] LT"
+ },
+ calendar : {
+ sameDay : '[tänään] [klo] LT',
+ nextDay : '[huomenna] [klo] LT',
+ nextWeek : 'dddd [klo] LT',
+ lastDay : '[eilen] [klo] LT',
+ lastWeek : '[viime] dddd[na] [klo] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "%s päästä",
+ past : "%s sitten",
+ s : translate,
+ m : translate,
+ mm : translate,
+ h : translate,
+ hh : translate,
+ d : translate,
+ dd : translate,
+ M : translate,
+ MM : translate,
+ y : translate,
+ yy : translate
+ },
+ ordinal : "%d.",
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : canadian french (fr-ca)
+// author : Jonathan Abourbih : https://github.com/jonbca
+
+moment.lang('fr-ca', {
+ months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),
+ monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),
+ weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),
+ weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"),
+ weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "YYYY-MM-DD",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay: "[Aujourd'hui à] LT",
+ nextDay: '[Demain à] LT',
+ nextWeek: 'dddd [à] LT',
+ lastDay: '[Hier à] LT',
+ lastWeek: 'dddd [dernier à] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "dans %s",
+ past : "il y a %s",
+ s : "quelques secondes",
+ m : "une minute",
+ mm : "%d minutes",
+ h : "une heure",
+ hh : "%d heures",
+ d : "un jour",
+ dd : "%d jours",
+ M : "un mois",
+ MM : "%d mois",
+ y : "un an",
+ yy : "%d ans"
+ },
+ ordinal : function (number) {
+ return number + (number === 1 ? 'er' : '');
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : french (fr)
+// author : John Fischer : https://github.com/jfroffice
+
+moment.lang('fr', {
+ months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),
+ monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),
+ weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),
+ weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"),
+ weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay: "[Aujourd'hui à] LT",
+ nextDay: '[Demain à] LT',
+ nextWeek: 'dddd [à] LT',
+ lastDay: '[Hier à] LT',
+ lastWeek: 'dddd [dernier à] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "dans %s",
+ past : "il y a %s",
+ s : "quelques secondes",
+ m : "une minute",
+ mm : "%d minutes",
+ h : "une heure",
+ hh : "%d heures",
+ d : "un jour",
+ dd : "%d jours",
+ M : "un mois",
+ MM : "%d mois",
+ y : "un an",
+ yy : "%d ans"
+ },
+ ordinal : function (number) {
+ return number + (number === 1 ? 'er' : '');
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : galician (gl)
+// author : Juan G. Hurtado : https://github.com/juanghurtado
+
+moment.lang('gl', {
+ months : "Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),
+ monthsShort : "Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),
+ weekdays : "Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),
+ weekdaysShort : "Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"),
+ weekdaysMin : "Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"),
+ longDateFormat : {
+ LT : "H:mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay : function () {
+ return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
+ },
+ nextDay : function () {
+ return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
+ },
+ nextWeek : function () {
+ return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
+ },
+ lastDay : function () {
+ return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';
+ },
+ lastWeek : function () {
+ return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
+ },
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : function (str) {
+ if (str === "uns segundos") {
+ return "nuns segundos";
+ }
+ return "en " + str;
+ },
+ past : "hai %s",
+ s : "uns segundos",
+ m : "un minuto",
+ mm : "%d minutos",
+ h : "unha hora",
+ hh : "%d horas",
+ d : "un día",
+ dd : "%d días",
+ M : "un mes",
+ MM : "%d meses",
+ y : "un ano",
+ yy : "%d anos"
+ },
+ ordinal : '%dº',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : Hebrew (he)
+// author : Tomer Cohen : https://github.com/tomer
+// author : Moshe Simantov : https://github.com/DevelopmentIL
+
+moment.lang('he', {
+ months : "ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),
+ monthsShort : "ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),
+ weekdays : "ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),
+ weekdaysShort : "א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),
+ weekdaysMin : "א_ב_ג_ד_ה_ו_ש".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD/MM/YYYY",
+ LL : "D [ב]MMMM YYYY",
+ LLL : "D [ב]MMMM YYYY LT",
+ LLLL : "dddd, D [ב]MMMM YYYY LT",
+ l : "D/M/YYYY",
+ ll : "D MMM YYYY",
+ lll : "D MMM YYYY LT",
+ llll : "ddd, D MMM YYYY LT"
+ },
+ calendar : {
+ sameDay : '[היום ב־]LT',
+ nextDay : '[מחר ב־]LT',
+ nextWeek : 'dddd [בשעה] LT',
+ lastDay : '[אתמול ב־]LT',
+ lastWeek : '[ביום] dddd [האחרון בשעה] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "בעוד %s",
+ past : "לפני %s",
+ s : "מספר שניות",
+ m : "דקה",
+ mm : "%d דקות",
+ h : "שעה",
+ hh : "%d שעות",
+ d : "יום",
+ dd : "%d ימים",
+ M : "חודש",
+ MM : "%d חודשים",
+ y : "שנה",
+ yy : "%d שנים"
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : hindi (hi)
+// author : Mayank Singhal : https://github.com/mayanksinghal
+
+var symbolMap = {
+ '1': '१',
+ '2': '२',
+ '3': '३',
+ '4': '४',
+ '5': '५',
+ '6': '६',
+ '7': '७',
+ '8': '८',
+ '9': '९',
+ '0': '०'
+},
+numberMap = {
+ '१': '1',
+ '२': '2',
+ '३': '3',
+ '४': '4',
+ '५': '5',
+ '६': '6',
+ '७': '7',
+ '८': '8',
+ '९': '9',
+ '०': '0'
+};
+
+moment.lang('hi', {
+ months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split("_"),
+ monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split("_"),
+ weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"),
+ weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split("_"),
+ weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split("_"),
+ longDateFormat : {
+ LT : "A h:mm बजे",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY, LT",
+ LLLL : "dddd, D MMMM YYYY, LT"
+ },
+ calendar : {
+ sameDay : '[आज] LT',
+ nextDay : '[कल] LT',
+ nextWeek : 'dddd, LT',
+ lastDay : '[कल] LT',
+ lastWeek : '[पिछले] dddd, LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "%s में",
+ past : "%s पहले",
+ s : "कुछ ही क्षण",
+ m : "एक मिनट",
+ mm : "%d मिनट",
+ h : "एक घंटा",
+ hh : "%d घंटे",
+ d : "एक दिन",
+ dd : "%d दिन",
+ M : "एक महीने",
+ MM : "%d महीने",
+ y : "एक वर्ष",
+ yy : "%d वर्ष"
+ },
+ preparse: function (string) {
+ return string.replace(/[१२३४५६७८९०]/g, function (match) {
+ return numberMap[match];
+ });
+ },
+ postformat: function (string) {
+ return string.replace(/\d/g, function (match) {
+ return symbolMap[match];
+ });
+ },
+ // Hindi notation for meridiems are quite fuzzy in practice. While there exists
+ // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
+ meridiem : function (hour, minute, isLower) {
+ if (hour < 4) {
+ return "रात";
+ } else if (hour < 10) {
+ return "सुबह";
+ } else if (hour < 17) {
+ return "दोपहर";
+ } else if (hour < 20) {
+ return "शाम";
+ } else {
+ return "रात";
+ }
+ },
+ week : {
+ dow : 0, // Sunday is the first day of the week.
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : hungarian (hu)
+// author : Adam Brunner : https://github.com/adambrunner
+
+var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
+
+function translate(number, withoutSuffix, key, isFuture) {
+ var num = number,
+ suffix;
+
+ switch (key) {
+ case 's':
+ return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
+ case 'm':
+ return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
+ case 'mm':
+ return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
+ case 'h':
+ return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
+ case 'hh':
+ return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
+ case 'd':
+ return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
+ case 'dd':
+ return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
+ case 'M':
+ return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
+ case 'MM':
+ return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
+ case 'y':
+ return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
+ case 'yy':
+ return num + (isFuture || withoutSuffix ? ' év' : ' éve');
+ }
+
+ return '';
+}
+
+function week(isFuture) {
+ return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
+}
+
+moment.lang('hu', {
+ months : "január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),
+ monthsShort : "jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),
+ weekdays : "vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),
+ weekdaysShort : "v_h_k_sze_cs_p_szo".split("_"),
+ longDateFormat : {
+ LT : "H:mm",
+ L : "YYYY.MM.DD.",
+ LL : "YYYY. MMMM D.",
+ LLL : "YYYY. MMMM D., LT",
+ LLLL : "YYYY. MMMM D., dddd LT"
+ },
+ calendar : {
+ sameDay : '[ma] LT[-kor]',
+ nextDay : '[holnap] LT[-kor]',
+ nextWeek : function () {
+ return week.call(this, true);
+ },
+ lastDay : '[tegnap] LT[-kor]',
+ lastWeek : function () {
+ return week.call(this, false);
+ },
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "%s múlva",
+ past : "%s",
+ s : translate,
+ m : translate,
+ mm : translate,
+ h : translate,
+ hh : translate,
+ d : translate,
+ dd : translate,
+ M : translate,
+ MM : translate,
+ y : translate,
+ yy : translate
+ },
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : Bahasa Indonesia (id)
+// author : Mohammad Satrio Utomo : https://github.com/tyok
+// reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
+
+moment.lang('id', {
+ months : "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),
+ monthsShort : "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),
+ weekdays : "Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),
+ weekdaysShort : "Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),
+ weekdaysMin : "Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),
+ longDateFormat : {
+ LT : "HH.mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY [pukul] LT",
+ LLLL : "dddd, D MMMM YYYY [pukul] LT"
+ },
+ meridiem : function (hours, minutes, isLower) {
+ if (hours < 11) {
+ return 'pagi';
+ } else if (hours < 15) {
+ return 'siang';
+ } else if (hours < 19) {
+ return 'sore';
+ } else {
+ return 'malam';
+ }
+ },
+ calendar : {
+ sameDay : '[Hari ini pukul] LT',
+ nextDay : '[Besok pukul] LT',
+ nextWeek : 'dddd [pukul] LT',
+ lastDay : '[Kemarin pukul] LT',
+ lastWeek : 'dddd [lalu pukul] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "dalam %s",
+ past : "%s yang lalu",
+ s : "beberapa detik",
+ m : "semenit",
+ mm : "%d menit",
+ h : "sejam",
+ hh : "%d jam",
+ d : "sehari",
+ dd : "%d hari",
+ M : "sebulan",
+ MM : "%d bulan",
+ y : "setahun",
+ yy : "%d tahun"
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : icelandic (is)
+// author : Hinrik Örn Sigurðsson : https://github.com/hinrik
+
+function plural(n) {
+ if (n % 100 === 11) {
+ return true;
+ } else if (n % 10 === 1) {
+ return false;
+ }
+ return true;
+}
+
+function translate(number, withoutSuffix, key, isFuture) {
+ var result = number + " ";
+ switch (key) {
+ case 's':
+ return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
+ case 'm':
+ return withoutSuffix ? 'mínúta' : 'mínútu';
+ case 'mm':
+ if (plural(number)) {
+ return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
+ } else if (withoutSuffix) {
+ return result + 'mínúta';
+ }
+ return result + 'mínútu';
+ case 'hh':
+ if (plural(number)) {
+ return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
+ }
+ return result + 'klukkustund';
+ case 'd':
+ if (withoutSuffix) {
+ return 'dagur';
+ }
+ return isFuture ? 'dag' : 'degi';
+ case 'dd':
+ if (plural(number)) {
+ if (withoutSuffix) {
+ return result + 'dagar';
+ }
+ return result + (isFuture ? 'daga' : 'dögum');
+ } else if (withoutSuffix) {
+ return result + 'dagur';
+ }
+ return result + (isFuture ? 'dag' : 'degi');
+ case 'M':
+ if (withoutSuffix) {
+ return 'mánuður';
+ }
+ return isFuture ? 'mánuð' : 'mánuði';
+ case 'MM':
+ if (plural(number)) {
+ if (withoutSuffix) {
+ return result + 'mánuðir';
+ }
+ return result + (isFuture ? 'mánuði' : 'mánuðum');
+ } else if (withoutSuffix) {
+ return result + 'mánuður';
+ }
+ return result + (isFuture ? 'mánuð' : 'mánuði');
+ case 'y':
+ return withoutSuffix || isFuture ? 'ár' : 'ári';
+ case 'yy':
+ if (plural(number)) {
+ return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
+ }
+ return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
+ }
+}
+
+moment.lang('is', {
+ months : "janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),
+ monthsShort : "jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),
+ weekdays : "sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),
+ weekdaysShort : "sun_mán_þri_mið_fim_fös_lau".split("_"),
+ weekdaysMin : "Su_Má_Þr_Mi_Fi_Fö_La".split("_"),
+ longDateFormat : {
+ LT : "H:mm",
+ L : "DD/MM/YYYY",
+ LL : "D. MMMM YYYY",
+ LLL : "D. MMMM YYYY [kl.] LT",
+ LLLL : "dddd, D. MMMM YYYY [kl.] LT"
+ },
+ calendar : {
+ sameDay : '[í dag kl.] LT',
+ nextDay : '[á morgun kl.] LT',
+ nextWeek : 'dddd [kl.] LT',
+ lastDay : '[í gær kl.] LT',
+ lastWeek : '[síðasta] dddd [kl.] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "eftir %s",
+ past : "fyrir %s síðan",
+ s : translate,
+ m : translate,
+ mm : translate,
+ h : "klukkustund",
+ hh : translate,
+ d : translate,
+ dd : translate,
+ M : translate,
+ MM : translate,
+ y : translate,
+ yy : translate
+ },
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : italian (it)
+// author : Lorenzo : https://github.com/aliem
+// author: Mattia Larentis: https://github.com/nostalgiaz
+
+moment.lang('it', {
+ months : "Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"),
+ monthsShort : "Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"),
+ weekdays : "Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),
+ weekdaysShort : "Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),
+ weekdaysMin : "D_L_Ma_Me_G_V_S".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd, D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay: '[Oggi alle] LT',
+ nextDay: '[Domani alle] LT',
+ nextWeek: 'dddd [alle] LT',
+ lastDay: '[Ieri alle] LT',
+ lastWeek: '[lo scorso] dddd [alle] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : function (s) {
+ return ((/^[0-9].+$/).test(s) ? "tra" : "in") + " " + s;
+ },
+ past : "%s fa",
+ s : "secondi",
+ m : "un minuto",
+ mm : "%d minuti",
+ h : "un'ora",
+ hh : "%d ore",
+ d : "un giorno",
+ dd : "%d giorni",
+ M : "un mese",
+ MM : "%d mesi",
+ y : "un anno",
+ yy : "%d anni"
+ },
+ ordinal: '%dº',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : japanese (ja)
+// author : LI Long : https://github.com/baryon
+
+moment.lang('ja', {
+ months : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
+ monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
+ weekdays : "日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),
+ weekdaysShort : "日_月_火_水_木_金_土".split("_"),
+ weekdaysMin : "日_月_火_水_木_金_土".split("_"),
+ longDateFormat : {
+ LT : "Ah時m分",
+ L : "YYYY/MM/DD",
+ LL : "YYYY年M月D日",
+ LLL : "YYYY年M月D日LT",
+ LLLL : "YYYY年M月D日LT dddd"
+ },
+ meridiem : function (hour, minute, isLower) {
+ if (hour < 12) {
+ return "午前";
+ } else {
+ return "午後";
+ }
+ },
+ calendar : {
+ sameDay : '[今日] LT',
+ nextDay : '[明日] LT',
+ nextWeek : '[来週]dddd LT',
+ lastDay : '[昨日] LT',
+ lastWeek : '[前週]dddd LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "%s後",
+ past : "%s前",
+ s : "数秒",
+ m : "1分",
+ mm : "%d分",
+ h : "1時間",
+ hh : "%d時間",
+ d : "1日",
+ dd : "%d日",
+ M : "1ヶ月",
+ MM : "%dヶ月",
+ y : "1年",
+ yy : "%d年"
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : Georgian (ka)
+// author : Irakli Janiashvili : https://github.com/irakli-janiashvili
+
+function monthsCaseReplace(m, format) {
+ var months = {
+ 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
+ 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
+ },
+
+ nounCase = (/D[oD] *MMMM?/).test(format) ?
+ 'accusative' :
+ 'nominative';
+
+ return months[nounCase][m.month()];
+}
+
+function weekdaysCaseReplace(m, format) {
+ var weekdays = {
+ 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
+ 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_')
+ },
+
+ nounCase = (/(წინა|შემდეგ)/).test(format) ?
+ 'accusative' :
+ 'nominative';
+
+ return weekdays[nounCase][m.day()];
+}
+
+moment.lang('ka', {
+ months : monthsCaseReplace,
+ monthsShort : "იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),
+ weekdays : weekdaysCaseReplace,
+ weekdaysShort : "კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),
+ weekdaysMin : "კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),
+ longDateFormat : {
+ LT : "h:mm A",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd, D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay : '[დღეს] LT[-ზე]',
+ nextDay : '[ხვალ] LT[-ზე]',
+ lastDay : '[გუშინ] LT[-ზე]',
+ nextWeek : '[შემდეგ] dddd LT[-ზე]',
+ lastWeek : '[წინა] dddd LT-ზე',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : function (s) {
+ return (/(წამი|წუთი|საათი|წელი)/).test(s) ?
+ s.replace(/ი$/, "ში") :
+ s + "ში";
+ },
+ past : function (s) {
+ if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {
+ return s.replace(/(ი|ე)$/, "ის წინ");
+ }
+ if ((/წელი/).test(s)) {
+ return s.replace(/წელი$/, "წლის წინ");
+ }
+ },
+ s : "რამდენიმე წამი",
+ m : "წუთი",
+ mm : "%d წუთი",
+ h : "საათი",
+ hh : "%d საათი",
+ d : "დღე",
+ dd : "%d დღე",
+ M : "თვე",
+ MM : "%d თვე",
+ y : "წელი",
+ yy : "%d წელი"
+ },
+ ordinal : function (number) {
+ if (number === 0) {
+ return number;
+ }
+
+ if (number === 1) {
+ return number + "-ლი";
+ }
+
+ if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
+ return "მე-" + number;
+ }
+
+ return number + "-ე";
+ },
+ week : {
+ dow : 1,
+ doy : 7
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : korean (ko)
+// author : Kyungwook, Park : https://github.com/kyungw00k
+
+moment.lang('ko', {
+ months : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),
+ monthsShort : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),
+ weekdays : "일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),
+ weekdaysShort : "일_월_화_수_목_금_토".split("_"),
+ weekdaysMin : "일_월_화_수_목_금_토".split("_"),
+ longDateFormat : {
+ LT : "A h시 mm분",
+ L : "YYYY.MM.DD",
+ LL : "YYYY년 MMMM D일",
+ LLL : "YYYY년 MMMM D일 LT",
+ LLLL : "YYYY년 MMMM D일 dddd LT"
+ },
+ meridiem : function (hour, minute, isUpper) {
+ return hour < 12 ? '오전' : '오후';
+ },
+ calendar : {
+ sameDay : '오늘 LT',
+ nextDay : '내일 LT',
+ nextWeek : 'dddd LT',
+ lastDay : '어제 LT',
+ lastWeek : '지난주 dddd LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "%s 후",
+ past : "%s 전",
+ s : "몇초",
+ ss : "%d초",
+ m : "일분",
+ mm : "%d분",
+ h : "한시간",
+ hh : "%d시간",
+ d : "하루",
+ dd : "%d일",
+ M : "한달",
+ MM : "%d달",
+ y : "일년",
+ yy : "%d년"
+ },
+ ordinal : '%d일'
+});
+})();
+(function(){
+// moment.js language configuration
+// language : latvian (lv)
+// author : Kristaps Karlsons : https://github.com/skakri
+
+var units = {
+ 'mm': 'minūti_minūtes_minūte_minūtes',
+ 'hh': 'stundu_stundas_stunda_stundas',
+ 'dd': 'dienu_dienas_diena_dienas',
+ 'MM': 'mēnesi_mēnešus_mēnesis_mēneši',
+ 'yy': 'gadu_gadus_gads_gadi'
+};
+
+function format(word, number, withoutSuffix) {
+ var forms = word.split('_');
+ if (withoutSuffix) {
+ return number % 10 === 1 && number !== 11 ? forms[2] : forms[3];
+ } else {
+ return number % 10 === 1 && number !== 11 ? forms[0] : forms[1];
+ }
+}
+
+function relativeTimeWithPlural(number, withoutSuffix, key) {
+ return number + ' ' + format(units[key], number, withoutSuffix);
+}
+
+moment.lang('lv', {
+ months : "janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),
+ monthsShort : "jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),
+ weekdays : "svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),
+ weekdaysShort : "Sv_P_O_T_C_Pk_S".split("_"),
+ weekdaysMin : "Sv_P_O_T_C_Pk_S".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD.MM.YYYY",
+ LL : "YYYY. [gada] D. MMMM",
+ LLL : "YYYY. [gada] D. MMMM, LT",
+ LLLL : "YYYY. [gada] D. MMMM, dddd, LT"
+ },
+ calendar : {
+ sameDay : '[Šodien pulksten] LT',
+ nextDay : '[Rīt pulksten] LT',
+ nextWeek : 'dddd [pulksten] LT',
+ lastDay : '[Vakar pulksten] LT',
+ lastWeek : '[Pagājušā] dddd [pulksten] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "%s vēlāk",
+ past : "%s agrāk",
+ s : "dažas sekundes",
+ m : "minūti",
+ mm : relativeTimeWithPlural,
+ h : "stundu",
+ hh : relativeTimeWithPlural,
+ d : "dienu",
+ dd : relativeTimeWithPlural,
+ M : "mēnesi",
+ MM : relativeTimeWithPlural,
+ y : "gadu",
+ yy : relativeTimeWithPlural
+ },
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : Bahasa Malaysia (ms-MY)
+// author : Weldan Jamili : https://github.com/weldan
+
+moment.lang('ms-my', {
+ months : "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),
+ monthsShort : "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),
+ weekdays : "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),
+ weekdaysShort : "Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),
+ weekdaysMin : "Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),
+ longDateFormat : {
+ LT : "HH.mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY [pukul] LT",
+ LLLL : "dddd, D MMMM YYYY [pukul] LT"
+ },
+ meridiem : function (hours, minutes, isLower) {
+ if (hours < 11) {
+ return 'pagi';
+ } else if (hours < 15) {
+ return 'tengahari';
+ } else if (hours < 19) {
+ return 'petang';
+ } else {
+ return 'malam';
+ }
+ },
+ calendar : {
+ sameDay : '[Hari ini pukul] LT',
+ nextDay : '[Esok pukul] LT',
+ nextWeek : 'dddd [pukul] LT',
+ lastDay : '[Kelmarin pukul] LT',
+ lastWeek : 'dddd [lepas pukul] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "dalam %s",
+ past : "%s yang lepas",
+ s : "beberapa saat",
+ m : "seminit",
+ mm : "%d minit",
+ h : "sejam",
+ hh : "%d jam",
+ d : "sehari",
+ dd : "%d hari",
+ M : "sebulan",
+ MM : "%d bulan",
+ y : "setahun",
+ yy : "%d tahun"
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : norwegian bokmål (nb)
+// author : Espen Hovlandsdal : https://github.com/rexxars
+
+moment.lang('nb', {
+ months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),
+ monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),
+ weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),
+ weekdaysShort : "søn_man_tir_ons_tor_fre_lør".split("_"),
+ weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD.MM.YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay: '[I dag klokken] LT',
+ nextDay: '[I morgen klokken] LT',
+ nextWeek: 'dddd [klokken] LT',
+ lastDay: '[I går klokken] LT',
+ lastWeek: '[Forrige] dddd [klokken] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "om %s",
+ past : "for %s siden",
+ s : "noen sekunder",
+ m : "ett minutt",
+ mm : "%d minutter",
+ h : "en time",
+ hh : "%d timer",
+ d : "en dag",
+ dd : "%d dager",
+ M : "en måned",
+ MM : "%d måneder",
+ y : "ett år",
+ yy : "%d år"
+ },
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : nepali/nepalese
+// author : suvash : https://github.com/suvash
+
+var symbolMap = {
+ '1': '१',
+ '2': '२',
+ '3': '३',
+ '4': '४',
+ '5': '५',
+ '6': '६',
+ '7': '७',
+ '8': '८',
+ '9': '९',
+ '0': '०'
+},
+numberMap = {
+ '१': '1',
+ '२': '2',
+ '३': '3',
+ '४': '4',
+ '५': '5',
+ '६': '6',
+ '७': '7',
+ '८': '8',
+ '९': '9',
+ '०': '0'
+};
+
+moment.lang('ne', {
+ months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split("_"),
+ monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split("_"),
+ weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split("_"),
+ weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split("_"),
+ weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split("_"),
+ longDateFormat : {
+ LT : "Aको h:mm बजे",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY, LT",
+ LLLL : "dddd, D MMMM YYYY, LT"
+ },
+ preparse: function (string) {
+ return string.replace(/[१२३४५६७८९०]/g, function (match) {
+ return numberMap[match];
+ });
+ },
+ postformat: function (string) {
+ return string.replace(/\d/g, function (match) {
+ return symbolMap[match];
+ });
+ },
+ meridiem : function (hour, minute, isLower) {
+ if (hour < 3) {
+ return "राती";
+ } else if (hour < 10) {
+ return "बिहान";
+ } else if (hour < 15) {
+ return "दिउँसो";
+ } else if (hour < 18) {
+ return "बेलुका";
+ } else if (hour < 20) {
+ return "साँझ";
+ } else {
+ return "राती";
+ }
+ },
+ calendar : {
+ sameDay : '[आज] LT',
+ nextDay : '[भोली] LT',
+ nextWeek : '[आउँदो] dddd[,] LT',
+ lastDay : '[हिजो] LT',
+ lastWeek : '[गएको] dddd[,] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "%sमा",
+ past : "%s अगाडी",
+ s : "केही समय",
+ m : "एक मिनेट",
+ mm : "%d मिनेट",
+ h : "एक घण्टा",
+ hh : "%d घण्टा",
+ d : "एक दिन",
+ dd : "%d दिन",
+ M : "एक महिना",
+ MM : "%d महिना",
+ y : "एक बर्ष",
+ yy : "%d बर्ष"
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : dutch (nl)
+// author : Joris Röling : https://github.com/jjupiter
+
+var monthsShortWithDots = "jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),
+ monthsShortWithoutDots = "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_");
+
+moment.lang('nl', {
+ months : "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),
+ monthsShort : function (m, format) {
+ if (/-MMM-/.test(format)) {
+ return monthsShortWithoutDots[m.month()];
+ } else {
+ return monthsShortWithDots[m.month()];
+ }
+ },
+ weekdays : "zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),
+ weekdaysShort : "zo._ma._di._wo._do._vr._za.".split("_"),
+ weekdaysMin : "Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD-MM-YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay: '[Vandaag om] LT',
+ nextDay: '[Morgen om] LT',
+ nextWeek: 'dddd [om] LT',
+ lastDay: '[Gisteren om] LT',
+ lastWeek: '[afgelopen] dddd [om] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "over %s",
+ past : "%s geleden",
+ s : "een paar seconden",
+ m : "één minuut",
+ mm : "%d minuten",
+ h : "één uur",
+ hh : "%d uur",
+ d : "één dag",
+ dd : "%d dagen",
+ M : "één maand",
+ MM : "%d maanden",
+ y : "één jaar",
+ yy : "%d jaar"
+ },
+ ordinal : function (number) {
+ return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : norwegian nynorsk (nn)
+// author : https://github.com/mechuwind
+
+moment.lang('nn', {
+ months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),
+ monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),
+ weekdays : "sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),
+ weekdaysShort : "sun_mån_tys_ons_tor_fre_lau".split("_"),
+ weekdaysMin : "su_må_ty_on_to_fr_lø".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "YYYY-MM-DD",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay: '[I dag klokka] LT',
+ nextDay: '[I morgon klokka] LT',
+ nextWeek: 'dddd [klokka] LT',
+ lastDay: '[I går klokka] LT',
+ lastWeek: '[Føregående] dddd [klokka] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "om %s",
+ past : "for %s siden",
+ s : "noen sekund",
+ m : "ett minutt",
+ mm : "%d minutt",
+ h : "en time",
+ hh : "%d timar",
+ d : "en dag",
+ dd : "%d dagar",
+ M : "en månad",
+ MM : "%d månader",
+ y : "ett år",
+ yy : "%d år"
+ },
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : polish (pl)
+// author : Rafal Hirsz : https://github.com/evoL
+
+var monthsNominative = "styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),
+ monthsSubjective = "stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");
+
+function plural(n) {
+ return (n % 10 < 5) && (n % 10 > 1) && (~~(n / 10) !== 1);
+}
+
+function translate(number, withoutSuffix, key) {
+ var result = number + " ";
+ switch (key) {
+ case 'm':
+ return withoutSuffix ? 'minuta' : 'minutę';
+ case 'mm':
+ return result + (plural(number) ? 'minuty' : 'minut');
+ case 'h':
+ return withoutSuffix ? 'godzina' : 'godzinę';
+ case 'hh':
+ return result + (plural(number) ? 'godziny' : 'godzin');
+ case 'MM':
+ return result + (plural(number) ? 'miesiące' : 'miesięcy');
+ case 'yy':
+ return result + (plural(number) ? 'lata' : 'lat');
+ }
+}
+
+moment.lang('pl', {
+ months : function (momentToFormat, format) {
+ if (/D MMMM/.test(format)) {
+ return monthsSubjective[momentToFormat.month()];
+ } else {
+ return monthsNominative[momentToFormat.month()];
+ }
+ },
+ monthsShort : "sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),
+ weekdays : "niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),
+ weekdaysShort : "nie_pon_wt_śr_czw_pt_sb".split("_"),
+ weekdaysMin : "N_Pn_Wt_Śr_Cz_Pt_So".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD.MM.YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd, D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay: '[Dziś o] LT',
+ nextDay: '[Jutro o] LT',
+ nextWeek: '[W] dddd [o] LT',
+ lastDay: '[Wczoraj o] LT',
+ lastWeek: function () {
+ switch (this.day()) {
+ case 0:
+ return '[W zeszłą niedzielę o] LT';
+ case 3:
+ return '[W zeszłą środę o] LT';
+ case 6:
+ return '[W zeszłą sobotę o] LT';
+ default:
+ return '[W zeszły] dddd [o] LT';
+ }
+ },
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "za %s",
+ past : "%s temu",
+ s : "kilka sekund",
+ m : translate,
+ mm : translate,
+ h : translate,
+ hh : translate,
+ d : "1 dzień",
+ dd : '%d dni',
+ M : "miesiąc",
+ MM : translate,
+ y : "rok",
+ yy : translate
+ },
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : brazilian portuguese (pt-br)
+// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
+
+moment.lang('pt-br', {
+ months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),
+ monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),
+ weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),
+ weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),
+ weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD/MM/YYYY",
+ LL : "D [de] MMMM [de] YYYY",
+ LLL : "D [de] MMMM [de] YYYY LT",
+ LLLL : "dddd, D [de] MMMM [de] YYYY LT"
+ },
+ calendar : {
+ sameDay: '[Hoje às] LT',
+ nextDay: '[Amanhã às] LT',
+ nextWeek: 'dddd [às] LT',
+ lastDay: '[Ontem às] LT',
+ lastWeek: function () {
+ return (this.day() === 0 || this.day() === 6) ?
+ '[Último] dddd [às] LT' : // Saturday + Sunday
+ '[Última] dddd [às] LT'; // Monday - Friday
+ },
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "em %s",
+ past : "%s atrás",
+ s : "segundos",
+ m : "um minuto",
+ mm : "%d minutos",
+ h : "uma hora",
+ hh : "%d horas",
+ d : "um dia",
+ dd : "%d dias",
+ M : "um mês",
+ MM : "%d meses",
+ y : "um ano",
+ yy : "%d anos"
+ },
+ ordinal : '%dº'
+});
+})();
+(function(){
+// moment.js language configuration
+// language : portuguese (pt)
+// author : Jefferson : https://github.com/jalex79
+
+moment.lang('pt', {
+ months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),
+ monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),
+ weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),
+ weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),
+ weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD/MM/YYYY",
+ LL : "D [de] MMMM [de] YYYY",
+ LLL : "D [de] MMMM [de] YYYY LT",
+ LLLL : "dddd, D [de] MMMM [de] YYYY LT"
+ },
+ calendar : {
+ sameDay: '[Hoje às] LT',
+ nextDay: '[Amanhã às] LT',
+ nextWeek: 'dddd [às] LT',
+ lastDay: '[Ontem às] LT',
+ lastWeek: function () {
+ return (this.day() === 0 || this.day() === 6) ?
+ '[Último] dddd [às] LT' : // Saturday + Sunday
+ '[Última] dddd [às] LT'; // Monday - Friday
+ },
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "em %s",
+ past : "%s atrás",
+ s : "segundos",
+ m : "um minuto",
+ mm : "%d minutos",
+ h : "uma hora",
+ hh : "%d horas",
+ d : "um dia",
+ dd : "%d dias",
+ M : "um mês",
+ MM : "%d meses",
+ y : "um ano",
+ yy : "%d anos"
+ },
+ ordinal : '%dº',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : romanian (ro)
+// author : Vlad Gurdiga : https://github.com/gurdiga
+// author : Valentin Agachi : https://github.com/avaly
+
+moment.lang('ro', {
+ months : "Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"),
+ monthsShort : "Ian_Feb_Mar_Apr_Mai_Iun_Iul_Aug_Sep_Oct_Noi_Dec".split("_"),
+ weekdays : "Duminică_Luni_Marţi_Miercuri_Joi_Vineri_Sâmbătă".split("_"),
+ weekdaysShort : "Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),
+ weekdaysMin : "Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),
+ longDateFormat : {
+ LT : "H:mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY H:mm",
+ LLLL : "dddd, D MMMM YYYY H:mm"
+ },
+ calendar : {
+ sameDay: "[azi la] LT",
+ nextDay: '[mâine la] LT',
+ nextWeek: 'dddd [la] LT',
+ lastDay: '[ieri la] LT',
+ lastWeek: '[fosta] dddd [la] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "peste %s",
+ past : "%s în urmă",
+ s : "câteva secunde",
+ m : "un minut",
+ mm : "%d minute",
+ h : "o oră",
+ hh : "%d ore",
+ d : "o zi",
+ dd : "%d zile",
+ M : "o lună",
+ MM : "%d luni",
+ y : "un an",
+ yy : "%d ani"
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : russian (ru)
+// author : Viktorminator : https://github.com/Viktorminator
+// Author : Menelion Elensúle : https://github.com/Oire
+
+function plural(word, num) {
+ var forms = word.split('_');
+ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
+}
+
+function relativeTimeWithPlural(number, withoutSuffix, key) {
+ var format = {
+ 'mm': 'минута_минуты_минут',
+ 'hh': 'час_часа_часов',
+ 'dd': 'день_дня_дней',
+ 'MM': 'месяц_месяца_месяцев',
+ 'yy': 'год_года_лет'
+ };
+ if (key === 'm') {
+ return withoutSuffix ? 'минута' : 'минуту';
+ }
+ else {
+ return number + ' ' + plural(format[key], +number);
+ }
+}
+
+function monthsCaseReplace(m, format) {
+ var months = {
+ 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
+ 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_')
+ },
+
+ nounCase = (/D[oD]? *MMMM?/).test(format) ?
+ 'accusative' :
+ 'nominative';
+
+ return months[nounCase][m.month()];
+}
+
+function weekdaysCaseReplace(m, format) {
+ var weekdays = {
+ 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
+ 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_')
+ },
+
+ nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую)? ?\] ?dddd/).test(format) ?
+ 'accusative' :
+ 'nominative';
+
+ return weekdays[nounCase][m.day()];
+}
+
+moment.lang('ru', {
+ months : monthsCaseReplace,
+ monthsShort : "янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),
+ weekdays : weekdaysCaseReplace,
+ weekdaysShort : "вск_пнд_втр_срд_чтв_птн_сбт".split("_"),
+ weekdaysMin : "вс_пн_вт_ср_чт_пт_сб".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD.MM.YYYY",
+ LL : "D MMMM YYYY г.",
+ LLL : "D MMMM YYYY г., LT",
+ LLLL : "dddd, D MMMM YYYY г., LT"
+ },
+ calendar : {
+ sameDay: '[Сегодня в] LT',
+ nextDay: '[Завтра в] LT',
+ lastDay: '[Вчера в] LT',
+ nextWeek: function () {
+ return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT';
+ },
+ lastWeek: function () {
+ switch (this.day()) {
+ case 0:
+ return '[В прошлое] dddd [в] LT';
+ case 1:
+ case 2:
+ case 4:
+ return '[В прошлый] dddd [в] LT';
+ case 3:
+ case 5:
+ case 6:
+ return '[В прошлую] dddd [в] LT';
+ }
+ },
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "через %s",
+ past : "%s назад",
+ s : "несколько секунд",
+ m : relativeTimeWithPlural,
+ mm : relativeTimeWithPlural,
+ h : "час",
+ hh : relativeTimeWithPlural,
+ d : "день",
+ dd : relativeTimeWithPlural,
+ M : "месяц",
+ MM : relativeTimeWithPlural,
+ y : "год",
+ yy : relativeTimeWithPlural
+ },
+
+ ordinal: function (number, period) {
+ switch (period) {
+ case 'M':
+ case 'd':
+ case 'DDD':
+ return number + '-й';
+ case 'D':
+ return number + '-го';
+ case 'w':
+ case 'W':
+ return number + '-я';
+ default:
+ return number;
+ }
+ },
+
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : slovak (sk)
+// author : Martin Minka : https://github.com/k2s
+// based on work of petrbela : https://github.com/petrbela
+
+var months = "január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),
+ monthsShort = "jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");
+
+function plural(n) {
+ return (n > 1) && (n < 5);
+}
+
+function translate(number, withoutSuffix, key, isFuture) {
+ var result = number + " ";
+ switch (key) {
+ case 's': // a few seconds / in a few seconds / a few seconds ago
+ return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';
+ case 'm': // a minute / in a minute / a minute ago
+ return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');
+ case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'minúty' : 'minút');
+ } else {
+ return result + 'minútami';
+ }
+ break;
+ case 'h': // an hour / in an hour / an hour ago
+ return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
+ case 'hh': // 9 hours / in 9 hours / 9 hours ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'hodiny' : 'hodín');
+ } else {
+ return result + 'hodinami';
+ }
+ break;
+ case 'd': // a day / in a day / a day ago
+ return (withoutSuffix || isFuture) ? 'deň' : 'dňom';
+ case 'dd': // 9 days / in 9 days / 9 days ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'dni' : 'dní');
+ } else {
+ return result + 'dňami';
+ }
+ break;
+ case 'M': // a month / in a month / a month ago
+ return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';
+ case 'MM': // 9 months / in 9 months / 9 months ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'mesiace' : 'mesiacov');
+ } else {
+ return result + 'mesiacmi';
+ }
+ break;
+ case 'y': // a year / in a year / a year ago
+ return (withoutSuffix || isFuture) ? 'rok' : 'rokom';
+ case 'yy': // 9 years / in 9 years / 9 years ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'roky' : 'rokov');
+ } else {
+ return result + 'rokmi';
+ }
+ break;
+ }
+}
+
+moment.lang('sk', {
+ months : months,
+ monthsShort : monthsShort,
+ monthsParse : (function (months, monthsShort) {
+ var i, _monthsParse = [];
+ for (i = 0; i < 12; i++) {
+ // use custom parser to solve problem with July (červenec)
+ _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
+ }
+ return _monthsParse;
+ }(months, monthsShort)),
+ weekdays : "nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),
+ weekdaysShort : "ne_po_ut_st_št_pi_so".split("_"),
+ weekdaysMin : "ne_po_ut_st_št_pi_so".split("_"),
+ longDateFormat : {
+ LT: "H:mm",
+ L : "DD.MM.YYYY",
+ LL : "D. MMMM YYYY",
+ LLL : "D. MMMM YYYY LT",
+ LLLL : "dddd D. MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay: "[dnes o] LT",
+ nextDay: '[zajtra o] LT',
+ nextWeek: function () {
+ switch (this.day()) {
+ case 0:
+ return '[v nedeľu o] LT';
+ case 1:
+ case 2:
+ return '[v] dddd [o] LT';
+ case 3:
+ return '[v stredu o] LT';
+ case 4:
+ return '[vo štvrtok o] LT';
+ case 5:
+ return '[v piatok o] LT';
+ case 6:
+ return '[v sobotu o] LT';
+ }
+ },
+ lastDay: '[včera o] LT',
+ lastWeek: function () {
+ switch (this.day()) {
+ case 0:
+ return '[minulú nedeľu o] LT';
+ case 1:
+ case 2:
+ return '[minulý] dddd [o] LT';
+ case 3:
+ return '[minulú stredu o] LT';
+ case 4:
+ case 5:
+ return '[minulý] dddd [o] LT';
+ case 6:
+ return '[minulú sobotu o] LT';
+ }
+ },
+ sameElse: "L"
+ },
+ relativeTime : {
+ future : "za %s",
+ past : "pred %s",
+ s : translate,
+ m : translate,
+ mm : translate,
+ h : translate,
+ hh : translate,
+ d : translate,
+ dd : translate,
+ M : translate,
+ MM : translate,
+ y : translate,
+ yy : translate
+ },
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : slovenian (sl)
+// author : Robert Sedovšek : https://github.com/sedovsek
+
+function translate(number, withoutSuffix, key) {
+ var result = number + " ";
+ switch (key) {
+ case 'm':
+ return withoutSuffix ? 'ena minuta' : 'eno minuto';
+ case 'mm':
+ if (number === 1) {
+ result += 'minuta';
+ } else if (number === 2) {
+ result += 'minuti';
+ } else if (number === 3 || number === 4) {
+ result += 'minute';
+ } else {
+ result += 'minut';
+ }
+ return result;
+ case 'h':
+ return withoutSuffix ? 'ena ura' : 'eno uro';
+ case 'hh':
+ if (number === 1) {
+ result += 'ura';
+ } else if (number === 2) {
+ result += 'uri';
+ } else if (number === 3 || number === 4) {
+ result += 'ure';
+ } else {
+ result += 'ur';
+ }
+ return result;
+ case 'dd':
+ if (number === 1) {
+ result += 'dan';
+ } else {
+ result += 'dni';
+ }
+ return result;
+ case 'MM':
+ if (number === 1) {
+ result += 'mesec';
+ } else if (number === 2) {
+ result += 'meseca';
+ } else if (number === 3 || number === 4) {
+ result += 'mesece';
+ } else {
+ result += 'mesecev';
+ }
+ return result;
+ case 'yy':
+ if (number === 1) {
+ result += 'leto';
+ } else if (number === 2) {
+ result += 'leti';
+ } else if (number === 3 || number === 4) {
+ result += 'leta';
+ } else {
+ result += 'let';
+ }
+ return result;
+ }
+}
+
+moment.lang('sl', {
+ months : "januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),
+ monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),
+ weekdays : "nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),
+ weekdaysShort : "ned._pon._tor._sre._čet._pet._sob.".split("_"),
+ weekdaysMin : "ne_po_to_sr_če_pe_so".split("_"),
+ longDateFormat : {
+ LT : "H:mm",
+ L : "DD. MM. YYYY",
+ LL : "D. MMMM YYYY",
+ LLL : "D. MMMM YYYY LT",
+ LLLL : "dddd, D. MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay : '[danes ob] LT',
+ nextDay : '[jutri ob] LT',
+
+ nextWeek : function () {
+ switch (this.day()) {
+ case 0:
+ return '[v] [nedeljo] [ob] LT';
+ case 3:
+ return '[v] [sredo] [ob] LT';
+ case 6:
+ return '[v] [soboto] [ob] LT';
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ return '[v] dddd [ob] LT';
+ }
+ },
+ lastDay : '[včeraj ob] LT',
+ lastWeek : function () {
+ switch (this.day()) {
+ case 0:
+ case 3:
+ case 6:
+ return '[prejšnja] dddd [ob] LT';
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ return '[prejšnji] dddd [ob] LT';
+ }
+ },
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "čez %s",
+ past : "%s nazaj",
+ s : "nekaj sekund",
+ m : translate,
+ mm : translate,
+ h : translate,
+ hh : translate,
+ d : "en dan",
+ dd : translate,
+ M : "en mesec",
+ MM : translate,
+ y : "eno leto",
+ yy : translate
+ },
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : Albanian (sq)
+// author : Flakërim Ismani : https://github.com/flakerimi
+// author: Menelion Elensúle: https://github.com/Oire (tests)
+
+moment.lang('sq', {
+ months : "Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),
+ monthsShort : "Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),
+ weekdays : "E Diel_E Hënë_E Marte_E Mërkure_E Enjte_E Premte_E Shtunë".split("_"),
+ weekdaysShort : "Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),
+ weekdaysMin : "D_H_Ma_Më_E_P_Sh".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd, D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay : '[Sot në] LT',
+ nextDay : '[Neser në] LT',
+ nextWeek : 'dddd [në] LT',
+ lastDay : '[Dje në] LT',
+ lastWeek : 'dddd [e kaluar në] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "në %s",
+ past : "%s me parë",
+ s : "disa seconda",
+ m : "një minut",
+ mm : "%d minutea",
+ h : "një orë",
+ hh : "%d orë",
+ d : "një ditë",
+ dd : "%d ditë",
+ M : "një muaj",
+ MM : "%d muaj",
+ y : "një vit",
+ yy : "%d vite"
+ },
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : swedish (sv)
+// author : Jens Alm : https://github.com/ulmus
+
+moment.lang('sv', {
+ months : "januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),
+ monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),
+ weekdays : "söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),
+ weekdaysShort : "sön_mån_tis_ons_tor_fre_lör".split("_"),
+ weekdaysMin : "sö_må_ti_on_to_fr_lö".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "YYYY-MM-DD",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay: '[Idag] LT',
+ nextDay: '[Imorgon] LT',
+ lastDay: '[Igår] LT',
+ nextWeek: 'dddd LT',
+ lastWeek: '[Förra] dddd[en] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "om %s",
+ past : "för %s sedan",
+ s : "några sekunder",
+ m : "en minut",
+ mm : "%d minuter",
+ h : "en timme",
+ hh : "%d timmar",
+ d : "en dag",
+ dd : "%d dagar",
+ M : "en månad",
+ MM : "%d månader",
+ y : "ett år",
+ yy : "%d år"
+ },
+ ordinal : function (number) {
+ var b = number % 10,
+ output = (~~ (number % 100 / 10) === 1) ? 'e' :
+ (b === 1) ? 'a' :
+ (b === 2) ? 'a' :
+ (b === 3) ? 'e' : 'e';
+ return number + output;
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : thai (th)
+// author : Kridsada Thanabulpong : https://github.com/sirn
+
+moment.lang('th', {
+ months : "มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),
+ monthsShort : "มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),
+ weekdays : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),
+ weekdaysShort : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"), // yes, three characters difference
+ weekdaysMin : "อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),
+ longDateFormat : {
+ LT : "H นาฬิกา m นาที",
+ L : "YYYY/MM/DD",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY เวลา LT",
+ LLLL : "วันddddที่ D MMMM YYYY เวลา LT"
+ },
+ meridiem : function (hour, minute, isLower) {
+ if (hour < 12) {
+ return "ก่อนเที่ยง";
+ } else {
+ return "หลังเที่ยง";
+ }
+ },
+ calendar : {
+ sameDay : '[วันนี้ เวลา] LT',
+ nextDay : '[พรุ่งนี้ เวลา] LT',
+ nextWeek : 'dddd[หน้า เวลา] LT',
+ lastDay : '[เมื่อวานนี้ เวลา] LT',
+ lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "อีก %s",
+ past : "%sที่แล้ว",
+ s : "ไม่กี่วินาที",
+ m : "1 นาที",
+ mm : "%d นาที",
+ h : "1 ชั่วโมง",
+ hh : "%d ชั่วโมง",
+ d : "1 วัน",
+ dd : "%d วัน",
+ M : "1 เดือน",
+ MM : "%d เดือน",
+ y : "1 ปี",
+ yy : "%d ปี"
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : turkish (tr)
+// authors : Erhan Gundogan : https://github.com/erhangundogan,
+// Burak Yiğit Kaya: https://github.com/BYK
+
+var suffixes = {
+ 1: "'inci",
+ 5: "'inci",
+ 8: "'inci",
+ 70: "'inci",
+ 80: "'inci",
+
+ 2: "'nci",
+ 7: "'nci",
+ 20: "'nci",
+ 50: "'nci",
+
+ 3: "'üncü",
+ 4: "'üncü",
+ 100: "'üncü",
+
+ 6: "'ncı",
+
+ 9: "'uncu",
+ 10: "'uncu",
+ 30: "'uncu",
+
+ 60: "'ıncı",
+ 90: "'ıncı"
+};
+
+moment.lang('tr', {
+ months : "Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),
+ monthsShort : "Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),
+ weekdays : "Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),
+ weekdaysShort : "Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),
+ weekdaysMin : "Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD.MM.YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd, D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay : '[bugün saat] LT',
+ nextDay : '[yarın saat] LT',
+ nextWeek : '[haftaya] dddd [saat] LT',
+ lastDay : '[dün] LT',
+ lastWeek : '[geçen hafta] dddd [saat] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "%s sonra",
+ past : "%s önce",
+ s : "birkaç saniye",
+ m : "bir dakika",
+ mm : "%d dakika",
+ h : "bir saat",
+ hh : "%d saat",
+ d : "bir gün",
+ dd : "%d gün",
+ M : "bir ay",
+ MM : "%d ay",
+ y : "bir yıl",
+ yy : "%d yıl"
+ },
+ ordinal : function (number) {
+ if (number === 0) { // special case for zero
+ return number + "'ıncı";
+ }
+ var a = number % 10,
+ b = number % 100 - a,
+ c = number >= 100 ? 100 : null;
+
+ return number + (suffixes[a] || suffixes[b] || suffixes[c]);
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : Morocco Central Atlas Tamaziɣt in Latin (tzm-la)
+// author : Abdel Said : https://github.com/abdelsaid
+
+moment.lang('tzm-la', {
+ months : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),
+ monthsShort : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),
+ weekdays : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),
+ weekdaysShort : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),
+ weekdaysMin : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay: "[asdkh g] LT",
+ nextDay: '[aska g] LT',
+ nextWeek: 'dddd [g] LT',
+ lastDay: '[assant g] LT',
+ lastWeek: 'dddd [g] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "dadkh s yan %s",
+ past : "yan %s",
+ s : "imik",
+ m : "minuḍ",
+ mm : "%d minuḍ",
+ h : "saɛa",
+ hh : "%d tassaɛin",
+ d : "ass",
+ dd : "%d ossan",
+ M : "ayowr",
+ MM : "%d iyyirn",
+ y : "asgas",
+ yy : "%d isgasn"
+ },
+ week : {
+ dow : 6, // Saturday is the first day of the week.
+ doy : 12 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : Morocco Central Atlas Tamaziɣt (tzm)
+// author : Abdel Said : https://github.com/abdelsaid
+
+moment.lang('tzm', {
+ months : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),
+ monthsShort : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),
+ weekdays : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),
+ weekdaysShort : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),
+ weekdaysMin : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay: "[ⴰⵙⴷⵅ ⴴ] LT",
+ nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
+ nextWeek: 'dddd [ⴴ] LT',
+ lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
+ lastWeek: 'dddd [ⴴ] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",
+ past : "ⵢⴰⵏ %s",
+ s : "ⵉⵎⵉⴽ",
+ m : "ⵎⵉⵏⵓⴺ",
+ mm : "%d ⵎⵉⵏⵓⴺ",
+ h : "ⵙⴰⵄⴰ",
+ hh : "%d ⵜⴰⵙⵙⴰⵄⵉⵏ",
+ d : "ⴰⵙⵙ",
+ dd : "%d oⵙⵙⴰⵏ",
+ M : "ⴰⵢoⵓⵔ",
+ MM : "%d ⵉⵢⵢⵉⵔⵏ",
+ y : "ⴰⵙⴳⴰⵙ",
+ yy : "%d ⵉⵙⴳⴰⵙⵏ"
+ },
+ week : {
+ dow : 6, // Saturday is the first day of the week.
+ doy : 12 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : ukrainian (uk)
+// author : zemlanin : https://github.com/zemlanin
+// Author : Menelion Elensúle : https://github.com/Oire
+
+function plural(word, num) {
+ var forms = word.split('_');
+ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
+}
+
+function relativeTimeWithPlural(number, withoutSuffix, key) {
+ var format = {
+ 'mm': 'хвилина_хвилини_хвилин',
+ 'hh': 'година_години_годин',
+ 'dd': 'день_дні_днів',
+ 'MM': 'місяць_місяці_місяців',
+ 'yy': 'рік_роки_років'
+ };
+ if (key === 'm') {
+ return withoutSuffix ? 'хвилина' : 'хвилину';
+ }
+ else if (key === 'h') {
+ return withoutSuffix ? 'година' : 'годину';
+ }
+ else {
+ return number + ' ' + plural(format[key], +number);
+ }
+}
+
+function monthsCaseReplace(m, format) {
+ var months = {
+ 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'),
+ 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_')
+ },
+
+ nounCase = (/D[oD]? *MMMM?/).test(format) ?
+ 'accusative' :
+ 'nominative';
+
+ return months[nounCase][m.month()];
+}
+
+function weekdaysCaseReplace(m, format) {
+ var weekdays = {
+ 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
+ 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
+ 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
+ },
+
+ nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
+ 'accusative' :
+ ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ?
+ 'genitive' :
+ 'nominative');
+
+ return weekdays[nounCase][m.day()];
+}
+
+function processHoursFunction(str) {
+ return function () {
+ return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
+ };
+}
+
+moment.lang('uk', {
+ months : monthsCaseReplace,
+ monthsShort : "січ_лют_бер_кві_тра_чер_лип_сер_вер_жов_лис_гру".split("_"),
+ weekdays : weekdaysCaseReplace,
+ weekdaysShort : "нед_пон_вів_срд_чет_птн_суб".split("_"),
+ weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD.MM.YYYY",
+ LL : "D MMMM YYYY р.",
+ LLL : "D MMMM YYYY р., LT",
+ LLLL : "dddd, D MMMM YYYY р., LT"
+ },
+ calendar : {
+ sameDay: processHoursFunction('[Сьогодні '),
+ nextDay: processHoursFunction('[Завтра '),
+ lastDay: processHoursFunction('[Вчора '),
+ nextWeek: processHoursFunction('[У] dddd ['),
+ lastWeek: function () {
+ switch (this.day()) {
+ case 0:
+ case 3:
+ case 5:
+ case 6:
+ return processHoursFunction('[Минулої] dddd [').call(this);
+ case 1:
+ case 2:
+ case 4:
+ return processHoursFunction('[Минулого] dddd [').call(this);
+ }
+ },
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "за %s",
+ past : "%s тому",
+ s : "декілька секунд",
+ m : relativeTimeWithPlural,
+ mm : relativeTimeWithPlural,
+ h : "годину",
+ hh : relativeTimeWithPlural,
+ d : "день",
+ dd : relativeTimeWithPlural,
+ M : "місяць",
+ MM : relativeTimeWithPlural,
+ y : "рік",
+ yy : relativeTimeWithPlural
+ },
+ ordinal: function (number, period) {
+ switch (period) {
+ case 'M':
+ case 'd':
+ case 'DDD':
+ case 'w':
+ case 'W':
+ return number + '-й';
+ case 'D':
+ return number + '-го';
+ default:
+ return number;
+ }
+ },
+
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : chinese
+// author : suupic : https://github.com/suupic
+
+moment.lang('zh-cn', {
+ months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
+ monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
+ weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
+ weekdaysShort : "周日_周一_周二_周三_周四_周五_周六".split("_"),
+ weekdaysMin : "日_一_二_三_四_五_六".split("_"),
+ longDateFormat : {
+ LT : "Ah点mm",
+ L : "YYYY年MMMD日",
+ LL : "YYYY年MMMD日",
+ LLL : "YYYY年MMMD日LT",
+ LLLL : "YYYY年MMMD日ddddLT",
+ l : "YYYY年MMMD日",
+ ll : "YYYY年MMMD日",
+ lll : "YYYY年MMMD日LT",
+ llll : "YYYY年MMMD日ddddLT"
+ },
+ meridiem : function (hour, minute, isLower) {
+ if (hour < 9) {
+ return "早上";
+ } else if (hour < 11 && minute < 30) {
+ return "上午";
+ } else if (hour < 13 && minute < 30) {
+ return "中午";
+ } else if (hour < 18) {
+ return "下午";
+ } else {
+ return "晚上";
+ }
+ },
+ calendar : {
+ sameDay : '[今天]LT',
+ nextDay : '[明天]LT',
+ nextWeek : '[下]ddddLT',
+ lastDay : '[昨天]LT',
+ lastWeek : '[上]ddddLT',
+ sameElse : 'L'
+ },
+ ordinal : function (number, period) {
+ switch (period) {
+ case "d" :
+ case "D" :
+ case "DDD" :
+ return number + "日";
+ case "M" :
+ return number + "月";
+ case "w" :
+ case "W" :
+ return number + "周";
+ default :
+ return number;
+ }
+ },
+ relativeTime : {
+ future : "%s内",
+ past : "%s前",
+ s : "几秒",
+ m : "1分钟",
+ mm : "%d分钟",
+ h : "1小时",
+ hh : "%d小时",
+ d : "1天",
+ dd : "%d天",
+ M : "1个月",
+ MM : "%d个月",
+ y : "1年",
+ yy : "%d年"
+ }
+});
+})();
+(function(){
+// moment.js language configuration
+// language : traditional chinese (zh-tw)
+// author : Ben : https://github.com/ben-lin
+
+moment.lang('zh-tw', {
+ months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
+ monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
+ weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
+ weekdaysShort : "週日_週一_週二_週三_週四_週五_週六".split("_"),
+ weekdaysMin : "日_一_二_三_四_五_六".split("_"),
+ longDateFormat : {
+ LT : "Ah點mm",
+ L : "YYYY年MMMD日",
+ LL : "YYYY年MMMD日",
+ LLL : "YYYY年MMMD日LT",
+ LLLL : "YYYY年MMMD日ddddLT",
+ l : "YYYY年MMMD日",
+ ll : "YYYY年MMMD日",
+ lll : "YYYY年MMMD日LT",
+ llll : "YYYY年MMMD日ddddLT"
+ },
+ meridiem : function (hour, minute, isLower) {
+ if (hour < 9) {
+ return "早上";
+ } else if (hour < 11 && minute < 30) {
+ return "上午";
+ } else if (hour < 13 && minute < 30) {
+ return "中午";
+ } else if (hour < 18) {
+ return "下午";
+ } else {
+ return "晚上";
+ }
+ },
+ calendar : {
+ sameDay : '[今天]LT',
+ nextDay : '[明天]LT',
+ nextWeek : '[下]ddddLT',
+ lastDay : '[昨天]LT',
+ lastWeek : '[上]ddddLT',
+ sameElse : 'L'
+ },
+ ordinal : function (number, period) {
+ switch (period) {
+ case "d" :
+ case "D" :
+ case "DDD" :
+ return number + "日";
+ case "M" :
+ return number + "月";
+ case "w" :
+ case "W" :
+ return number + "週";
+ default :
+ return number;
+ }
+ },
+ relativeTime : {
+ future : "%s內",
+ past : "%s前",
+ s : "幾秒",
+ m : "一分鐘",
+ mm : "%d分鐘",
+ h : "一小時",
+ hh : "%d小時",
+ d : "一天",
+ dd : "%d天",
+ M : "一個月",
+ MM : "%d個月",
+ y : "一年",
+ yy : "%d年"
+ }
+});
+})();
+
+moment.lang('en');
+
+ }
+ if (typeof define === "function" && define.amd) {
+ define(["moment"], onload);
+ }
+ if (typeof window !== "undefined" && window.moment) {
+ onload(window.moment);
+ }
+})();
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/langs.min.js b/97suifangqa/apps/indicator/static/plugins/moment/langs.min.js
new file mode 100644
index 0000000..da13a95
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/langs.min.js
@@ -0,0 +1,3 @@
+!function(){function e(){!function(){function e(e){!function(){e.lang("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:6,doy:12}})}(),function(){e.lang("ar",{months:"\u064a\u0646\u0627\u064a\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0641\u0628\u0631\u0627\u064a\u0631/ \u0634\u0628\u0627\u0637_\u0645\u0627\u0631\u0633/ \u0622\u0630\u0627\u0631_\u0623\u0628\u0631\u064a\u0644/ \u0646\u064a\u0633\u0627\u0646_\u0645\u0627\u064a\u0648/ \u0623\u064a\u0627\u0631_\u064a\u0648\u0646\u064a\u0648/ \u062d\u0632\u064a\u0631\u0627\u0646_\u064a\u0648\u0644\u064a\u0648/ \u062a\u0645\u0648\u0632_\u0623\u063a\u0633\u0637\u0633/ \u0622\u0628_\u0633\u0628\u062a\u0645\u0628\u0631/ \u0623\u064a\u0644\u0648\u0644_\u0623\u0643\u062a\u0648\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644_\u0646\u0648\u0641\u0645\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u062f\u064a\u0633\u0645\u0628\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0641\u0628\u0631\u0627\u064a\u0631/ \u0634\u0628\u0627\u0637_\u0645\u0627\u0631\u0633/ \u0622\u0630\u0627\u0631_\u0623\u0628\u0631\u064a\u0644/ \u0646\u064a\u0633\u0627\u0646_\u0645\u0627\u064a\u0648/ \u0623\u064a\u0627\u0631_\u064a\u0648\u0646\u064a\u0648/ \u062d\u0632\u064a\u0631\u0627\u0646_\u064a\u0648\u0644\u064a\u0648/ \u062a\u0645\u0648\u0632_\u0623\u063a\u0633\u0637\u0633/ \u0622\u0628_\u0633\u0628\u062a\u0645\u0628\u0631/ \u0623\u064a\u0644\u0648\u0644_\u0623\u0643\u062a\u0648\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644_\u0646\u0648\u0641\u0645\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u062f\u064a\u0633\u0645\u0628\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:6,doy:12}})}(),function(){e.lang("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0440_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"h:mm",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u043d\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},ordinal:function(e){var t=e%10,a=e%100;return 0===e?e+"-\u0435\u0432":0===a?e+"-\u0435\u043d":a>10&&20>a?e+"-\u0442\u0438":1===t?e+"-\u0432\u0438":2===t?e+"-\u0440\u0438":7===t||8===t?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}})}(),function(){function t(e,t,a){var n={mm:"munutenn",MM:"miz",dd:"devezh"};return e+" "+_(n[a],e)}function a(e){switch(n(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}function n(e){return e>9?n(e%10):e}function _(e,t){return 2===t?s(e):e}function s(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}e.lang("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),longDateFormat:{LT:"h[e]mm A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY LT",LLLL:"dddd, D [a viz] MMMM YYYY LT"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondenno\xf9",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:a},ordinal:function(e){var t=1===e?"a\xf1":"vet";return e+t},week:{dow:1,doy:4}})}(),function(){e.lang("ca",{months:"Gener_Febrer_Mar\xe7_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"),monthsShort:"Gen._Febr._Mar._Abr._Mai._Jun._Jul._Ag._Set._Oct._Nov._Des.".split("_"),weekdays:"Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"),weekdaysShort:"Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[dem\xe0 a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:"%d\xba",week:{dow:1,doy:4}})}(),function(){function t(e){return e>1&&5>e&&1!==~~(e/10)}function a(e,a,n,_){var s=e+" ";switch(n){case"s":return a||_?"p\xe1r vte\u0159in":"p\xe1r vte\u0159inami";case"m":return a?"minuta":_?"minutu":"minutou";case"mm":return a||_?s+(t(e)?"minuty":"minut"):s+"minutami";break;case"h":return a?"hodina":_?"hodinu":"hodinou";case"hh":return a||_?s+(t(e)?"hodiny":"hodin"):s+"hodinami";break;case"d":return a||_?"den":"dnem";case"dd":return a||_?s+(t(e)?"dny":"dn\xed"):s+"dny";break;case"M":return a||_?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return a||_?s+(t(e)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):s+"m\u011bs\xedci";break;case"y":return a||_?"rok":"rokem";case"yy":return a||_?s+(t(e)?"roky":"let"):s+"lety"}}var n="leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),_="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_");e.lang("cs",{months:n,monthsShort:_,monthsParse:function(e,t){var a,n=[];for(a=0;12>a;a++)n[a]=new RegExp("^"+e[a]+"$|^"+t[a]+"$","i");return n}(n,_),weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes v] LT",nextDay:"[z\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){e.lang("cv",{months:"\u043a\u0103\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u0103\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\xe7\u0115\u0440\u0442\u043c\u0435_\u0443\u0442\u0103_\xe7\u0443\u0440\u043b\u0430_\u0430\u0432\u0103\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u0103\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\xe7\u0115\u0440_\u0443\u0442\u0103_\xe7\u0443\u0440_\u0430\u0432_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u0115\xe7\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u0103\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u0115\xe7_\u044d\u0440\u043d_\u0448\u0103\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\xe7_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"YYYY [\xe7\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u0103\u0445\u0115\u043d] D[-\u043c\u0115\u0448\u0115]",LLL:"YYYY [\xe7\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u0103\u0445\u0115\u043d] D[-\u043c\u0115\u0448\u0115], LT",LLLL:"dddd, YYYY [\xe7\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u0103\u0445\u0115\u043d] D[-\u043c\u0115\u0448\u0115], LT"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u0114\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\xc7\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u0115] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(e){var t=/\u0441\u0435\u0445\u0435\u0442$/i.exec(e)?"\u0440\u0435\u043d":/\xe7\u0443\u043b$/i.exec(e)?"\u0442\u0430\u043d":"\u0440\u0430\u043d";return e+t},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u0115\u0440-\u0438\u043a \xe7\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u0115\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u0115\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u0115\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u0115\u0440 \u0443\u0439\u0103\u0445",MM:"%d \u0443\u0439\u0103\u0445",y:"\u043f\u0115\u0440 \xe7\u0443\u043b",yy:"%d \xe7\u0443\u043b"},ordinal:"%d-\u043c\u0115\u0448",week:{dow:1,doy:7}})}(),function(){e.lang("da",{months:"Januar_Februar_Marts_April_Maj_Juni_Juli_August_September_Oktober_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Maj_Jun_Jul_Aug_Sep_Okt_Nov_Dec".split("_"),weekdays:"S\xf8ndag_Mandag_Tirsdag_Onsdag_Torsdag_Fredag_L\xf8rdag".split("_"),weekdaysShort:"S\xf8n_Man_Tir_Ons_Tor_Fre_L\xf8r".split("_"),weekdaysMin:"S\xf8_Ma_Ti_On_To_Fr_L\xf8".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D. MMMM, YYYY LT"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I g\xe5r kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){function t(e,t,a){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[a][0]:n[a][1]}e.lang("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Uhr]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Heute um] LT",sameElse:"L",nextDay:"[Morgen um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gestern um] LT",lastWeek:"[letzten] dddd [um] LT"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){e.lang("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(e,t){return/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(e,t,a){return e>11?a?"\u03bc\u03bc":"\u039c\u039c":a?"\u03c0\u03bc":"\u03a0\u039c"},longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendarEl:{sameDay:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT",sameElse:"L"},calendar:function(e,t){var a=this._calendarEl[e],n=t&&t.hours();return a.replace("{}",1===n%12?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},ordinal:function(e){return e+"\u03b7"},week:{dow:1,doy:4}})}(),function(){e.lang("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"YYYY-MM-DD",LL:"D MMMM, YYYY",LLL:"D MMMM, YYYY LT",LLLL:"dddd, D MMMM, YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}})}(),function(){e.lang("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(),function(){e.lang("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_a\u016dg_sep_okt_nov_dec".split("_"),weekdays:"Diman\u0109o_Lundo_Mardo_Merkredo_\u0134a\u016ddo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_\u0134a\u016d_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_\u0134a_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY LT",LLLL:"dddd, [la] D[-an de] MMMM, YYYY LT"},meridiem:function(e,t,a){return e>11?a?"p.t.m.":"P.T.M.":a?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"anta\u016d %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinal:"%da",week:{dow:1,doy:7}})}(),function(){e.lang("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"Do_Lu_Ma_Mi_Ju_Vi_S\xe1".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},ordinal:"%d\xba",week:{dow:1,doy:4}})}(),function(){function t(e,t,a,n){return n||t?"paari sekundi":"paar sekundit"}e.lang("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[T\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:t,m:"minut",mm:"%d minutit",h:"tund",hh:"%d tundi",d:"p\xe4ev",dd:"%d p\xe4eva",M:"kuu",MM:"%d kuud",y:"aasta",yy:"%d aastat"},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){e.lang("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] LT",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] LT",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] LT",llll:"ddd, YYYY[ko] MMM D[a] LT"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinal:"%d.",week:{dow:1,doy:7}})}(),function(){var t={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},a={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"};e.lang("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},meridiem:function(e){return 12>e?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f\u06cc\u0646 \u062b\u0627\u0646\u06cc\u0647",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/[\u06f0-\u06f9]/g,function(e){return a[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"\u060c")},ordinal:"%d\u0645",week:{dow:6,doy:12}})}(),function(){function t(e,t,n,_){var s="";switch(n){case"s":return _?"muutaman sekunnin":"muutama sekunti";case"m":return _?"minuutin":"minuutti";case"mm":s=_?"minuutin":"minuuttia";break;case"h":return _?"tunnin":"tunti";case"hh":s=_?"tunnin":"tuntia";break;case"d":return _?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":s=_?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return _?"kuukauden":"kuukausi";case"MM":s=_?"kuukauden":"kuukautta";break;case"y":return _?"vuoden":"vuosi";case"yy":s=_?"vuoden":"vuotta"}return s=a(e,_)+" "+s}function a(e,t){return 10>e?t?_[e]:n[e]:e}var n="nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" "),_=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",n[7],n[8],n[9]];e.lang("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] LT",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] LT",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] LT",llll:"ddd, Do MMM YYYY, [klo] LT"},calendar:{sameDay:"[t\xe4n\xe4\xe4n] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinal:"%d.",week:{dow:1,doy:4}})
+}(),function(){e.lang("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return e+(1===e?"er":"")}})}(),function(){e.lang("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return e+(1===e?"er":"")},week:{dow:1,doy:4}})}(),function(){e.lang("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xu\xf1o_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xu\xf1._Xul._Ago._Set._Out._Nov._Dec.".split("_"),weekdays:"Domingo_Luns_Martes_M\xe9rcores_Xoves_Venres_S\xe1bado".split("_"),weekdaysShort:"Dom._Lun._Mar._M\xe9r._Xov._Ven._S\xe1b.".split("_"),weekdaysMin:"Do_Lu_Ma_M\xe9_Xo_Ve_S\xe1".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return"uns segundos"===e?"nuns segundos":"en "+e},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinal:"%d\xba",week:{dow:1,doy:7}})}(),function(){e.lang("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY LT",LLLL:"dddd, D [\u05d1]MMMM YYYY LT",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY LT",llll:"ddd, D MMM YYYY LT"},calendar:{sameDay:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:"%d \u05e9\u05e2\u05d5\u05ea",d:"\u05d9\u05d5\u05dd",dd:"%d \u05d9\u05de\u05d9\u05dd",M:"\u05d7\u05d5\u05d3\u05e9",MM:"%d \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd",y:"\u05e9\u05e0\u05d4",yy:"%d \u05e9\u05e0\u05d9\u05dd"}})}(),function(){var t={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},a={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};e.lang("hi",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiem:function(e){return 4>e?"\u0930\u093e\u0924":10>e?"\u0938\u0941\u092c\u0939":17>e?"\u0926\u094b\u092a\u0939\u0930":20>e?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}})}(),function(){function t(e,t,a,n){var _=e;switch(a){case"s":return n||t?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"m":return"egy"+(n||t?" perc":" perce");case"mm":return _+(n||t?" perc":" perce");case"h":return"egy"+(n||t?" \xf3ra":" \xf3r\xe1ja");case"hh":return _+(n||t?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(n||t?" nap":" napja");case"dd":return _+(n||t?" nap":" napja");case"M":return"egy"+(n||t?" h\xf3nap":" h\xf3napja");case"MM":return _+(n||t?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(n||t?" \xe9v":" \xe9ve");case"yy":return _+(n||t?" \xe9v":" \xe9ve")}return""}function a(e){return(e?"":"[m\xfalt] ")+"["+n[this.day()]+"] LT[-kor]"}var n="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");e.lang("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan_feb_m\xe1rc_\xe1pr_m\xe1j_j\xfan_j\xfal_aug_szept_okt_nov_dec".split("_"),weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D., LT",LLLL:"YYYY. MMMM D., dddd LT"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return a.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return a.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m\xfalva",past:"%s",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinal:"%d.",week:{dow:1,doy:7}})}(),function(){e.lang("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(e){return 11>e?"pagi":15>e?"siang":19>e?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(),function(){function t(e){return 11===e%100?!0:1===e%10?!1:!0}function a(e,a,n,_){var s=e+" ";switch(n){case"s":return a||_?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"m":return a?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return t(e)?s+(a||_?"m\xedn\xfatur":"m\xedn\xfatum"):a?s+"m\xedn\xfata":s+"m\xedn\xfatu";case"hh":return t(e)?s+(a||_?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return a?"dagur":_?"dag":"degi";case"dd":return t(e)?a?s+"dagar":s+(_?"daga":"d\xf6gum"):a?s+"dagur":s+(_?"dag":"degi");case"M":return a?"m\xe1nu\xf0ur":_?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return t(e)?a?s+"m\xe1nu\xf0ir":s+(_?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):a?s+"m\xe1nu\xf0ur":s+(_?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return a||_?"\xe1r":"\xe1ri";case"yy":return t(e)?s+(a||_?"\xe1r":"\xe1rum"):s+(a||_?"\xe1r":"\xe1ri")}}e.lang("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_La".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] LT",LLLL:"dddd, D. MMMM YYYY [kl.] LT"},calendar:{sameDay:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:a,m:a,mm:a,h:"klukkustund",hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){e.lang("it",{months:"Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"),monthsShort:"Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"),weekdays:"Domenica_Luned\xec_Marted\xec_Mercoled\xec_Gioved\xec_Venerd\xec_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"D_L_Ma_Me_G_V_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:"[lo scorso] dddd [alle] LT",sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:"%d\xba",week:{dow:1,doy:4}})}(),function(){e.lang("ja",{months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"Ah\u6642m\u5206",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5LT",LLLL:"YYYY\u5e74M\u6708D\u65e5LT dddd"},meridiem:function(e){return 12>e?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:"[\u6765\u9031]dddd LT",lastDay:"[\u6628\u65e5] LT",lastWeek:"[\u524d\u9031]dddd LT",sameElse:"L"},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}})}(),function(){function t(e,t){var a={nominative:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),accusative:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10e1_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10e1_\u10db\u10d0\u10e0\u10e2\u10e1_\u10d0\u10de\u10e0\u10d8\u10da\u10d8\u10e1_\u10db\u10d0\u10d8\u10e1\u10e1_\u10d8\u10d5\u10dc\u10d8\u10e1\u10e1_\u10d8\u10d5\u10da\u10d8\u10e1\u10e1_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10e1_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10e1_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10e1".split("_")},n=/D[oD] *MMMM?/.test(t)?"accusative":"nominative";return a[n][e.month()]}function a(e,t){var a={nominative:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),accusative:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_")},n=/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/.test(t)?"accusative":"nominative";return a[n][e.day()]}e.lang("ka",{months:t,monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:a,weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10ec\u10d4\u10da\u10d8)/.test(e)?e.replace(/\u10d8$/,"\u10e8\u10d8"):e+"\u10e8\u10d8"},past:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(e)?e.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(e)?e.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):void 0},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},ordinal:function(e){return 0===e?e:1===e?e+"-\u10da\u10d8":20>e||100>=e&&0===e%20||0===e%100?"\u10db\u10d4-"+e:e+"-\u10d4"},week:{dow:1,doy:7}})}(),function(){e.lang("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h\uc2dc mm\ubd84",L:"YYYY.MM.DD",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c LT",LLLL:"YYYY\ub144 MMMM D\uc77c dddd LT"},meridiem:function(e){return 12>e?"\uc624\uc804":"\uc624\ud6c4"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87\ucd08",ss:"%d\ucd08",m:"\uc77c\ubd84",mm:"%d\ubd84",h:"\ud55c\uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c\ub2ec",MM:"%d\ub2ec",y:"\uc77c\ub144",yy:"%d\ub144"},ordinal:"%d\uc77c"})}(),function(){function t(e,t,a){var n=e.split("_");return a?1===t%10&&11!==t?n[2]:n[3]:1===t%10&&11!==t?n[0]:n[1]}function a(e,a,_){return e+" "+t(n[_],e,a)}var n={mm:"min\u016bti_min\u016btes_min\u016bte_min\u016btes",hh:"stundu_stundas_stunda_stundas",dd:"dienu_dienas_diena_dienas",MM:"m\u0113nesi_m\u0113ne\u0161us_m\u0113nesis_m\u0113ne\u0161i",yy:"gadu_gadus_gads_gadi"};e.lang("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, LT",LLLL:"YYYY. [gada] D. MMMM, dddd, LT"},calendar:{sameDay:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"%s v\u0113l\u0101k",past:"%s agr\u0101k",s:"da\u017eas sekundes",m:"min\u016bti",mm:a,h:"stundu",hh:a,d:"dienu",dd:a,M:"m\u0113nesi",MM:a,y:"gadu",yy:a},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){e.lang("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(e){return 11>e?"pagi":15>e?"tengahari":19>e?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(),function(){e.lang("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[I dag klokken] LT",nextDay:"[I morgen klokken] LT",nextWeek:"dddd [klokken] LT",lastDay:"[I g\xe5r klokken] LT",lastWeek:"[Forrige] dddd [klokken] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){var t={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},a={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};e.lang("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906\u0907._\u0938\u094b._\u092e\u0919\u094d_\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiem:function(e){return 3>e?"\u0930\u093e\u0924\u0940":10>e?"\u092c\u093f\u0939\u093e\u0928":15>e?"\u0926\u093f\u0909\u0901\u0938\u094b":18>e?"\u092c\u0947\u0932\u0941\u0915\u093e":20>e?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u0940"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u0940] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u0940",s:"\u0915\u0947\u0939\u0940 \u0938\u092e\u092f",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:1,doy:7}})}(),function(){var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),a="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_");e.lang("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return/-MMM-/.test(n)?a[e.month()]:t[e.month()]},weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Vandaag om] LT",nextDay:"[Morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(),function(){e.lang("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_m\xe5n_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I g\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ende] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekund",m:"ett minutt",mm:"%d minutt",h:"en time",hh:"%d timar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){function t(e){return 5>e%10&&e%10>1&&1!==~~(e/10)}function a(e,a,n){var _=e+" ";switch(n){case"m":return a?"minuta":"minut\u0119";case"mm":return _+(t(e)?"minuty":"minut");case"h":return a?"godzina":"godzin\u0119";case"hh":return _+(t(e)?"godziny":"godzin");case"MM":return _+(t(e)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return _+(t(e)?"lata":"lat")}}var n="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),_="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_");e.lang("pl",{months:function(e,t){return/D MMMM/.test(t)?_[e.month()]:n[e.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"nie_pon_wt_\u015br_czw_pt_sb".split("_"),weekdaysMin:"N_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Dzi\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:a,mm:a,h:a,hh:a,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:a,y:"rok",yy:a},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){e.lang("pt-br",{months:"Janeiro_Fevereiro_Mar\xe7o_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Dom_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1b".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atr\xe1s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%d\xba"})}(),function(){e.lang("pt",{months:"Janeiro_Fevereiro_Mar\xe7o_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Dom_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1b".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atr\xe1s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%d\xba",week:{dow:1,doy:4}})
+}(),function(){e.lang("ro",{months:"Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"),monthsShort:"Ian_Feb_Mar_Apr_Mai_Iun_Iul_Aug_Sep_Oct_Noi_Dec".split("_"),weekdays:"Duminic\u0103_Luni_Mar\u0163i_Miercuri_Joi_Vineri_S\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[m\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",m:"un minut",mm:"%d minute",h:"o or\u0103",hh:"%d ore",d:"o zi",dd:"%d zile",M:"o lun\u0103",MM:"%d luni",y:"un an",yy:"%d ani"},week:{dow:1,doy:7}})}(),function(){function t(e,t){var a=e.split("_");return 1===t%10&&11!==t%100?a[0]:t%10>=2&&4>=t%10&&(10>t%100||t%100>=20)?a[1]:a[2]}function a(e,a,n){var _={mm:"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"};return"m"===n?a?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":e+" "+t(_[n],+e)}function n(e,t){var a={nominative:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),accusative:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_")},n=/D[oD]? *MMMM?/.test(t)?"accusative":"nominative";return a[n][e.month()]}function _(e,t){var a={nominative:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),accusative:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_")},n=/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e)? ?\] ?dddd/.test(t)?"accusative":"nominative";return a[n][e.day()]}e.lang("ru",{months:n,monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:_,weekdaysShort:"\u0432\u0441\u043a_\u043f\u043d\u0434_\u0432\u0442\u0440_\u0441\u0440\u0434_\u0447\u0442\u0432_\u043f\u0442\u043d_\u0441\u0431\u0442".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., LT",LLLL:"dddd, D MMMM YYYY \u0433., LT"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430 \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",nextWeek:function(){return 2===this.day()?"[\u0412\u043e] dddd [\u0432] LT":"[\u0412] dddd [\u0432] LT"},lastWeek:function(){switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",m:a,mm:a,h:"\u0447\u0430\u0441",hh:a,d:"\u0434\u0435\u043d\u044c",dd:a,M:"\u043c\u0435\u0441\u044f\u0446",MM:a,y:"\u0433\u043e\u0434",yy:a},ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-\u0439";case"D":return e+"-\u0433\u043e";case"w":case"W":return e+"-\u044f";default:return e}},week:{dow:1,doy:7}})}(),function(){function t(e){return e>1&&5>e}function a(e,a,n,_){var s=e+" ";switch(n){case"s":return a||_?"p\xe1r sek\xfand":"p\xe1r sekundami";case"m":return a?"min\xfata":_?"min\xfatu":"min\xfatou";case"mm":return a||_?s+(t(e)?"min\xfaty":"min\xfat"):s+"min\xfatami";break;case"h":return a?"hodina":_?"hodinu":"hodinou";case"hh":return a||_?s+(t(e)?"hodiny":"hod\xedn"):s+"hodinami";break;case"d":return a||_?"de\u0148":"d\u0148om";case"dd":return a||_?s+(t(e)?"dni":"dn\xed"):s+"d\u0148ami";break;case"M":return a||_?"mesiac":"mesiacom";case"MM":return a||_?s+(t(e)?"mesiace":"mesiacov"):s+"mesiacmi";break;case"y":return a||_?"rok":"rokom";case"yy":return a||_?s+(t(e)?"roky":"rokov"):s+"rokmi"}}var n="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),_="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_");e.lang("sk",{months:n,monthsShort:_,monthsParse:function(e,t){var a,n=[];for(a=0;12>a;a++)n[a]=new RegExp("^"+e[a]+"$|^"+t[a]+"$","i");return n}(n,_),weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nede\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){function t(e,t,a){var n=e+" ";switch(a){case"m":return t?"ena minuta":"eno minuto";case"mm":return n+=1===e?"minuta":2===e?"minuti":3===e||4===e?"minute":"minut";case"h":return t?"ena ura":"eno uro";case"hh":return n+=1===e?"ura":2===e?"uri":3===e||4===e?"ure":"ur";case"dd":return n+=1===e?"dan":"dni";case"MM":return n+=1===e?"mesec":2===e?"meseca":3===e||4===e?"mesece":"mesecev";case"yy":return n+=1===e?"leto":2===e?"leti":3===e||4===e?"leta":"let"}}e.lang("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[v\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[prej\u0161nja] dddd [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"%s nazaj",s:"nekaj sekund",m:t,mm:t,h:t,hh:t,d:"en dan",dd:t,M:"en mesec",MM:t,y:"eno leto",yy:t},ordinal:"%d.",week:{dow:1,doy:7}})}(),function(){e.lang("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Marte_E M\xebrkure_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Sot n\xeb] LT",nextDay:"[Neser n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s me par\xeb",s:"disa seconda",m:"nj\xeb minut",mm:"%d minutea",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){e.lang("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Ig\xe5r] LT",nextWeek:"dddd LT",lastWeek:"[F\xf6rra] dddd[en] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"e":1===t?"a":2===t?"a":3===t?"e":"e";return e+a},week:{dow:1,doy:4}})}(),function(){e.lang("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21\u0e01\u0e23\u0e32_\u0e01\u0e38\u0e21\u0e20\u0e32_\u0e21\u0e35\u0e19\u0e32_\u0e40\u0e21\u0e29\u0e32_\u0e1e\u0e24\u0e29\u0e20\u0e32_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32_\u0e01\u0e23\u0e01\u0e0e\u0e32_\u0e2a\u0e34\u0e07\u0e2b\u0e32_\u0e01\u0e31\u0e19\u0e22\u0e32_\u0e15\u0e38\u0e25\u0e32_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32_\u0e18\u0e31\u0e19\u0e27\u0e32".split("_"),weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),longDateFormat:{LT:"H \u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32 m \u0e19\u0e32\u0e17\u0e35",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 LT",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 LT"},meridiem:function(e){return 12>e?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}})}(),function(){var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};e.lang("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(e){if(0===e)return e+"'\u0131nc\u0131";var a=e%10,n=e%100-a,_=e>=100?100:null;return e+(t[a]||t[n]||t[_])},week:{dow:1,doy:7}})}(),function(){e.lang("tzm-la",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(),function(){e.lang("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}})}(),function(){function t(e,t){var a=e.split("_");return 1===t%10&&11!==t%100?a[0]:t%10>=2&&4>=t%10&&(10>t%100||t%100>=20)?a[1]:a[2]}function a(e,a,n){var _={mm:"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"};return"m"===n?a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===n?a?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":e+" "+t(_[n],+e)}function n(e,t){var a={nominative:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_"),accusative:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_")},n=/D[oD]? *MMMM?/.test(t)?"accusative":"nominative";return a[n][e.month()]}function _(e,t){var a={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")},n=/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(t)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(t)?"genitive":"nominative";return a[n][e.day()]}function s(e){return function(){return e+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}e.lang("uk",{months:n,monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456_\u0442\u0440\u0430_\u0447\u0435\u0440_\u043b\u0438\u043f_\u0441\u0435\u0440_\u0432\u0435\u0440_\u0436\u043e\u0432_\u043b\u0438\u0441_\u0433\u0440\u0443".split("_"),weekdays:_,weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0456\u0432_\u0441\u0440\u0434_\u0447\u0435\u0442_\u043f\u0442\u043d_\u0441\u0443\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., LT",LLLL:"dddd, D MMMM YYYY \u0440., LT"},calendar:{sameDay:s("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:s("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:s("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:s("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return s("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return s("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",m:a,mm:a,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:a,d:"\u0434\u0435\u043d\u044c",dd:a,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:a,y:"\u0440\u0456\u043a",yy:a},ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-\u0439";case"D":return e+"-\u0433\u043e";default:return e}},week:{dow:1,doy:7}})}(),function(){e.lang("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"Ah\u70b9mm",L:"YYYY\u5e74MMMD\u65e5",LL:"YYYY\u5e74MMMD\u65e5",LLL:"YYYY\u5e74MMMD\u65e5LT",LLLL:"YYYY\u5e74MMMD\u65e5ddddLT",l:"YYYY\u5e74MMMD\u65e5",ll:"YYYY\u5e74MMMD\u65e5",lll:"YYYY\u5e74MMMD\u65e5LT",llll:"YYYY\u5e74MMMD\u65e5ddddLT"},meridiem:function(e,t){return 9>e?"\u65e9\u4e0a":11>e&&30>t?"\u4e0a\u5348":13>e&&30>t?"\u4e2d\u5348":18>e?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u5468";default:return e}},relativeTime:{future:"%s\u5185",past:"%s\u524d",s:"\u51e0\u79d2",m:"1\u5206\u949f",mm:"%d\u5206\u949f",h:"1\u5c0f\u65f6",hh:"%d\u5c0f\u65f6",d:"1\u5929",dd:"%d\u5929",M:"1\u4e2a\u6708",MM:"%d\u4e2a\u6708",y:"1\u5e74",yy:"%d\u5e74"}})}(),function(){e.lang("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"Ah\u9edemm",L:"YYYY\u5e74MMMD\u65e5",LL:"YYYY\u5e74MMMD\u65e5",LLL:"YYYY\u5e74MMMD\u65e5LT",LLLL:"YYYY\u5e74MMMD\u65e5ddddLT",l:"YYYY\u5e74MMMD\u65e5",ll:"YYYY\u5e74MMMD\u65e5",lll:"YYYY\u5e74MMMD\u65e5LT",llll:"YYYY\u5e74MMMD\u65e5ddddLT"},meridiem:function(e,t){return 9>e?"\u65e9\u4e0a":11>e&&30>t?"\u4e0a\u5348":13>e&&30>t?"\u4e2d\u5348":18>e?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",m:"\u4e00\u5206\u9418",mm:"%d\u5206\u9418",h:"\u4e00\u5c0f\u6642",hh:"%d\u5c0f\u6642",d:"\u4e00\u5929",dd:"%d\u5929",M:"\u4e00\u500b\u6708",MM:"%d\u500b\u6708",y:"\u4e00\u5e74",yy:"%d\u5e74"}})}(),e.lang("en")}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}()}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/moment.js b/97suifangqa/apps/indicator/static/plugins/moment/moment.js
new file mode 100644
index 0000000..c8a870e
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/moment.js
@@ -0,0 +1,1662 @@
+// moment.js
+// version : 2.1.0
+// author : Tim Wood
+// license : MIT
+// momentjs.com
+
+(function (undefined) {
+
+ /************************************
+ Constants
+ ************************************/
+
+ var moment,
+ VERSION = "2.1.0",
+ round = Math.round, i,
+ // internal storage for language config files
+ languages = {},
+
+ // check for nodeJS
+ hasModule = (typeof module !== 'undefined' && module.exports),
+
+ // ASP.NET json date format regex
+ aspNetJsonRegex = /^\/?Date\((\-?\d+)/i,
+ aspNetTimeSpanJsonRegex = /(\-)?(\d*)?\.?(\d+)\:(\d+)\:(\d+)\.?(\d{3})?/,
+
+ // format tokens
+ formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|SS?S?|X|zz?|ZZ?|.)/g,
+ localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,
+
+ // parsing token regexes
+ parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99
+ parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999
+ parseTokenThreeDigits = /\d{3}/, // 000 - 999
+ parseTokenFourDigits = /\d{1,4}/, // 0 - 9999
+ parseTokenSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999
+ parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic.
+ parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/i, // +00:00 -00:00 +0000 -0000 or Z
+ parseTokenT = /T/i, // T (ISO seperator)
+ parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
+
+ // preliminary iso regex
+ // 0000-00-00 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000
+ isoRegex = /^\s*\d{4}-\d\d-\d\d((T| )(\d\d(:\d\d(:\d\d(\.\d\d?\d?)?)?)?)?([\+\-]\d\d:?\d\d)?)?/,
+ isoFormat = 'YYYY-MM-DDTHH:mm:ssZ',
+
+ // iso time formats and regexes
+ isoTimes = [
+ ['HH:mm:ss.S', /(T| )\d\d:\d\d:\d\d\.\d{1,3}/],
+ ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/],
+ ['HH:mm', /(T| )\d\d:\d\d/],
+ ['HH', /(T| )\d\d/]
+ ],
+
+ // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"]
+ parseTimezoneChunker = /([\+\-]|\d\d)/gi,
+
+ // getter and setter names
+ proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'),
+ unitMillisecondFactors = {
+ 'Milliseconds' : 1,
+ 'Seconds' : 1e3,
+ 'Minutes' : 6e4,
+ 'Hours' : 36e5,
+ 'Days' : 864e5,
+ 'Months' : 2592e6,
+ 'Years' : 31536e6
+ },
+
+ unitAliases = {
+ ms : 'millisecond',
+ s : 'second',
+ m : 'minute',
+ h : 'hour',
+ d : 'day',
+ w : 'week',
+ M : 'month',
+ y : 'year'
+ },
+
+ // format function strings
+ formatFunctions = {},
+
+ // tokens to ordinalize and pad
+ ordinalizeTokens = 'DDD w W M D d'.split(' '),
+ paddedTokens = 'M D H h m s w W'.split(' '),
+
+ formatTokenFunctions = {
+ M : function () {
+ return this.month() + 1;
+ },
+ MMM : function (format) {
+ return this.lang().monthsShort(this, format);
+ },
+ MMMM : function (format) {
+ return this.lang().months(this, format);
+ },
+ D : function () {
+ return this.date();
+ },
+ DDD : function () {
+ return this.dayOfYear();
+ },
+ d : function () {
+ return this.day();
+ },
+ dd : function (format) {
+ return this.lang().weekdaysMin(this, format);
+ },
+ ddd : function (format) {
+ return this.lang().weekdaysShort(this, format);
+ },
+ dddd : function (format) {
+ return this.lang().weekdays(this, format);
+ },
+ w : function () {
+ return this.week();
+ },
+ W : function () {
+ return this.isoWeek();
+ },
+ YY : function () {
+ return leftZeroFill(this.year() % 100, 2);
+ },
+ YYYY : function () {
+ return leftZeroFill(this.year(), 4);
+ },
+ YYYYY : function () {
+ return leftZeroFill(this.year(), 5);
+ },
+ gg : function () {
+ return leftZeroFill(this.weekYear() % 100, 2);
+ },
+ gggg : function () {
+ return this.weekYear();
+ },
+ ggggg : function () {
+ return leftZeroFill(this.weekYear(), 5);
+ },
+ GG : function () {
+ return leftZeroFill(this.isoWeekYear() % 100, 2);
+ },
+ GGGG : function () {
+ return this.isoWeekYear();
+ },
+ GGGGG : function () {
+ return leftZeroFill(this.isoWeekYear(), 5);
+ },
+ e : function () {
+ return this.weekday();
+ },
+ E : function () {
+ return this.isoWeekday();
+ },
+ a : function () {
+ return this.lang().meridiem(this.hours(), this.minutes(), true);
+ },
+ A : function () {
+ return this.lang().meridiem(this.hours(), this.minutes(), false);
+ },
+ H : function () {
+ return this.hours();
+ },
+ h : function () {
+ return this.hours() % 12 || 12;
+ },
+ m : function () {
+ return this.minutes();
+ },
+ s : function () {
+ return this.seconds();
+ },
+ S : function () {
+ return ~~(this.milliseconds() / 100);
+ },
+ SS : function () {
+ return leftZeroFill(~~(this.milliseconds() / 10), 2);
+ },
+ SSS : function () {
+ return leftZeroFill(this.milliseconds(), 3);
+ },
+ Z : function () {
+ var a = -this.zone(),
+ b = "+";
+ if (a < 0) {
+ a = -a;
+ b = "-";
+ }
+ return b + leftZeroFill(~~(a / 60), 2) + ":" + leftZeroFill(~~a % 60, 2);
+ },
+ ZZ : function () {
+ var a = -this.zone(),
+ b = "+";
+ if (a < 0) {
+ a = -a;
+ b = "-";
+ }
+ return b + leftZeroFill(~~(10 * a / 6), 4);
+ },
+ z : function () {
+ return this.zoneAbbr();
+ },
+ zz : function () {
+ return this.zoneName();
+ },
+ X : function () {
+ return this.unix();
+ }
+ };
+
+ function padToken(func, count) {
+ return function (a) {
+ return leftZeroFill(func.call(this, a), count);
+ };
+ }
+ function ordinalizeToken(func, period) {
+ return function (a) {
+ return this.lang().ordinal(func.call(this, a), period);
+ };
+ }
+
+ while (ordinalizeTokens.length) {
+ i = ordinalizeTokens.pop();
+ formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i);
+ }
+ while (paddedTokens.length) {
+ i = paddedTokens.pop();
+ formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2);
+ }
+ formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3);
+
+
+ /************************************
+ Constructors
+ ************************************/
+
+ function Language() {
+
+ }
+
+ // Moment prototype object
+ function Moment(config) {
+ extend(this, config);
+ }
+
+ // Duration Constructor
+ function Duration(duration) {
+ var years = duration.years || duration.year || duration.y || 0,
+ months = duration.months || duration.month || duration.M || 0,
+ weeks = duration.weeks || duration.week || duration.w || 0,
+ days = duration.days || duration.day || duration.d || 0,
+ hours = duration.hours || duration.hour || duration.h || 0,
+ minutes = duration.minutes || duration.minute || duration.m || 0,
+ seconds = duration.seconds || duration.second || duration.s || 0,
+ milliseconds = duration.milliseconds || duration.millisecond || duration.ms || 0;
+
+ // store reference to input for deterministic cloning
+ this._input = duration;
+
+ // representation for dateAddRemove
+ this._milliseconds = milliseconds +
+ seconds * 1e3 + // 1000
+ minutes * 6e4 + // 1000 * 60
+ hours * 36e5; // 1000 * 60 * 60
+ // Because of dateAddRemove treats 24 hours as different from a
+ // day when working around DST, we need to store them separately
+ this._days = days +
+ weeks * 7;
+ // It is impossible translate months into days without knowing
+ // which months you are are talking about, so we have to store
+ // it separately.
+ this._months = months +
+ years * 12;
+
+ this._data = {};
+
+ this._bubble();
+ }
+
+
+ /************************************
+ Helpers
+ ************************************/
+
+
+ function extend(a, b) {
+ for (var i in b) {
+ if (b.hasOwnProperty(i)) {
+ a[i] = b[i];
+ }
+ }
+ return a;
+ }
+
+ function absRound(number) {
+ if (number < 0) {
+ return Math.ceil(number);
+ } else {
+ return Math.floor(number);
+ }
+ }
+
+ // left zero fill a number
+ // see http://jsperf.com/left-zero-filling for performance comparison
+ function leftZeroFill(number, targetLength) {
+ var output = number + '';
+ while (output.length < targetLength) {
+ output = '0' + output;
+ }
+ return output;
+ }
+
+ // helper function for _.addTime and _.subtractTime
+ function addOrSubtractDurationFromMoment(mom, duration, isAdding, ignoreUpdateOffset) {
+ var milliseconds = duration._milliseconds,
+ days = duration._days,
+ months = duration._months,
+ minutes,
+ hours,
+ currentDate;
+
+ if (milliseconds) {
+ mom._d.setTime(+mom._d + milliseconds * isAdding);
+ }
+ // store the minutes and hours so we can restore them
+ if (days || months) {
+ minutes = mom.minute();
+ hours = mom.hour();
+ }
+ if (days) {
+ mom.date(mom.date() + days * isAdding);
+ }
+ if (months) {
+ mom.month(mom.month() + months * isAdding);
+ }
+ if (milliseconds && !ignoreUpdateOffset) {
+ moment.updateOffset(mom);
+ }
+ // restore the minutes and hours after possibly changing dst
+ if (days || months) {
+ mom.minute(minutes);
+ mom.hour(hours);
+ }
+ }
+
+ // check if is an array
+ function isArray(input) {
+ return Object.prototype.toString.call(input) === '[object Array]';
+ }
+
+ // compare two arrays, return the number of differences
+ function compareArrays(array1, array2) {
+ var len = Math.min(array1.length, array2.length),
+ lengthDiff = Math.abs(array1.length - array2.length),
+ diffs = 0,
+ i;
+ for (i = 0; i < len; i++) {
+ if (~~array1[i] !== ~~array2[i]) {
+ diffs++;
+ }
+ }
+ return diffs + lengthDiff;
+ }
+
+ function normalizeUnits(units) {
+ return units ? unitAliases[units] || units.toLowerCase().replace(/(.)s$/, '$1') : units;
+ }
+
+
+ /************************************
+ Languages
+ ************************************/
+
+
+ Language.prototype = {
+ set : function (config) {
+ var prop, i;
+ for (i in config) {
+ prop = config[i];
+ if (typeof prop === 'function') {
+ this[i] = prop;
+ } else {
+ this['_' + i] = prop;
+ }
+ }
+ },
+
+ _months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
+ months : function (m) {
+ return this._months[m.month()];
+ },
+
+ _monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
+ monthsShort : function (m) {
+ return this._monthsShort[m.month()];
+ },
+
+ monthsParse : function (monthName) {
+ var i, mom, regex;
+
+ if (!this._monthsParse) {
+ this._monthsParse = [];
+ }
+
+ for (i = 0; i < 12; i++) {
+ // make the regex if we don't have it already
+ if (!this._monthsParse[i]) {
+ mom = moment([2000, i]);
+ regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
+ this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
+ }
+ // test the regex
+ if (this._monthsParse[i].test(monthName)) {
+ return i;
+ }
+ }
+ },
+
+ _weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
+ weekdays : function (m) {
+ return this._weekdays[m.day()];
+ },
+
+ _weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
+ weekdaysShort : function (m) {
+ return this._weekdaysShort[m.day()];
+ },
+
+ _weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
+ weekdaysMin : function (m) {
+ return this._weekdaysMin[m.day()];
+ },
+
+ weekdaysParse : function (weekdayName) {
+ var i, mom, regex;
+
+ if (!this._weekdaysParse) {
+ this._weekdaysParse = [];
+ }
+
+ for (i = 0; i < 7; i++) {
+ // make the regex if we don't have it already
+ if (!this._weekdaysParse[i]) {
+ mom = moment([2000, 1]).day(i);
+ regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
+ this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
+ }
+ // test the regex
+ if (this._weekdaysParse[i].test(weekdayName)) {
+ return i;
+ }
+ }
+ },
+
+ _longDateFormat : {
+ LT : "h:mm A",
+ L : "MM/DD/YYYY",
+ LL : "MMMM D YYYY",
+ LLL : "MMMM D YYYY LT",
+ LLLL : "dddd, MMMM D YYYY LT"
+ },
+ longDateFormat : function (key) {
+ var output = this._longDateFormat[key];
+ if (!output && this._longDateFormat[key.toUpperCase()]) {
+ output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) {
+ return val.slice(1);
+ });
+ this._longDateFormat[key] = output;
+ }
+ return output;
+ },
+
+ isPM : function (input) {
+ return ((input + '').toLowerCase()[0] === 'p');
+ },
+
+ _meridiemParse : /[ap]\.?m?\.?/i,
+ meridiem : function (hours, minutes, isLower) {
+ if (hours > 11) {
+ return isLower ? 'pm' : 'PM';
+ } else {
+ return isLower ? 'am' : 'AM';
+ }
+ },
+
+ _calendar : {
+ sameDay : '[Today at] LT',
+ nextDay : '[Tomorrow at] LT',
+ nextWeek : 'dddd [at] LT',
+ lastDay : '[Yesterday at] LT',
+ lastWeek : '[Last] dddd [at] LT',
+ sameElse : 'L'
+ },
+ calendar : function (key, mom) {
+ var output = this._calendar[key];
+ return typeof output === 'function' ? output.apply(mom) : output;
+ },
+
+ _relativeTime : {
+ future : "in %s",
+ past : "%s ago",
+ s : "a few seconds",
+ m : "a minute",
+ mm : "%d minutes",
+ h : "an hour",
+ hh : "%d hours",
+ d : "a day",
+ dd : "%d days",
+ M : "a month",
+ MM : "%d months",
+ y : "a year",
+ yy : "%d years"
+ },
+ relativeTime : function (number, withoutSuffix, string, isFuture) {
+ var output = this._relativeTime[string];
+ return (typeof output === 'function') ?
+ output(number, withoutSuffix, string, isFuture) :
+ output.replace(/%d/i, number);
+ },
+ pastFuture : function (diff, output) {
+ var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
+ return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);
+ },
+
+ ordinal : function (number) {
+ return this._ordinal.replace("%d", number);
+ },
+ _ordinal : "%d",
+
+ preparse : function (string) {
+ return string;
+ },
+
+ postformat : function (string) {
+ return string;
+ },
+
+ week : function (mom) {
+ return weekOfYear(mom, this._week.dow, this._week.doy).week;
+ },
+ _week : {
+ dow : 0, // Sunday is the first day of the week.
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
+ }
+ };
+
+ // Loads a language definition into the `languages` cache. The function
+ // takes a key and optionally values. If not in the browser and no values
+ // are provided, it will load the language file module. As a convenience,
+ // this function also returns the language values.
+ function loadLang(key, values) {
+ values.abbr = key;
+ if (!languages[key]) {
+ languages[key] = new Language();
+ }
+ languages[key].set(values);
+ return languages[key];
+ }
+
+ // Determines which language definition to use and returns it.
+ //
+ // With no parameters, it will return the global language. If you
+ // pass in a language key, such as 'en', it will return the
+ // definition for 'en', so long as 'en' has already been loaded using
+ // moment.lang.
+ function getLangDefinition(key) {
+ if (!key) {
+ return moment.fn._lang;
+ }
+ if (!languages[key] && hasModule) {
+ try {
+ require('./lang/' + key);
+ } catch (e) {
+ // call with no params to set to default
+ return moment.fn._lang;
+ }
+ }
+ return languages[key];
+ }
+
+
+ /************************************
+ Formatting
+ ************************************/
+
+
+ function removeFormattingTokens(input) {
+ if (input.match(/\[.*\]/)) {
+ return input.replace(/^\[|\]$/g, "");
+ }
+ return input.replace(/\\/g, "");
+ }
+
+ function makeFormatFunction(format) {
+ var array = format.match(formattingTokens), i, length;
+
+ for (i = 0, length = array.length; i < length; i++) {
+ if (formatTokenFunctions[array[i]]) {
+ array[i] = formatTokenFunctions[array[i]];
+ } else {
+ array[i] = removeFormattingTokens(array[i]);
+ }
+ }
+
+ return function (mom) {
+ var output = "";
+ for (i = 0; i < length; i++) {
+ output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
+ }
+ return output;
+ };
+ }
+
+ // format date using native date object
+ function formatMoment(m, format) {
+ var i = 5;
+
+ function replaceLongDateFormatTokens(input) {
+ return m.lang().longDateFormat(input) || input;
+ }
+
+ while (i-- && localFormattingTokens.test(format)) {
+ format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
+ }
+
+ if (!formatFunctions[format]) {
+ formatFunctions[format] = makeFormatFunction(format);
+ }
+
+ return formatFunctions[format](m);
+ }
+
+
+ /************************************
+ Parsing
+ ************************************/
+
+
+ // get the regex to find the next token
+ function getParseRegexForToken(token, config) {
+ switch (token) {
+ case 'DDDD':
+ return parseTokenThreeDigits;
+ case 'YYYY':
+ return parseTokenFourDigits;
+ case 'YYYYY':
+ return parseTokenSixDigits;
+ case 'S':
+ case 'SS':
+ case 'SSS':
+ case 'DDD':
+ return parseTokenOneToThreeDigits;
+ case 'MMM':
+ case 'MMMM':
+ case 'dd':
+ case 'ddd':
+ case 'dddd':
+ return parseTokenWord;
+ case 'a':
+ case 'A':
+ return getLangDefinition(config._l)._meridiemParse;
+ case 'X':
+ return parseTokenTimestampMs;
+ case 'Z':
+ case 'ZZ':
+ return parseTokenTimezone;
+ case 'T':
+ return parseTokenT;
+ case 'MM':
+ case 'DD':
+ case 'YY':
+ case 'HH':
+ case 'hh':
+ case 'mm':
+ case 'ss':
+ case 'M':
+ case 'D':
+ case 'd':
+ case 'H':
+ case 'h':
+ case 'm':
+ case 's':
+ return parseTokenOneOrTwoDigits;
+ default :
+ return new RegExp(token.replace('\\', ''));
+ }
+ }
+
+ function timezoneMinutesFromString(string) {
+ var tzchunk = (parseTokenTimezone.exec(string) || [])[0],
+ parts = (tzchunk + '').match(parseTimezoneChunker) || ['-', 0, 0],
+ minutes = +(parts[1] * 60) + ~~parts[2];
+
+ return parts[0] === '+' ? -minutes : minutes;
+ }
+
+ // function to convert string input to date
+ function addTimeToArrayFromToken(token, input, config) {
+ var a, datePartArray = config._a;
+
+ switch (token) {
+ // MONTH
+ case 'M' : // fall through to MM
+ case 'MM' :
+ datePartArray[1] = (input == null) ? 0 : ~~input - 1;
+ break;
+ case 'MMM' : // fall through to MMMM
+ case 'MMMM' :
+ a = getLangDefinition(config._l).monthsParse(input);
+ // if we didn't find a month name, mark the date as invalid.
+ if (a != null) {
+ datePartArray[1] = a;
+ } else {
+ config._isValid = false;
+ }
+ break;
+ // DAY OF MONTH
+ case 'D' : // fall through to DDDD
+ case 'DD' : // fall through to DDDD
+ case 'DDD' : // fall through to DDDD
+ case 'DDDD' :
+ if (input != null) {
+ datePartArray[2] = ~~input;
+ }
+ break;
+ // YEAR
+ case 'YY' :
+ datePartArray[0] = ~~input + (~~input > 68 ? 1900 : 2000);
+ break;
+ case 'YYYY' :
+ case 'YYYYY' :
+ datePartArray[0] = ~~input;
+ break;
+ // AM / PM
+ case 'a' : // fall through to A
+ case 'A' :
+ config._isPm = getLangDefinition(config._l).isPM(input);
+ break;
+ // 24 HOUR
+ case 'H' : // fall through to hh
+ case 'HH' : // fall through to hh
+ case 'h' : // fall through to hh
+ case 'hh' :
+ datePartArray[3] = ~~input;
+ break;
+ // MINUTE
+ case 'm' : // fall through to mm
+ case 'mm' :
+ datePartArray[4] = ~~input;
+ break;
+ // SECOND
+ case 's' : // fall through to ss
+ case 'ss' :
+ datePartArray[5] = ~~input;
+ break;
+ // MILLISECOND
+ case 'S' :
+ case 'SS' :
+ case 'SSS' :
+ datePartArray[6] = ~~ (('0.' + input) * 1000);
+ break;
+ // UNIX TIMESTAMP WITH MS
+ case 'X':
+ config._d = new Date(parseFloat(input) * 1000);
+ break;
+ // TIMEZONE
+ case 'Z' : // fall through to ZZ
+ case 'ZZ' :
+ config._useUTC = true;
+ config._tzm = timezoneMinutesFromString(input);
+ break;
+ }
+
+ // if the input is null, the date is not valid
+ if (input == null) {
+ config._isValid = false;
+ }
+ }
+
+ // convert an array to a date.
+ // the array should mirror the parameters below
+ // note: all values past the year are optional and will default to the lowest possible value.
+ // [year, month, day , hour, minute, second, millisecond]
+ function dateFromArray(config) {
+ var i, date, input = [];
+
+ if (config._d) {
+ return;
+ }
+
+ for (i = 0; i < 7; i++) {
+ config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
+ }
+
+ // add the offsets to the time to be parsed so that we can have a clean array for checking isValid
+ input[3] += ~~((config._tzm || 0) / 60);
+ input[4] += ~~((config._tzm || 0) % 60);
+
+ date = new Date(0);
+
+ if (config._useUTC) {
+ date.setUTCFullYear(input[0], input[1], input[2]);
+ date.setUTCHours(input[3], input[4], input[5], input[6]);
+ } else {
+ date.setFullYear(input[0], input[1], input[2]);
+ date.setHours(input[3], input[4], input[5], input[6]);
+ }
+
+ config._d = date;
+ }
+
+ // date from string and format string
+ function makeDateFromStringAndFormat(config) {
+ // This array is used to make a Date, either with `new Date` or `Date.UTC`
+ var tokens = config._f.match(formattingTokens),
+ string = config._i,
+ i, parsedInput;
+
+ config._a = [];
+
+ for (i = 0; i < tokens.length; i++) {
+ parsedInput = (getParseRegexForToken(tokens[i], config).exec(string) || [])[0];
+ if (parsedInput) {
+ string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
+ }
+ // don't parse if its not a known token
+ if (formatTokenFunctions[tokens[i]]) {
+ addTimeToArrayFromToken(tokens[i], parsedInput, config);
+ }
+ }
+
+ // add remaining unparsed input to the string
+ if (string) {
+ config._il = string;
+ }
+
+ // handle am pm
+ if (config._isPm && config._a[3] < 12) {
+ config._a[3] += 12;
+ }
+ // if is 12 am, change hours to 0
+ if (config._isPm === false && config._a[3] === 12) {
+ config._a[3] = 0;
+ }
+ // return
+ dateFromArray(config);
+ }
+
+ // date from string and array of format strings
+ function makeDateFromStringAndArray(config) {
+ var tempConfig,
+ tempMoment,
+ bestMoment,
+
+ scoreToBeat = 99,
+ i,
+ currentScore;
+
+ for (i = 0; i < config._f.length; i++) {
+ tempConfig = extend({}, config);
+ tempConfig._f = config._f[i];
+ makeDateFromStringAndFormat(tempConfig);
+ tempMoment = new Moment(tempConfig);
+
+ currentScore = compareArrays(tempConfig._a, tempMoment.toArray());
+
+ // if there is any input that was not parsed
+ // add a penalty for that format
+ if (tempMoment._il) {
+ currentScore += tempMoment._il.length;
+ }
+
+ if (currentScore < scoreToBeat) {
+ scoreToBeat = currentScore;
+ bestMoment = tempMoment;
+ }
+ }
+
+ extend(config, bestMoment);
+ }
+
+ // date from iso format
+ function makeDateFromString(config) {
+ var i,
+ string = config._i,
+ match = isoRegex.exec(string);
+
+ if (match) {
+ // match[2] should be "T" or undefined
+ config._f = 'YYYY-MM-DD' + (match[2] || " ");
+ for (i = 0; i < 4; i++) {
+ if (isoTimes[i][1].exec(string)) {
+ config._f += isoTimes[i][0];
+ break;
+ }
+ }
+ if (parseTokenTimezone.exec(string)) {
+ config._f += " Z";
+ }
+ makeDateFromStringAndFormat(config);
+ } else {
+ config._d = new Date(string);
+ }
+ }
+
+ function makeDateFromInput(config) {
+ var input = config._i,
+ matched = aspNetJsonRegex.exec(input);
+
+ if (input === undefined) {
+ config._d = new Date();
+ } else if (matched) {
+ config._d = new Date(+matched[1]);
+ } else if (typeof input === 'string') {
+ makeDateFromString(config);
+ } else if (isArray(input)) {
+ config._a = input.slice(0);
+ dateFromArray(config);
+ } else {
+ config._d = input instanceof Date ? new Date(+input) : new Date(input);
+ }
+ }
+
+
+ /************************************
+ Relative Time
+ ************************************/
+
+
+ // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
+ function substituteTimeAgo(string, number, withoutSuffix, isFuture, lang) {
+ return lang.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
+ }
+
+ function relativeTime(milliseconds, withoutSuffix, lang) {
+ var seconds = round(Math.abs(milliseconds) / 1000),
+ minutes = round(seconds / 60),
+ hours = round(minutes / 60),
+ days = round(hours / 24),
+ years = round(days / 365),
+ args = seconds < 45 && ['s', seconds] ||
+ minutes === 1 && ['m'] ||
+ minutes < 45 && ['mm', minutes] ||
+ hours === 1 && ['h'] ||
+ hours < 22 && ['hh', hours] ||
+ days === 1 && ['d'] ||
+ days <= 25 && ['dd', days] ||
+ days <= 45 && ['M'] ||
+ days < 345 && ['MM', round(days / 30)] ||
+ years === 1 && ['y'] || ['yy', years];
+ args[2] = withoutSuffix;
+ args[3] = milliseconds > 0;
+ args[4] = lang;
+ return substituteTimeAgo.apply({}, args);
+ }
+
+
+ /************************************
+ Week of Year
+ ************************************/
+
+
+ // firstDayOfWeek 0 = sun, 6 = sat
+ // the day of the week that starts the week
+ // (usually sunday or monday)
+ // firstDayOfWeekOfYear 0 = sun, 6 = sat
+ // the first week is the week that contains the first
+ // of this day of the week
+ // (eg. ISO weeks use thursday (4))
+ function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
+ var end = firstDayOfWeekOfYear - firstDayOfWeek,
+ daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),
+ adjustedMoment;
+
+
+ if (daysToDayOfWeek > end) {
+ daysToDayOfWeek -= 7;
+ }
+
+ if (daysToDayOfWeek < end - 7) {
+ daysToDayOfWeek += 7;
+ }
+
+ adjustedMoment = moment(mom).add('d', daysToDayOfWeek);
+ return {
+ week: Math.ceil(adjustedMoment.dayOfYear() / 7),
+ year: adjustedMoment.year()
+ };
+ }
+
+
+ /************************************
+ Top Level Functions
+ ************************************/
+
+ function makeMoment(config) {
+ var input = config._i,
+ format = config._f;
+
+ if (input === null || input === '') {
+ return null;
+ }
+
+ if (typeof input === 'string') {
+ config._i = input = getLangDefinition().preparse(input);
+ }
+
+ if (moment.isMoment(input)) {
+ config = extend({}, input);
+ config._d = new Date(+input._d);
+ } else if (format) {
+ if (isArray(format)) {
+ makeDateFromStringAndArray(config);
+ } else {
+ makeDateFromStringAndFormat(config);
+ }
+ } else {
+ makeDateFromInput(config);
+ }
+
+ return new Moment(config);
+ }
+
+ moment = function (input, format, lang) {
+ return makeMoment({
+ _i : input,
+ _f : format,
+ _l : lang,
+ _isUTC : false
+ });
+ };
+
+ // creating with utc
+ moment.utc = function (input, format, lang) {
+ return makeMoment({
+ _useUTC : true,
+ _isUTC : true,
+ _l : lang,
+ _i : input,
+ _f : format
+ });
+ };
+
+ // creating with unix timestamp (in seconds)
+ moment.unix = function (input) {
+ return moment(input * 1000);
+ };
+
+ // duration
+ moment.duration = function (input, key) {
+ var isDuration = moment.isDuration(input),
+ isNumber = (typeof input === 'number'),
+ duration = (isDuration ? input._input : (isNumber ? {} : input)),
+ matched = aspNetTimeSpanJsonRegex.exec(input),
+ sign,
+ ret;
+
+ if (isNumber) {
+ if (key) {
+ duration[key] = input;
+ } else {
+ duration.milliseconds = input;
+ }
+ } else if (matched) {
+ sign = (matched[1] === "-") ? -1 : 1;
+ duration = {
+ y: 0,
+ d: ~~matched[2] * sign,
+ h: ~~matched[3] * sign,
+ m: ~~matched[4] * sign,
+ s: ~~matched[5] * sign,
+ ms: ~~matched[6] * sign
+ };
+ }
+
+ ret = new Duration(duration);
+
+ if (isDuration && input.hasOwnProperty('_lang')) {
+ ret._lang = input._lang;
+ }
+
+ return ret;
+ };
+
+ // version number
+ moment.version = VERSION;
+
+ // default format
+ moment.defaultFormat = isoFormat;
+
+ // This function will be called whenever a moment is mutated.
+ // It is intended to keep the offset in sync with the timezone.
+ moment.updateOffset = function () {};
+
+ // This function will load languages and then set the global language. If
+ // no arguments are passed in, it will simply return the current global
+ // language key.
+ moment.lang = function (key, values) {
+ if (!key) {
+ return moment.fn._lang._abbr;
+ }
+ if (values) {
+ loadLang(key, values);
+ } else if (!languages[key]) {
+ getLangDefinition(key);
+ }
+ moment.duration.fn._lang = moment.fn._lang = getLangDefinition(key);
+ };
+
+ // returns language data
+ moment.langData = function (key) {
+ if (key && key._lang && key._lang._abbr) {
+ key = key._lang._abbr;
+ }
+ return getLangDefinition(key);
+ };
+
+ // compare moment object
+ moment.isMoment = function (obj) {
+ return obj instanceof Moment;
+ };
+
+ // for typechecking Duration objects
+ moment.isDuration = function (obj) {
+ return obj instanceof Duration;
+ };
+
+
+ /************************************
+ Moment Prototype
+ ************************************/
+
+
+ moment.fn = Moment.prototype = {
+
+ clone : function () {
+ return moment(this);
+ },
+
+ valueOf : function () {
+ return +this._d + ((this._offset || 0) * 60000);
+ },
+
+ unix : function () {
+ return Math.floor(+this / 1000);
+ },
+
+ toString : function () {
+ return this.format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ");
+ },
+
+ toDate : function () {
+ return this._offset ? new Date(+this) : this._d;
+ },
+
+ toISOString : function () {
+ return formatMoment(moment(this).utc(), 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
+ },
+
+ toArray : function () {
+ var m = this;
+ return [
+ m.year(),
+ m.month(),
+ m.date(),
+ m.hours(),
+ m.minutes(),
+ m.seconds(),
+ m.milliseconds()
+ ];
+ },
+
+ isValid : function () {
+ if (this._isValid == null) {
+ if (this._a) {
+ this._isValid = !compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray());
+ } else {
+ this._isValid = !isNaN(this._d.getTime());
+ }
+ }
+ return !!this._isValid;
+ },
+
+ utc : function () {
+ return this.zone(0);
+ },
+
+ local : function () {
+ this.zone(0);
+ this._isUTC = false;
+ return this;
+ },
+
+ format : function (inputString) {
+ var output = formatMoment(this, inputString || moment.defaultFormat);
+ return this.lang().postformat(output);
+ },
+
+ add : function (input, val) {
+ var dur;
+ // switch args to support add('s', 1) and add(1, 's')
+ if (typeof input === 'string') {
+ dur = moment.duration(+val, input);
+ } else {
+ dur = moment.duration(input, val);
+ }
+ addOrSubtractDurationFromMoment(this, dur, 1);
+ return this;
+ },
+
+ subtract : function (input, val) {
+ var dur;
+ // switch args to support subtract('s', 1) and subtract(1, 's')
+ if (typeof input === 'string') {
+ dur = moment.duration(+val, input);
+ } else {
+ dur = moment.duration(input, val);
+ }
+ addOrSubtractDurationFromMoment(this, dur, -1);
+ return this;
+ },
+
+ diff : function (input, units, asFloat) {
+ var that = this._isUTC ? moment(input).zone(this._offset || 0) : moment(input).local(),
+ zoneDiff = (this.zone() - that.zone()) * 6e4,
+ diff, output;
+
+ units = normalizeUnits(units);
+
+ if (units === 'year' || units === 'month') {
+ // average number of days in the months in the given dates
+ diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2
+ // difference in months
+ output = ((this.year() - that.year()) * 12) + (this.month() - that.month());
+ // adjust by taking difference in days, average number of days
+ // and dst in the given months.
+ output += ((this - moment(this).startOf('month')) -
+ (that - moment(that).startOf('month'))) / diff;
+ // same as above but with zones, to negate all dst
+ output -= ((this.zone() - moment(this).startOf('month').zone()) -
+ (that.zone() - moment(that).startOf('month').zone())) * 6e4 / diff;
+ if (units === 'year') {
+ output = output / 12;
+ }
+ } else {
+ diff = (this - that);
+ output = units === 'second' ? diff / 1e3 : // 1000
+ units === 'minute' ? diff / 6e4 : // 1000 * 60
+ units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60
+ units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
+ units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
+ diff;
+ }
+ return asFloat ? output : absRound(output);
+ },
+
+ from : function (time, withoutSuffix) {
+ return moment.duration(this.diff(time)).lang(this.lang()._abbr).humanize(!withoutSuffix);
+ },
+
+ fromNow : function (withoutSuffix) {
+ return this.from(moment(), withoutSuffix);
+ },
+
+ calendar : function () {
+ var diff = this.diff(moment().startOf('day'), 'days', true),
+ format = diff < -6 ? 'sameElse' :
+ diff < -1 ? 'lastWeek' :
+ diff < 0 ? 'lastDay' :
+ diff < 1 ? 'sameDay' :
+ diff < 2 ? 'nextDay' :
+ diff < 7 ? 'nextWeek' : 'sameElse';
+ return this.format(this.lang().calendar(format, this));
+ },
+
+ isLeapYear : function () {
+ var year = this.year();
+ return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
+ },
+
+ isDST : function () {
+ return (this.zone() < this.clone().month(0).zone() ||
+ this.zone() < this.clone().month(5).zone());
+ },
+
+ day : function (input) {
+ var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
+ if (input != null) {
+ if (typeof input === 'string') {
+ input = this.lang().weekdaysParse(input);
+ if (typeof input !== 'number') {
+ return this;
+ }
+ }
+ return this.add({ d : input - day });
+ } else {
+ return day;
+ }
+ },
+
+ month : function (input) {
+ var utc = this._isUTC ? 'UTC' : '',
+ dayOfMonth,
+ daysInMonth;
+
+ if (input != null) {
+ if (typeof input === 'string') {
+ input = this.lang().monthsParse(input);
+ if (typeof input !== 'number') {
+ return this;
+ }
+ }
+
+ dayOfMonth = this.date();
+ this.date(1);
+ this._d['set' + utc + 'Month'](input);
+ this.date(Math.min(dayOfMonth, this.daysInMonth()));
+
+ moment.updateOffset(this);
+ return this;
+ } else {
+ return this._d['get' + utc + 'Month']();
+ }
+ },
+
+ startOf: function (units) {
+ units = normalizeUnits(units);
+ // the following switch intentionally omits break keywords
+ // to utilize falling through the cases.
+ switch (units) {
+ case 'year':
+ this.month(0);
+ /* falls through */
+ case 'month':
+ this.date(1);
+ /* falls through */
+ case 'week':
+ case 'day':
+ this.hours(0);
+ /* falls through */
+ case 'hour':
+ this.minutes(0);
+ /* falls through */
+ case 'minute':
+ this.seconds(0);
+ /* falls through */
+ case 'second':
+ this.milliseconds(0);
+ /* falls through */
+ }
+
+ // weeks are a special case
+ if (units === 'week') {
+ this.weekday(0);
+ }
+
+ return this;
+ },
+
+ endOf: function (units) {
+ return this.startOf(units).add(units, 1).subtract('ms', 1);
+ },
+
+ isAfter: function (input, units) {
+ units = typeof units !== 'undefined' ? units : 'millisecond';
+ return +this.clone().startOf(units) > +moment(input).startOf(units);
+ },
+
+ isBefore: function (input, units) {
+ units = typeof units !== 'undefined' ? units : 'millisecond';
+ return +this.clone().startOf(units) < +moment(input).startOf(units);
+ },
+
+ isSame: function (input, units) {
+ units = typeof units !== 'undefined' ? units : 'millisecond';
+ return +this.clone().startOf(units) === +moment(input).startOf(units);
+ },
+
+ min: function (other) {
+ other = moment.apply(null, arguments);
+ return other < this ? this : other;
+ },
+
+ max: function (other) {
+ other = moment.apply(null, arguments);
+ return other > this ? this : other;
+ },
+
+ zone : function (input) {
+ var offset = this._offset || 0;
+ if (input != null) {
+ if (typeof input === "string") {
+ input = timezoneMinutesFromString(input);
+ }
+ if (Math.abs(input) < 16) {
+ input = input * 60;
+ }
+ this._offset = input;
+ this._isUTC = true;
+ if (offset !== input) {
+ addOrSubtractDurationFromMoment(this, moment.duration(offset - input, 'm'), 1, true);
+ }
+ } else {
+ return this._isUTC ? offset : this._d.getTimezoneOffset();
+ }
+ return this;
+ },
+
+ zoneAbbr : function () {
+ return this._isUTC ? "UTC" : "";
+ },
+
+ zoneName : function () {
+ return this._isUTC ? "Coordinated Universal Time" : "";
+ },
+
+ daysInMonth : function () {
+ return moment.utc([this.year(), this.month() + 1, 0]).date();
+ },
+
+ dayOfYear : function (input) {
+ var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1;
+ return input == null ? dayOfYear : this.add("d", (input - dayOfYear));
+ },
+
+ weekYear : function (input) {
+ var year = weekOfYear(this, this.lang()._week.dow, this.lang()._week.doy).year;
+ return input == null ? year : this.add("y", (input - year));
+ },
+
+ isoWeekYear : function (input) {
+ var year = weekOfYear(this, 1, 4).year;
+ return input == null ? year : this.add("y", (input - year));
+ },
+
+ week : function (input) {
+ var week = this.lang().week(this);
+ return input == null ? week : this.add("d", (input - week) * 7);
+ },
+
+ isoWeek : function (input) {
+ var week = weekOfYear(this, 1, 4).week;
+ return input == null ? week : this.add("d", (input - week) * 7);
+ },
+
+ weekday : function (input) {
+ var weekday = (this._d.getDay() + 7 - this.lang()._week.dow) % 7;
+ return input == null ? weekday : this.add("d", input - weekday);
+ },
+
+ isoWeekday : function (input) {
+ // behaves the same as moment#day except
+ // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
+ // as a setter, sunday should belong to the previous week.
+ return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
+ },
+
+ // If passed a language key, it will set the language for this
+ // instance. Otherwise, it will return the language configuration
+ // variables for this instance.
+ lang : function (key) {
+ if (key === undefined) {
+ return this._lang;
+ } else {
+ this._lang = getLangDefinition(key);
+ return this;
+ }
+ }
+ };
+
+ // helper for adding shortcuts
+ function makeGetterAndSetter(name, key) {
+ moment.fn[name] = moment.fn[name + 's'] = function (input) {
+ var utc = this._isUTC ? 'UTC' : '';
+ if (input != null) {
+ this._d['set' + utc + key](input);
+ moment.updateOffset(this);
+ return this;
+ } else {
+ return this._d['get' + utc + key]();
+ }
+ };
+ }
+
+ // loop through and add shortcuts (Month, Date, Hours, Minutes, Seconds, Milliseconds)
+ for (i = 0; i < proxyGettersAndSetters.length; i ++) {
+ makeGetterAndSetter(proxyGettersAndSetters[i].toLowerCase().replace(/s$/, ''), proxyGettersAndSetters[i]);
+ }
+
+ // add shortcut for year (uses different syntax than the getter/setter 'year' == 'FullYear')
+ makeGetterAndSetter('year', 'FullYear');
+
+ // add plural methods
+ moment.fn.days = moment.fn.day;
+ moment.fn.months = moment.fn.month;
+ moment.fn.weeks = moment.fn.week;
+ moment.fn.isoWeeks = moment.fn.isoWeek;
+
+ // add aliased format methods
+ moment.fn.toJSON = moment.fn.toISOString;
+
+ /************************************
+ Duration Prototype
+ ************************************/
+
+
+ moment.duration.fn = Duration.prototype = {
+ _bubble : function () {
+ var milliseconds = this._milliseconds,
+ days = this._days,
+ months = this._months,
+ data = this._data,
+ seconds, minutes, hours, years;
+
+ // The following code bubbles up values, see the tests for
+ // examples of what that means.
+ data.milliseconds = milliseconds % 1000;
+
+ seconds = absRound(milliseconds / 1000);
+ data.seconds = seconds % 60;
+
+ minutes = absRound(seconds / 60);
+ data.minutes = minutes % 60;
+
+ hours = absRound(minutes / 60);
+ data.hours = hours % 24;
+
+ days += absRound(hours / 24);
+ data.days = days % 30;
+
+ months += absRound(days / 30);
+ data.months = months % 12;
+
+ years = absRound(months / 12);
+ data.years = years;
+ },
+
+ weeks : function () {
+ return absRound(this.days() / 7);
+ },
+
+ valueOf : function () {
+ return this._milliseconds +
+ this._days * 864e5 +
+ (this._months % 12) * 2592e6 +
+ ~~(this._months / 12) * 31536e6;
+ },
+
+ humanize : function (withSuffix) {
+ var difference = +this,
+ output = relativeTime(difference, !withSuffix, this.lang());
+
+ if (withSuffix) {
+ output = this.lang().pastFuture(difference, output);
+ }
+
+ return this.lang().postformat(output);
+ },
+
+ add : function (input, val) {
+ // supports only 2.0-style add(1, 's') or add(moment)
+ var dur = moment.duration(input, val);
+
+ this._milliseconds += dur._milliseconds;
+ this._days += dur._days;
+ this._months += dur._months;
+
+ this._bubble();
+
+ return this;
+ },
+
+ subtract : function (input, val) {
+ var dur = moment.duration(input, val);
+
+ this._milliseconds -= dur._milliseconds;
+ this._days -= dur._days;
+ this._months -= dur._months;
+
+ this._bubble();
+
+ return this;
+ },
+
+ get : function (units) {
+ units = normalizeUnits(units);
+ return this[units.toLowerCase() + 's']();
+ },
+
+ as : function (units) {
+ units = normalizeUnits(units);
+ return this['as' + units.charAt(0).toUpperCase() + units.slice(1) + 's']();
+ },
+
+ lang : moment.fn.lang
+ };
+
+ function makeDurationGetter(name) {
+ moment.duration.fn[name] = function () {
+ return this._data[name];
+ };
+ }
+
+ function makeDurationAsGetter(name, factor) {
+ moment.duration.fn['as' + name] = function () {
+ return +this / factor;
+ };
+ }
+
+ for (i in unitMillisecondFactors) {
+ if (unitMillisecondFactors.hasOwnProperty(i)) {
+ makeDurationAsGetter(i, unitMillisecondFactors[i]);
+ makeDurationGetter(i.toLowerCase());
+ }
+ }
+
+ makeDurationAsGetter('Weeks', 6048e5);
+ moment.duration.fn.asMonths = function () {
+ return (+this - this.years() * 31536e6) / 2592e6 + this.years() * 12;
+ };
+
+
+ /************************************
+ Default Lang
+ ************************************/
+
+
+ // Set default language, other languages will inherit from English.
+ moment.lang('en', {
+ ordinal : function (number) {
+ var b = number % 10,
+ output = (~~ (number % 100 / 10) === 1) ? 'th' :
+ (b === 1) ? 'st' :
+ (b === 2) ? 'nd' :
+ (b === 3) ? 'rd' : 'th';
+ return number + output;
+ }
+ });
+
+
+ /************************************
+ Exposing Moment
+ ************************************/
+
+
+ // CommonJS module is defined
+ if (hasModule) {
+ module.exports = moment;
+ }
+ /*global ender:false */
+ if (typeof ender === 'undefined') {
+ // here, `this` means `window` in the browser, or `global` on the server
+ // add `moment` as a global object via a string identifier,
+ // for Closure Compiler "advanced" mode
+ this['moment'] = moment;
+ }
+ /*global define:false */
+ if (typeof define === "function" && define.amd) {
+ define("moment", [], function () {
+ return moment;
+ });
+ }
+}).call(this);
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/moment.min.js b/97suifangqa/apps/indicator/static/plugins/moment/moment.min.js
new file mode 100644
index 0000000..62b1697
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/moment.min.js
@@ -0,0 +1,6 @@
+// moment.js
+// version : 2.1.0
+// author : Tim Wood
+// license : MIT
+// momentjs.com
+!function(t){function e(t,e){return function(n){return u(t.call(this,n),e)}}function n(t,e){return function(n){return this.lang().ordinal(t.call(this,n),e)}}function s(){}function i(t){a(this,t)}function r(t){var e=t.years||t.year||t.y||0,n=t.months||t.month||t.M||0,s=t.weeks||t.week||t.w||0,i=t.days||t.day||t.d||0,r=t.hours||t.hour||t.h||0,a=t.minutes||t.minute||t.m||0,o=t.seconds||t.second||t.s||0,u=t.milliseconds||t.millisecond||t.ms||0;this._input=t,this._milliseconds=u+1e3*o+6e4*a+36e5*r,this._days=i+7*s,this._months=n+12*e,this._data={},this._bubble()}function a(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function o(t){return 0>t?Math.ceil(t):Math.floor(t)}function u(t,e){for(var n=t+"";n.length<e;)n="0"+n;return n}function h(t,e,n,s){var i,r,a=e._milliseconds,o=e._days,u=e._months;a&&t._d.setTime(+t._d+a*n),(o||u)&&(i=t.minute(),r=t.hour()),o&&t.date(t.date()+o*n),u&&t.month(t.month()+u*n),a&&!s&&H.updateOffset(t),(o||u)&&(t.minute(i),t.hour(r))}function d(t){return"[object Array]"===Object.prototype.toString.call(t)}function c(t,e){var n,s=Math.min(t.length,e.length),i=Math.abs(t.length-e.length),r=0;for(n=0;s>n;n++)~~t[n]!==~~e[n]&&r++;return r+i}function f(t){return t?ie[t]||t.toLowerCase().replace(/(.)s$/,"$1"):t}function l(t,e){return e.abbr=t,x[t]||(x[t]=new s),x[t].set(e),x[t]}function _(t){if(!t)return H.fn._lang;if(!x[t]&&A)try{require("./lang/"+t)}catch(e){return H.fn._lang}return x[t]}function m(t){return t.match(/\[.*\]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function y(t){var e,n,s=t.match(E);for(e=0,n=s.length;n>e;e++)s[e]=ue[s[e]]?ue[s[e]]:m(s[e]);return function(i){var r="";for(e=0;n>e;e++)r+=s[e]instanceof Function?s[e].call(i,t):s[e];return r}}function M(t,e){function n(e){return t.lang().longDateFormat(e)||e}for(var s=5;s--&&N.test(e);)e=e.replace(N,n);return re[e]||(re[e]=y(e)),re[e](t)}function g(t,e){switch(t){case"DDDD":return V;case"YYYY":return X;case"YYYYY":return $;case"S":case"SS":case"SSS":case"DDD":return I;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return R;case"a":case"A":return _(e._l)._meridiemParse;case"X":return B;case"Z":case"ZZ":return j;case"T":return q;case"MM":case"DD":case"YY":case"HH":case"hh":case"mm":case"ss":case"M":case"D":case"d":case"H":case"h":case"m":case"s":return J;default:return new RegExp(t.replace("\\",""))}}function p(t){var e=(j.exec(t)||[])[0],n=(e+"").match(ee)||["-",0,0],s=+(60*n[1])+~~n[2];return"+"===n[0]?-s:s}function D(t,e,n){var s,i=n._a;switch(t){case"M":case"MM":i[1]=null==e?0:~~e-1;break;case"MMM":case"MMMM":s=_(n._l).monthsParse(e),null!=s?i[1]=s:n._isValid=!1;break;case"D":case"DD":case"DDD":case"DDDD":null!=e&&(i[2]=~~e);break;case"YY":i[0]=~~e+(~~e>68?1900:2e3);break;case"YYYY":case"YYYYY":i[0]=~~e;break;case"a":case"A":n._isPm=_(n._l).isPM(e);break;case"H":case"HH":case"h":case"hh":i[3]=~~e;break;case"m":case"mm":i[4]=~~e;break;case"s":case"ss":i[5]=~~e;break;case"S":case"SS":case"SSS":i[6]=~~(1e3*("0."+e));break;case"X":n._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":n._useUTC=!0,n._tzm=p(e)}null==e&&(n._isValid=!1)}function Y(t){var e,n,s=[];if(!t._d){for(e=0;7>e;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];s[3]+=~~((t._tzm||0)/60),s[4]+=~~((t._tzm||0)%60),n=new Date(0),t._useUTC?(n.setUTCFullYear(s[0],s[1],s[2]),n.setUTCHours(s[3],s[4],s[5],s[6])):(n.setFullYear(s[0],s[1],s[2]),n.setHours(s[3],s[4],s[5],s[6])),t._d=n}}function w(t){var e,n,s=t._f.match(E),i=t._i;for(t._a=[],e=0;e<s.length;e++)n=(g(s[e],t).exec(i)||[])[0],n&&(i=i.slice(i.indexOf(n)+n.length)),ue[s[e]]&&D(s[e],n,t);i&&(t._il=i),t._isPm&&t._a[3]<12&&(t._a[3]+=12),t._isPm===!1&&12===t._a[3]&&(t._a[3]=0),Y(t)}function k(t){var e,n,s,r,o,u=99;for(r=0;r<t._f.length;r++)e=a({},t),e._f=t._f[r],w(e),n=new i(e),o=c(e._a,n.toArray()),n._il&&(o+=n._il.length),u>o&&(u=o,s=n);a(t,s)}function v(t){var e,n=t._i,s=K.exec(n);if(s){for(t._f="YYYY-MM-DD"+(s[2]||" "),e=0;4>e;e++)if(te[e][1].exec(n)){t._f+=te[e][0];break}j.exec(n)&&(t._f+=" Z"),w(t)}else t._d=new Date(n)}function T(e){var n=e._i,s=G.exec(n);n===t?e._d=new Date:s?e._d=new Date(+s[1]):"string"==typeof n?v(e):d(n)?(e._a=n.slice(0),Y(e)):e._d=n instanceof Date?new Date(+n):new Date(n)}function b(t,e,n,s,i){return i.relativeTime(e||1,!!n,t,s)}function S(t,e,n){var s=W(Math.abs(t)/1e3),i=W(s/60),r=W(i/60),a=W(r/24),o=W(a/365),u=45>s&&["s",s]||1===i&&["m"]||45>i&&["mm",i]||1===r&&["h"]||22>r&&["hh",r]||1===a&&["d"]||25>=a&&["dd",a]||45>=a&&["M"]||345>a&&["MM",W(a/30)]||1===o&&["y"]||["yy",o];return u[2]=e,u[3]=t>0,u[4]=n,b.apply({},u)}function F(t,e,n){var s,i=n-e,r=n-t.day();return r>i&&(r-=7),i-7>r&&(r+=7),s=H(t).add("d",r),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function O(t){var e=t._i,n=t._f;return null===e||""===e?null:("string"==typeof e&&(t._i=e=_().preparse(e)),H.isMoment(e)?(t=a({},e),t._d=new Date(+e._d)):n?d(n)?k(t):w(t):T(t),new i(t))}function z(t,e){H.fn[t]=H.fn[t+"s"]=function(t){var n=this._isUTC?"UTC":"";return null!=t?(this._d["set"+n+e](t),H.updateOffset(this),this):this._d["get"+n+e]()}}function C(t){H.duration.fn[t]=function(){return this._data[t]}}function L(t,e){H.duration.fn["as"+t]=function(){return+this/e}}for(var H,P,U="2.1.0",W=Math.round,x={},A="undefined"!=typeof module&&module.exports,G=/^\/?Date\((\-?\d+)/i,Z=/(\-)?(\d*)?\.?(\d+)\:(\d+)\:(\d+)\.?(\d{3})?/,E=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|SS?S?|X|zz?|ZZ?|.)/g,N=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,J=/\d\d?/,I=/\d{1,3}/,V=/\d{3}/,X=/\d{1,4}/,$=/[+\-]?\d{1,6}/,R=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,j=/Z|[\+\-]\d\d:?\d\d/i,q=/T/i,B=/[\+\-]?\d+(\.\d{1,3})?/,K=/^\s*\d{4}-\d\d-\d\d((T| )(\d\d(:\d\d(:\d\d(\.\d\d?\d?)?)?)?)?([\+\-]\d\d:?\d\d)?)?/,Q="YYYY-MM-DDTHH:mm:ssZ",te=[["HH:mm:ss.S",/(T| )\d\d:\d\d:\d\d\.\d{1,3}/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],ee=/([\+\-]|\d\d)/gi,ne="Date|Hours|Minutes|Seconds|Milliseconds".split("|"),se={Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6},ie={ms:"millisecond",s:"second",m:"minute",h:"hour",d:"day",w:"week",M:"month",y:"year"},re={},ae="DDD w W M D d".split(" "),oe="M D H h m s w W".split(" "),ue={M:function(){return this.month()+1},MMM:function(t){return this.lang().monthsShort(this,t)},MMMM:function(t){return this.lang().months(this,t)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(t){return this.lang().weekdaysMin(this,t)},ddd:function(t){return this.lang().weekdaysShort(this,t)},dddd:function(t){return this.lang().weekdays(this,t)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return u(this.year()%100,2)},YYYY:function(){return u(this.year(),4)},YYYYY:function(){return u(this.year(),5)},gg:function(){return u(this.weekYear()%100,2)},gggg:function(){return this.weekYear()},ggggg:function(){return u(this.weekYear(),5)},GG:function(){return u(this.isoWeekYear()%100,2)},GGGG:function(){return this.isoWeekYear()},GGGGG:function(){return u(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return~~(this.milliseconds()/100)},SS:function(){return u(~~(this.milliseconds()/10),2)},SSS:function(){return u(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+u(~~(t/60),2)+":"+u(~~t%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+u(~~(10*t/6),4)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()}};ae.length;)P=ae.pop(),ue[P+"o"]=n(ue[P],P);for(;oe.length;)P=oe.pop(),ue[P+P]=e(ue[P],2);for(ue.DDDD=e(ue.DDD,3),s.prototype={set:function(t){var e,n;for(n in t)e=t[n],"function"==typeof e?this[n]=e:this["_"+n]=e},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t){var e,n,s;for(this._monthsParse||(this._monthsParse=[]),e=0;12>e;e++)if(this._monthsParse[e]||(n=H([2e3,e]),s="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[e]=new RegExp(s.replace(".",""),"i")),this._monthsParse[e].test(t))return e},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,n,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(n=H([2e3,1]).day(e),s="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase()[0]},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e){var n=this._calendar[t];return"function"==typeof n?n.apply(e):n},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,n,s){var i=this._relativeTime[n];return"function"==typeof i?i(t,e,n,s):i.replace(/%d/i,t)},pastFuture:function(t,e){var n=this._relativeTime[t>0?"future":"past"];return"function"==typeof n?n(e):n.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",preparse:function(t){return t},postformat:function(t){return t},week:function(t){return F(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6}},H=function(t,e,n){return O({_i:t,_f:e,_l:n,_isUTC:!1})},H.utc=function(t,e,n){return O({_useUTC:!0,_isUTC:!0,_l:n,_i:t,_f:e})},H.unix=function(t){return H(1e3*t)},H.duration=function(t,e){var n,s,i=H.isDuration(t),a="number"==typeof t,o=i?t._input:a?{}:t,u=Z.exec(t);return a?e?o[e]=t:o.milliseconds=t:u&&(n="-"===u[1]?-1:1,o={y:0,d:~~u[2]*n,h:~~u[3]*n,m:~~u[4]*n,s:~~u[5]*n,ms:~~u[6]*n}),s=new r(o),i&&t.hasOwnProperty("_lang")&&(s._lang=t._lang),s},H.version=U,H.defaultFormat=Q,H.updateOffset=function(){},H.lang=function(t,e){return t?(e?l(t,e):x[t]||_(t),H.duration.fn._lang=H.fn._lang=_(t),void 0):H.fn._lang._abbr},H.langData=function(t){return t&&t._lang&&t._lang._abbr&&(t=t._lang._abbr),_(t)},H.isMoment=function(t){return t instanceof i},H.isDuration=function(t){return t instanceof r},H.fn=i.prototype={clone:function(){return H(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){return M(H(this).utc(),"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var t=this;return[t.year(),t.month(),t.date(),t.hours(),t.minutes(),t.seconds(),t.milliseconds()]},isValid:function(){return null==this._isValid&&(this._isValid=this._a?!c(this._a,(this._isUTC?H.utc(this._a):H(this._a)).toArray()):!isNaN(this._d.getTime())),!!this._isValid},utc:function(){return this.zone(0)},local:function(){return this.zone(0),this._isUTC=!1,this},format:function(t){var e=M(this,t||H.defaultFormat);return this.lang().postformat(e)},add:function(t,e){var n;return n="string"==typeof t?H.duration(+e,t):H.duration(t,e),h(this,n,1),this},subtract:function(t,e){var n;return n="string"==typeof t?H.duration(+e,t):H.duration(t,e),h(this,n,-1),this},diff:function(t,e,n){var s,i,r=this._isUTC?H(t).zone(this._offset||0):H(t).local(),a=6e4*(this.zone()-r.zone());return e=f(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+r.daysInMonth()),i=12*(this.year()-r.year())+(this.month()-r.month()),i+=(this-H(this).startOf("month")-(r-H(r).startOf("month")))/s,i-=6e4*(this.zone()-H(this).startOf("month").zone()-(r.zone()-H(r).startOf("month").zone()))/s,"year"===e&&(i/=12)):(s=this-r,i="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-a)/864e5:"week"===e?(s-a)/6048e5:s),n?i:o(i)},from:function(t,e){return H.duration(this.diff(t)).lang(this.lang()._abbr).humanize(!e)},fromNow:function(t){return this.from(H(),t)},calendar:function(){var t=this.diff(H().startOf("day"),"days",!0),e=-6>t?"sameElse":-1>t?"lastWeek":0>t?"lastDay":1>t?"sameDay":2>t?"nextDay":7>t?"nextWeek":"sameElse";return this.format(this.lang().calendar(e,this))},isLeapYear:function(){var t=this.year();return 0===t%4&&0!==t%100||0===t%400},isDST:function(){return this.zone()<this.clone().month(0).zone()||this.zone()<this.clone().month(5).zone()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?"string"==typeof t&&(t=this.lang().weekdaysParse(t),"number"!=typeof t)?this:this.add({d:t-e}):e},month:function(t){var e,n=this._isUTC?"UTC":"";return null!=t?"string"==typeof t&&(t=this.lang().monthsParse(t),"number"!=typeof t)?this:(e=this.date(),this.date(1),this._d["set"+n+"Month"](t),this.date(Math.min(e,this.daysInMonth())),H.updateOffset(this),this):this._d["get"+n+"Month"]()},startOf:function(t){switch(t=f(t)){case"year":this.month(0);case"month":this.date(1);case"week":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t&&this.weekday(0),this},endOf:function(t){return this.startOf(t).add(t,1).subtract("ms",1)},isAfter:function(t,e){return e="undefined"!=typeof e?e:"millisecond",+this.clone().startOf(e)>+H(t).startOf(e)},isBefore:function(t,e){return e="undefined"!=typeof e?e:"millisecond",+this.clone().startOf(e)<+H(t).startOf(e)},isSame:function(t,e){return e="undefined"!=typeof e?e:"millisecond",+this.clone().startOf(e)===+H(t).startOf(e)},min:function(t){return t=H.apply(null,arguments),this>t?this:t},max:function(t){return t=H.apply(null,arguments),t>this?this:t},zone:function(t){var e=this._offset||0;return null==t?this._isUTC?e:this._d.getTimezoneOffset():("string"==typeof t&&(t=p(t)),Math.abs(t)<16&&(t=60*t),this._offset=t,this._isUTC=!0,e!==t&&h(this,H.duration(e-t,"m"),1,!0),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},daysInMonth:function(){return H.utc([this.year(),this.month()+1,0]).date()},dayOfYear:function(t){var e=W((H(this).startOf("day")-H(this).startOf("year"))/864e5)+1;return null==t?e:this.add("d",t-e)},weekYear:function(t){var e=F(this,this.lang()._week.dow,this.lang()._week.doy).year;return null==t?e:this.add("y",t-e)},isoWeekYear:function(t){var e=F(this,1,4).year;return null==t?e:this.add("y",t-e)},week:function(t){var e=this.lang().week(this);return null==t?e:this.add("d",7*(t-e))},isoWeek:function(t){var e=F(this,1,4).week;return null==t?e:this.add("d",7*(t-e))},weekday:function(t){var e=(this._d.getDay()+7-this.lang()._week.dow)%7;return null==t?e:this.add("d",t-e)},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},lang:function(e){return e===t?this._lang:(this._lang=_(e),this)}},P=0;P<ne.length;P++)z(ne[P].toLowerCase().replace(/s$/,""),ne[P]);z("year","FullYear"),H.fn.days=H.fn.day,H.fn.months=H.fn.month,H.fn.weeks=H.fn.week,H.fn.isoWeeks=H.fn.isoWeek,H.fn.toJSON=H.fn.toISOString,H.duration.fn=r.prototype={_bubble:function(){var t,e,n,s,i=this._milliseconds,r=this._days,a=this._months,u=this._data;u.milliseconds=i%1e3,t=o(i/1e3),u.seconds=t%60,e=o(t/60),u.minutes=e%60,n=o(e/60),u.hours=n%24,r+=o(n/24),u.days=r%30,a+=o(r/30),u.months=a%12,s=o(a/12),u.years=s},weeks:function(){return o(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+2592e6*(this._months%12)+31536e6*~~(this._months/12)},humanize:function(t){var e=+this,n=S(e,!t,this.lang());return t&&(n=this.lang().pastFuture(e,n)),this.lang().postformat(n)},add:function(t,e){var n=H.duration(t,e);return this._milliseconds+=n._milliseconds,this._days+=n._days,this._months+=n._months,this._bubble(),this},subtract:function(t,e){var n=H.duration(t,e);return this._milliseconds-=n._milliseconds,this._days-=n._days,this._months-=n._months,this._bubble(),this},get:function(t){return t=f(t),this[t.toLowerCase()+"s"]()},as:function(t){return t=f(t),this["as"+t.charAt(0).toUpperCase()+t.slice(1)+"s"]()},lang:H.fn.lang};for(P in se)se.hasOwnProperty(P)&&(L(P,se[P]),C(P.toLowerCase()));L("Weeks",6048e5),H.duration.fn.asMonths=function(){return(+this-31536e6*this.years())/2592e6+12*this.years()},H.lang("en",{ordinal:function(t){var e=t%10,n=1===~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n}}),A&&(module.exports=H),"undefined"==typeof ender&&(this.moment=H),"function"==typeof define&&define.amd&&define("moment",[],function(){return H})}.call(this); \ No newline at end of file
diff --git a/97suifangqa/apps/indicator/static/plugins/moment/readme.md b/97suifangqa/apps/indicator/static/plugins/moment/readme.md
new file mode 100644
index 0000000..72f6a2a
--- /dev/null
+++ b/97suifangqa/apps/indicator/static/plugins/moment/readme.md
@@ -0,0 +1,269 @@
+A lightweight javascript date library for parsing, validating, manipulating, and formatting dates.
+
+# [Documentation](http://momentjs.com/docs/)
+
+Upgrading to 2.0.0
+==================
+
+There are a number of small backwards incompatible changes with version 2.0.0.
+
+[See them and their descriptions here](https://gist.github.com/timrwood/e72f2eef320ed9e37c51#backwards-incompatible-changes)
+
+Changed language ordinal method to return the number + ordinal instead of just the ordinal.
+
+Changed two digit year parsing cutoff to match strptime.
+
+Removed `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`.
+
+Removed `moment.humanizeDuration()` in favor of `moment.duration().humanize()`.
+
+Removed the lang data objects from the top level namespace.
+
+Duplicate `Date` passed to `moment()` instead of referencing it.
+
+Travis Build Status
+===================
+
+Develop [![Build Status](https://travis-ci.org/timrwood/moment.png?branch=develop)](https://travis-ci.org/timrwood/moment)
+
+Master [![Build Status](https://travis-ci.org/timrwood/moment.png)](https://travis-ci.org/timrwood/moment)
+
+Changelog
+=========
+
+### 2.1.0 [See changelog](https://gist.github.com/timrwood/b8c2d90d528eddb53ab5)
+
+Added better week support.
+
+Added ability to set offset with `moment#zone`.
+
+Added ability to set month or weekday from a string.
+
+Added `moment#min` and `moment#max`
+
+### 2.0.0 [See changelog](https://gist.github.com/timrwood/e72f2eef320ed9e37c51)
+
+Added short form localized tokens.
+
+Added ability to define language a string should be parsed in.
+
+Added support for reversed add/subtract arguments.
+
+Added support for `endOf('week')` and `startOf('week')`.
+
+Fixed the logic for `moment#diff(Moment, 'months')` and `moment#diff(Moment, 'years')`
+
+`moment#diff` now floors instead of rounds.
+
+Normalized `moment#toString`.
+
+Added `isSame`, `isAfter`, and `isBefore` methods.
+
+Added better week support.
+
+Added `moment#toJSON`
+
+Bugfix: Fixed parsing of first century dates
+
+Bugfix: Parsing 10Sep2001 should work as expected
+
+Bugfix: Fixed wierdness with `moment.utc()` parsing.
+
+Changed language ordinal method to return the number + ordinal instead of just the ordinal.
+
+Changed two digit year parsing cutoff to match strptime.
+
+Removed `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`.
+
+Removed `moment.humanizeDuration()` in favor of `moment.duration().humanize()`.
+
+Removed the lang data objects from the top level namespace.
+
+Duplicate `Date` passed to `moment()` instead of referencing it.
+
+### 1.7.2 [See discussion](https://github.com/timrwood/moment/issues/456)
+
+Bugfixes
+
+### 1.7.1 [See discussion](https://github.com/timrwood/moment/issues/384)
+
+Bugfixes
+
+### 1.7.0 [See discussion](https://github.com/timrwood/moment/issues/288)
+
+Added `moment.fn.endOf()` and `moment.fn.startOf()`.
+
+Added validation via `moment.fn.isValid()`.
+
+Made formatting method 3x faster. http://jsperf.com/momentjs-cached-format-functions
+
+Add support for month/weekday callbacks in `moment.fn.format()`
+
+Added instance specific languages.
+
+Added two letter weekday abbreviations with the formatting token `dd`.
+
+Various language updates.
+
+Various bugfixes.
+
+### 1.6.0 [See discussion](https://github.com/timrwood/moment/pull/268)
+
+Added Durations.
+
+Revamped parser to support parsing non-separated strings (YYYYMMDD vs YYYY-MM-DD).
+
+Added support for millisecond parsing and formatting tokens (S SS SSS)
+
+Added a getter for `moment.lang()`
+
+Various bugfixes.
+
+There are a few things deprecated in the 1.6.0 release.
+
+1. The format tokens `z` and `zz` (timezone abbreviations like EST CST MST etc) will no longer be supported. Due to inconsistent browser support, we are unable to consistently produce this value. See [this issue](https://github.com/timrwood/moment/issues/162) for more background.
+
+2. The method `moment.fn.native` is deprecated in favor of `moment.fn.toDate`. There continue to be issues with Google Closure Compiler throwing errors when using `native`, even in valid instances.
+
+3. The way to customize am/pm strings is being changed. This would only affect you if you created a custom language file. For more information, see [this issue](https://github.com/timrwood/moment/pull/222).
+
+### 1.5.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=10&page=1&state=closed)
+
+Added UTC mode.
+
+Added automatic ISO8601 parsing.
+
+Various bugfixes.
+
+### 1.4.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=8&state=closed)
+
+Added `moment.fn.toDate` as a replacement for `moment.fn.native`.
+
+Added `moment.fn.sod` and `moment.fn.eod` to get the start and end of day.
+
+Various bugfixes.
+
+### 1.3.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=7&state=closed)
+
+Added support for parsing month names in the current language.
+
+Added escape blocks for parsing tokens.
+
+Added `moment.fn.calendar` to format strings like 'Today 2:30 PM', 'Tomorrow 1:25 AM', and 'Last Sunday 4:30 AM'.
+
+Added `moment.fn.day` as a setter.
+
+Various bugfixes
+
+### 1.2.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=4&state=closed)
+
+Added timezones to parser and formatter.
+
+Added `moment.fn.isDST`.
+
+Added `moment.fn.zone` to get the timezone offset in minutes.
+
+### 1.1.2 [See milestone](https://github.com/timrwood/moment/issues?milestone=6&state=closed)
+
+Various bugfixes
+
+### 1.1.1 [See milestone](https://github.com/timrwood/moment/issues?milestone=5&state=closed)
+
+Added time specific diffs (months, days, hours, etc)
+
+### 1.1.0
+
+Added `moment.fn.format` localized masks. 'L LL LLL LLLL' [issue 29](https://github.com/timrwood/moment/pull/29)
+
+Fixed [issue 31](https://github.com/timrwood/moment/pull/31).
+
+### 1.0.1
+
+Added `moment.version` to get the current version.
+
+Removed `window !== undefined` when checking if module exists to support browserify. [issue 25](https://github.com/timrwood/moment/pull/25)
+
+### 1.0.0
+
+Added convenience methods for getting and setting date parts.
+
+Added better support for `moment.add()`.
+
+Added better lang support in NodeJS.
+
+Renamed library from underscore.date to Moment.js
+
+### 0.6.1
+
+Added Portuguese, Italian, and French language support
+
+### 0.6.0
+
+Added _date.lang() support.
+Added support for passing multiple formats to try to parse a date. _date("07-10-1986", ["MM-DD-YYYY", "YYYY-MM-DD"]);
+Made parse from string and single format 25% faster.
+
+### 0.5.2
+
+Bugfix for [issue 8](https://github.com/timrwood/underscore.date/pull/8) and [issue 9](https://github.com/timrwood/underscore.date/pull/9).
+
+### 0.5.1
+
+Bugfix for [issue 5](https://github.com/timrwood/underscore.date/pull/5).
+
+### 0.5.0
+
+Dropped the redundant `_date.date()` in favor of `_date()`.
+Removed `_date.now()`, as it is a duplicate of `_date()` with no parameters.
+Removed `_date.isLeapYear(yearNumber)`. Use `_date([yearNumber]).isLeapYear()` instead.
+Exposed customization options through the `_date.relativeTime`, `_date.weekdays`, `_date.weekdaysShort`, `_date.months`, `_date.monthsShort`, and `_date.ordinal` variables instead of the `_date.customize()` function.
+
+### 0.4.1
+
+Added date input formats for input strings.
+
+### 0.4.0
+
+Added underscore.date to npm. Removed dependencies on underscore.
+
+### 0.3.2
+
+Added `'z'` and `'zz'` to `_.date().format()`. Cleaned up some redundant code to trim off some bytes.
+
+### 0.3.1
+
+Cleaned up the namespace. Moved all date manipulation and display functions to the _.date() object.
+
+### 0.3.0
+
+Switched to the Underscore methodology of not mucking with the native objects' prototypes.
+Made chaining possible.
+
+### 0.2.1
+
+Changed date names to be a more pseudo standardized 'dddd, MMMM Do YYYY, h:mm:ss a'.
+Added `Date.prototype` functions `add`, `subtract`, `isdst`, and `isleapyear`.
+
+### 0.2.0
+
+Changed function names to be more concise.
+Changed date format from php date format to custom format.
+
+### 0.1.0
+
+Initial release
+
+License
+=======
+
+Moment.js is freely distributable under the terms of the MIT license.
+
+Copyright (c) 2011-2012 Tim Wood
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/97suifangqa/apps/indicator/static/plugins/thickbox/thickbox.css b/97suifangqa/apps/indicator/static/plugins/thickbox/thickbox.css
index 9fe82e3..9cf9577 100644
--- a/97suifangqa/apps/indicator/static/plugins/thickbox/thickbox.css
+++ b/97suifangqa/apps/indicator/static/plugins/thickbox/thickbox.css
@@ -1,135 +1,135 @@
-/* ----------------------------------------------------------------------------------------------------------------*/
-/* ---------->>> global settings needed for thickbox <<<-----------------------------------------------------------*/
-/* ----------------------------------------------------------------------------------------------------------------*/
-*{padding: 0; margin: 0;}
-
-html, body {
-min-height: 100%;
-height: auto !important;
-height: 100%;
-}
-
-/* ----------------------------------------------------------------------------------------------------------------*/
-/* ---------->>> thickbox specific link and font settings <<<------------------------------------------------------*/
-/* ----------------------------------------------------------------------------------------------------------------*/
-#TB_window {
- font: 12px Arial, Helvetica, sans-serif;
- color: #333333;
-}
-
-#TB_secondLine {
- font: 10px Arial, Helvetica, sans-serif;
- color:#666666;
-}
-
-#TB_window a:link {color: #666666;}
-#TB_window a:visited {color: #666666;}
-#TB_window a:hover {color: #000;}
-#TB_window a:active {color: #666666;}
-#TB_window a:focus{color: #666666;}
-
-/* ----------------------------------------------------------------------------------------------------------------*/
-/* ---------->>> thickbox settings <<<-----------------------------------------------------------------------------*/
-/* ----------------------------------------------------------------------------------------------------------------*/
-#TB_overlay {
- position: absolute;
- z-index:100;
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
- min-height:100%;
- background-color:#000;
- filter:alpha(opacity=60);
- -moz-opacity: 0.6;
- opacity: 0.6;
-}
-
-#TB_window {
- position: absolute;
- /*background: #ffffff;*/
- z-index: 102;
- color:#000000;
- display:none;
- /*border: 4px solid #525252;*/
- text-align:left;
-}
-
-#TB_window img {
- display:block;
- margin: 15px 0 0 15px;
- border-right: 1px solid #ccc;
- border-bottom: 1px solid #ccc;
- border-top: 1px solid #666;
- border-left: 1px solid #666;
-}
-
-#TB_caption{
- height:25px;
- padding:7px 30px 10px 25px;
- float:left;
-}
-
-#TB_closeWindow{
- height:25px;
- padding:11px 25px 10px 0;
- float:right;
-}
-
-#TB_closeAjaxWindow{
- padding:5px 10px 7px 0;
- margin-bottom:1px;
- text-align:right;
- float:right;
-}
-
-#TB_ajaxWindowTitle{
- float:left;
- padding:7px 0 5px 10px;
- margin-bottom:1px;
-}
-
-#TB_title{
- background-color:#e8e8e8;
- height:27px;
-}
-
-#TB_ajaxContent{
- clear:both;
- padding:2px 15px 15px 15px;
- overflow:auto;
- text-align:left;
- line-height:1.4em;
-}
-
-#TB_ajaxContent p{
- padding:5px 0px 5px 0px;
-}
-
-#TB_load{
- position: absolute;
- display:none;
- height:100px;
- width:100px;
- z-index:101;
-}
-
-#TB_HideSelect{
- z-index:99;
- position:absolute;
- top: 0;
- left: 0;
- width:100%;
- height:100%;
- background-color:#fff;
- border:none;
- filter:alpha(opacity=0);
- -moz-opacity: 0;
- opacity: 0;
-}
-
-#TB_iframeContent{
- border:none;
- clear:both;
-}
-
+/* ----------------------------------------------------------------------------------------------------------------*/
+/* ---------->>> global settings needed for thickbox <<<-----------------------------------------------------------*/
+/* ----------------------------------------------------------------------------------------------------------------*/
+*{padding: 0; margin: 0;}
+
+html, body {
+min-height: 100%;
+height: auto !important;
+height: 100%;
+}
+
+/* ----------------------------------------------------------------------------------------------------------------*/
+/* ---------->>> thickbox specific link and font settings <<<------------------------------------------------------*/
+/* ----------------------------------------------------------------------------------------------------------------*/
+#TB_window {
+ font: 12px Arial, Helvetica, sans-serif;
+ color: #333333;
+}
+
+#TB_secondLine {
+ font: 10px Arial, Helvetica, sans-serif;
+ color:#666666;
+}
+
+#TB_window a:link {color: #666666;}
+#TB_window a:visited {color: #666666;}
+#TB_window a:hover {color: #000;}
+#TB_window a:active {color: #666666;}
+#TB_window a:focus{color: #666666;}
+
+/* ----------------------------------------------------------------------------------------------------------------*/
+/* ---------->>> thickbox settings <<<-----------------------------------------------------------------------------*/
+/* ----------------------------------------------------------------------------------------------------------------*/
+#TB_overlay {
+ position: absolute;
+ z-index:100;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ min-height:100%;
+ background-color:#000;
+ filter:alpha(opacity=60);
+ -moz-opacity: 0.6;
+ opacity: 0.6;
+}
+
+#TB_window {
+ position: absolute;
+ /*background: #ffffff;*/
+ z-index: 102;
+ color:#000000;
+ display:none;
+ /*border: 4px solid #525252;*/
+ text-align:left;
+}
+
+#TB_window img {
+ display:block;
+ margin: 15px 0 0 15px;
+ border-right: 1px solid #ccc;
+ border-bottom: 1px solid #ccc;
+ border-top: 1px solid #666;
+ border-left: 1px solid #666;
+}
+
+#TB_caption{
+ height:25px;
+ padding:7px 30px 10px 25px;
+ float:left;
+}
+
+#TB_closeWindow{
+ height:25px;
+ padding:11px 25px 10px 0;
+ float:right;
+}
+
+#TB_closeAjaxWindow{
+ padding:5px 10px 7px 0;
+ margin-bottom:1px;
+ text-align:right;
+ float:right;
+}
+
+#TB_ajaxWindowTitle{
+ float:left;
+ padding:7px 0 5px 10px;
+ margin-bottom:1px;
+}
+
+#TB_title{
+ background-color:#e8e8e8;
+ height:27px;
+}
+
+#TB_ajaxContent{
+ clear:both;
+ padding:2px 15px 15px 15px;
+ overflow:auto;
+ text-align:left;
+ line-height:1.4em;
+}
+
+#TB_ajaxContent p{
+ padding:5px 0px 5px 0px;
+}
+
+#TB_load{
+ position: absolute;
+ display:none;
+ height:100px;
+ width:100px;
+ z-index:101;
+}
+
+#TB_HideSelect{
+ z-index:99;
+ position:absolute;
+ top: 0;
+ left: 0;
+ width:100%;
+ height:100%;
+ background-color:#fff;
+ border:none;
+ filter:alpha(opacity=0);
+ -moz-opacity: 0;
+ opacity: 0;
+}
+
+#TB_iframeContent{
+ border:none;
+ clear:both;
+}
+
diff --git a/97suifangqa/apps/indicator/static/plugins/thickbox/thickbox.js b/97suifangqa/apps/indicator/static/plugins/thickbox/thickbox.js
index c11bf76..81448bd 100644
--- a/97suifangqa/apps/indicator/static/plugins/thickbox/thickbox.js
+++ b/97suifangqa/apps/indicator/static/plugins/thickbox/thickbox.js
@@ -1,286 +1,289 @@
-/*
- * Thickbox 2.0 - One Box To Rule Them All.
- * By Cody Lindley (http://www.codylindley.com)
- * Copyright (c) 2006 cody lindley
- * Licensed under the MIT License:
- * http://www.opensource.org/licenses/mit-license.php
- * Thickbox is built on top of the very light weight jQuery library.
- */
-
-//on page load call TB_init
-$(document).ready(TB_init);
-
-//add thickbox to href elements that have a class of .thickbox
-function TB_init(){
- $("a.thickbox").live("click", function(){
- if(this.href == 'javascript:void(0)'){
- return false;
- }
- var t = this.title || this.name || null;
- var g = this.rel || false;
- TB_show(t,this.href,g);
- this.blur();
- return false;
- });
-}
-
-function TB_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox link
- try {
- if (document.getElementById("TB_HideSelect") == null) {
- $("body").append("<iframe frameborder='no' marginheight='0' marginwidth='0' border='0' id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
- $("#TB_overlay").click(TB_remove);
- }
-
- if(caption==null){caption=""};
-
- $(window).scroll(TB_position);
-
- TB_overlaySize();
-
- $("body").append("<div id='TB_load' class='loadingAnimation'></div>");
- TB_load_position();
-
- var urlString = /\.jpg|\.jpeg|\.png|\.gif|\.html|\.htm|\.php|\.cfm|\.asp|\.aspx|\.jsp|\.jst|\.rb|\.txt|\.bmp/g;
- var urlType = url.toLowerCase().match(urlString);
-
- if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images
-
- TB_PrevCaption = "";
- TB_PrevURL = "";
- TB_PrevHTML = "";
- TB_NextCaption = "";
- TB_NextURL = "";
- TB_NextHTML = "";
- TB_imageCount = "";
- TB_FoundURL = false;
- if(imageGroup){
- TB_TempArray = $("a[@rel="+imageGroup+"]").get();
- for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML == "")); TB_Counter++) {
- var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString);
- if (!(TB_TempArray[TB_Counter].href == url)) {
- if (TB_FoundURL) {
- TB_NextCaption = TB_TempArray[TB_Counter].title;
- TB_NextURL = TB_TempArray[TB_Counter].href;
- TB_NextHTML = "<span id='TB_next'>&nbsp;&nbsp;<a href='#'>Next &gt;</a></span>";
- } else {
- TB_PrevCaption = TB_TempArray[TB_Counter].title;
- TB_PrevURL = TB_TempArray[TB_Counter].href;
- TB_PrevHTML = "<span id='TB_prev'>&nbsp;&nbsp;<a href='#'>&lt; Prev</a></span>";
- }
- } else {
- TB_FoundURL = true;
- TB_imageCount = "Image " + (TB_Counter + 1) +" of "+ (TB_TempArray.length);
- }
- }
- }
-
- imgPreloader = new Image();
- imgPreloader.onload = function(){
-
- imgPreloader.onload = null;
-
- // Resizing large images - orginal by Christian Montoya edited by me.
- var pagesize = TB_getPageSize();
- var x = pagesize[0] - 150;
- var y = pagesize[1] - 150;
- var imageWidth = imgPreloader.width;
- var imageHeight = imgPreloader.height;
- if (imageWidth > x) {
- imageHeight = imageHeight * (x / imageWidth);
- imageWidth = x;
- if (imageHeight > y) {
- imageWidth = imageWidth * (y / imageHeight);
- imageHeight = y;
- }
- } else if (imageHeight > y) {
- imageWidth = imageWidth * (y / imageHeight);
- imageHeight = y;
- if (imageWidth > x) {
- imageHeight = imageHeight * (x / imageWidth);
- imageWidth = x;
- }
- }
- // End Resizing
-
- TB_WIDTH = imageWidth + 30;
- TB_HEIGHT = imageHeight + 60;
- $("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close or Escape Button'>close</a></div>");
-
- $("#TB_closeWindowButton").click(TB_remove);
-
- if (!(TB_PrevHTML == "")) {
- function goPrev(){
- if($(document).unclick(goPrev)){$(document).unclick(goPrev)};
- $("#TB_window").remove();
- $("body").append("<div id='TB_window'></div>");
- $(document).unkeyup();
- TB_show(TB_PrevCaption, TB_PrevURL, imageGroup);
- return false;
- }
-
- $("#TB_prev").click(goPrev);
-
- $(document).keyup( function(e){ var key = e.keyCode; if(key == 37){goPrev()} });
- }
-
-
-
- if (!(TB_NextHTML == "")) {
- function goNext(){
- $("#TB_window").remove();
- $("body").append("<div id='TB_window'></div>");
- $(document).unkeyup();
- TB_show(TB_NextCaption, TB_NextURL, imageGroup);
- return false;
- }
-
- $("#TB_next").click(goNext);
-
- $(document).keyup( function(e){ var key = e.keyCode; if(key == 39){goNext()} });
- }
-
- TB_position();
- $("#TB_load").remove();
- $("#TB_ImageOff").click(TB_remove);
- $("#TB_window").css({display:"block"}); //for safari using css instead of show
- }
-
- imgPreloader.src = url;
- }
-
- if(urlType=='.htm'||urlType=='.html'||urlType=='.php'||urlType=='.asp'||urlType=='.aspx'||urlType=='.jsp'||urlType=='.jst'||urlType=='.rb'||urlType=='.txt'||urlType=='.cfm' || (url.indexOf('TB_inline') != -1) || (url.indexOf('TB_iframe') != -1) ){//code to show html pages
-
- var queryString = url.replace(/^[^\?]+\??/,'');
- var params = TB_parseQuery( queryString );
-
-// TB_WIDTH = (params['width']*1) + 30;
-// TB_HEIGHT = (params['height']*1) + 40;
-// ajaxContentW = TB_WIDTH - 30;
-// ajaxContentH = TB_HEIGHT - 45;
- TB_WIDTH = (params['width']*1);
- TB_HEIGHT = (params['height']*1);
- ajaxContentW = TB_WIDTH;
- ajaxContentH = TB_HEIGHT;
-
- if(url.indexOf('no_title') != -1){
- $("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close</a></div></div>");
- TB_HEIGHT += 27; //title height
- }
- if(url.indexOf('TB_iframe') != -1){
- if(url.indexOf('transfer_params') == -1){
- urlNoQuery = url.substr(0,TB_strpos(url, "?"));
- }else{
- urlNoQuery = url;
- }
- $("#TB_window").append("<iframe frameborder='no' marginheight='0' marginwidth='0' border='0' src='"+urlNoQuery+"' id='TB_iframeContent' style='width:"+(ajaxContentW)+"px;height:"+(ajaxContentH)+"px;'></iframe>");
- }else{
- $("#TB_window").append("<div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");
- }
-
- $("#TB_closeWindowButton").click(TB_remove);
-
- if(url.indexOf('TB_inline') != -1){
- $("#TB_ajaxContent").html($('#' + params['inlineId']).html());
- TB_position();
- $("#TB_load").remove();
- $("#TB_window").css({display:"block"});
- }else if(url.indexOf('TB_iframe') != -1){
- TB_position();
- $("#TB_load").remove();
- $("#TB_window").css({display:"block"});
- }else{
- $("#TB_ajaxContent").load(url, function(){
- TB_position();
- $("#TB_load").remove();
- $("#TB_window").css({display:"block"});
- });
- }
-
- }
-
- $(window).resize(TB_position);
-
- } catch(e) {
- alert( e );
- }
-}
-
-//helper functions below
-
-function TB_remove() {
- $("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').remove();});
- $("#TB_load").remove();
- //$(document).unkeyup();
- return false;
-}
-
-function TB_position() {
- var pagesize = TB_getPageSize();
- var arrayPageScroll = TB_getPageScrollTop();
- $("#TB_window").css({height:TB_HEIGHT+"px",width:TB_WIDTH+"px",left: ((pagesize[0] - TB_WIDTH)/2)+"px", top: (arrayPageScroll[1] + ((pagesize[1]-TB_HEIGHT)/2))+"px" });
- TB_overlaySize();
-}
-
-function TB_overlaySize(){
- if (window.innerHeight && window.scrollMaxY) {
- yScroll = window.innerHeight + window.scrollMaxY;
- } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
- yScroll = document.body.scrollHeight;
- } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
- yScroll = document.body.offsetHeight;
- }
- $("#TB_overlay").css("height",yScroll +"px");
-}
-
-function TB_load_position() {
- var pagesize = TB_getPageSize();
- var arrayPageScroll = TB_getPageScrollTop();
-
- $("#TB_load")
- .css({left: ((pagesize[0] - 100)/2)+"px", top: (arrayPageScroll[1] + ((pagesize[1]-100)/2))+"px" })
- .css({display:"block"});
-}
-
-function TB_parseQuery ( query ) {
- var Params = new Object ();
- if ( ! query ) return Params; // return empty object
- var Pairs = query.split(/[;&]/);
- for ( var i = 0; i < Pairs.length; i++ ) {
- var KeyVal = Pairs[i].split('=');
- if ( ! KeyVal || KeyVal.length != 2 ) continue;
- var key = unescape( KeyVal[0] );
- var val = unescape( KeyVal[1] );
- val = val.replace(/\+/g, ' ');
- Params[key] = val;
- }
- return Params;
-}
-
-function TB_getPageScrollTop(){
- var yScrolltop;
- if (self.pageYOffset) {
- yScrolltop = self.pageYOffset;
- } else if (document.documentElement && document.documentElement.scrollTop){ // Explorer 6 Strict
- yScrolltop = document.documentElement.scrollTop;
- } else if (document.body) {// all other Explorers
- yScrolltop = document.body.scrollTop;
- }
- arrayPageScroll = new Array('',yScrolltop)
- return arrayPageScroll;
-}
-
-function TB_getPageSize(){
- var de = document.documentElement;
- var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
- var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
-
- arrayPageSize = new Array(w,h)
- return arrayPageSize;
-}
-
-function TB_strpos(str, ch) {
-for (var i = 0; i < str.length; i++)
-if (str.substring(i, i+1) == ch) return i;
-return -1;
-}
-
+/*
+ * Thickbox 2.0 - One Box To Rule Them All.
+ * By Cody Lindley (http://www.codylindley.com)
+ * Copyright (c) 2006 cody lindley
+ * Licensed under the MIT License:
+ * http://www.opensource.org/licenses/mit-license.php
+ * Thickbox is built on top of the very light weight jQuery library.
+ */
+
+//on page load call TB_init
+$(document).ready(TB_init);
+
+//add thickbox to href elements that have a class of .thickbox
+function TB_init(){
+ $("a.thickbox").live("click", function(){
+ if(this.href == 'javascript:void(0)'){
+ return false;
+ }
+ var t = this.title || this.name || null;
+ var g = this.rel || false;
+ TB_show(t,this.href,g);
+ this.blur();
+ return false;
+ });
+}
+
+function TB_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox link
+ try {
+ if (document.getElementById("TB_HideSelect") == null) {
+ $("body").append("<iframe frameborder='no' marginheight='0' marginwidth='0' border='0' id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
+ $("#TB_overlay").click(TB_remove);
+ }
+
+ if(caption==null){caption=""};
+
+ $(window).scroll(TB_position);
+
+ TB_overlaySize();
+
+ $("body").append("<div id='TB_load' class='loadingAnimation'></div>");
+ TB_load_position();
+
+ var urlString = /\.jpg|\.jpeg|\.png|\.gif|\.html|\.htm|\.php|\.cfm|\.asp|\.aspx|\.jsp|\.jst|\.rb|\.txt|\.bmp/g;
+ var urlType = url.toLowerCase().match(urlString);
+
+ if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images
+
+ TB_PrevCaption = "";
+ TB_PrevURL = "";
+ TB_PrevHTML = "";
+ TB_NextCaption = "";
+ TB_NextURL = "";
+ TB_NextHTML = "";
+ TB_imageCount = "";
+ TB_FoundURL = false;
+ if(imageGroup){
+ TB_TempArray = $("a[@rel="+imageGroup+"]").get();
+ for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML == "")); TB_Counter++) {
+ var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString);
+ if (!(TB_TempArray[TB_Counter].href == url)) {
+ if (TB_FoundURL) {
+ TB_NextCaption = TB_TempArray[TB_Counter].title;
+ TB_NextURL = TB_TempArray[TB_Counter].href;
+ TB_NextHTML = "<span id='TB_next'>&nbsp;&nbsp;<a href='#'>Next &gt;</a></span>";
+ } else {
+ TB_PrevCaption = TB_TempArray[TB_Counter].title;
+ TB_PrevURL = TB_TempArray[TB_Counter].href;
+ TB_PrevHTML = "<span id='TB_prev'>&nbsp;&nbsp;<a href='#'>&lt; Prev</a></span>";
+ }
+ } else {
+ TB_FoundURL = true;
+ TB_imageCount = "Image " + (TB_Counter + 1) +" of "+ (TB_TempArray.length);
+ }
+ }
+ }
+
+ imgPreloader = new Image();
+ imgPreloader.onload = function(){
+
+ imgPreloader.onload = null;
+
+ // Resizing large images - orginal by Christian Montoya edited by me.
+ var pagesize = TB_getPageSize();
+ var x = pagesize[0] - 150;
+ var y = pagesize[1] - 150;
+ var imageWidth = imgPreloader.width;
+ var imageHeight = imgPreloader.height;
+ if (imageWidth > x) {
+ imageHeight = imageHeight * (x / imageWidth);
+ imageWidth = x;
+ if (imageHeight > y) {
+ imageWidth = imageWidth * (y / imageHeight);
+ imageHeight = y;
+ }
+ } else if (imageHeight > y) {
+ imageWidth = imageWidth * (y / imageHeight);
+ imageHeight = y;
+ if (imageWidth > x) {
+ imageHeight = imageHeight * (x / imageWidth);
+ imageWidth = x;
+ }
+ }
+ // End Resizing
+
+ TB_WIDTH = imageWidth + 30;
+ TB_HEIGHT = imageHeight + 60;
+ $("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close or Escape Button'>close</a></div>");
+
+ $("#TB_closeWindowButton").click(TB_remove);
+
+ if (!(TB_PrevHTML == "")) {
+ function goPrev(){
+ if($(document).unclick(goPrev)){$(document).unclick(goPrev)};
+ $("#TB_window").remove();
+ $("body").append("<div id='TB_window'></div>");
+ $(document).unkeyup();
+ TB_show(TB_PrevCaption, TB_PrevURL, imageGroup);
+ return false;
+ }
+
+ $("#TB_prev").click(goPrev);
+
+ $(document).keyup( function(e){ var key = e.keyCode; if(key == 37){goPrev()} });
+ }
+
+
+
+ if (!(TB_NextHTML == "")) {
+ function goNext(){
+ $("#TB_window").remove();
+ $("body").append("<div id='TB_window'></div>");
+ $(document).unkeyup();
+ TB_show(TB_NextCaption, TB_NextURL, imageGroup);
+ return false;
+ }
+
+ $("#TB_next").click(goNext);
+
+ $(document).keyup( function(e){ var key = e.keyCode; if(key == 39){goNext()} });
+ }
+
+ TB_position();
+ $("#TB_load").remove();
+ $("#TB_ImageOff").click(TB_remove);
+ $("#TB_window").css({display:"block"}); //for safari using css instead of show
+ }
+
+ imgPreloader.src = url;
+ }
+
+ if(urlType=='.htm'||urlType=='.html'||urlType=='.php'||urlType=='.asp'||urlType=='.aspx'||urlType=='.jsp'||urlType=='.jst'||urlType=='.rb'||urlType=='.txt'||urlType=='.cfm' || (url.indexOf('TB_inline') != -1) || (url.indexOf('TB_iframe') != -1) ){//code to show html pages
+
+ var queryString = url.replace(/^[^\?]+\??/,'');
+ var params = TB_parseQuery( queryString );
+
+ //console.log(queryString);
+ //console.log(params);
+ TB_WIDTH = (params['width']*1) + 30 || 630;
+ TB_HEIGHT = (params['height']*1) + 40 || 440;
+ ajaxContentW = TB_WIDTH - 30;
+ ajaxContentH = TB_HEIGHT - 45;
+ TB_WIDTH = (params['width']*1);
+ TB_HEIGHT = (params['height']*1);
+ ajaxContentW = TB_WIDTH;
+ ajaxContentH = TB_HEIGHT;
+
+ //console.log(url);
+ if(url.indexOf('no_title') != -1){
+ $("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close</a></div></div>");
+ TB_HEIGHT += 27; //title height
+ }
+ if(url.indexOf('TB_iframe') != -1){
+ if(url.indexOf('transfer_params') == -1){
+ urlNoQuery = url.substr(0,TB_strpos(url, "?"));
+ }else{
+ urlNoQuery = url;
+ }
+ $("#TB_window").append("<iframe frameborder='no' marginheight='0' marginwidth='0' border='0' src='"+urlNoQuery+"' id='TB_iframeContent' style='width:"+(ajaxContentW)+"px;height:"+(ajaxContentH)+"px;'></iframe>");
+ }else{
+ $("#TB_window").append("<div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");
+ }
+
+ $("#TB_closeWindowButton").click(TB_remove);
+
+ if(url.indexOf('TB_inline') != -1){
+ $("#TB_ajaxContent").html($('#' + params['inlineId']).html());
+ TB_position();
+ $("#TB_load").remove();
+ $("#TB_window").css({display:"block"});
+ }else if(url.indexOf('TB_iframe') != -1){
+ TB_position();
+ $("#TB_load").remove();
+ $("#TB_window").css({display:"block"});
+ }else{
+ $("#TB_ajaxContent").load(url, function(){
+ TB_position();
+ $("#TB_load").remove();
+ $("#TB_window").css({display:"block"});
+ });
+ }
+
+ }
+
+ $(window).resize(TB_position);
+
+ } catch(e) {
+ alert( e );
+ }
+}
+
+//helper functions below
+
+function TB_remove() {
+ $("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').remove();});
+ $("#TB_load").remove();
+ //$(document).unkeyup();
+ return false;
+}
+
+function TB_position() {
+ var pagesize = TB_getPageSize();
+ var arrayPageScroll = TB_getPageScrollTop();
+ $("#TB_window").css({height:TB_HEIGHT+"px",width:TB_WIDTH+"px",left: ((pagesize[0] - TB_WIDTH)/2)+"px", top: (arrayPageScroll[1] + ((pagesize[1]-TB_HEIGHT)/2))+"px" });
+ TB_overlaySize();
+}
+
+function TB_overlaySize(){
+ if (window.innerHeight && window.scrollMaxY) {
+ yScroll = window.innerHeight + window.scrollMaxY;
+ } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
+ yScroll = document.body.scrollHeight;
+ } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
+ yScroll = document.body.offsetHeight;
+ }
+ $("#TB_overlay").css("height",yScroll +"px");
+}
+
+function TB_load_position() {
+ var pagesize = TB_getPageSize();
+ var arrayPageScroll = TB_getPageScrollTop();
+
+ $("#TB_load")
+ .css({left: ((pagesize[0] - 100)/2)+"px", top: (arrayPageScroll[1] + ((pagesize[1]-100)/2))+"px" })
+ .css({display:"block"});
+}
+
+function TB_parseQuery ( query ) {
+ var Params = new Object ();
+ if ( ! query ) return Params; // return empty object
+ var Pairs = query.split(/[;&]/);
+ for ( var i = 0; i < Pairs.length; i++ ) {
+ var KeyVal = Pairs[i].split('=');
+ if ( ! KeyVal || KeyVal.length != 2 ) continue;
+ var key = unescape( KeyVal[0] );
+ var val = unescape( KeyVal[1] );
+ val = val.replace(/\+/g, ' ');
+ Params[key] = val;
+ }
+ return Params;
+}
+
+function TB_getPageScrollTop(){
+ var yScrolltop;
+ if (self.pageYOffset) {
+ yScrolltop = self.pageYOffset;
+ } else if (document.documentElement && document.documentElement.scrollTop){ // Explorer 6 Strict
+ yScrolltop = document.documentElement.scrollTop;
+ } else if (document.body) {// all other Explorers
+ yScrolltop = document.body.scrollTop;
+ }
+ arrayPageScroll = new Array('',yScrolltop)
+ return arrayPageScroll;
+}
+
+function TB_getPageSize(){
+ var de = document.documentElement;
+ var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
+ var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
+
+ arrayPageSize = new Array(w,h)
+ return arrayPageSize;
+}
+
+function TB_strpos(str, ch) {
+for (var i = 0; i < str.length; i++)
+if (str.substring(i, i+1) == ch) return i;
+return -1;
+}
+
diff --git a/97suifangqa/apps/indicator/templates/indicator/NewDeleteIndex.html b/97suifangqa/apps/indicator/templates/indicator/NewDeleteIndex.html
index f4e9a18..f5e0ee8 100644
--- a/97suifangqa/apps/indicator/templates/indicator/NewDeleteIndex.html
+++ b/97suifangqa/apps/indicator/templates/indicator/NewDeleteIndex.html
@@ -51,6 +51,7 @@
</div>
<div style="clear: both;"></div>
</div>
+
<div class="index_navigation">
<!-- 所有指标 -->
<div class="index_type {% if page_condition == "all" %}selected{% endif %}">
@@ -64,6 +65,7 @@
{% endfor %}
<div style="clear:both;"></div>
</div>
+
<div class="show_indexes">
<div class="index_container">
<!-- 所有的展示 -->
@@ -124,7 +126,7 @@
</div> <!-- end: index_letter_container -->
{% endif %} {# end: page_condition == all #}
</div> <!-- end: all_condition -->
-
+
<!-- category view, 点击"指标类型"页面的左侧显示 -->
<!-- 如若kw参数为空,且tab不等于all(即点击指标类型后的页面),则把 <div class="index_category">XXXX</div> 隐藏掉即可 -->
{# page_condition == "category" #}
@@ -217,10 +219,16 @@
</div>
{% endfor %}
</div> <!-- end: index_lines right -->
+ </div> <!-- end: index_container -->
+ <div style="clear:both;"></div>
+ </div> <!-- end: show_indexes -->
+ <div class="link_container">
+ <div class="status_link">
+ <a href="{% url indicator_status %}">查看指标状态</a>
</div>
- <div style="clear:both;"></div>
</div>
+
</div>
{% endblock page %}
diff --git a/97suifangqa/apps/indicator/templates/indicator/SheetDefault.html b/97suifangqa/apps/indicator/templates/indicator/SheetDefault.html
index 88a8d82..834daa6 100644
--- a/97suifangqa/apps/indicator/templates/indicator/SheetDefault.html
+++ b/97suifangqa/apps/indicator/templates/indicator/SheetDefault.html
@@ -24,24 +24,198 @@
<script type="text/javascript" src="{% static "plugins/thickbox/thickbox.js" %}"></script>
<script type="text/javascript" src="{% static "plugins/highcharts/highcharts.js" %}"></script>
<script type="text/javascript" src="{% static "plugins/highcharts/highcharts-more.js" %}"></script>
+ <!-- library for parsing, validating, manipulating, and formatting dates -->
+ <script type="text/javascript" src="{% static "plugins/moment/moment.min.js" %}"></script>
+ <script type="text/javascript" src="{% static "plugins/moment/lang/zh-cn.js" %}"></script>
<script type="text/javascript" src="{% static "javascripts/sheetdefault.js" %}"></script>
- <script type="text/javascript" src="{% static "javascripts/load_card.js" %}"></script>
+ <script type="text/javascript" src="{% static "javascripts/card_chart.js" %}"></script>
- <!-- set variables
+ <!-- global variables
'static_url': used in js to load staticfiles
'indicator_url': root url of 'apps/indicator'
-->
- <script>
+ <script type="text/javascript">
var static_url = "{{ STATIC_URL }}";
var indicator_url = "/indicator/";
</script>
<!-- Highcharts related, draw records chart -->
- <script>
+ <script type="text/javascript">
+ // default the language to English
+ moment.lang('en')
+ // default date format
+ var mm_date_fmt = "YYYY-MM-DD";
+ // default to show 30 days' data
+ var data_range = 30;
+ var end_datetime = moment();
+ var begin_datetime = end_datetime.clone();
+ begin_datetime.subtract('days', data_range);
+ var end_date_str = end_datetime.format(mm_date_fmt);
+ var begin_date_str = begin_datetime.format(mm_date_fmt);
+
+ // global variables
+ // NOTES:
+ // global variables of the chart's drawing options
+ // name style: 'options_chart_<id>'
+ // the variables are used in 'detail_history' binded function
+ var detail_card_id = "-1"; // track the id of card in detail (string)
+ var detail_chart = null;
+ var detail_chart_str = "detail_chart";
+ var detail_chart_options = null;
+ var card_2_delete_id = "-1"; // track the id of card to be deleted (string)
+ // regex to match float number in expoential notation
+ var exp_regex = /^([+-]?)(\d\.\d+)[eE]\+?(-?)0*([1-9]+)$/;
+
+ // get indicator records data and
+ // draw the chart
+ function chart_getdata_draw(chart_str, card_id, options, begin, end) {
+ var time = moment().valueOf();
+ $.ajax ({
+ type: 'get',
+ url: indicator_url + 'ajax/get_card_data_chart',
+ data: 'card_id='+card_id + '&begin='+begin + '&end='+end + '&time='+time,
+ dataType: 'json',
+ success: function (dataJson) {
+ // set data
+ var begin_dt = moment(begin);
+ var end_dt = moment(end);
+ options.xAxis.min = begin_dt.valueOf();
+ options.xAxis.max = end_dt.valueOf();
+ options.series[0].data = dataJson;
+ // draw the chart
+ // given 'chart_str' is the global var name of this chart
+ window[chart_str] = new Highcharts.Chart(options);
+ },
+ });
+ }
+
{% for ind in indicators %}
{% if not ind|dict_get:"record_empty" %} {# indicator has records #}
- var chart_{{ ind|dict_get:"id" }};
- {% endif %}
+ {% if ind|dict_get:"dataType" == DATA_TYPES|dict_get:"INTEGER_TYPE" %}
+ {# INTEGER_TYPE #}
+ {# TODO #}
+ {% elif ind|dict_get:"dataType" == DATA_TYPES|dict_get:"FLOAT_TYPE" %}
+ {# FLOAT_TYPE #}
+ var chart_{{ ind|dict_get:"id" }};
+ // global var name style: 'options_chart_<id>'
+ // keep the name style, used in 'detail_history' binded functions
+ var options_chart_{{ ind|dict_get:"id" }} = { // {{{
+ chart: {
+ type: 'areaspline',
+ renderTo: 'chart_{{ ind|dict_get:"id" }}'
+ },
+ labels: {
+ items: [{ // custom label for unit_symbol
+ html: '{{ ind|dict_get:"std_unit_symbol" }}',
+ style: {
+ left: '5px',
+ top: '0px'
+ }
+ }]
+ },
+ series: [{
+ data: []
+ }],
+ tooltip: {
+ formatter: function() {
+ return '<span style="color:#969696;font-weight:bold;">' + Highcharts.dateFormat('%Y-%m-%d', this.x) + '</span>' +'<br />' + '<span style="color:#464646;font-weight:bold;">' + this.y + ' ({{ ind|dict_get:"std_unit_symbol" }})' + '</span>';
+ }
+ },
+ xAxis: {
+ min: null,
+ max: null
+ },
+ yAxis: {
+ labels: {
+ useHTML: true,
+ formatter: function() {
+ var value = this.value;
+ if (value > 9999.0) {
+ var value_str = value.toExponential(2);
+ var m = exp_regex.exec(value_str);
+ var ylabel = m[1] + m[2].replace(/(\.0*|0*)$/, '') + '&times;10<sup>' + m[3]+m[4] + '</sup>';
+ }
+ else {
+ var ylabel = value.toString();
+ }
+ return ylabel;
+ }
+ }
+ }
+ }; // }}}
+ // draw chart
+ $(document).ready(function() {
+ chart_getdata_draw("chart_{{ ind|dict_get:"id" }}",
+ {{ ind|dict_get:"id" }},
+ options_chart_{{ ind|dict_get:"id" }},
+ begin_date_str, end_date_str
+ );
+ });
+ {% elif ind|dict_get:"dataType" == DATA_TYPES|dict_get:"RANGE_TYPE" %}
+ {# RANGE_TYPE #}
+ var chart_{{ ind|dict_get:"id" }};
+ var options_chart_{{ ind|dict_get:"id" }} = { // {{{
+ chart: {
+ type: 'areasplinerange',
+ renderTo: 'chart_{{ ind|dict_get:"id" }}'
+ },
+ labels: {
+ items: [{ // custom label for unit_symbol
+ html: '{{ ind|dict_get:"std_unit_symbol" }}',
+ style: {
+ left: '5px',
+ top: '0px'
+ }
+ }]
+ },
+ series: [{
+ data: []
+ }],
+ tooltip: {
+ formatter: function() {
+ return '<span style="color:#969696;font-weight:bold;">' + Highcharts.dateFormat('%Y-%m-%d', this.x) + '</span>' + '<br />' + '<span style="color:#464646;font-weight:bold;">' + this.point.low + ' &sim; ' + this.point.high + ' ({{ ind|dict_get:"std_unit_symbol" }})' + '</span>';
+ }
+ },
+ xAxis: {
+ min: null,
+ max: null
+ },
+ yAxis: {
+ labels: {
+ useHTML: true,
+ formatter: function() {
+ var value = this.value;
+ if (value > 9999.0) {
+ var value_str = value.toExponential(2);
+ var m = exp_regex.exec(value_str);
+ var ylabel = m[1] + m[2].replace(/(\.0*|0*)$/, '') + '&times;10<sup>' + m[3]+m[4] + '</sup>';
+ }
+ else {
+ var ylabel = value.toString();
+ }
+ return ylabel;
+ }
+ }
+ }
+ }; // }}}
+ // draw chart
+ $(document).ready(function() {
+ chart_getdata_draw("chart_{{ ind|dict_get:"id" }}",
+ {{ ind|dict_get:"id" }},
+ options_chart_{{ ind|dict_get:"id" }},
+ begin_date_str, end_date_str
+ );
+ });
+ {% elif ind|dict_get:"dataType" == DATA_TYPES|dict_get:"FLOAT_RANGE_TYPE" %}
+ {# FLOAT_RANGE_TYPE #}
+ {# TODO #}
+ {% elif ind|dict_get:"dataType" == DATA_TYPES|dict_get:"PM_TYPE" %}
+ {# PM_TYPE #}
+ {# TODO #}
+ {% else %}
+ {# unknown TYPE #}
+ {% endif %} {# end: DATA_TYPES #}
+ {% endif %} {# end: record_empty #}
{% endfor %}
</script>
{% endblock %}
@@ -71,7 +245,7 @@
<div class="refer_range">
<span class="refer_text">{{ ind|dict_get:"ref_text" }}</span>
<span class="refer_value">{{ ind|dict_get:"ref_value"|safe }}</span>
- <span class="data_unit">{{ ind|dict_get:"std_unit_symbol" }}</span>
+ <span class="data_unit">{% if ind|dict_get:"std_unit_symbol" %}({{ ind|dict_get:"std_unit_symbol" }}){% endif %}</span>
</div>
{% if ind|dict_get:"record_empty" %} {# vim: {{{ #}
{# if no record, then hide 'last_edit_data' #}
@@ -79,7 +253,7 @@
<div class="edit_data">
<div class="last_edit_data" style="display: none;">
<span class="last_data">Null</span>
- <span class="data_unit">{{ ind|dict_get:"std_unit_symbol" }}</span>
+ <span class="data_unit">{% if ind|dict_get:"std_unit_symbol" %}({{ ind|dict_get:"std_unit_symbol" }}){% endif %}</span>
</div>
<img class="small_edit_icon" src="{% static "images/pen.png" %}" />
<img class="explain_icon" src="{% static "images/nodata.png" %}" />
@@ -94,7 +268,7 @@
<div class="add_icon"></div>
<div class="minus_icon"></div>
</div>
- <div class="data_unit">{{ ind|dict_get:"std_unit_symbol" }}</div>
+ <div class="data_unit">{% if ind|dict_get:"std_unit_symbol" %}({{ ind|dict_get:"std_unit_symbol" }}){% endif %}</div>
<div class="confirm_edit_icon"></div>
<div class="cancel_edit_icon"></div>
</div> <!-- end: editing_data -->
@@ -111,8 +285,8 @@
<!-- "record_empty": False -->
<div class="edit_data">
<div class="last_edit_data" style="display: block;">
- <span class="last_data">{{ ind|dict_get:"last_record"|dict_get:"value_str" }}</span>
- <span class="data_unit">{{ ind|dict_get:"std_unit_symbol" }}</span>
+ <span class="last_data">{{ ind|dict_get:"last_record"|dict_get:"value_str"|safe }}</span>
+ <span class="data_unit">{% if ind|dict_get:"std_unit_symbol" %}({{ ind|dict_get:"std_unit_symbol" }}){% endif %}</span>
</div>
<img class="small_edit_icon" src="{% static "images/pen.png" %}" />
<img class="explain_icon" src="{% static "images/last_edit_data.png" %}" />
@@ -127,7 +301,7 @@
<div class="add_icon"></div>
<div class="minus_icon"></div>
</div>
- <div class="data_unit">{{ ind|dict_get:"std_unit_symbol" }}</div>
+ <div class="data_unit">{% if ind|dict_get:"std_unit_symbol" %}({{ ind|dict_get:"std_unit_symbol" }}){% endif %}</div>
<div class="confirm_edit_icon"></div>
<div class="cancel_edit_icon"></div>
</div> <!-- end: editing_data -->
@@ -142,11 +316,11 @@
<input class="datepicker" type="text" autocomplete="off" />
</div>
<!-- chart rendered by Highcharts -->
- <div id="chart_{{ ind|dict_get:"id" }}" class="chart"></div>
+ <div class="chart" id="chart_{{ ind|dict_get:"id" }}"></div>
{% endif %} {# end: record_empty; vim: }}} #}
<div class="card_bottom">
- <div class="understand_index"><a class="thickbox" href="{% url indicator_indexdesc %}?TB_iframe=true&no1_title&transfer_params&height=351&width=630&card_id={{ ind|dict_get:"id" }}">了解该指标</a></div>
+ <div class="understand_index"><a class="thickbox" href="{% url indicator_indexdesc %}?card_id={{ ind|dict_get:"id" }}&TB_iframe=true&transfer_params&height=351&width=630">了解该指标</a></div>
<!-- TODO -->
<div class="simulation_sheet"><a href="{% static "images/demo_sheet.png" %}" class="thickbox">仿真化验单</a></div>
<div class="detail_history">
@@ -163,27 +337,31 @@
width参数为弹出层页面宽度+2,
card_id参数为 "卡片id"
{% endcomment %}
- <a class="card_delete_icon card_delete thickbox" href="{% url indicator_deletecardtip %}?TB_iframe=true&no1_title&transfer_params&height=166&width=630&card_id={{ ind|dict_get:"id" }}"></a>
+ <a class="card_delete_icon card_delete thickbox" href="{% url indicator_deletecardtip %}?card_id={{ ind|dict_get:"id" }}&TB_iframe=true&transfer_params&height=166&width=630"></a>
</div> <!-- end: index_card -->
{% endfor %} {# end: indicators #}
<!-- detail card info -->
<div class="detail_card_info">
- <div class="card_title">乙肝病毒核算定量 (PCR)4<input class="collapse_btn" type="button" value="收 起" /></div>
+ <div class="card_title">
+ <div class="title">Indicator</div>
+ <input class="collapse_btn" type="button" value="收 起" />
+ </div>
<div class="search_data_div">
- <input class="recent_one_week shift_week" start_date="2013-08-04" end_date="2013-08-10" type="button" value="最近1周" />
- <input class="recent_two_week shift_week unselected" start_date="2013-07-28" end_date="2013-08-10" type="button" value="最近2周" />
+ <!-- two buttons default to unselected -->
+ <input class="recent_three_month shift_date unselected" begin_date="2013-08-04" end_date="2013-08-10" type="button" value="最近三个月" />
+ <input class="recent_six_month shift_date unselected" begin_date="2013-07-28" end_date="2013-08-10" type="button" value="最近六个月" />
<div class="datepicker_container end_date_container">
- <label>截止日期</label>
+ <label class="end_label">截止日期</label>
<input class="datepicker end_date" id="search_end_date" type="text" value="" />
</div>
- <div class="datepicker_container">
- <label class="start_label">起始日期</label>
- <input class="datepicker start_date" id="search_start_date" type="text" value="" />
+ <div class="datepicker_container begin_date_container">
+ <label class="begin_label">起始日期</label>
+ <input class="datepicker begin_date" id="search_begin_date" type="text" value="" />
</div>
<div style="clear:both;"></div>
</div>
- <div id="detail_chart"></div>
+ <div class="chart" id="detail_chart"></div>
<div class="table_div">
<table width="100%">
<tr class="first_line">
diff --git a/97suifangqa/apps/indicator/templates/indicator/popup/IndexDesc.html b/97suifangqa/apps/indicator/templates/indicator/popup/IndexDesc.html
index ad9f20d..1515436 100644
--- a/97suifangqa/apps/indicator/templates/indicator/popup/IndexDesc.html
+++ b/97suifangqa/apps/indicator/templates/indicator/popup/IndexDesc.html
@@ -15,22 +15,77 @@
{% endblock %}
{% block scripts %}
- <script type="text/javascript" src="{% static "javascripts/index_desc.js" %}"></script>
+ <script type="text/javascript">
+ $(document).ready(function(){
+ //点大叉,关闭弹层页面
+ $(".index_desc_close").bind("click", function(){
+ parent.TB_remove();
+ return false;
+ });
+
+ // collection
+ $("#collection_btn").bind("update", function(e) {
+ var text = $(this).data('is_collected') ? "点击取消收藏" : "收藏该注释";
+ text += ' (已有' + $(this).data('collected_times') + '人收藏)';
+ $(this).html(text);
+ });
+ // collection ajax request
+ $("#collection_btn").bind("click", function() {
+ var obj = $(this)
+ obj.data('id', {{ annotation.id }});
+ var url = '/blog/annotation/'+$(this).data('id')+'/collect';
+ $.ajax({
+ url: url,
+ dataType: 'json',
+ success: function(data) {
+ //console.log(obj);
+ obj.data('is_collected', data.added);
+ obj.data('collected_times', data.times);
+ obj.trigger("update");
+ }
+ });
+ });
+
+ //前往医学知识库
+ $(".go_library_btn").bind("click", function(){
+ parent.delete_card();
+ parent.TB_remove();
+ parent.window.location.href = "{{ annotation_url }}";
+ return false;
+ });
+ });
+ </script>
{% endblock %}
{% block page %}
<div id="index_desc_container">
<div class="index_desc_title_line">
- <div class="index_desc_title">乙肝病毒核算定量(PCR)</div>
+ <div class="index_desc_title">
+ {% if annotation_not_found %}
+ {{ indicator.name }}
+ {% else %}
+ {{ annotation.brief_content }}
+ {% endif %}
+ </div>
<div class="index_desc_close"></div>
</div>
- <div class="index_desc_content">
- 乙型肝炎仍是全球最严重的公共卫生问题之一。乙型肝炎病毒核酸DNA是反映乙肝的感染状态和治疗效果的重要指标。HBV DNA的定量检测是目前通过国家认证临床PCR实验室的常规检测项目之一。
- <br /><br />
- 目前HBV的临床检测从传统的免疫学方法发展到分子生物学方法,这是科技水平的一个重大进步。分子生物学检测经历了早期的PCR凝胶电泳法、半定量法到现在的完全定量法,目前各种定量检测方法日趋成熟,国内以TAQMAN荧光基因探针技术为主流的多种检测试剂盒已开发出来。荧光基因探针PCR?目前HBV的临床检测从传统的免疫学方法发展到分子生物学方法,这是科技水平的一个重大进步。分子生物学检测经历了早期的PCR凝胶电泳法、半定量法到现在的完全定量法,目前各种定量检测方法日趋成熟,国内以TAQMAN荧光基因探针技术为主流的多种检测试剂盒已开发出来。荧光基因探针PCR?
- </div>
- <div class="collection">收藏该注释(已有 100 人收藏)</div>
- <div class="go_library"><input type="button" class="go_library_btn" value="前往医学知识库" /></div>
+ <div class="index_desc_content">
+ {% if annotation_not_found %}
+ <div class="not_found">未找到与该指标相关的注释</div>
+ {% else %}
+ {{ annotation.detail|safe }}
+ {% endif %}
+ </div>
+ <div class="collection" id="collection_btn">
+ {% if is_collected %}
+ 点击取消收藏 (已有{{ collected_times }}人收藏)
+ {% else %}
+ 收藏该注释 (已有{{ collected_times }}人收藏)
+ {% endif %}
+ </div>
+ <div class="go_library">
+ <input type="button" class="go_library_btn" value="前往医学知识库" />
+ </div>
</div>
{% endblock page %}
diff --git a/97suifangqa/apps/indicator/views.py b/97suifangqa/apps/indicator/views.py
index dc7b902..d7222f8 100644
--- a/97suifangqa/apps/indicator/views.py
+++ b/97suifangqa/apps/indicator/views.py
@@ -18,6 +18,8 @@ from indicator import models as im
from indicator.forms import *
from indicator.tools import *
+from sciblog import models as sm
+
# apps/utils
from utils.search_tools import objects_of_sqs
@@ -525,11 +527,20 @@ def indicator_status(request):
ind['last_record'] = {}
# }}}
+ # dataType
+ DATA_TYPES = {
+ 'INTEGER_TYPE': im.Indicator.INTEGER_TYPE,
+ 'FLOAT_TYPE': im.Indicator.FLOAT_TYPE,
+ 'RANGE_TYPE': im.Indicator.RANGE_TYPE,
+ 'FLOAT_RANGE_TYPE': im.Indicator.FLOAT_RANGE_TYPE,
+ 'PM_TYPE': im.Indicator.PM_TYPE,
+ }
+
data = {
'indicators': indicators,
+ 'DATA_TYPES': DATA_TYPES,
}
# render template
- #raise ValueError
return render(request, template, data)
# }}}
@@ -669,7 +680,51 @@ def indicator_indexdesc(request):
description for an indicator
"""
template = 'indicator/popup/IndexDesc.html'
- return render(request, template)
+ # default parameters
+ annotation = None
+ annotation_not_found = False
+ annotation_url = 'javascript:void(0)'
+ collected_times = 0
+ is_collected = False
+ # check card_id -> indicator_id
+ if request.GET.get('card_id') is not None:
+ card_id = request.GET.get('card_id')
+ try:
+ indicator_id = int(card_id)
+ ind_obj = im.Indicator.objects.get(id=indicator_id)
+ except ValueError:
+ print u'Error: Given card_id="%s" cannot convert to integer' % card_id
+ raise Http404
+ except im.Indicator.DoesNotExist:
+ print u'Error: Indicator id="%s" NOT exist' % indicator_id
+ raise Http404
+ else:
+ print u'Error: No card_id provided'
+ raise Http404
+ # get related 'BlogAnnotation', only type 'PROPER_NAME'
+ related_annotations = ind_obj.related_indicators.\
+ filter(objectType=im.RelatedIndicator.ANNOTATION_TYPE).\
+ filter(annotation__type=sm.BlogAnnotation.PROPER_NOUN).\
+ order_by('-weight')
+ if related_annotations:
+ # has related annotations
+ annotation = related_annotations[0].annotation
+ collected_times = len(annotation.collected_by.all())
+ is_collected = annotation.is_collected_by(request.user)
+ # TODO
+ #annotation_url = annotation.get_absolute_url()
+ else:
+ annotation_not_found = True
+
+ data = {
+ 'annotation_not_found': annotation_not_found,
+ 'annotation': annotation,
+ 'annotation_url': annotation_url,
+ 'collected_times': collected_times,
+ 'is_collected': is_collected,
+ 'indicator': ind_obj,
+ }
+ return render(request, template, data)
# }}}
@@ -684,15 +739,14 @@ def ajax_act_index(request):
"""
# default 'fail'
result = 'fail'
- #if request.is_ajax():
- if True:
+ if request.is_ajax():
# check index_id -> indicator_id
if request.GET.get('index_id') is not None:
index_id = request.GET.get('index_id')
try:
indicator_id = int(index_id)
except ValueError:
- print u'Error: Given index_id="%s" cannot convert to integer' % indicator_id
+ print u'Error: Given index_id="%s" cannot convert to integer' % index_id
result = 'fail'
return HttpResponse(result)
# check 'act': add/minus -> action: follow/unfollow
@@ -753,23 +807,92 @@ def ajax_get_card_data_chart(request):
'indicator/static/javascripts/load_card.js'
get card data
for the 'chart' within the card
- format: [v1, v2, v3, ...]
+ format: [[UTC_ms1, v1], [UTC_ms2, v2], [UTC_ms3, v3], ...]
- NB.
- 每一天都要有数据,否则时间轴对不上 (load_card.js: redraw_chard())
- TODO:
- workaround for the above problem!
+ NOTE: UTC_ms: is the 'ms' from '1970-01-01T00:00.00Z'
+ GET parameters:
+ begin, end, format: 'YYYY-MM-DD', '%Y-%m-%d'
+ '%Y-%m-%dT%H:%M:%S.%fZ'
"""
- # TODO
+ # default parameters
+ data = []
+ begin_date = ""
+ end_date = ""
+ #
if request.is_ajax():
- result = [6.0, 5.9, 5.5, 4.5, 6.2, 6.5, 5.2, 6.0,
- 5.9, 5.5, 4.5, 6.2, 6.5, 5.2, 6.0, 5.9,
- 5.5, 4.5, 6.2, 6.5]
- else:
- result = ''
- #raise Http404
- return HttpResponse(json.dumps(result),
- mimetype='application/json')
+ # check card_id -> indicator_id
+ if request.GET.get('card_id') is not None:
+ card_id = request.GET.get('card_id')
+ try:
+ indicator_id = int(card_id)
+ except ValueError:
+ print u'Error: Given card_id="%s" cannot convert to integer' % card_id
+ return HttpResponse(json.dumps(data),
+ mimetype='application/json')
+ else:
+ return HttpResponse(json.dumps(data),
+ mimetype='application/json')
+ # begin datetime
+ if request.GET.get('begin') is not None:
+ begin = request.GET.get('begin')
+ try:
+ begin_datetime = datetime.datetime.strptime(begin,
+ '%Y-%m-%d')
+ begin_date = begin_datetime.date()
+ except ValueError:
+ print u'Error: Given begin="%s" invalid' % begin
+ return HttpResponse(json.dumps(data),
+ mimetype='application/json')
+ # end datetime
+ if request.GET.get('end') is not None:
+ end = request.GET.get('end')
+ try:
+ end_datetime = datetime.datetime.strptime(end,
+ '%Y-%m-%d')
+ end_date = end_datetime.date()
+ except ValueError:
+ print u'Error: Given end="%s" invalid' % end
+ return HttpResponse(json.dumps(data),
+ mimetype='application/json')
+ # get records data
+ records_data = get_record_std(user_id=request.user.id,
+ indicator_id=indicator_id,
+ begin=begin_date, end=end_date)
+ # convert to list, and sort
+ rd_list = []
+ for r in records_data.values():
+ rd_list += r
+ rd_list_sorted = sorted(rd_list, key = lambda item: item['date'])
+ #
+ ind_obj = get_object_or_404(im.Indicator, id=indicator_id)
+ dataType = ind_obj.dataType
+ unix_begin = datetime.datetime(1970, 1, 1, 0, 0)
+ data = []
+ for r in rd_list_sorted:
+ dt = datetime.datetime.strptime(r['date'], '%Y-%m-%d')
+ time_ms = (dt-unix_begin).total_seconds() * 1000.0
+ if dataType == im.Indicator.INTEGER_TYPE:
+ # TODO
+ pass
+ elif dataType == im.Indicator.FLOAT_TYPE:
+ value = r['value']
+ data.append([time_ms, value])
+ elif dataType == im.Indicator.RANGE_TYPE:
+ val_min = r['val_min']
+ val_max = r['val_max']
+ data.append([time_ms, val_min, val_max])
+ elif dataType == im.Indicator.FLOAT_RANGE_TYPE:
+ # TODO
+ pass
+ elif dataType == im.Indicator.PM_TYPE:
+ # TODO
+ pass
+ else:
+ print u'Error: unknow dataType'
+ return HttpResponse(json.dumps(data),
+ mimetype='application/json')
+
+ return HttpResponse(json.dumps(data), mimetype='application/json')
# }}}
diff --git a/97suifangqa/apps/sciblog/models.py b/97suifangqa/apps/sciblog/models.py
index d48ceca..d6a63d4 100644
--- a/97suifangqa/apps/sciblog/models.py
+++ b/97suifangqa/apps/sciblog/models.py
@@ -181,19 +181,30 @@ class BlogAnnotation(models.Model):
文章注释
'''
- type_choices = ((0, u"段落注释"),
- (1, u"专有名词"),)
-
- type = models.IntegerField(u"注释类型", choices=type_choices)
+ PARAGRAPH = 0
+ PROPER_NOUN = 1
+ ANNOTATION_TYPES = (
+ (PARAGRAPH, u"段落注释"),
+ (PROPER_NOUN, u"专有名词"),
+ )
+
+ type = models.IntegerField(u"注释类型", choices=ANNOTATION_TYPES)
no = models.IntegerField(u"编号", blank=True, null=True)
- brief_content = models.CharField(u"简短内容", max_length=400, blank= True)
+ brief_content = models.CharField(u"简短内容", max_length=400,
+ blank=True)
detail = models.TextField(u"详细内容", blank=True)
- blogs = models.ManyToManyField("SciBlog", verbose_name=u"文章", related_name="annotations", null=True, blank=True)
- keywords = models.ManyToManyField("info.KeyWord", verbose_name=u"关键词", related_name="annotations", null=True, blank=True)
- figures = models.ManyToManyField("figure.Figure", verbose_name=u"图片", related_name="annotations", null=True, blank=True)
- collected_by = models.ManyToManyField(User, verbose_name=u"收藏者", related_name="annotation_collection", null=True, blank=True)
+ blogs = models.ManyToManyField("SciBlog", verbose_name=u"文章",
+ related_name="annotations", null=True, blank=True)
+ keywords = models.ManyToManyField("info.KeyWord",
+ verbose_name=u"关键词", related_name="annotations",
+ null=True, blank=True)
+ figures = models.ManyToManyField("figure.Figure",
+ verbose_name=u"图片", related_name="annotations",
+ null=True, blank=True)
+ collected_by = models.ManyToManyField(User,
+ verbose_name=u"收藏者", related_name="annotation_collection",
+ null=True, blank=True)
objects = AnnotationManager()
-
class Meta:
verbose_name_plural = u"文章注释"
@@ -208,6 +219,10 @@ class BlogAnnotation(models.Model):
"""
return self.__unicode__()
+ def get_absolute_url(self):
+ # TODO
+ return ''
+
def firstkeyword(self):
u'''
第一个关键词,注意对于专有名词,通常只有一个
@@ -217,7 +232,8 @@ class BlogAnnotation(models.Model):
def firstparagraph(self):
u'''
- bloglist页面二上内容的阶段,django里面的注释第一段的末尾都是一个空格
+ bloglist页面二上内容的阶段,
+ django里面的注释第一段的末尾都是一个空格
'''
return self.detail.split(' ')[0]
@@ -227,7 +243,8 @@ class BlogAnnotation(models.Model):
'''
if user.is_authenticated() and user.annotation_collection.filter(id=self.id):
return True
- return False
+ else:
+ return False
# }}}