lol_framework 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +19 -0
- data/.rspec +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +30 -0
- data/Rakefile +1 -0
- data/lib/generators/lol_framework/setup/lol_framework.rb +27 -0
- data/lib/generators/lol_framework/setup/setup_generator.rb +17 -0
- data/lib/lol_framework.rb +8 -0
- data/lib/lol_framework/common.rb +20 -0
- data/lib/lol_framework/config.rb +17 -0
- data/lib/lol_framework/config/components.rb +16 -0
- data/lib/lol_framework/config/components/css.rb +44 -0
- data/lib/lol_framework/config/components/js.rb +75 -0
- data/lib/lol_framework/railtie.rb +14 -0
- data/lib/lol_framework/version.rb +3 -0
- data/lol_framework.gemspec +28 -0
- data/spec/lol_framework/config/components/css_spec.rb +5 -0
- data/spec/lol_framework/config/components/js_spec.rb +11 -0
- data/spec/lol_framework/config/components_spec.rb +24 -0
- data/spec/lol_framework/config_spec.rb +19 -0
- data/spec/lol_framework/lol_framework_spec.rb +13 -0
- data/spec/spec_helper.rb +20 -0
- data/vendor/assets/images/lol_framework/datatable/sorting_bg.png +0 -0
- data/vendor/assets/images/lol_framework/glyphicons-lol-origin-white.png +0 -0
- data/vendor/assets/images/lol_framework/glyphicons-lol-origin.png +0 -0
- data/vendor/assets/images/lol_framework/glyphicons-lol.png +0 -0
- data/vendor/assets/javascripts/.gitkeep +0 -0
- data/vendor/assets/javascripts/Jasmine/jasmine-html.js +616 -0
- data/vendor/assets/javascripts/Jasmine/jasmine.js +2529 -0
- data/vendor/assets/javascripts/lol.js +18 -0
- data/vendor/assets/javascripts/lol_framework/Ajax.coffee +183 -0
- data/vendor/assets/javascripts/lol_framework/Alert.coffee +113 -0
- data/vendor/assets/javascripts/lol_framework/Button.coffee +268 -0
- data/vendor/assets/javascripts/lol_framework/Core.coffee +85 -0
- data/vendor/assets/javascripts/lol_framework/Datatable.coffee +340 -0
- data/vendor/assets/javascripts/lol_framework/Date.coffee +0 -0
- data/vendor/assets/javascripts/lol_framework/Debug.coffee +45 -0
- data/vendor/assets/javascripts/lol_framework/I18n.coffee +81 -0
- data/vendor/assets/javascripts/lol_framework/Lang/en-us.coffee +54 -0
- data/vendor/assets/javascripts/lol_framework/Lang/pt-br.coffee +57 -0
- data/vendor/assets/javascripts/lol_framework/Library/date-functions.js +409 -0
- data/vendor/assets/javascripts/lol_framework/Library/jquery.dataTables.min.js +157 -0
- data/vendor/assets/javascripts/lol_framework/Library/jquery.mobile.js +14 -0
- data/vendor/assets/javascripts/lol_framework/Loader.coffee +83 -0
- data/vendor/assets/javascripts/lol_framework/Lol.coffee +4 -0
- data/vendor/assets/javascripts/lol_framework/Modal.coffee +221 -0
- data/vendor/assets/javascripts/lol_framework/Model.coffee +71 -0
- data/vendor/assets/javascripts/lol_framework/Model/Rest.coffee +15 -0
- data/vendor/assets/javascripts/lol_framework/Tests/Alert.coffee +83 -0
- data/vendor/assets/javascripts/lol_framework/Tests/Core.coffee +35 -0
- data/vendor/assets/javascripts/lol_framework/Tests/Debug.coffee +14 -0
- data/vendor/assets/javascripts/lol_framework/Tests/I18n.coffee +7 -0
- data/vendor/assets/javascripts/lol_framework/Tests/Lang.coffee +130 -0
- data/vendor/assets/javascripts/lol_framework/Tests/Library.coffee +13 -0
- data/vendor/assets/javascripts/lol_framework/Tests/Lol.coffee +4 -0
- data/vendor/assets/javascripts/lol_framework/Tests/Utils.coffee +22 -0
- data/vendor/assets/javascripts/lol_framework/Utils.coffee +42 -0
- data/vendor/assets/javascripts/lol_main_tests.js +43 -0
- data/vendor/assets/stylesheets/.gitkeep +0 -0
- data/vendor/assets/stylesheets/jasmine.css +81 -0
- data/vendor/assets/stylesheets/lol_framework/_mixin.scss +650 -0
- data/vendor/assets/stylesheets/lol_framework/_variable.scss +107 -0
- data/vendor/assets/stylesheets/lol_framework/components/_alert.scss +46 -0
- data/vendor/assets/stylesheets/lol_framework/components/_datatable.scss +172 -0
- data/vendor/assets/stylesheets/lol_framework/components/_loader.scss +15 -0
- data/vendor/assets/stylesheets/lol_framework/components/_modal.scss +68 -0
- metadata +222 -0
@@ -0,0 +1,81 @@
|
|
1
|
+
###
|
2
|
+
@summary Lol Framework
|
3
|
+
@description Framework of RIAs applications
|
4
|
+
@version 1.0.0
|
5
|
+
@file Ajax.js
|
6
|
+
@author Welington Sampaio (http://welington.zaez.net/)
|
7
|
+
@contact http://welington.zaez.net/site/contato
|
8
|
+
|
9
|
+
@copyright Copyright 2012 Welington Sampaio, all rights reserved.
|
10
|
+
|
11
|
+
This source file is free software, under the license MIT, available at:
|
12
|
+
http://lolframework.zaez.net/license
|
13
|
+
|
14
|
+
This source file is distributed in the hope that it will be useful, but
|
15
|
+
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
16
|
+
or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
|
17
|
+
|
18
|
+
For details please refer to: http://welington.zaez.net
|
19
|
+
###
|
20
|
+
|
21
|
+
###
|
22
|
+
Create a new instance of I18n.
|
23
|
+
|
24
|
+
@classDescription This class creates a new I18n.
|
25
|
+
@param {Object} Receives configuration to create the I18n
|
26
|
+
@return {I18n} Returns a new I18n.
|
27
|
+
@type {Object}
|
28
|
+
###
|
29
|
+
class Lol.I18n
|
30
|
+
# the methods
|
31
|
+
constructor: ->
|
32
|
+
throw 'Required jQuery library' if jQuery == undefined
|
33
|
+
Lol.I18n.language = if not navigator.language then 'en-us' else new String(navigator.language).toLowerCase()
|
34
|
+
@tDate()
|
35
|
+
tDate: ->
|
36
|
+
Date.monthNames =
|
37
|
+
[
|
38
|
+
Lol.t "date_months_january"
|
39
|
+
Lol.t "date_months_february"
|
40
|
+
Lol.t "date_months_march"
|
41
|
+
Lol.t "date_months_april"
|
42
|
+
Lol.t "date_months_may"
|
43
|
+
Lol.t "date_months_june"
|
44
|
+
Lol.t "date_months_july"
|
45
|
+
Lol.t "date_months_august"
|
46
|
+
Lol.t "date_months_september"
|
47
|
+
Lol.t "date_months_october"
|
48
|
+
Lol.t "date_months_november"
|
49
|
+
Lol.t "date_months_december"
|
50
|
+
]
|
51
|
+
Date.dayNames =
|
52
|
+
[
|
53
|
+
Lol.t "date_days_sunday"
|
54
|
+
Lol.t "date_days_monday"
|
55
|
+
Lol.t "date_days_tuesday"
|
56
|
+
Lol.t "date_days_wednesday"
|
57
|
+
Lol.t "date_days_thursday"
|
58
|
+
Lol.t "date_days_friday"
|
59
|
+
Lol.t "date_days_saturday"
|
60
|
+
]
|
61
|
+
###
|
62
|
+
Method translation framework
|
63
|
+
@param {String}
|
64
|
+
###
|
65
|
+
@translate: (name)->
|
66
|
+
return Lol.i18n[Lol.I18n.language][name] if Lol.i18n[Lol.I18n.language].hasOwnProperty(name)
|
67
|
+
return name
|
68
|
+
|
69
|
+
###
|
70
|
+
Method translation framework
|
71
|
+
@see Lol.I18n.tralate
|
72
|
+
@param {String}
|
73
|
+
@example
|
74
|
+
*-* translating *-*
|
75
|
+
var january = Lol.t('date_months_january'); // January
|
76
|
+
###
|
77
|
+
Lol.t = (name)->
|
78
|
+
return Lol.I18n.translate(name)
|
79
|
+
|
80
|
+
## Initializing the Lol.I18n
|
81
|
+
new Lol.I18n()
|
@@ -0,0 +1,54 @@
|
|
1
|
+
Lol.i18n = Lol.i18n || {}
|
2
|
+
Lol.i18n['en-us'] =
|
3
|
+
# Commom
|
4
|
+
search: 'search'
|
5
|
+
#buttons names
|
6
|
+
OK : 'OK'
|
7
|
+
CANCEL: 'CANCEL'
|
8
|
+
YES : 'YES'
|
9
|
+
NO : 'NO'
|
10
|
+
# Datatable
|
11
|
+
datatable_oAria_sSortAscending : ": activate to sort column ascending"
|
12
|
+
datatable_oAria_sSortDescending: ": activate to sort column descending"
|
13
|
+
datatable_oPaginate_sFirst : "First"
|
14
|
+
datatable_oPaginate_sLast : "Last"
|
15
|
+
datatable_oPaginate_sNext : "Next"
|
16
|
+
datatable_oPaginate_sPrevious: "Previous"
|
17
|
+
datatable_sEmptyTable : "No data available in table"
|
18
|
+
datatable_sInfo : "Showing _START_ to _END_ of _TOTAL_ entries"
|
19
|
+
datatable_sInfoEmpty : "Showing 0 to 0 of 0 entries"
|
20
|
+
datatable_sInfoFiltered : "(filtered from _MAX_ total entries)"
|
21
|
+
datatable_sInfoPostFix : ""
|
22
|
+
datatable_sInfoThousands : ","
|
23
|
+
datatable_sLengthMenu : "Show _MENU_ entries"
|
24
|
+
datatable_sLoadingRecords: "Loading..."
|
25
|
+
datatable_sProcessing : "Processing..."
|
26
|
+
datatable_sSearch : "<i class='icon-search'></i>"
|
27
|
+
datatable_search : "search..."
|
28
|
+
datatable_sUrl : ""
|
29
|
+
datatable_sZeroRecords : "No matching records found"
|
30
|
+
datatable_view : 'view'
|
31
|
+
datatable_edit : 'edit'
|
32
|
+
datatable_delete : 'delete'
|
33
|
+
datatable_confirm_delete : 'Are you sure you want to delete this record?<br />This operation can not be undone.'
|
34
|
+
datatable_confirm_delete_title : 'Lol Framework'
|
35
|
+
# Date Object
|
36
|
+
date_months_january : 'January'
|
37
|
+
date_months_february : 'February'
|
38
|
+
date_months_march : 'March'
|
39
|
+
date_months_april : 'April'
|
40
|
+
date_months_may : 'May'
|
41
|
+
date_months_june : 'June'
|
42
|
+
date_months_july : 'July'
|
43
|
+
date_months_august : 'August'
|
44
|
+
date_months_september : 'September'
|
45
|
+
date_months_october : 'October'
|
46
|
+
date_months_november : 'November'
|
47
|
+
date_months_december : 'December'
|
48
|
+
date_days_sunday : 'Sunday'
|
49
|
+
date_days_monday : 'Monday'
|
50
|
+
date_days_tuesday : 'Tuesday'
|
51
|
+
date_days_wednesday : 'Wednesday'
|
52
|
+
date_days_thursday : 'Thursday'
|
53
|
+
date_days_friday : 'Friday'
|
54
|
+
date_days_saturday : 'Saturday'
|
@@ -0,0 +1,57 @@
|
|
1
|
+
Lol.i18n = Lol.i18n || {}
|
2
|
+
Lol.i18n['pt-br'] =
|
3
|
+
#Common
|
4
|
+
search : 'pesquisa'
|
5
|
+
#buttons names
|
6
|
+
OK : 'OK'
|
7
|
+
CANCEL: 'CANCELAR'
|
8
|
+
YES : 'SIM'
|
9
|
+
NO : 'NÃO'
|
10
|
+
# Datatable
|
11
|
+
datatable_oAria_sSortAscending : ": ativar para classificar coluna ascendente"
|
12
|
+
datatable_oAria_sSortDescending: ": ativar para classificar coluna descendente"
|
13
|
+
datatable_oPaginate_sFirst : "Primeiro"
|
14
|
+
datatable_oPaginate_sLast : "Último"
|
15
|
+
datatable_oPaginate_sNext : "Seguinte"
|
16
|
+
datatable_oPaginate_sPrevious: "Anterior"
|
17
|
+
datatable_sEmptyTable : "Não há dados disponíveis na tabela"
|
18
|
+
datatable_sInfo : "Mostrando de _START_ até _END_ de _TOTAL_ registros"
|
19
|
+
datatable_sInfoEmpty : "Mostrando de 0 até 0 de 0 registros"
|
20
|
+
datatable_sInfoFiltered : "(filtrado de _MAX_ registros no total)"
|
21
|
+
datatable_sInfoPostFix : ""
|
22
|
+
datatable_sInfoThousands : ","
|
23
|
+
datatable_sLengthMenu : "Mostrar _MENU_ registros"
|
24
|
+
datatable_sLoadingRecords: "Carregando..."
|
25
|
+
datatable_sProcessing : "Processando..."
|
26
|
+
datatable_sSearch : "<i class='icon-search'></i>"
|
27
|
+
datatable_search : "buscar"
|
28
|
+
datatable_sUrl : ""
|
29
|
+
datatable_sZeroRecords : "Não foram encontrados resultados"
|
30
|
+
datatable_view : 'visualizar'
|
31
|
+
datatable_edit : 'editar'
|
32
|
+
datatable_delete : 'remover'
|
33
|
+
datatable_confirm_delete : 'Você tem certeza que deseja excluir este registro?<br />Esta operação não poderá ser desfeita.'
|
34
|
+
datatable_confirm_delete_title : 'Lol Framework'
|
35
|
+
# Date Object
|
36
|
+
date_months_january : 'Janeiro'
|
37
|
+
date_months_february : 'Fevereiro'
|
38
|
+
date_months_march : 'Março'
|
39
|
+
date_months_april : 'Abril'
|
40
|
+
date_months_may : 'Maio'
|
41
|
+
date_months_june : 'Junho'
|
42
|
+
date_months_july : 'Julho'
|
43
|
+
date_months_august : 'Agosto'
|
44
|
+
date_months_september : 'Setembro'
|
45
|
+
date_months_october : 'Outubro'
|
46
|
+
date_months_november : 'Novembro'
|
47
|
+
date_months_december : 'Dezembro'
|
48
|
+
date_days_sunday : 'Domingo'
|
49
|
+
date_days_monday : 'Segunda'
|
50
|
+
date_days_tuesday : 'Terça'
|
51
|
+
date_days_wednesday : 'Quarta'
|
52
|
+
date_days_thursday : 'Quinta'
|
53
|
+
date_days_friday : 'Sexta'
|
54
|
+
date_days_saturday : 'Sábado'
|
55
|
+
|
56
|
+
## Alias
|
57
|
+
Lol.i18n['pt'] = Lol.i18n['pt-br']
|
@@ -0,0 +1,409 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) 2004 Baron Schwartz <baron at sequent dot org>
|
3
|
+
*
|
4
|
+
* This program is free software; you can redistribute it and/or modify it
|
5
|
+
* under the terms of the GNU Lesser General Public License as published by the
|
6
|
+
* Free Software Foundation, version 2.1.
|
7
|
+
*
|
8
|
+
* This program is distributed in the hope that it will be useful, but WITHOUT
|
9
|
+
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
10
|
+
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
11
|
+
* details.
|
12
|
+
*/
|
13
|
+
|
14
|
+
Date.parseFunctions = {count:0};
|
15
|
+
Date.parseRegexes = [];
|
16
|
+
Date.formatFunctions = {count:0};
|
17
|
+
|
18
|
+
Date.prototype.dateFormat = function(format) {
|
19
|
+
if (Date.formatFunctions[format] == null) {
|
20
|
+
Date.createNewFormat(format);
|
21
|
+
}
|
22
|
+
var func = Date.formatFunctions[format];
|
23
|
+
return this[func]();
|
24
|
+
}
|
25
|
+
|
26
|
+
Date.createNewFormat = function(format) {
|
27
|
+
var funcName = "format" + Date.formatFunctions.count++;
|
28
|
+
Date.formatFunctions[format] = funcName;
|
29
|
+
var code = "Date.prototype." + funcName + " = function(){return ";
|
30
|
+
var special = false;
|
31
|
+
var ch = '';
|
32
|
+
for (var i = 0; i < format.length; ++i) {
|
33
|
+
ch = format.charAt(i);
|
34
|
+
if (!special && ch == "\\") {
|
35
|
+
special = true;
|
36
|
+
}
|
37
|
+
else if (special) {
|
38
|
+
special = false;
|
39
|
+
code += "'" + String.escape(ch) + "' + ";
|
40
|
+
}
|
41
|
+
else {
|
42
|
+
code += Date.getFormatCode(ch);
|
43
|
+
}
|
44
|
+
}
|
45
|
+
eval(code.substring(0, code.length - 3) + ";}");
|
46
|
+
}
|
47
|
+
|
48
|
+
Date.getFormatCode = function(character) {
|
49
|
+
switch (character) {
|
50
|
+
case "d":
|
51
|
+
return "String.leftPad(this.getDate(), 2, '0') + ";
|
52
|
+
case "D":
|
53
|
+
return "Date.dayNames[this.getDay()].substring(0, 3) + ";
|
54
|
+
case "j":
|
55
|
+
return "this.getDate() + ";
|
56
|
+
case "l":
|
57
|
+
return "Date.dayNames[this.getDay()] + ";
|
58
|
+
case "S":
|
59
|
+
return "this.getSuffix() + ";
|
60
|
+
case "w":
|
61
|
+
return "this.getDay() + ";
|
62
|
+
case "z":
|
63
|
+
return "this.getDayOfYear() + ";
|
64
|
+
case "W":
|
65
|
+
return "this.getWeekOfYear() + ";
|
66
|
+
case "F":
|
67
|
+
return "Date.monthNames[this.getMonth()] + ";
|
68
|
+
case "m":
|
69
|
+
return "String.leftPad(this.getMonth() + 1, 2, '0') + ";
|
70
|
+
case "M":
|
71
|
+
return "Date.monthNames[this.getMonth()].substring(0, 3) + ";
|
72
|
+
case "n":
|
73
|
+
return "(this.getMonth() + 1) + ";
|
74
|
+
case "t":
|
75
|
+
return "this.getDaysInMonth() + ";
|
76
|
+
case "L":
|
77
|
+
return "(this.isLeapYear() ? 1 : 0) + ";
|
78
|
+
case "Y":
|
79
|
+
return "this.getFullYear() + ";
|
80
|
+
case "y":
|
81
|
+
return "('' + this.getFullYear()).substring(2, 4) + ";
|
82
|
+
case "a":
|
83
|
+
return "(this.getHours() < 12 ? 'am' : 'pm') + ";
|
84
|
+
case "A":
|
85
|
+
return "(this.getHours() < 12 ? 'AM' : 'PM') + ";
|
86
|
+
case "g":
|
87
|
+
return "((this.getHours() %12) ? this.getHours() % 12 : 12) + ";
|
88
|
+
case "G":
|
89
|
+
return "this.getHours() + ";
|
90
|
+
case "h":
|
91
|
+
return "String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + ";
|
92
|
+
case "H":
|
93
|
+
return "String.leftPad(this.getHours(), 2, '0') + ";
|
94
|
+
case "i":
|
95
|
+
return "String.leftPad(this.getMinutes(), 2, '0') + ";
|
96
|
+
case "s":
|
97
|
+
return "String.leftPad(this.getSeconds(), 2, '0') + ";
|
98
|
+
case "O":
|
99
|
+
return "this.getGMTOffset() + ";
|
100
|
+
case "T":
|
101
|
+
return "this.getTimezone() + ";
|
102
|
+
case "Z":
|
103
|
+
return "(this.getTimezoneOffset() * -60) + ";
|
104
|
+
default:
|
105
|
+
return "'" + String.escape(character) + "' + ";
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
Date.parseDate = function(input, format) {
|
110
|
+
if (Date.parseFunctions[format] == null) {
|
111
|
+
Date.createParser(format);
|
112
|
+
}
|
113
|
+
var func = Date.parseFunctions[format];
|
114
|
+
return Date[func](input);
|
115
|
+
}
|
116
|
+
|
117
|
+
Date.createParser = function(format) {
|
118
|
+
var funcName = "parse" + Date.parseFunctions.count++;
|
119
|
+
var regexNum = Date.parseRegexes.length;
|
120
|
+
var currentGroup = 1;
|
121
|
+
Date.parseFunctions[format] = funcName;
|
122
|
+
|
123
|
+
var code = "Date." + funcName + " = function(input){\n"
|
124
|
+
+ "var y = -1, m = -1, d = -1, h = -1, i = -1, s = -1;\n"
|
125
|
+
+ "var d = new Date();\n"
|
126
|
+
+ "y = d.getFullYear();\n"
|
127
|
+
+ "m = d.getMonth();\n"
|
128
|
+
+ "d = d.getDate();\n"
|
129
|
+
+ "var results = input.match(Date.parseRegexes[" + regexNum + "]);\n"
|
130
|
+
+ "if (results && results.length > 0) {"
|
131
|
+
var regex = "";
|
132
|
+
|
133
|
+
var special = false;
|
134
|
+
var ch = '';
|
135
|
+
for (var i = 0; i < format.length; ++i) {
|
136
|
+
ch = format.charAt(i);
|
137
|
+
if (!special && ch == "\\") {
|
138
|
+
special = true;
|
139
|
+
}
|
140
|
+
else if (special) {
|
141
|
+
special = false;
|
142
|
+
regex += String.escape(ch);
|
143
|
+
}
|
144
|
+
else {
|
145
|
+
obj = Date.formatCodeToRegex(ch, currentGroup);
|
146
|
+
currentGroup += obj.g;
|
147
|
+
regex += obj.s;
|
148
|
+
if (obj.g && obj.c) {
|
149
|
+
code += obj.c;
|
150
|
+
}
|
151
|
+
}
|
152
|
+
}
|
153
|
+
|
154
|
+
code += "if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"
|
155
|
+
+ "{return new Date(y, m, d, h, i, s);}\n"
|
156
|
+
+ "else if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"
|
157
|
+
+ "{return new Date(y, m, d, h, i);}\n"
|
158
|
+
+ "else if (y > 0 && m >= 0 && d > 0 && h >= 0)\n"
|
159
|
+
+ "{return new Date(y, m, d, h);}\n"
|
160
|
+
+ "else if (y > 0 && m >= 0 && d > 0)\n"
|
161
|
+
+ "{return new Date(y, m, d);}\n"
|
162
|
+
+ "else if (y > 0 && m >= 0)\n"
|
163
|
+
+ "{return new Date(y, m);}\n"
|
164
|
+
+ "else if (y > 0)\n"
|
165
|
+
+ "{return new Date(y);}\n"
|
166
|
+
+ "}return null;}";
|
167
|
+
|
168
|
+
Date.parseRegexes[regexNum] = new RegExp("^" + regex + "$");
|
169
|
+
eval(code);
|
170
|
+
}
|
171
|
+
|
172
|
+
Date.formatCodeToRegex = function(character, currentGroup) {
|
173
|
+
switch (character) {
|
174
|
+
case "D":
|
175
|
+
return {g:0,
|
176
|
+
c:null,
|
177
|
+
s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};
|
178
|
+
case "j":
|
179
|
+
case "d":
|
180
|
+
return {g:1,
|
181
|
+
c:"d = parseInt(results[" + currentGroup + "], 10);\n",
|
182
|
+
s:"(\\d{1,2})"};
|
183
|
+
case "l":
|
184
|
+
return {g:0,
|
185
|
+
c:null,
|
186
|
+
s:"(?:" + Date.dayNames.join("|") + ")"};
|
187
|
+
case "S":
|
188
|
+
return {g:0,
|
189
|
+
c:null,
|
190
|
+
s:"(?:st|nd|rd|th)"};
|
191
|
+
case "w":
|
192
|
+
return {g:0,
|
193
|
+
c:null,
|
194
|
+
s:"\\d"};
|
195
|
+
case "z":
|
196
|
+
return {g:0,
|
197
|
+
c:null,
|
198
|
+
s:"(?:\\d{1,3})"};
|
199
|
+
case "W":
|
200
|
+
return {g:0,
|
201
|
+
c:null,
|
202
|
+
s:"(?:\\d{2})"};
|
203
|
+
case "F":
|
204
|
+
return {g:1,
|
205
|
+
c:"m = parseInt(Date.monthNumbers[results[" + currentGroup + "].substring(0, 3)], 10);\n",
|
206
|
+
s:"(" + Date.monthNames.join("|") + ")"};
|
207
|
+
case "M":
|
208
|
+
return {g:1,
|
209
|
+
c:"m = parseInt(Date.monthNumbers[results[" + currentGroup + "]], 10);\n",
|
210
|
+
s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};
|
211
|
+
case "n":
|
212
|
+
case "m":
|
213
|
+
return {g:1,
|
214
|
+
c:"m = parseInt(results[" + currentGroup + "], 10) - 1;\n",
|
215
|
+
s:"(\\d{1,2})"};
|
216
|
+
case "t":
|
217
|
+
return {g:0,
|
218
|
+
c:null,
|
219
|
+
s:"\\d{1,2}"};
|
220
|
+
case "L":
|
221
|
+
return {g:0,
|
222
|
+
c:null,
|
223
|
+
s:"(?:1|0)"};
|
224
|
+
case "Y":
|
225
|
+
return {g:1,
|
226
|
+
c:"y = parseInt(results[" + currentGroup + "], 10);\n",
|
227
|
+
s:"(\\d{4})"};
|
228
|
+
case "y":
|
229
|
+
return {g:1,
|
230
|
+
c:"var ty = parseInt(results[" + currentGroup + "], 10);\n"
|
231
|
+
+ "y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",
|
232
|
+
s:"(\\d{1,2})"};
|
233
|
+
case "a":
|
234
|
+
return {g:1,
|
235
|
+
c:"if (results[" + currentGroup + "] == 'am') {\n"
|
236
|
+
+ "if (h == 12) { h = 0; }\n"
|
237
|
+
+ "} else { if (h < 12) { h += 12; }}",
|
238
|
+
s:"(am|pm)"};
|
239
|
+
case "A":
|
240
|
+
return {g:1,
|
241
|
+
c:"if (results[" + currentGroup + "] == 'AM') {\n"
|
242
|
+
+ "if (h == 12) { h = 0; }\n"
|
243
|
+
+ "} else { if (h < 12) { h += 12; }}",
|
244
|
+
s:"(AM|PM)"};
|
245
|
+
case "g":
|
246
|
+
case "G":
|
247
|
+
case "h":
|
248
|
+
case "H":
|
249
|
+
return {g:1,
|
250
|
+
c:"h = parseInt(results[" + currentGroup + "], 10);\n",
|
251
|
+
s:"(\\d{1,2})"};
|
252
|
+
case "i":
|
253
|
+
return {g:1,
|
254
|
+
c:"i = parseInt(results[" + currentGroup + "], 10);\n",
|
255
|
+
s:"(\\d{2})"};
|
256
|
+
case "s":
|
257
|
+
return {g:1,
|
258
|
+
c:"s = parseInt(results[" + currentGroup + "], 10);\n",
|
259
|
+
s:"(\\d{2})"};
|
260
|
+
case "O":
|
261
|
+
return {g:0,
|
262
|
+
c:null,
|
263
|
+
s:"[+-]\\d{4}"};
|
264
|
+
case "T":
|
265
|
+
return {g:0,
|
266
|
+
c:null,
|
267
|
+
s:"[A-Z]{3}"};
|
268
|
+
case "Z":
|
269
|
+
return {g:0,
|
270
|
+
c:null,
|
271
|
+
s:"[+-]\\d{1,5}"};
|
272
|
+
default:
|
273
|
+
return {g:0,
|
274
|
+
c:null,
|
275
|
+
s:String.escape(character)};
|
276
|
+
}
|
277
|
+
}
|
278
|
+
|
279
|
+
Date.prototype.getTimezone = function() {
|
280
|
+
return this.toString().replace(
|
281
|
+
/^.*? ([A-Z]{3}) [0-9]{4}.*$/, "$1").replace(
|
282
|
+
/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/, "$1$2$3");
|
283
|
+
}
|
284
|
+
|
285
|
+
Date.prototype.getGMTOffset = function() {
|
286
|
+
return (this.getTimezoneOffset() > 0 ? "-" : "+")
|
287
|
+
+ String.leftPad(Math.floor(this.getTimezoneOffset() / 60), 2, "0")
|
288
|
+
+ String.leftPad(this.getTimezoneOffset() % 60, 2, "0");
|
289
|
+
}
|
290
|
+
|
291
|
+
Date.prototype.getDayOfYear = function() {
|
292
|
+
var num = 0;
|
293
|
+
Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;
|
294
|
+
for (var i = 0; i < this.getMonth(); ++i) {
|
295
|
+
num += Date.daysInMonth[i];
|
296
|
+
}
|
297
|
+
return num + this.getDate() - 1;
|
298
|
+
}
|
299
|
+
|
300
|
+
Date.prototype.getWeekOfYear = function() {
|
301
|
+
// Skip to Thursday of this week
|
302
|
+
var now = this.getDayOfYear() + (4 - this.getDay());
|
303
|
+
// Find the first Thursday of the year
|
304
|
+
var jan1 = new Date(this.getFullYear(), 0, 1);
|
305
|
+
var then = (7 - jan1.getDay() + 4);
|
306
|
+
document.write(then);
|
307
|
+
return String.leftPad(((now - then) / 7) + 1, 2, "0");
|
308
|
+
}
|
309
|
+
|
310
|
+
Date.prototype.isLeapYear = function() {
|
311
|
+
var year = this.getFullYear();
|
312
|
+
return ((year & 3) == 0 && (year % 100 || (year % 400 == 0 && year)));
|
313
|
+
}
|
314
|
+
|
315
|
+
Date.prototype.getFirstDayOfMonth = function() {
|
316
|
+
var day = (this.getDay() - (this.getDate() - 1)) % 7;
|
317
|
+
return (day < 0) ? (day + 7) : day;
|
318
|
+
}
|
319
|
+
|
320
|
+
Date.prototype.getLastDayOfMonth = function() {
|
321
|
+
var day = (this.getDay() + (Date.daysInMonth[this.getMonth()] - this.getDate())) % 7;
|
322
|
+
return (day < 0) ? (day + 7) : day;
|
323
|
+
}
|
324
|
+
|
325
|
+
Date.prototype.getDaysInMonth = function() {
|
326
|
+
Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;
|
327
|
+
return Date.daysInMonth[this.getMonth()];
|
328
|
+
}
|
329
|
+
|
330
|
+
Date.prototype.getSuffix = function() {
|
331
|
+
switch (this.getDate()) {
|
332
|
+
case 1:
|
333
|
+
case 21:
|
334
|
+
case 31:
|
335
|
+
return "st";
|
336
|
+
case 2:
|
337
|
+
case 22:
|
338
|
+
return "nd";
|
339
|
+
case 3:
|
340
|
+
case 23:
|
341
|
+
return "rd";
|
342
|
+
default:
|
343
|
+
return "th";
|
344
|
+
}
|
345
|
+
}
|
346
|
+
|
347
|
+
String.escape = function(string) {
|
348
|
+
return string.replace(/('|\\)/g, "\\$1");
|
349
|
+
}
|
350
|
+
|
351
|
+
String.leftPad = function (val, size, ch) {
|
352
|
+
var result = new String(val);
|
353
|
+
if (ch == null) {
|
354
|
+
ch = " ";
|
355
|
+
}
|
356
|
+
while (result.length < size) {
|
357
|
+
result = ch + result;
|
358
|
+
}
|
359
|
+
return result;
|
360
|
+
}
|
361
|
+
|
362
|
+
Date.daysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31];
|
363
|
+
Date.monthNames =
|
364
|
+
["January",
|
365
|
+
"February",
|
366
|
+
"March",
|
367
|
+
"April",
|
368
|
+
"May",
|
369
|
+
"June",
|
370
|
+
"July",
|
371
|
+
"August",
|
372
|
+
"September",
|
373
|
+
"October",
|
374
|
+
"November",
|
375
|
+
"December"];
|
376
|
+
Date.dayNames =
|
377
|
+
["Sunday",
|
378
|
+
"Monday",
|
379
|
+
"Tuesday",
|
380
|
+
"Wednesday",
|
381
|
+
"Thursday",
|
382
|
+
"Friday",
|
383
|
+
"Saturday"];
|
384
|
+
Date.y2kYear = 50;
|
385
|
+
Date.monthNumbers = {
|
386
|
+
Jan:0,
|
387
|
+
Feb:1,
|
388
|
+
Mar:2,
|
389
|
+
Apr:3,
|
390
|
+
May:4,
|
391
|
+
Jun:5,
|
392
|
+
Jul:6,
|
393
|
+
Aug:7,
|
394
|
+
Sep:8,
|
395
|
+
Oct:9,
|
396
|
+
Nov:10,
|
397
|
+
Dec:11};
|
398
|
+
Date.patterns = {
|
399
|
+
ISO8601LongPattern:"Y-m-d H:i:s",
|
400
|
+
ISO8601ShortPattern:"Y-m-d",
|
401
|
+
ShortDatePattern: "n/j/Y",
|
402
|
+
LongDatePattern: "l, F d, Y",
|
403
|
+
FullDateTimePattern: "l, F d, Y g:i:s A",
|
404
|
+
MonthDayPattern: "F d",
|
405
|
+
ShortTimePattern: "g:i A",
|
406
|
+
LongTimePattern: "g:i:s A",
|
407
|
+
SortableDateTimePattern: "Y-m-d\\TH:i:s",
|
408
|
+
UniversalSortableDateTimePattern: "Y-m-d H:i:sO",
|
409
|
+
YearMonthPattern: "F, Y"};
|