diff --git a/bower.json b/bower.json index b18078f6fc..5b025791df 100644 --- a/bower.json +++ b/bower.json @@ -13,15 +13,16 @@ "tests" ], "dependencies": { - "blueimp-md5": "1.0.1", - "handlebars": "1.3.0", + "blueimp-md5": "~1.0.1", + "handlebars": "~1.3.0", "jcrop": "~0.9.12", "jquery": "~1.10.0", + "jsTimezoneDetect": "~1.0.5", "moment": "~2.8.3", - "select2": "3.4.8", + "select2": "~3.4.8", "zxcvbn": "*", - "snapjs": "2.0.0-rc1", + "snapjs": "~2.0.0-rc1", "strengthify": "*", - "underscore": "1.6.0" + "underscore": "~1.6.0" } } diff --git a/core/js/jstz.js b/core/js/jstz.js deleted file mode 100644 index 0f9abe8b78..0000000000 --- a/core/js/jstz.js +++ /dev/null @@ -1,358 +0,0 @@ -/** - * This script gives you the zone info key representing your device's time zone setting. - * - * @name jsTimezoneDetect - * @version 1.0.5 - * @author Jon Nylander - * @license MIT License - http://www.opensource.org/licenses/mit-license.php - * - * For usage and examples, visit: - * http://pellepim.bitbucket.org/jstz/ - * - * Copyright (c) Jon Nylander - */ - -/*jslint undef: true */ -/*global console, exports*/ - -(function(root) { - /** - * Namespace to hold all the code for timezone detection. - */ - var jstz = (function () { - 'use strict'; - var HEMISPHERE_SOUTH = 's', - - /** - * Gets the offset in minutes from UTC for a certain date. - * @param {Date} date - * @returns {Number} - */ - get_date_offset = function (date) { - var offset = -date.getTimezoneOffset(); - return (offset !== null ? offset : 0); - }, - - get_date = function (year, month, date) { - var d = new Date(); - if (year !== undefined) { - d.setFullYear(year); - } - d.setMonth(month); - d.setDate(date); - return d; - }, - - get_january_offset = function (year) { - return get_date_offset(get_date(year, 0 ,2)); - }, - - get_june_offset = function (year) { - return get_date_offset(get_date(year, 5, 2)); - }, - - /** - * Private method. - * Checks whether a given date is in daylight saving time. - * If the date supplied is after august, we assume that we're checking - * for southern hemisphere DST. - * @param {Date} date - * @returns {Boolean} - */ - date_is_dst = function (date) { - var is_southern = date.getMonth() > 7, - base_offset = is_southern ? get_june_offset(date.getFullYear()) : - get_january_offset(date.getFullYear()), - date_offset = get_date_offset(date), - is_west = base_offset < 0, - dst_offset = base_offset - date_offset; - - if (!is_west && !is_southern) { - return dst_offset < 0; - } - - return dst_offset !== 0; - }, - - /** - * This function does some basic calculations to create information about - * the user's timezone. It uses REFERENCE_YEAR as a solid year for which - * the script has been tested rather than depend on the year set by the - * client device. - * - * Returns a key that can be used to do lookups in jstz.olson.timezones. - * eg: "720,1,2". - * - * @returns {String} - */ - - lookup_key = function () { - var january_offset = get_january_offset(), - june_offset = get_june_offset(), - diff = january_offset - june_offset; - - if (diff < 0) { - return january_offset + ",1"; - } else if (diff > 0) { - return june_offset + ",1," + HEMISPHERE_SOUTH; - } - - return january_offset + ",0"; - }, - - /** - * Uses get_timezone_info() to formulate a key to use in the olson.timezones dictionary. - * - * Returns a primitive object on the format: - * {'timezone': TimeZone, 'key' : 'the key used to find the TimeZone object'} - * - * @returns Object - */ - determine = function () { - var key = lookup_key(); - return new jstz.TimeZone(jstz.olson.timezones[key]); - }, - - /** - * This object contains information on when daylight savings starts for - * different timezones. - * - * The list is short for a reason. Often we do not have to be very specific - * to single out the correct timezone. But when we do, this list comes in - * handy. - * - * Each value is a date denoting when daylight savings starts for that timezone. - */ - dst_start_for = function (tz_name) { - - var ru_pre_dst_change = new Date(2010, 6, 15, 1, 0, 0, 0), // In 2010 Russia had DST, this allows us to detect Russia :) - dst_starts = { - 'America/Denver': new Date(2011, 2, 13, 3, 0, 0, 0), - 'America/Mazatlan': new Date(2011, 3, 3, 3, 0, 0, 0), - 'America/Chicago': new Date(2011, 2, 13, 3, 0, 0, 0), - 'America/Mexico_City': new Date(2011, 3, 3, 3, 0, 0, 0), - 'America/Asuncion': new Date(2012, 9, 7, 3, 0, 0, 0), - 'America/Santiago': new Date(2012, 9, 3, 3, 0, 0, 0), - 'America/Campo_Grande': new Date(2012, 9, 21, 5, 0, 0, 0), - 'America/Montevideo': new Date(2011, 9, 2, 3, 0, 0, 0), - 'America/Sao_Paulo': new Date(2011, 9, 16, 5, 0, 0, 0), - 'America/Los_Angeles': new Date(2011, 2, 13, 8, 0, 0, 0), - 'America/Santa_Isabel': new Date(2011, 3, 5, 8, 0, 0, 0), - 'America/Havana': new Date(2012, 2, 10, 2, 0, 0, 0), - 'America/New_York': new Date(2012, 2, 10, 7, 0, 0, 0), - 'Europe/Helsinki': new Date(2013, 2, 31, 5, 0, 0, 0), - 'Pacific/Auckland': new Date(2011, 8, 26, 7, 0, 0, 0), - 'America/Halifax': new Date(2011, 2, 13, 6, 0, 0, 0), - 'America/Goose_Bay': new Date(2011, 2, 13, 2, 1, 0, 0), - 'America/Miquelon': new Date(2011, 2, 13, 5, 0, 0, 0), - 'America/Godthab': new Date(2011, 2, 27, 1, 0, 0, 0), - 'Europe/Moscow': ru_pre_dst_change, - 'Asia/Amman': new Date(2013, 2, 29, 1, 0, 0, 0), - 'Asia/Beirut': new Date(2013, 2, 31, 2, 0, 0, 0), - 'Asia/Damascus': new Date(2013, 3, 6, 2, 0, 0, 0), - 'Asia/Jerusalem': new Date(2013, 2, 29, 5, 0, 0, 0), - 'Asia/Yekaterinburg': ru_pre_dst_change, - 'Asia/Omsk': ru_pre_dst_change, - 'Asia/Krasnoyarsk': ru_pre_dst_change, - 'Asia/Irkutsk': ru_pre_dst_change, - 'Asia/Yakutsk': ru_pre_dst_change, - 'Asia/Vladivostok': ru_pre_dst_change, - 'Asia/Baku': new Date(2013, 2, 31, 4, 0, 0), - 'Asia/Yerevan': new Date(2013, 2, 31, 3, 0, 0), - 'Asia/Kamchatka': ru_pre_dst_change, - 'Asia/Gaza': new Date(2010, 2, 27, 4, 0, 0), - 'Africa/Cairo': new Date(2010, 4, 1, 3, 0, 0), - 'Europe/Minsk': ru_pre_dst_change, - 'Pacific/Apia': new Date(2010, 10, 1, 1, 0, 0, 0), - 'Pacific/Fiji': new Date(2010, 11, 1, 0, 0, 0), - 'Australia/Perth': new Date(2008, 10, 1, 1, 0, 0, 0) - }; - - return dst_starts[tz_name]; - }; - - return { - determine: determine, - date_is_dst: date_is_dst, - dst_start_for: dst_start_for - }; - }()); - - /** - * Simple object to perform ambiguity check and to return name of time zone. - */ - jstz.TimeZone = function (tz_name) { - 'use strict'; - /** - * The keys in this object are timezones that we know may be ambiguous after - * a preliminary scan through the olson_tz object. - * - * The array of timezones to compare must be in the order that daylight savings - * starts for the regions. - */ - var AMBIGUITIES = { - 'America/Denver': ['America/Denver', 'America/Mazatlan'], - 'America/Chicago': ['America/Chicago', 'America/Mexico_City'], - 'America/Santiago': ['America/Santiago', 'America/Asuncion', 'America/Campo_Grande'], - 'America/Montevideo': ['America/Montevideo', 'America/Sao_Paulo'], - 'Asia/Beirut': ['Asia/Amman', 'Asia/Jerusalem', 'Asia/Beirut', 'Europe/Helsinki','Asia/Damascus'], - 'Pacific/Auckland': ['Pacific/Auckland', 'Pacific/Fiji'], - 'America/Los_Angeles': ['America/Los_Angeles', 'America/Santa_Isabel'], - 'America/New_York': ['America/Havana', 'America/New_York'], - 'America/Halifax': ['America/Goose_Bay', 'America/Halifax'], - 'America/Godthab': ['America/Miquelon', 'America/Godthab'], - 'Asia/Dubai': ['Europe/Moscow'], - 'Asia/Dhaka': ['Asia/Yekaterinburg'], - 'Asia/Jakarta': ['Asia/Omsk'], - 'Asia/Shanghai': ['Asia/Krasnoyarsk', 'Australia/Perth'], - 'Asia/Tokyo': ['Asia/Irkutsk'], - 'Australia/Brisbane': ['Asia/Yakutsk'], - 'Pacific/Noumea': ['Asia/Vladivostok'], - 'Pacific/Tarawa': ['Asia/Kamchatka', 'Pacific/Fiji'], - 'Pacific/Tongatapu': ['Pacific/Apia'], - 'Asia/Baghdad': ['Europe/Minsk'], - 'Asia/Baku': ['Asia/Yerevan','Asia/Baku'], - 'Africa/Johannesburg': ['Asia/Gaza', 'Africa/Cairo'] - }, - - timezone_name = tz_name, - - /** - * Checks if a timezone has possible ambiguities. I.e timezones that are similar. - * - * For example, if the preliminary scan determines that we're in America/Denver. - * We double check here that we're really there and not in America/Mazatlan. - * - * This is done by checking known dates for when daylight savings start for different - * timezones during 2010 and 2011. - */ - ambiguity_check = function () { - var ambiguity_list = AMBIGUITIES[timezone_name], - length = ambiguity_list.length, - i = 0, - tz = ambiguity_list[0]; - - for (; i < length; i += 1) { - tz = ambiguity_list[i]; - - if (jstz.date_is_dst(jstz.dst_start_for(tz))) { - timezone_name = tz; - return; - } - } - }, - - /** - * Checks if it is possible that the timezone is ambiguous. - */ - is_ambiguous = function () { - return typeof (AMBIGUITIES[timezone_name]) !== 'undefined'; - }; - - if (is_ambiguous()) { - ambiguity_check(); - } - - return { - name: function () { - return timezone_name; - } - }; - }; - - jstz.olson = {}; - - /* - * The keys in this dictionary are comma separated as such: - * - * First the offset compared to UTC time in minutes. - * - * Then a flag which is 0 if the timezone does not take daylight savings into account and 1 if it - * does. - * - * Thirdly an optional 's' signifies that the timezone is in the southern hemisphere, - * only interesting for timezones with DST. - * - * The mapped arrays is used for constructing the jstz.TimeZone object from within - * jstz.determine_timezone(); - */ - jstz.olson.timezones = { - '-720,0' : 'Pacific/Majuro', - '-660,0' : 'Pacific/Pago_Pago', - '-600,1' : 'America/Adak', - '-600,0' : 'Pacific/Honolulu', - '-570,0' : 'Pacific/Marquesas', - '-540,0' : 'Pacific/Gambier', - '-540,1' : 'America/Anchorage', - '-480,1' : 'America/Los_Angeles', - '-480,0' : 'Pacific/Pitcairn', - '-420,0' : 'America/Phoenix', - '-420,1' : 'America/Denver', - '-360,0' : 'America/Guatemala', - '-360,1' : 'America/Chicago', - '-360,1,s' : 'Pacific/Easter', - '-300,0' : 'America/Bogota', - '-300,1' : 'America/New_York', - '-270,0' : 'America/Caracas', - '-240,1' : 'America/Halifax', - '-240,0' : 'America/Santo_Domingo', - '-240,1,s' : 'America/Santiago', - '-210,1' : 'America/St_Johns', - '-180,1' : 'America/Godthab', - '-180,0' : 'America/Argentina/Buenos_Aires', - '-180,1,s' : 'America/Montevideo', - '-120,0' : 'America/Noronha', - '-120,1' : 'America/Noronha', - '-60,1' : 'Atlantic/Azores', - '-60,0' : 'Atlantic/Cape_Verde', - '0,0' : 'UTC', - '0,1' : 'Europe/London', - '60,1' : 'Europe/Berlin', - '60,0' : 'Africa/Lagos', - '60,1,s' : 'Africa/Windhoek', - '120,1' : 'Asia/Beirut', - '120,0' : 'Africa/Johannesburg', - '180,0' : 'Asia/Baghdad', - '180,1' : 'Europe/Moscow', - '210,1' : 'Asia/Tehran', - '240,0' : 'Asia/Dubai', - '240,1' : 'Asia/Baku', - '270,0' : 'Asia/Kabul', - '300,1' : 'Asia/Yekaterinburg', - '300,0' : 'Asia/Karachi', - '330,0' : 'Asia/Kolkata', - '345,0' : 'Asia/Kathmandu', - '360,0' : 'Asia/Dhaka', - '360,1' : 'Asia/Omsk', - '390,0' : 'Asia/Rangoon', - '420,1' : 'Asia/Krasnoyarsk', - '420,0' : 'Asia/Jakarta', - '480,0' : 'Asia/Shanghai', - '480,1' : 'Asia/Irkutsk', - '525,0' : 'Australia/Eucla', - '525,1,s' : 'Australia/Eucla', - '540,1' : 'Asia/Yakutsk', - '540,0' : 'Asia/Tokyo', - '570,0' : 'Australia/Darwin', - '570,1,s' : 'Australia/Adelaide', - '600,0' : 'Australia/Brisbane', - '600,1' : 'Asia/Vladivostok', - '600,1,s' : 'Australia/Sydney', - '630,1,s' : 'Australia/Lord_Howe', - '660,1' : 'Asia/Kamchatka', - '660,0' : 'Pacific/Noumea', - '690,0' : 'Pacific/Norfolk', - '720,1,s' : 'Pacific/Auckland', - '720,0' : 'Pacific/Tarawa', - '765,1,s' : 'Pacific/Chatham', - '780,0' : 'Pacific/Tongatapu', - '780,1,s' : 'Pacific/Apia', - '840,0' : 'Pacific/Kiritimati' - }; - - if (typeof exports !== 'undefined') { - exports.jstz = jstz; - } else { - root.jstz = jstz; - } -})(this); diff --git a/core/templates/login.php b/core/templates/login.php index 425c3db75c..86a1b605df 100644 --- a/core/templates/login.php +++ b/core/templates/login.php @@ -1,5 +1,5 @@ - +
diff --git a/core/vendor/.gitignore b/core/vendor/.gitignore index e76afeb476..36748f845a 100644 --- a/core/vendor/.gitignore +++ b/core/vendor/.gitignore @@ -1,6 +1,5 @@ test/ src/ -.bower.json bower.json .gitignore .jshintrc @@ -8,12 +7,14 @@ bower.json CHANGELOG* Gemfile gruntfile.js +Gruntfile.js Makefile package.json README* # underscore underscore/** +!underscore/.bower.json !underscore/underscore.js !underscore/LICENSE @@ -28,10 +29,12 @@ moment/benchmarks moment/locale moment/min/** moment/moment.js +moment/scripts !moment/min/moment-with-locales.js # jquery jquery/** +!jquery/.bower.json !jquery/jquery* !jquery/MIT-LICENSE.txt @@ -42,12 +45,17 @@ jcrop/css/jquery.Jcrop.min.css jcrop/js/** !jcrop/js/jquery.Jcrop.js +# jsTimezoneDetect +jsTimezoneDetect/jstz.min.js + # handlebars handlebars/** +!handlebars/.bower.json !handlebars/handlebars.js # select2 select2/** +!select2/.bower.json !select2/select2.js !select2/select2.css !select2/select2.png @@ -57,6 +65,7 @@ select2/** #zxcvbn zxcvbn/** +!zxcvbn/.bower.json !zxcvbn/zxcvbn.js !zxcvbn/LICENSE.txt diff --git a/core/vendor/blueimp-md5/.bower.json b/core/vendor/blueimp-md5/.bower.json new file mode 100644 index 0000000000..89288baad7 --- /dev/null +++ b/core/vendor/blueimp-md5/.bower.json @@ -0,0 +1,53 @@ +{ + "name": "blueimp-md5", + "version": "1.0.3", + "title": "JavaScript MD5", + "description": "JavaScript MD5 implementation.", + "keywords": [ + "javascript", + "md5" + ], + "homepage": "https://github.com/blueimp/JavaScript-MD5", + "author": { + "name": "Sebastian Tschan", + "url": "https://blueimp.net" + }, + "maintainers": [ + { + "name": "Sebastian Tschan", + "url": "https://blueimp.net" + } + ], + "contributors": [ + { + "name": "Paul Johnston", + "url": "http://pajhome.org.uk/crypt/md5" + } + ], + "repository": { + "type": "git", + "url": "git://github.com/blueimp/JavaScript-MD5.git" + }, + "bugs": "https://github.com/blueimp/JavaScript-MD5/issues", + "licenses": [ + { + "type": "MIT", + "url": "http://www.opensource.org/licenses/MIT" + } + ], + "devDependencies": { + "mocha": "1.11.0", + "expect.js": "0.2.0", + "uglify-js": "2.3.6" + }, + "main": "js/md5.js", + "_release": "1.0.3", + "_resolution": { + "type": "version", + "tag": "1.0.3", + "commit": "299407012031ac6f60f832d3b5fa975fcb88b550" + }, + "_source": "git://github.com/blueimp/JavaScript-MD5.git", + "_target": "~1.0.1", + "_originalSource": "blueimp-md5" +} \ No newline at end of file diff --git a/core/vendor/handlebars/.bower.json b/core/vendor/handlebars/.bower.json new file mode 100644 index 0000000000..2d17a2faac --- /dev/null +++ b/core/vendor/handlebars/.bower.json @@ -0,0 +1,16 @@ +{ + "name": "handlebars", + "version": "1.3.0", + "main": "handlebars.js", + "dependencies": {}, + "homepage": "https://github.com/components/handlebars.js", + "_release": "1.3.0", + "_resolution": { + "type": "version", + "tag": "v1.3.0", + "commit": "ddd21a44be399ae4de486ddd868bacf84e92b9c4" + }, + "_source": "git://github.com/components/handlebars.js.git", + "_target": "~1.3.0", + "_originalSource": "handlebars" +} \ No newline at end of file diff --git a/core/vendor/jcrop/.bower.json b/core/vendor/jcrop/.bower.json new file mode 100644 index 0000000000..4fba44732c --- /dev/null +++ b/core/vendor/jcrop/.bower.json @@ -0,0 +1,14 @@ +{ + "name": "jcrop", + "homepage": "https://github.com/tapmodo/Jcrop", + "version": "0.9.12", + "_release": "0.9.12", + "_resolution": { + "type": "version", + "tag": "v0.9.12", + "commit": "1902fbc6afa14481dc019a17e0dcb7d62b808a98" + }, + "_source": "git://github.com/tapmodo/Jcrop.git", + "_target": "~0.9.12", + "_originalSource": "jcrop" +} \ No newline at end of file diff --git a/core/vendor/jquery/.bower.json b/core/vendor/jquery/.bower.json new file mode 100644 index 0000000000..72b99da709 --- /dev/null +++ b/core/vendor/jquery/.bower.json @@ -0,0 +1,21 @@ +{ + "name": "jquery", + "version": "1.10.2", + "description": "jQuery component", + "keywords": [ + "jquery", + "component" + ], + "main": "jquery.js", + "license": "MIT", + "homepage": "https://github.com/jquery/jquery", + "_release": "1.10.2", + "_resolution": { + "type": "version", + "tag": "1.10.2", + "commit": "16b079b164d62bd807c612806842a13bf9b04d17" + }, + "_source": "git://github.com/jquery/jquery.git", + "_target": "~1.10.0", + "_originalSource": "jquery" +} \ No newline at end of file diff --git a/core/vendor/jsTimezoneDetect/.bower.json b/core/vendor/jsTimezoneDetect/.bower.json new file mode 100644 index 0000000000..2a3668ff30 --- /dev/null +++ b/core/vendor/jsTimezoneDetect/.bower.json @@ -0,0 +1,23 @@ +{ + "name": "jstzdetect", + "version": "1.0.6", + "main": "jstz.min.js", + "ignore": [ + "**/.*", + "node_modules", + "components", + "bower_components", + "test", + "tests" + ], + "homepage": "https://github.com/HenningM/jstimezonedetect", + "_release": "1.0.6", + "_resolution": { + "type": "version", + "tag": "v1.0.6", + "commit": "bd595ed253292934991a414979007f3d51a1547d" + }, + "_source": "git://github.com/HenningM/jstimezonedetect.git", + "_target": "~1.0.5", + "_originalSource": "jsTimezoneDetect" +} \ No newline at end of file diff --git a/core/vendor/jsTimezoneDetect/LICENCE.txt b/core/vendor/jsTimezoneDetect/LICENCE.txt new file mode 100644 index 0000000000..c48af16c64 --- /dev/null +++ b/core/vendor/jsTimezoneDetect/LICENCE.txt @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2012 Jon Nylander, project maintained at +https://bitbucket.org/pellepim/jstimezonedetect + +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. \ No newline at end of file diff --git a/core/vendor/jsTimezoneDetect/jstz.js b/core/vendor/jsTimezoneDetect/jstz.js new file mode 100644 index 0000000000..6f38183f85 --- /dev/null +++ b/core/vendor/jsTimezoneDetect/jstz.js @@ -0,0 +1,358 @@ +/** + * This script gives you the zone info key representing your device's time zone setting. + * + * @name jsTimezoneDetect + * @version 1.0.5 + * @author Jon Nylander + * @license MIT License - http://www.opensource.org/licenses/mit-license.php + * + * For usage and examples, visit: + * http://pellepim.bitbucket.org/jstz/ + * + * Copyright (c) Jon Nylander + */ + +/*jslint undef: true */ +/*global console, exports*/ + +(function(root) { + /** + * Namespace to hold all the code for timezone detection. + */ + var jstz = (function () { + 'use strict'; + var HEMISPHERE_SOUTH = 's', + + /** + * Gets the offset in minutes from UTC for a certain date. + * @param {Date} date + * @returns {Number} + */ + get_date_offset = function (date) { + var offset = -date.getTimezoneOffset(); + return (offset !== null ? offset : 0); + }, + + get_date = function (year, month, date) { + var d = new Date(); + if (year !== undefined) { + d.setFullYear(year); + } + d.setMonth(month); + d.setDate(date); + return d; + }, + + get_january_offset = function (year) { + return get_date_offset(get_date(year, 0 ,2)); + }, + + get_june_offset = function (year) { + return get_date_offset(get_date(year, 5, 2)); + }, + + /** + * Private method. + * Checks whether a given date is in daylight saving time. + * If the date supplied is after august, we assume that we're checking + * for southern hemisphere DST. + * @param {Date} date + * @returns {Boolean} + */ + date_is_dst = function (date) { + var is_southern = date.getMonth() > 7, + base_offset = is_southern ? get_june_offset(date.getFullYear()) : + get_january_offset(date.getFullYear()), + date_offset = get_date_offset(date), + is_west = base_offset < 0, + dst_offset = base_offset - date_offset; + + if (!is_west && !is_southern) { + return dst_offset < 0; + } + + return dst_offset !== 0; + }, + + /** + * This function does some basic calculations to create information about + * the user's timezone. It uses REFERENCE_YEAR as a solid year for which + * the script has been tested rather than depend on the year set by the + * client device. + * + * Returns a key that can be used to do lookups in jstz.olson.timezones. + * eg: "720,1,2". + * + * @returns {String} + */ + + lookup_key = function () { + var january_offset = get_january_offset(), + june_offset = get_june_offset(), + diff = january_offset - june_offset; + + if (diff < 0) { + return january_offset + ",1"; + } else if (diff > 0) { + return june_offset + ",1," + HEMISPHERE_SOUTH; + } + + return january_offset + ",0"; + }, + + /** + * Uses get_timezone_info() to formulate a key to use in the olson.timezones dictionary. + * + * Returns a primitive object on the format: + * {'timezone': TimeZone, 'key' : 'the key used to find the TimeZone object'} + * + * @returns Object + */ + determine = function () { + var key = lookup_key(); + return new jstz.TimeZone(jstz.olson.timezones[key]); + }, + + /** + * This object contains information on when daylight savings starts for + * different timezones. + * + * The list is short for a reason. Often we do not have to be very specific + * to single out the correct timezone. But when we do, this list comes in + * handy. + * + * Each value is a date denoting when daylight savings starts for that timezone. + */ + dst_start_for = function (tz_name) { + + var ru_pre_dst_change = new Date(2010, 6, 15, 1, 0, 0, 0), // In 2010 Russia had DST, this allows us to detect Russia :) + dst_starts = { + 'America/Denver': new Date(2011, 2, 13, 3, 0, 0, 0), + 'America/Mazatlan': new Date(2011, 3, 3, 3, 0, 0, 0), + 'America/Chicago': new Date(2011, 2, 13, 3, 0, 0, 0), + 'America/Mexico_City': new Date(2011, 3, 3, 3, 0, 0, 0), + 'America/Asuncion': new Date(2012, 9, 7, 3, 0, 0, 0), + 'America/Santiago': new Date(2012, 9, 3, 3, 0, 0, 0), + 'America/Campo_Grande': new Date(2012, 9, 21, 5, 0, 0, 0), + 'America/Montevideo': new Date(2011, 9, 2, 3, 0, 0, 0), + 'America/Sao_Paulo': new Date(2011, 9, 16, 5, 0, 0, 0), + 'America/Los_Angeles': new Date(2011, 2, 13, 8, 0, 0, 0), + 'America/Santa_Isabel': new Date(2011, 3, 5, 8, 0, 0, 0), + 'America/Havana': new Date(2012, 2, 10, 2, 0, 0, 0), + 'America/New_York': new Date(2012, 2, 10, 7, 0, 0, 0), + 'Europe/Helsinki': new Date(2013, 2, 31, 5, 0, 0, 0), + 'Pacific/Auckland': new Date(2011, 8, 26, 7, 0, 0, 0), + 'America/Halifax': new Date(2011, 2, 13, 6, 0, 0, 0), + 'America/Goose_Bay': new Date(2011, 2, 13, 2, 1, 0, 0), + 'America/Miquelon': new Date(2011, 2, 13, 5, 0, 0, 0), + 'America/Godthab': new Date(2011, 2, 27, 1, 0, 0, 0), + 'Europe/Moscow': ru_pre_dst_change, + 'Asia/Amman': new Date(2013, 2, 29, 1, 0, 0, 0), + 'Asia/Beirut': new Date(2013, 2, 31, 2, 0, 0, 0), + 'Asia/Damascus': new Date(2013, 3, 6, 2, 0, 0, 0), + 'Asia/Jerusalem': new Date(2013, 2, 29, 5, 0, 0, 0), + 'Asia/Yekaterinburg': ru_pre_dst_change, + 'Asia/Omsk': ru_pre_dst_change, + 'Asia/Krasnoyarsk': ru_pre_dst_change, + 'Asia/Irkutsk': ru_pre_dst_change, + 'Asia/Yakutsk': ru_pre_dst_change, + 'Asia/Vladivostok': ru_pre_dst_change, + 'Asia/Baku': new Date(2013, 2, 31, 4, 0, 0), + 'Asia/Yerevan': new Date(2013, 2, 31, 3, 0, 0), + 'Asia/Kamchatka': ru_pre_dst_change, + 'Asia/Gaza': new Date(2010, 2, 27, 4, 0, 0), + 'Africa/Cairo': new Date(2010, 4, 1, 3, 0, 0), + 'Europe/Minsk': ru_pre_dst_change, + 'Pacific/Apia': new Date(2010, 10, 1, 1, 0, 0, 0), + 'Pacific/Fiji': new Date(2010, 11, 1, 0, 0, 0), + 'Australia/Perth': new Date(2008, 10, 1, 1, 0, 0, 0) + }; + + return dst_starts[tz_name]; + }; + + return { + determine: determine, + date_is_dst: date_is_dst, + dst_start_for: dst_start_for + }; + }()); + + /** + * Simple object to perform ambiguity check and to return name of time zone. + */ + jstz.TimeZone = function (tz_name) { + 'use strict'; + /** + * The keys in this object are timezones that we know may be ambiguous after + * a preliminary scan through the olson_tz object. + * + * The array of timezones to compare must be in the order that daylight savings + * starts for the regions. + */ + var AMBIGUITIES = { + 'America/Denver': ['America/Denver', 'America/Mazatlan'], + 'America/Chicago': ['America/Chicago', 'America/Mexico_City'], + 'America/Santiago': ['America/Santiago', 'America/Asuncion', 'America/Campo_Grande'], + 'America/Montevideo': ['America/Montevideo', 'America/Sao_Paulo'], + 'Asia/Beirut': ['Asia/Amman', 'Asia/Jerusalem', 'Asia/Beirut', 'Europe/Helsinki','Asia/Damascus'], + 'Pacific/Auckland': ['Pacific/Auckland', 'Pacific/Fiji'], + 'America/Los_Angeles': ['America/Los_Angeles', 'America/Santa_Isabel'], + 'America/New_York': ['America/Havana', 'America/New_York'], + 'America/Halifax': ['America/Goose_Bay', 'America/Halifax'], + 'America/Godthab': ['America/Miquelon', 'America/Godthab'], + 'Asia/Dubai': ['Europe/Moscow'], + 'Asia/Dhaka': ['Asia/Yekaterinburg'], + 'Asia/Jakarta': ['Asia/Omsk'], + 'Asia/Shanghai': ['Asia/Krasnoyarsk', 'Australia/Perth'], + 'Asia/Tokyo': ['Asia/Irkutsk'], + 'Australia/Brisbane': ['Asia/Yakutsk'], + 'Pacific/Noumea': ['Asia/Vladivostok'], + 'Pacific/Tarawa': ['Asia/Kamchatka', 'Pacific/Fiji'], + 'Pacific/Tongatapu': ['Pacific/Apia'], + 'Asia/Baghdad': ['Europe/Minsk'], + 'Asia/Baku': ['Asia/Yerevan','Asia/Baku'], + 'Africa/Johannesburg': ['Asia/Gaza', 'Africa/Cairo'] + }, + + timezone_name = tz_name, + + /** + * Checks if a timezone has possible ambiguities. I.e timezones that are similar. + * + * For example, if the preliminary scan determines that we're in America/Denver. + * We double check here that we're really there and not in America/Mazatlan. + * + * This is done by checking known dates for when daylight savings start for different + * timezones during 2010 and 2011. + */ + ambiguity_check = function () { + var ambiguity_list = AMBIGUITIES[timezone_name], + length = ambiguity_list.length, + i = 0, + tz = ambiguity_list[0]; + + for (; i < length; i += 1) { + tz = ambiguity_list[i]; + + if (jstz.date_is_dst(jstz.dst_start_for(tz))) { + timezone_name = tz; + return; + } + } + }, + + /** + * Checks if it is possible that the timezone is ambiguous. + */ + is_ambiguous = function () { + return typeof (AMBIGUITIES[timezone_name]) !== 'undefined'; + }; + + if (is_ambiguous()) { + ambiguity_check(); + } + + return { + name: function () { + return timezone_name; + } + }; + }; + + jstz.olson = {}; + + /* + * The keys in this dictionary are comma separated as such: + * + * First the offset compared to UTC time in minutes. + * + * Then a flag which is 0 if the timezone does not take daylight savings into account and 1 if it + * does. + * + * Thirdly an optional 's' signifies that the timezone is in the southern hemisphere, + * only interesting for timezones with DST. + * + * The mapped arrays is used for constructing the jstz.TimeZone object from within + * jstz.determine_timezone(); + */ + jstz.olson.timezones = { + '-720,0' : 'Pacific/Majuro', + '-660,0' : 'Pacific/Pago_Pago', + '-600,1' : 'America/Adak', + '-600,0' : 'Pacific/Honolulu', + '-570,0' : 'Pacific/Marquesas', + '-540,0' : 'Pacific/Gambier', + '-540,1' : 'America/Anchorage', + '-480,1' : 'America/Los_Angeles', + '-480,0' : 'Pacific/Pitcairn', + '-420,0' : 'America/Phoenix', + '-420,1' : 'America/Denver', + '-360,0' : 'America/Guatemala', + '-360,1' : 'America/Chicago', + '-360,1,s' : 'Pacific/Easter', + '-300,0' : 'America/Bogota', + '-300,1' : 'America/New_York', + '-270,0' : 'America/Caracas', + '-240,1' : 'America/Halifax', + '-240,0' : 'America/Santo_Domingo', + '-240,1,s' : 'America/Santiago', + '-210,1' : 'America/St_Johns', + '-180,1' : 'America/Godthab', + '-180,0' : 'America/Argentina/Buenos_Aires', + '-180,1,s' : 'America/Montevideo', + '-120,0' : 'America/Noronha', + '-120,1' : 'America/Noronha', + '-60,1' : 'Atlantic/Azores', + '-60,0' : 'Atlantic/Cape_Verde', + '0,0' : 'Etc/UTC', + '0,1' : 'Europe/London', + '60,1' : 'Europe/Berlin', + '60,0' : 'Africa/Lagos', + '60,1,s' : 'Africa/Windhoek', + '120,1' : 'Asia/Beirut', + '120,0' : 'Africa/Johannesburg', + '180,0' : 'Asia/Baghdad', + '180,1' : 'Europe/Moscow', + '210,1' : 'Asia/Tehran', + '240,0' : 'Asia/Dubai', + '240,1' : 'Asia/Baku', + '270,0' : 'Asia/Kabul', + '300,1' : 'Asia/Yekaterinburg', + '300,0' : 'Asia/Karachi', + '330,0' : 'Asia/Kolkata', + '345,0' : 'Asia/Kathmandu', + '360,0' : 'Asia/Dhaka', + '360,1' : 'Asia/Omsk', + '390,0' : 'Asia/Rangoon', + '420,1' : 'Asia/Krasnoyarsk', + '420,0' : 'Asia/Jakarta', + '480,0' : 'Asia/Shanghai', + '480,1' : 'Asia/Irkutsk', + '525,0' : 'Australia/Eucla', + '525,1,s' : 'Australia/Eucla', + '540,1' : 'Asia/Yakutsk', + '540,0' : 'Asia/Tokyo', + '570,0' : 'Australia/Darwin', + '570,1,s' : 'Australia/Adelaide', + '600,0' : 'Australia/Brisbane', + '600,1' : 'Asia/Vladivostok', + '600,1,s' : 'Australia/Sydney', + '630,1,s' : 'Australia/Lord_Howe', + '660,1' : 'Asia/Kamchatka', + '660,0' : 'Pacific/Noumea', + '690,0' : 'Pacific/Norfolk', + '720,1,s' : 'Pacific/Auckland', + '720,0' : 'Pacific/Tarawa', + '765,1,s' : 'Pacific/Chatham', + '780,0' : 'Pacific/Tongatapu', + '780,1,s' : 'Pacific/Apia', + '840,0' : 'Pacific/Kiritimati' + }; + + if (typeof exports !== 'undefined') { + exports.jstz = jstz; + } else { + root.jstz = jstz; + } +})(this); diff --git a/core/vendor/moment/.bower.json b/core/vendor/moment/.bower.json new file mode 100644 index 0000000000..e9bdc9bda6 --- /dev/null +++ b/core/vendor/moment/.bower.json @@ -0,0 +1,30 @@ +{ + "name": "moment", + "version": "2.8.4", + "main": "moment.js", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests", + "tasks", + "component.json", + "composer.json", + "CONTRIBUTING.md", + "ender.js", + "Gruntfile.js", + "package.js", + "package.json" + ], + "homepage": "https://github.com/moment/moment", + "_release": "2.8.4", + "_resolution": { + "type": "version", + "tag": "2.8.4", + "commit": "7ae59de2fc3a1298ae829f6369fe3589b2cd87f8" + }, + "_source": "git://github.com/moment/moment.git", + "_target": "~2.8.3", + "_originalSource": "moment" +} \ No newline at end of file diff --git a/core/vendor/select2/.bower.json b/core/vendor/select2/.bower.json new file mode 100644 index 0000000000..0c915721f1 --- /dev/null +++ b/core/vendor/select2/.bower.json @@ -0,0 +1,24 @@ +{ + "name": "select2", + "version": "3.4.8", + "main": [ + "select2.js", + "select2.css", + "select2.png", + "select2x2.png", + "select2-spinner.gif" + ], + "dependencies": { + "jquery": ">= 1.7.1" + }, + "homepage": "https://github.com/ivaynberg/select2", + "_release": "3.4.8", + "_resolution": { + "type": "version", + "tag": "3.4.8", + "commit": "ee0f36a47e2133b23330fbec740b2d3a17a0d9c2" + }, + "_source": "git://github.com/ivaynberg/select2.git", + "_target": "~3.4.8", + "_originalSource": "select2" +} \ No newline at end of file diff --git a/core/vendor/snapjs/.bower.json b/core/vendor/snapjs/.bower.json new file mode 100644 index 0000000000..b10afbb2d8 --- /dev/null +++ b/core/vendor/snapjs/.bower.json @@ -0,0 +1,31 @@ +{ + "name": "Snap.js", + "description": "A Library for creating beautiful mobile shelfs in Javascript (Facebook and Path style side menus)", + "version": "2.0.0-rc1", + "author": "Jacob Kelley ", + "keywords": [ + "mobile shelfs", + "nav", + "menu", + "mobile", + "side menu" + ], + "license": "MIT", + "main": [ + "./dist/latest/snap.js", + "./dist/latest/snap.css" + ], + "scripts": [ + "snap.js" + ], + "homepage": "https://github.com/jakiestfu/Snap.js", + "_release": "2.0.0-rc1", + "_resolution": { + "type": "version", + "tag": "v2.0.0-rc1", + "commit": "15c77da330d9e8ca580a922bc748d88553838a73" + }, + "_source": "git://github.com/jakiestfu/Snap.js.git", + "_target": "~2.0.0-rc1", + "_originalSource": "snapjs" +} \ No newline at end of file diff --git a/core/vendor/strengthify/.bower.json b/core/vendor/strengthify/.bower.json new file mode 100644 index 0000000000..abba0d7e00 --- /dev/null +++ b/core/vendor/strengthify/.bower.json @@ -0,0 +1,19 @@ +{ + "name": "strengthify", + "homepage": "https://github.com/MorrisJobke/strengthify", + "authors": [ + "Morris Jobke " + ], + "description": "Combine jQuery and zxcvbn to create a password strength meter.", + "main": "jquery.strengthify.js", + "license": "MIT", + "_release": "f1dd3eaf28", + "_resolution": { + "type": "branch", + "branch": "master", + "commit": "f1dd3eaf289be559885325a6585f6dd6ae2fa8c3" + }, + "_source": "git://github.com/MorrisJobke/strengthify.git", + "_target": "*", + "_originalSource": "strengthify" +} \ No newline at end of file diff --git a/core/vendor/underscore/.bower.json b/core/vendor/underscore/.bower.json new file mode 100644 index 0000000000..2389206fd4 --- /dev/null +++ b/core/vendor/underscore/.bower.json @@ -0,0 +1,33 @@ +{ + "name": "underscore", + "version": "1.6.0", + "main": "underscore.js", + "keywords": [ + "util", + "functional", + "server", + "client", + "browser" + ], + "ignore": [ + "underscore-min.js", + "docs", + "test", + "*.yml", + "*.map", + "CNAME", + "index.html", + "favicon.ico", + "CONTRIBUTING.md" + ], + "homepage": "https://github.com/jashkenas/underscore", + "_release": "1.6.0", + "_resolution": { + "type": "version", + "tag": "1.6.0", + "commit": "1f4bf626f23a99f7a676f5076dc1b1475554c8f7" + }, + "_source": "git://github.com/jashkenas/underscore.git", + "_target": "~1.6.0", + "_originalSource": "underscore" +} \ No newline at end of file diff --git a/core/vendor/zxcvbn/.bower.json b/core/vendor/zxcvbn/.bower.json new file mode 100644 index 0000000000..8c86cd8c0e --- /dev/null +++ b/core/vendor/zxcvbn/.bower.json @@ -0,0 +1,14 @@ +{ + "name": "zxcvbn", + "main": "zxcvbn.js", + "homepage": "https://github.com/lowe/zxcvbn", + "_release": "f2a8cda13d", + "_resolution": { + "type": "branch", + "branch": "master", + "commit": "f2a8cda13d247f4956d3334ee7cbae80a2c61a97" + }, + "_source": "git://github.com/lowe/zxcvbn.git", + "_target": "*", + "_originalSource": "zxcvbn" +} \ No newline at end of file