Joe Germuska
11 years ago
104 changed files with 18950 additions and 0 deletions
@ -0,0 +1,5 @@ |
|||||||
|
.buildpath |
||||||
|
.project |
||||||
|
.settings |
||||||
|
*.DS_Store |
||||||
|
.DS_Store* |
@ -0,0 +1,156 @@ |
|||||||
|
/* * DEVICE AND BROWSER DETECTION |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined' && typeof VMM.Browser == 'undefined') { |
||||||
|
|
||||||
|
VMM.Browser = { |
||||||
|
init: function () { |
||||||
|
this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; |
||||||
|
this.version = this.searchVersion(navigator.userAgent) |
||||||
|
|| this.searchVersion(navigator.appVersion) |
||||||
|
|| "an unknown version"; |
||||||
|
this.OS = this.searchString(this.dataOS) || "an unknown OS"; |
||||||
|
this.device = this.searchDevice(navigator.userAgent); |
||||||
|
this.orientation = this.searchOrientation(window.orientation); |
||||||
|
}, |
||||||
|
searchOrientation: function(orientation) { |
||||||
|
var orient = ""; |
||||||
|
if ( orientation == 0 || orientation == 180) {
|
||||||
|
orient = "portrait"; |
||||||
|
} else if ( orientation == 90 || orientation == -90) {
|
||||||
|
orient = "landscape"; |
||||||
|
} else { |
||||||
|
orient = "normal"; |
||||||
|
} |
||||||
|
return orient; |
||||||
|
}, |
||||||
|
searchDevice: function(d) { |
||||||
|
var device = ""; |
||||||
|
if (d.match(/Android/i) || d.match(/iPhone|iPod/i)) { |
||||||
|
device = "mobile"; |
||||||
|
} else if (d.match(/iPad/i)) { |
||||||
|
device = "tablet"; |
||||||
|
} else if (d.match(/BlackBerry/i) || d.match(/IEMobile/i)) { |
||||||
|
device = "other mobile"; |
||||||
|
} else { |
||||||
|
device = "desktop"; |
||||||
|
} |
||||||
|
return device; |
||||||
|
}, |
||||||
|
searchString: function (data) { |
||||||
|
for (var i=0;i<data.length;i++) { |
||||||
|
var dataString = data[i].string, |
||||||
|
dataProp = data[i].prop; |
||||||
|
|
||||||
|
this.versionSearchString = data[i].versionSearch || data[i].identity; |
||||||
|
|
||||||
|
if (dataString) { |
||||||
|
if (dataString.indexOf(data[i].subString) != -1) { |
||||||
|
return data[i].identity; |
||||||
|
} |
||||||
|
} else if (dataProp) { |
||||||
|
return data[i].identity; |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
searchVersion: function (dataString) { |
||||||
|
var index = dataString.indexOf(this.versionSearchString); |
||||||
|
if (index == -1) return; |
||||||
|
return parseFloat(dataString.substring(index+this.versionSearchString.length+1)); |
||||||
|
}, |
||||||
|
dataBrowser: [ |
||||||
|
{ |
||||||
|
string: navigator.userAgent, |
||||||
|
subString: "Chrome", |
||||||
|
identity: "Chrome" |
||||||
|
}, |
||||||
|
{ string: navigator.userAgent, |
||||||
|
subString: "OmniWeb", |
||||||
|
versionSearch: "OmniWeb/", |
||||||
|
identity: "OmniWeb" |
||||||
|
}, |
||||||
|
{ |
||||||
|
string: navigator.vendor, |
||||||
|
subString: "Apple", |
||||||
|
identity: "Safari", |
||||||
|
versionSearch: "Version" |
||||||
|
}, |
||||||
|
{ |
||||||
|
prop: window.opera, |
||||||
|
identity: "Opera", |
||||||
|
versionSearch: "Version" |
||||||
|
}, |
||||||
|
{ |
||||||
|
string: navigator.vendor, |
||||||
|
subString: "iCab", |
||||||
|
identity: "iCab" |
||||||
|
}, |
||||||
|
{ |
||||||
|
string: navigator.vendor, |
||||||
|
subString: "KDE", |
||||||
|
identity: "Konqueror" |
||||||
|
}, |
||||||
|
{ |
||||||
|
string: navigator.userAgent, |
||||||
|
subString: "Firefox", |
||||||
|
identity: "Firefox" |
||||||
|
}, |
||||||
|
{ |
||||||
|
string: navigator.vendor, |
||||||
|
subString: "Camino", |
||||||
|
identity: "Camino" |
||||||
|
}, |
||||||
|
{ // for newer Netscapes (6+)
|
||||||
|
string: navigator.userAgent, |
||||||
|
subString: "Netscape", |
||||||
|
identity: "Netscape" |
||||||
|
}, |
||||||
|
{ |
||||||
|
string: navigator.userAgent, |
||||||
|
subString: "MSIE", |
||||||
|
identity: "Explorer", |
||||||
|
versionSearch: "MSIE" |
||||||
|
}, |
||||||
|
{ |
||||||
|
string: navigator.userAgent, |
||||||
|
subString: "Gecko", |
||||||
|
identity: "Mozilla", |
||||||
|
versionSearch: "rv" |
||||||
|
}, |
||||||
|
{ // for older Netscapes (4-)
|
||||||
|
string: navigator.userAgent, |
||||||
|
subString: "Mozilla", |
||||||
|
identity: "Netscape", |
||||||
|
versionSearch: "Mozilla" |
||||||
|
} |
||||||
|
], |
||||||
|
dataOS : [ |
||||||
|
{ |
||||||
|
string: navigator.platform, |
||||||
|
subString: "Win", |
||||||
|
identity: "Windows" |
||||||
|
}, |
||||||
|
{ |
||||||
|
string: navigator.platform, |
||||||
|
subString: "Mac", |
||||||
|
identity: "Mac" |
||||||
|
}, |
||||||
|
{ |
||||||
|
string: navigator.userAgent, |
||||||
|
subString: "iPhone", |
||||||
|
identity: "iPhone/iPod" |
||||||
|
}, |
||||||
|
{ |
||||||
|
string: navigator.userAgent, |
||||||
|
subString: "iPad", |
||||||
|
identity: "iPad" |
||||||
|
}, |
||||||
|
{ |
||||||
|
string: navigator.platform, |
||||||
|
subString: "Linux", |
||||||
|
identity: "Linux" |
||||||
|
} |
||||||
|
] |
||||||
|
|
||||||
|
} |
||||||
|
VMM.Browser.init(); |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
/* VeriteCo Core |
||||||
|
================================================== */ |
||||||
|
|
||||||
|
/* * CodeKit Import |
||||||
|
* http://incident57.com/codekit/
|
||||||
|
================================================== */ |
||||||
|
// @codekit-prepend "VMM.js";
|
||||||
|
// @codekit-prepend "VMM.Library.js";
|
||||||
|
// @codekit-prepend "VMM.Browser.js";
|
||||||
|
// @codekit-prepend "VMM.FileExtention.js";
|
||||||
|
// @codekit-prepend "VMM.Date.js";
|
||||||
|
// @codekit-prepend "VMM.Util.js";
|
||||||
|
// @codekit-prepend "VMM.LoadLib.js";
|
||||||
|
// @codekit-prepend "VMM.Language.js";
|
||||||
|
|
@ -0,0 +1,569 @@ |
|||||||
|
/* * Utilities and Useful Functions |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined' && typeof VMM.Date == 'undefined') { |
||||||
|
|
||||||
|
VMM.Date = ({ |
||||||
|
|
||||||
|
init: function() { |
||||||
|
return this; |
||||||
|
}, |
||||||
|
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "mmmm d',' yyyy", |
||||||
|
time_short: "h:MM:ss TT", |
||||||
|
time_no_seconds_short: "h:MM TT", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long: "mmm d',' yyyy 'at' hh:MM TT", |
||||||
|
full_long_small_date: "hh:MM TT'<br/><small>mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
|
||||||
|
month: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], |
||||||
|
month_abbr: ["Jan.", "Feb.", "March", "April", "May", "June", "July", "Aug.", "Sept.", "Oct.", "Nov.", "Dec."], |
||||||
|
day: ["Sunday","Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], |
||||||
|
day_abbr: ["Sun.", "Mon.", "Tues.", "Wed.", "Thurs.", "Fri.", "Sat."], |
||||||
|
hour: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], |
||||||
|
hour_suffix: ["am"], |
||||||
|
|
||||||
|
//B.C.
|
||||||
|
bc_format: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "mmmm d',' yyyy", |
||||||
|
time_no_seconds_short: "h:MM TT", |
||||||
|
time_no_seconds_small_date: "dddd', 'h:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long: "dddd',' mmm d',' yyyy 'at' hh:MM TT", |
||||||
|
full_long_small_date: "hh:MM TT'<br/><small>'dddd',' mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
|
||||||
|
setLanguage: function(lang) { |
||||||
|
trace("SET DATE LANGUAGE"); |
||||||
|
VMM.Date.dateformats = lang.dateformats;
|
||||||
|
VMM.Date.month = lang.date.month; |
||||||
|
VMM.Date.month_abbr = lang.date.month_abbr; |
||||||
|
VMM.Date.day = lang.date.day; |
||||||
|
VMM.Date.day_abbr = lang.date.day_abbr; |
||||||
|
dateFormat.i18n.dayNames = lang.date.day_abbr.concat(lang.date.day); |
||||||
|
dateFormat.i18n.monthNames = lang.date.month_abbr.concat(lang.date.month); |
||||||
|
}, |
||||||
|
|
||||||
|
parse: function(d, precision) { |
||||||
|
"use strict"; |
||||||
|
var date, |
||||||
|
date_array, |
||||||
|
time_array, |
||||||
|
time_parse, |
||||||
|
p = { |
||||||
|
year: false, |
||||||
|
month: false, |
||||||
|
day: false, |
||||||
|
hour: false, |
||||||
|
minute: false, |
||||||
|
second: false, |
||||||
|
millisecond: false |
||||||
|
}; |
||||||
|
|
||||||
|
if (type.of(d) == "date") { |
||||||
|
trace("DEBUG THIS, ITs A DATE"); |
||||||
|
date = d; |
||||||
|
} else { |
||||||
|
date = new Date(0, 0, 1, 0, 0, 0, 0); |
||||||
|
|
||||||
|
if ( d.match(/,/gi) ) { |
||||||
|
date_array = d.split(","); |
||||||
|
for(var i = 0; i < date_array.length; i++) { |
||||||
|
date_array[i] = parseInt(date_array[i], 10); |
||||||
|
} |
||||||
|
if (date_array[0]) {
|
||||||
|
date.setFullYear(date_array[0]); |
||||||
|
p.year = true; |
||||||
|
} |
||||||
|
if (date_array[1]) { |
||||||
|
date.setMonth(date_array[1] - 1); |
||||||
|
p.month = true; |
||||||
|
} |
||||||
|
if (date_array[2]) { |
||||||
|
date.setDate(date_array[2]); |
||||||
|
p.day = true; |
||||||
|
} |
||||||
|
if (date_array[3]) { |
||||||
|
date.setHours(date_array[3]); |
||||||
|
p.hour = true; |
||||||
|
} |
||||||
|
if (date_array[4]) { |
||||||
|
date.setMinutes(date_array[4]); |
||||||
|
p.minute = true; |
||||||
|
} |
||||||
|
if (date_array[5]) { |
||||||
|
date.setSeconds(date_array[5]); |
||||||
|
if (date_array[5] >= 1) { |
||||||
|
p.second = true; |
||||||
|
} |
||||||
|
} |
||||||
|
if (date_array[6]) { |
||||||
|
date.setMilliseconds(date_array[6]); |
||||||
|
if (date_array[6] >= 1) { |
||||||
|
p.millisecond = true; |
||||||
|
} |
||||||
|
} |
||||||
|
} else if (d.match("/")) { |
||||||
|
if (d.match(" ")) { |
||||||
|
|
||||||
|
time_parse = d.split(" "); |
||||||
|
if (d.match(":")) { |
||||||
|
time_array = time_parse[1].split(":"); |
||||||
|
if (time_array[0] >= 0 ) { |
||||||
|
date.setHours(time_array[0]); |
||||||
|
p.hour = true; |
||||||
|
} |
||||||
|
if (time_array[1] >= 0) { |
||||||
|
date.setMinutes(time_array[1]); |
||||||
|
p.minute = true; |
||||||
|
} |
||||||
|
if (time_array[2] >= 0) { |
||||||
|
date.setSeconds(time_array[2]); |
||||||
|
p.second = true; |
||||||
|
} |
||||||
|
if (time_array[3] >= 0) { |
||||||
|
date.setMilliseconds(time_array[3]); |
||||||
|
p.millisecond = true; |
||||||
|
} |
||||||
|
} |
||||||
|
date_array = time_parse[0].split("/"); |
||||||
|
} else { |
||||||
|
date_array = d.split("/"); |
||||||
|
} |
||||||
|
if (date_array[2]) { |
||||||
|
date.setFullYear(date_array[2]); |
||||||
|
p.year = true; |
||||||
|
} |
||||||
|
if (date_array[0] >= 0) { |
||||||
|
date.setMonth(date_array[0] - 1); |
||||||
|
p.month = true; |
||||||
|
} |
||||||
|
if (date_array[1] >= 0) { |
||||||
|
if (date_array[1].length > 2) { |
||||||
|
date.setFullYear(date_array[1]); |
||||||
|
p.year = true; |
||||||
|
} else { |
||||||
|
date.setDate(date_array[1]); |
||||||
|
p.day = true; |
||||||
|
} |
||||||
|
} |
||||||
|
} else if (d.match("now")) { |
||||||
|
var now = new Date();
|
||||||
|
|
||||||
|
date.setFullYear(now.getFullYear()); |
||||||
|
p.year = true; |
||||||
|
|
||||||
|
date.setMonth(now.getMonth()); |
||||||
|
p.month = true; |
||||||
|
|
||||||
|
date.setDate(now.getDate()); |
||||||
|
p.day = true; |
||||||
|
|
||||||
|
if (d.match("hours")) { |
||||||
|
date.setHours(now.getHours()); |
||||||
|
p.hour = true; |
||||||
|
} |
||||||
|
if (d.match("minutes")) { |
||||||
|
date.setHours(now.getHours()); |
||||||
|
date.setMinutes(now.getMinutes()); |
||||||
|
p.hour = true; |
||||||
|
p.minute = true; |
||||||
|
} |
||||||
|
if (d.match("seconds")) { |
||||||
|
date.setHours(now.getHours()); |
||||||
|
date.setMinutes(now.getMinutes()); |
||||||
|
date.setSeconds(now.getSeconds()); |
||||||
|
p.hour = true; |
||||||
|
p.minute = true; |
||||||
|
p.second = true; |
||||||
|
} |
||||||
|
if (d.match("milliseconds")) { |
||||||
|
date.setHours(now.getHours()); |
||||||
|
date.setMinutes(now.getMinutes()); |
||||||
|
date.setSeconds(now.getSeconds()); |
||||||
|
date.setMilliseconds(now.getMilliseconds()); |
||||||
|
p.hour = true; |
||||||
|
p.minute = true; |
||||||
|
p.second = true; |
||||||
|
p.millisecond = true; |
||||||
|
} |
||||||
|
} else if (d.length <= 8) { |
||||||
|
p.year = true; |
||||||
|
date.setFullYear(parseInt(d, 10)); |
||||||
|
date.setMonth(0); |
||||||
|
date.setDate(1); |
||||||
|
date.setHours(0); |
||||||
|
date.setMinutes(0); |
||||||
|
date.setSeconds(0); |
||||||
|
date.setMilliseconds(0); |
||||||
|
} else if (d.match("T")) { |
||||||
|
if (navigator.userAgent.match(/MSIE\s(?!9.0)/)) { |
||||||
|
// IE 8 < Won't accept dates with a "-" in them.
|
||||||
|
time_parse = d.split("T"); |
||||||
|
if (d.match(":")) { |
||||||
|
time_array = time_parse[1].split(":"); |
||||||
|
if (time_array[0] >= 1) { |
||||||
|
date.setHours(time_array[0]); |
||||||
|
p.hour = true; |
||||||
|
} |
||||||
|
if (time_array[1] >= 1) { |
||||||
|
date.setMinutes(time_array[1]); |
||||||
|
p.minute = true; |
||||||
|
} |
||||||
|
if (time_array[2] >= 1) { |
||||||
|
date.setSeconds(time_array[2]); |
||||||
|
if (time_array[2] >= 1) { |
||||||
|
p.second = true; |
||||||
|
} |
||||||
|
} |
||||||
|
if (time_array[3] >= 1) { |
||||||
|
date.setMilliseconds(time_array[3]); |
||||||
|
if (time_array[3] >= 1) { |
||||||
|
p.millisecond = true; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
date_array = time_parse[0].split("-"); |
||||||
|
if (date_array[0]) { |
||||||
|
date.setFullYear(date_array[0]); |
||||||
|
p.year = true; |
||||||
|
} |
||||||
|
if (date_array[1] >= 0) { |
||||||
|
date.setMonth(date_array[1] - 1); |
||||||
|
p.month = true; |
||||||
|
} |
||||||
|
if (date_array[2] >= 0) { |
||||||
|
date.setDate(date_array[2]); |
||||||
|
p.day = true; |
||||||
|
} |
||||||
|
|
||||||
|
} else { |
||||||
|
date = new Date(Date.parse(d)); |
||||||
|
p.year = true; |
||||||
|
p.month = true; |
||||||
|
p.day = true; |
||||||
|
p.hour = true; |
||||||
|
p.minute = true; |
||||||
|
if (date.getSeconds() >= 1) { |
||||||
|
p.second = true; |
||||||
|
} |
||||||
|
if (date.getMilliseconds() >= 1) { |
||||||
|
p.millisecond = true; |
||||||
|
} |
||||||
|
} |
||||||
|
} else { |
||||||
|
date = new Date( |
||||||
|
parseInt(d.slice(0,4), 10),
|
||||||
|
parseInt(d.slice(4,6), 10) - 1,
|
||||||
|
parseInt(d.slice(6,8), 10),
|
||||||
|
parseInt(d.slice(8,10), 10),
|
||||||
|
parseInt(d.slice(10,12), 10) |
||||||
|
); |
||||||
|
p.year = true; |
||||||
|
p.month = true; |
||||||
|
p.day = true; |
||||||
|
p.hour = true; |
||||||
|
p.minute = true; |
||||||
|
if (date.getSeconds() >= 1) { |
||||||
|
p.second = true; |
||||||
|
} |
||||||
|
if (date.getMilliseconds() >= 1) { |
||||||
|
p.millisecond = true; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
if (precision != null && precision != "") { |
||||||
|
return { |
||||||
|
date: date, |
||||||
|
precision: p |
||||||
|
}; |
||||||
|
} else { |
||||||
|
return date; |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
prettyDate: function(d, is_abbr, p, d2) { |
||||||
|
var _date, |
||||||
|
_date2, |
||||||
|
format, |
||||||
|
bc_check, |
||||||
|
is_pair = false, |
||||||
|
bc_original, |
||||||
|
bc_number, |
||||||
|
bc_string; |
||||||
|
|
||||||
|
if (d2 != null && d2 != "" && typeof d2 != 'undefined') { |
||||||
|
is_pair = true; |
||||||
|
trace("D2 " + d2); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
if (type.of(d) == "date") { |
||||||
|
|
||||||
|
if (type.of(p) == "object") { |
||||||
|
if (p.millisecond || p.second && d.getSeconds() >= 1) { |
||||||
|
// YEAR MONTH DAY HOUR MINUTE
|
||||||
|
if (is_abbr){ |
||||||
|
format = VMM.Date.dateformats.time_short;
|
||||||
|
} else { |
||||||
|
format = VMM.Date.dateformats.time_short; |
||||||
|
} |
||||||
|
} else if (p.minute) { |
||||||
|
// YEAR MONTH DAY HOUR MINUTE
|
||||||
|
if (is_abbr){ |
||||||
|
format = VMM.Date.dateformats.time_no_seconds_short;
|
||||||
|
} else { |
||||||
|
format = VMM.Date.dateformats.time_no_seconds_small_date; |
||||||
|
} |
||||||
|
} else if (p.hour) { |
||||||
|
// YEAR MONTH DAY HOUR
|
||||||
|
if (is_abbr) { |
||||||
|
format = VMM.Date.dateformats.time_no_seconds_short; |
||||||
|
} else { |
||||||
|
format = VMM.Date.dateformats.time_no_seconds_small_date; |
||||||
|
} |
||||||
|
} else if (p.day) { |
||||||
|
// YEAR MONTH DAY
|
||||||
|
if (is_abbr) { |
||||||
|
format = VMM.Date.dateformats.full_short; |
||||||
|
} else { |
||||||
|
format = VMM.Date.dateformats.full; |
||||||
|
} |
||||||
|
} else if (p.month) { |
||||||
|
// YEAR MONTH
|
||||||
|
if (is_abbr) { |
||||||
|
format = VMM.Date.dateformats.month_short; |
||||||
|
} else { |
||||||
|
format = VMM.Date.dateformats.month; |
||||||
|
} |
||||||
|
} else if (p.year) { |
||||||
|
format = VMM.Date.dateformats.year; |
||||||
|
} else { |
||||||
|
format = VMM.Date.dateformats.year; |
||||||
|
} |
||||||
|
|
||||||
|
} else { |
||||||
|
|
||||||
|
if (d.getMonth() === 0 && d.getDate() == 1 && d.getHours() === 0 && d.getMinutes() === 0 ) { |
||||||
|
// YEAR ONLY
|
||||||
|
format = VMM.Date.dateformats.year; |
||||||
|
} else if (d.getDate() <= 1 && d.getHours() === 0 && d.getMinutes() === 0) { |
||||||
|
// YEAR MONTH
|
||||||
|
if (is_abbr) { |
||||||
|
format = VMM.Date.dateformats.month_short; |
||||||
|
} else { |
||||||
|
format = VMM.Date.dateformats.month; |
||||||
|
} |
||||||
|
} else if (d.getHours() === 0 && d.getMinutes() === 0) { |
||||||
|
// YEAR MONTH DAY
|
||||||
|
if (is_abbr) { |
||||||
|
format = VMM.Date.dateformats.full_short; |
||||||
|
} else { |
||||||
|
format = VMM.Date.dateformats.full; |
||||||
|
} |
||||||
|
} else if (d.getMinutes() === 0) { |
||||||
|
// YEAR MONTH DAY HOUR
|
||||||
|
if (is_abbr) { |
||||||
|
format = VMM.Date.dateformats.time_no_seconds_short; |
||||||
|
} else { |
||||||
|
format = VMM.Date.dateformats.time_no_seconds_small_date; |
||||||
|
} |
||||||
|
} else { |
||||||
|
// YEAR MONTH DAY HOUR MINUTE
|
||||||
|
if (is_abbr){ |
||||||
|
format = VMM.Date.dateformats.time_no_seconds_short;
|
||||||
|
} else { |
||||||
|
format = VMM.Date.dateformats.full_long;
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
_date = dateFormat(d, format, false); |
||||||
|
//_date = "Jan"
|
||||||
|
bc_check = _date.split(" "); |
||||||
|
|
||||||
|
// BC TIME SUPPORT
|
||||||
|
for(var i = 0; i < bc_check.length; i++) { |
||||||
|
if ( parseInt(bc_check[i], 10) < 0 ) { |
||||||
|
trace("YEAR IS BC"); |
||||||
|
bc_original = bc_check[i]; |
||||||
|
bc_number = Math.abs( parseInt(bc_check[i], 10) ); |
||||||
|
bc_string = bc_number.toString() + " B.C."; |
||||||
|
_date = _date.replace(bc_original, bc_string); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
if (is_pair) { |
||||||
|
_date2 = dateFormat(d2, format, false); |
||||||
|
bc_check = _date2.split(" "); |
||||||
|
// BC TIME SUPPORT
|
||||||
|
for(var j = 0; j < bc_check.length; j++) { |
||||||
|
if ( parseInt(bc_check[j], 10) < 0 ) { |
||||||
|
trace("YEAR IS BC"); |
||||||
|
bc_original = bc_check[j]; |
||||||
|
bc_number = Math.abs( parseInt(bc_check[j], 10) ); |
||||||
|
bc_string = bc_number.toString() + " B.C."; |
||||||
|
_date2 = _date2.replace(bc_original, bc_string); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} else { |
||||||
|
trace("NOT A VALID DATE?"); |
||||||
|
trace(d); |
||||||
|
} |
||||||
|
|
||||||
|
if (is_pair) { |
||||||
|
return _date + " — " + _date2; |
||||||
|
} else { |
||||||
|
return _date; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
}).init(); |
||||||
|
|
||||||
|
/* |
||||||
|
* Date Format 1.2.3 |
||||||
|
* (c) 2007-2009 Steven Levithan <stevenlevithan.com> |
||||||
|
* MIT license |
||||||
|
* |
||||||
|
* Includes enhancements by Scott Trenda <scott.trenda.net> |
||||||
|
* and Kris Kowal <cixar.com/~kris.kowal/> |
||||||
|
* |
||||||
|
* Accepts a date, a mask, or a date and a mask. |
||||||
|
* Returns a formatted version of the given date. |
||||||
|
* The date defaults to the current date/time. |
||||||
|
* The mask defaults to dateFormat.masks.default. |
||||||
|
*/ |
||||||
|
|
||||||
|
var dateFormat = function () { |
||||||
|
var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g, |
||||||
|
timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, |
||||||
|
timezoneClip = /[^-+\dA-Z]/g, |
||||||
|
pad = function (val, len) { |
||||||
|
val = String(val); |
||||||
|
len = len || 2; |
||||||
|
while (val.length < len) val = "0" + val; |
||||||
|
return val; |
||||||
|
}; |
||||||
|
|
||||||
|
// Regexes and supporting functions are cached through closure
|
||||||
|
return function (date, mask, utc) { |
||||||
|
var dF = dateFormat; |
||||||
|
|
||||||
|
// You can't provide utc if you skip other args (use the "UTC:" mask prefix)
|
||||||
|
if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) { |
||||||
|
mask = date; |
||||||
|
date = undefined; |
||||||
|
} |
||||||
|
|
||||||
|
// Passing date through Date applies Date.parse, if necessary
|
||||||
|
// Caused problems in IE
|
||||||
|
// date = date ? new Date(date) : new Date;
|
||||||
|
if (isNaN(date)) { |
||||||
|
trace("invalid date " + date); |
||||||
|
//return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
mask = String(dF.masks[mask] || mask || dF.masks["default"]); |
||||||
|
|
||||||
|
// Allow setting the utc argument via the mask
|
||||||
|
if (mask.slice(0, 4) == "UTC:") { |
||||||
|
mask = mask.slice(4); |
||||||
|
utc = true; |
||||||
|
} |
||||||
|
|
||||||
|
var _ = utc ? "getUTC" : "get", |
||||||
|
d = date[_ + "Date"](), |
||||||
|
D = date[_ + "Day"](), |
||||||
|
m = date[_ + "Month"](), |
||||||
|
y = date[_ + "FullYear"](), |
||||||
|
H = date[_ + "Hours"](), |
||||||
|
M = date[_ + "Minutes"](), |
||||||
|
s = date[_ + "Seconds"](), |
||||||
|
L = date[_ + "Milliseconds"](), |
||||||
|
o = utc ? 0 : date.getTimezoneOffset(), |
||||||
|
flags = { |
||||||
|
d: d, |
||||||
|
dd: pad(d), |
||||||
|
ddd: dF.i18n.dayNames[D], |
||||||
|
dddd: dF.i18n.dayNames[D + 7], |
||||||
|
m: m + 1, |
||||||
|
mm: pad(m + 1), |
||||||
|
mmm: dF.i18n.monthNames[m], |
||||||
|
mmmm: dF.i18n.monthNames[m + 12], |
||||||
|
yy: String(y).slice(2), |
||||||
|
yyyy: y, |
||||||
|
h: H % 12 || 12, |
||||||
|
hh: pad(H % 12 || 12), |
||||||
|
H: H, |
||||||
|
HH: pad(H), |
||||||
|
M: M, |
||||||
|
MM: pad(M), |
||||||
|
s: s, |
||||||
|
ss: pad(s), |
||||||
|
l: pad(L, 3), |
||||||
|
L: pad(L > 99 ? Math.round(L / 10) : L), |
||||||
|
t: H < 12 ? "a" : "p", |
||||||
|
tt: H < 12 ? "am" : "pm", |
||||||
|
T: H < 12 ? "A" : "P", |
||||||
|
TT: H < 12 ? "AM" : "PM", |
||||||
|
Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), |
||||||
|
o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), |
||||||
|
S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10] |
||||||
|
}; |
||||||
|
|
||||||
|
return mask.replace(token, function ($0) { |
||||||
|
return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1); |
||||||
|
}); |
||||||
|
}; |
||||||
|
}(); |
||||||
|
|
||||||
|
// Some common format strings
|
||||||
|
dateFormat.masks = { |
||||||
|
"default": "ddd mmm dd yyyy HH:MM:ss", |
||||||
|
shortDate: "m/d/yy", |
||||||
|
mediumDate: "mmm d, yyyy", |
||||||
|
longDate: "mmmm d, yyyy", |
||||||
|
fullDate: "dddd, mmmm d, yyyy", |
||||||
|
shortTime: "h:MM TT", |
||||||
|
mediumTime: "h:MM:ss TT", |
||||||
|
longTime: "h:MM:ss TT Z", |
||||||
|
isoDate: "yyyy-mm-dd", |
||||||
|
isoTime: "HH:MM:ss", |
||||||
|
isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", |
||||||
|
isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" |
||||||
|
}; |
||||||
|
|
||||||
|
// Internationalization strings
|
||||||
|
dateFormat.i18n = { |
||||||
|
dayNames: [ |
||||||
|
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", |
||||||
|
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" |
||||||
|
], |
||||||
|
monthNames: [ |
||||||
|
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", |
||||||
|
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" |
||||||
|
] |
||||||
|
}; |
||||||
|
|
||||||
|
// For convenience...
|
||||||
|
Date.prototype.format = function (mask, utc) { |
||||||
|
return dateFormat(this, mask, utc); |
||||||
|
}; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,21 @@ |
|||||||
|
/* * File Extention |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined' && typeof VMM.FileExtention == 'undefined') { |
||||||
|
VMM.FileExtention = { |
||||||
|
googleDocType: function(url) { |
||||||
|
var fileName = url.replace(/\s\s*$/, ''), |
||||||
|
fileExtension = "", |
||||||
|
validFileExtensions = ["DOC","DOCX","XLS","XLSX","PPT","PPTX","PDF","PAGES","AI","PSD","TIFF","DXF","SVG","EPS","PS","TTF","XPS","ZIP","RAR"], |
||||||
|
flag = false; |
||||||
|
|
||||||
|
fileExtension = fileName.substr(fileName.length - 5, 5); |
||||||
|
|
||||||
|
for (var i = 0; i < validFileExtensions.length; i++) { |
||||||
|
if (fileExtension.toLowerCase().match(validFileExtensions[i].toString().toLowerCase()) || fileName.match("docs.google.com") ) { |
||||||
|
flag = true; |
||||||
|
} |
||||||
|
} |
||||||
|
return flag; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,600 @@ |
|||||||
|
/* * LIBRARY ABSTRACTION |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
|
||||||
|
VMM.smoothScrollTo = function(elem, duration, ease) { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
var _ease = "easein", |
||||||
|
_duration = 1000; |
||||||
|
|
||||||
|
if (duration != null) { |
||||||
|
if (duration < 1) { |
||||||
|
_duration = 1; |
||||||
|
} else { |
||||||
|
_duration = Math.round(duration); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
if (ease != null && ease != "") { |
||||||
|
_ease = ease; |
||||||
|
} |
||||||
|
|
||||||
|
if (jQuery(window).scrollTop() != VMM.Lib.offset(elem).top) { |
||||||
|
VMM.Lib.animate('html,body', _duration, _ease, {scrollTop: VMM.Lib.offset(elem).top}) |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
VMM.attachElement = function(element, content) { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).html(content); |
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
VMM.appendElement = function(element, content) { |
||||||
|
|
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).append(content); |
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
VMM.getHTML = function(element) { |
||||||
|
var e; |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
e = jQuery(element).html(); |
||||||
|
return e; |
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
VMM.getElement = function(element, p) { |
||||||
|
var e; |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
if (p) { |
||||||
|
e = jQuery(element).parent().get(0); |
||||||
|
|
||||||
|
} else { |
||||||
|
e = jQuery(element).get(0); |
||||||
|
} |
||||||
|
return e; |
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
VMM.bindEvent = function(element, the_handler, the_event_type, event_data) { |
||||||
|
var e; |
||||||
|
var _event_type = "click"; |
||||||
|
var _event_data = {}; |
||||||
|
|
||||||
|
if (the_event_type != null && the_event_type != "") { |
||||||
|
_event_type = the_event_type; |
||||||
|
} |
||||||
|
|
||||||
|
if (_event_data != null && _event_data != "") { |
||||||
|
_event_data = event_data; |
||||||
|
} |
||||||
|
|
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).bind(_event_type, _event_data, the_handler); |
||||||
|
|
||||||
|
//return e;
|
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
VMM.unbindEvent = function(element, the_handler, the_event_type) { |
||||||
|
var e; |
||||||
|
var _event_type = "click"; |
||||||
|
var _event_data = {}; |
||||||
|
|
||||||
|
if (the_event_type != null && the_event_type != "") { |
||||||
|
_event_type = the_event_type; |
||||||
|
} |
||||||
|
|
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).unbind(_event_type, the_handler); |
||||||
|
|
||||||
|
//return e;
|
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
VMM.fireEvent = function(element, the_event_type, the_data) { |
||||||
|
var e; |
||||||
|
var _event_type = "click"; |
||||||
|
var _data = []; |
||||||
|
|
||||||
|
if (the_event_type != null && the_event_type != "") { |
||||||
|
_event_type = the_event_type; |
||||||
|
} |
||||||
|
if (the_data != null && the_data != "") { |
||||||
|
_data = the_data; |
||||||
|
} |
||||||
|
|
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).trigger(_event_type, _data); |
||||||
|
|
||||||
|
//return e;
|
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
VMM.getJSON = function(url, data, callback) { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery.ajaxSetup({ |
||||||
|
timeout: 3000 |
||||||
|
}); |
||||||
|
/* CHECK FOR IE |
||||||
|
================================================== */ |
||||||
|
if ( VMM.Browser.browser == "Explorer" && parseInt(VMM.Browser.version, 10) >= 7 && window.XDomainRequest) { |
||||||
|
trace("IE JSON"); |
||||||
|
var ie_url = url; |
||||||
|
if (ie_url.match('^http://')){ |
||||||
|
return jQuery.getJSON(ie_url, data, callback); |
||||||
|
} else if (ie_url.match('^https://')) { |
||||||
|
ie_url = ie_url.replace("https://","http://"); |
||||||
|
return jQuery.getJSON(ie_url, data, callback); |
||||||
|
} else { |
||||||
|
return jQuery.getJSON(url, data, callback); |
||||||
|
} |
||||||
|
|
||||||
|
} else { |
||||||
|
return jQuery.getJSON(url, data, callback); |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
VMM.parseJSON = function(the_json) { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
return jQuery.parseJSON(the_json); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// ADD ELEMENT AND RETURN IT
|
||||||
|
VMM.appendAndGetElement = function(append_to_element, tag, cName, content) { |
||||||
|
var e, |
||||||
|
_tag = "<div>", |
||||||
|
_class = "", |
||||||
|
_content = "", |
||||||
|
_id = ""; |
||||||
|
|
||||||
|
if (tag != null && tag != "") { |
||||||
|
_tag = tag; |
||||||
|
} |
||||||
|
|
||||||
|
if (cName != null && cName != "") { |
||||||
|
_class = cName; |
||||||
|
} |
||||||
|
|
||||||
|
if (content != null && content != "") { |
||||||
|
_content = content; |
||||||
|
} |
||||||
|
|
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
|
||||||
|
e = jQuery(tag); |
||||||
|
|
||||||
|
e.addClass(_class); |
||||||
|
e.html(_content); |
||||||
|
|
||||||
|
jQuery(append_to_element).append(e); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
return e; |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
VMM.Lib = { |
||||||
|
|
||||||
|
init: function() { |
||||||
|
return this; |
||||||
|
}, |
||||||
|
|
||||||
|
hide: function(element, duration) { |
||||||
|
if (duration != null && duration != "") { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).hide(duration); |
||||||
|
} |
||||||
|
} else { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).hide(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
}, |
||||||
|
|
||||||
|
remove: function(element) { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).remove(); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
detach: function(element) { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).detach(); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
append: function(element, value) { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).append(value); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
prepend: function(element, value) { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).prepend(value); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
show: function(element, duration) { |
||||||
|
if (duration != null && duration != "") { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).show(duration); |
||||||
|
} |
||||||
|
} else { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).show(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
}, |
||||||
|
|
||||||
|
load: function(element, callback_function, event_data) { |
||||||
|
var _event_data = {elem:element}; // return element by default
|
||||||
|
if (_event_data != null && _event_data != "") { |
||||||
|
_event_data = event_data; |
||||||
|
} |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).load(_event_data, callback_function); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
addClass: function(element, cName) { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).addClass(cName); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
removeClass: function(element, cName) { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).removeClass(cName); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
attr: function(element, aName, value) { |
||||||
|
if (value != null && value != "") { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).attr(aName, value); |
||||||
|
} |
||||||
|
} else { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
return jQuery(element).attr(aName); |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
prop: function(element, aName, value) { |
||||||
|
if (typeof jQuery == 'undefined' || !/[1-9]\.[3-9].[1-9]/.test(jQuery.fn.jquery)) { |
||||||
|
VMM.Lib.attribute(element, aName, value); |
||||||
|
} else { |
||||||
|
jQuery(element).prop(aName, value); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
attribute: function(element, aName, value) { |
||||||
|
|
||||||
|
if (value != null && value != "") { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).attr(aName, value); |
||||||
|
} |
||||||
|
} else { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
return jQuery(element).attr(aName); |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
visible: function(element, show) { |
||||||
|
if (show != null) { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
if (show) { |
||||||
|
jQuery(element).show(0); |
||||||
|
} else { |
||||||
|
jQuery(element).hide(0); |
||||||
|
} |
||||||
|
} |
||||||
|
} else { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
if ( jQuery(element).is(':visible')){ |
||||||
|
return true; |
||||||
|
} else { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
css: function(element, prop, value) { |
||||||
|
|
||||||
|
if (value != null && value != "") { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).css(prop, value); |
||||||
|
} |
||||||
|
} else { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
return jQuery(element).css(prop); |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
cssmultiple: function(element, propval) { |
||||||
|
|
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
return jQuery(element).css(propval); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
offset: function(element) { |
||||||
|
var p; |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
p = jQuery(element).offset(); |
||||||
|
} |
||||||
|
return p; |
||||||
|
}, |
||||||
|
|
||||||
|
position: function(element) { |
||||||
|
var p; |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
p = jQuery(element).position(); |
||||||
|
} |
||||||
|
return p; |
||||||
|
}, |
||||||
|
|
||||||
|
width: function(element, s) { |
||||||
|
if (s != null && s != "") { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).width(s); |
||||||
|
} |
||||||
|
} else { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
return jQuery(element).width(); |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
height: function(element, s) { |
||||||
|
if (s != null && s != "") { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).height(s); |
||||||
|
} |
||||||
|
} else { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
return jQuery(element).height(); |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
toggleClass: function(element, cName) { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).toggleClass(cName); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
each:function(element, return_function) { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).each(return_function); |
||||||
|
} |
||||||
|
|
||||||
|
}, |
||||||
|
|
||||||
|
html: function(element, str) { |
||||||
|
var e; |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
e = jQuery(element).html(); |
||||||
|
return e; |
||||||
|
} |
||||||
|
|
||||||
|
if (str != null && str != "") { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).html(str); |
||||||
|
} |
||||||
|
} else { |
||||||
|
var e; |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
e = jQuery(element).html(); |
||||||
|
return e; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
}, |
||||||
|
|
||||||
|
find: function(element, selec) { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
return jQuery(element).find(selec); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
stop: function(element) { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).stop(); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
delay_animate: function(delay, element, duration, ease, att, callback_function) { |
||||||
|
if (VMM.Browser.device == "mobile" || VMM.Browser.device == "tablet") { |
||||||
|
var _tdd = Math.round((duration/1500)*10)/10, |
||||||
|
__duration = _tdd + 's'; |
||||||
|
|
||||||
|
VMM.Lib.css(element, '-webkit-transition', 'all '+ __duration + ' ease'); |
||||||
|
VMM.Lib.css(element, '-moz-transition', 'all '+ __duration + ' ease'); |
||||||
|
VMM.Lib.css(element, '-o-transition', 'all '+ __duration + ' ease'); |
||||||
|
VMM.Lib.css(element, '-ms-transition', 'all '+ __duration + ' ease'); |
||||||
|
VMM.Lib.css(element, 'transition', 'all '+ __duration + ' ease'); |
||||||
|
VMM.Lib.cssmultiple(element, _att); |
||||||
|
} else { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
jQuery(element).delay(delay).animate(att, {duration:duration, easing:ease} ); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
}, |
||||||
|
|
||||||
|
animate: function(element, duration, ease, att, que, callback_function) { |
||||||
|
|
||||||
|
var _ease = "easein", |
||||||
|
_que = false, |
||||||
|
_duration = 1000, |
||||||
|
_att = {}; |
||||||
|
|
||||||
|
if (duration != null) { |
||||||
|
if (duration < 1) { |
||||||
|
_duration = 1; |
||||||
|
} else { |
||||||
|
_duration = Math.round(duration); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
if (ease != null && ease != "") { |
||||||
|
_ease = ease; |
||||||
|
} |
||||||
|
|
||||||
|
if (que != null && que != "") { |
||||||
|
_que = que; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
if (att != null) { |
||||||
|
_att = att |
||||||
|
} else { |
||||||
|
_att = {opacity: 0} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
if (VMM.Browser.device == "mobile" || VMM.Browser.device == "tablet") { |
||||||
|
|
||||||
|
var _tdd = Math.round((_duration/1500)*10)/10, |
||||||
|
__duration = _tdd + 's'; |
||||||
|
|
||||||
|
_ease = " cubic-bezier(0.33, 0.66, 0.66, 1)"; |
||||||
|
//_ease = " ease-in-out";
|
||||||
|
for (x in _att) { |
||||||
|
if (Object.prototype.hasOwnProperty.call(_att, x)) { |
||||||
|
trace(x + " to " + _att[x]); |
||||||
|
VMM.Lib.css(element, '-webkit-transition', x + ' ' + __duration + _ease); |
||||||
|
VMM.Lib.css(element, '-moz-transition', x + ' ' + __duration + _ease); |
||||||
|
VMM.Lib.css(element, '-o-transition', x + ' ' + __duration + _ease); |
||||||
|
VMM.Lib.css(element, '-ms-transition', x + ' ' + __duration + _ease); |
||||||
|
VMM.Lib.css(element, 'transition', x + ' ' + __duration + _ease); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
VMM.Lib.cssmultiple(element, _att); |
||||||
|
|
||||||
|
} else { |
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
if (callback_function != null && callback_function != "") { |
||||||
|
jQuery(element).animate(_att, {queue:_que, duration:_duration, easing:_ease, complete:callback_function} ); |
||||||
|
} else { |
||||||
|
jQuery(element).animate(_att, {queue:_que, duration:_duration, easing:_ease} ); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if( typeof( jQuery ) != 'undefined' ){ |
||||||
|
|
||||||
|
/* XDR AJAX EXTENTION FOR jQuery |
||||||
|
https://github.com/jaubourg/ajaxHooks/blob/master/src/ajax/xdr.js
|
||||||
|
================================================== */ |
||||||
|
(function( jQuery ) { |
||||||
|
if ( window.XDomainRequest ) { |
||||||
|
jQuery.ajaxTransport(function( s ) { |
||||||
|
if ( s.crossDomain && s.async ) { |
||||||
|
if ( s.timeout ) { |
||||||
|
s.xdrTimeout = s.timeout; |
||||||
|
delete s.timeout; |
||||||
|
} |
||||||
|
var xdr; |
||||||
|
return { |
||||||
|
send: function( _, complete ) { |
||||||
|
function callback( status, statusText, responses, responseHeaders ) { |
||||||
|
xdr.onload = xdr.onerror = xdr.ontimeout = jQuery.noop; |
||||||
|
xdr = undefined; |
||||||
|
complete( status, statusText, responses, responseHeaders ); |
||||||
|
} |
||||||
|
xdr = new XDomainRequest(); |
||||||
|
xdr.open( s.type, s.url ); |
||||||
|
xdr.onload = function() { |
||||||
|
callback( 200, "OK", { text: xdr.responseText }, "Content-Type: " + xdr.contentType ); |
||||||
|
}; |
||||||
|
xdr.onerror = function() { |
||||||
|
callback( 404, "Not Found" ); |
||||||
|
}; |
||||||
|
if ( s.xdrTimeout ) { |
||||||
|
xdr.ontimeout = function() { |
||||||
|
callback( 0, "timeout" ); |
||||||
|
}; |
||||||
|
xdr.timeout = s.xdrTimeout; |
||||||
|
} |
||||||
|
xdr.send( ( s.hasContent && s.data ) || null ); |
||||||
|
}, |
||||||
|
abort: function() { |
||||||
|
if ( xdr ) { |
||||||
|
xdr.onerror = jQuery.noop(); |
||||||
|
xdr.abort(); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
})( jQuery ); |
||||||
|
|
||||||
|
/* jQuery Easing v1.3 |
||||||
|
http://gsgd.co.uk/sandbox/jquery/easing/
|
||||||
|
================================================== */ |
||||||
|
jQuery.easing['jswing'] = jQuery.easing['swing']; |
||||||
|
|
||||||
|
jQuery.extend( jQuery.easing, { |
||||||
|
def: 'easeOutQuad', |
||||||
|
swing: function (x, t, b, c, d) { |
||||||
|
//alert(jQuery.easing.default);
|
||||||
|
return jQuery.easing[jQuery.easing.def](x, t, b, c, d); |
||||||
|
}, |
||||||
|
easeInExpo: function (x, t, b, c, d) { |
||||||
|
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; |
||||||
|
}, |
||||||
|
easeOutExpo: function (x, t, b, c, d) { |
||||||
|
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; |
||||||
|
}, |
||||||
|
easeInOutExpo: function (x, t, b, c, d) { |
||||||
|
if (t==0) return b; |
||||||
|
if (t==d) return b+c; |
||||||
|
if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; |
||||||
|
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; |
||||||
|
}, |
||||||
|
easeInQuad: function (x, t, b, c, d) { |
||||||
|
return c*(t/=d)*t + b; |
||||||
|
}, |
||||||
|
easeOutQuad: function (x, t, b, c, d) { |
||||||
|
return -c *(t/=d)*(t-2) + b; |
||||||
|
}, |
||||||
|
easeInOutQuad: function (x, t, b, c, d) { |
||||||
|
if ((t/=d/2) < 1) return c/2*t*t + b; |
||||||
|
return -c/2 * ((--t)*(t-2) - 1) + b; |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
/* |
||||||
|
LoadLib |
||||||
|
Designed and built by Zach Wise digitalartwork.net |
||||||
|
*/ |
||||||
|
|
||||||
|
/* * CodeKit Import |
||||||
|
* http://incident57.com/codekit/
|
||||||
|
================================================== */ |
||||||
|
// @codekit-prepend "../Library/LazyLoad.js";
|
||||||
|
|
||||||
|
LoadLib = (function (doc) { |
||||||
|
var loaded = []; |
||||||
|
|
||||||
|
function isLoaded(url) { |
||||||
|
|
||||||
|
var i = 0, |
||||||
|
has_loaded = false; |
||||||
|
|
||||||
|
for (i = 0; i < loaded.length; i++) { |
||||||
|
if (loaded[i] == url) { |
||||||
|
has_loaded = true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (has_loaded) { |
||||||
|
return true; |
||||||
|
} else { |
||||||
|
loaded.push(url); |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
return { |
||||||
|
|
||||||
|
css: function (urls, callback, obj, context) { |
||||||
|
if (!isLoaded(urls)) { |
||||||
|
LazyLoad.css(urls, callback, obj, context); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
js: function (urls, callback, obj, context) { |
||||||
|
if (!isLoaded(urls)) { |
||||||
|
LazyLoad.js(urls, callback, obj, context); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
})(this.document); |
@ -0,0 +1,478 @@ |
|||||||
|
/* * Utilities and Useful Functions |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined' && typeof VMM.Util == 'undefined') { |
||||||
|
|
||||||
|
VMM.Util = ({ |
||||||
|
|
||||||
|
init: function() { |
||||||
|
return this; |
||||||
|
}, |
||||||
|
|
||||||
|
/* * CORRECT PROTOCOL (DOES NOT WORK) |
||||||
|
================================================== */ |
||||||
|
correctProtocol: function(url) { |
||||||
|
var loc = (window.parent.location.protocol).toString(), |
||||||
|
prefix = "", |
||||||
|
the_url = url.split("://", 2); |
||||||
|
|
||||||
|
if (loc.match("http")) { |
||||||
|
prefix = loc; |
||||||
|
} else { |
||||||
|
prefix = "https"; |
||||||
|
} |
||||||
|
|
||||||
|
return prefix + "://" + the_url[1]; |
||||||
|
|
||||||
|
}, |
||||||
|
|
||||||
|
/* * MERGE CONFIG |
||||||
|
================================================== */ |
||||||
|
mergeConfig: function(config_main, config_to_merge) { |
||||||
|
var x; |
||||||
|
for (x in config_to_merge) { |
||||||
|
if (Object.prototype.hasOwnProperty.call(config_to_merge, x)) { |
||||||
|
config_main[x] = config_to_merge[x]; |
||||||
|
} |
||||||
|
} |
||||||
|
return config_main; |
||||||
|
}, |
||||||
|
|
||||||
|
/* * GET OBJECT ATTRIBUTE BY INDEX |
||||||
|
================================================== */ |
||||||
|
getObjectAttributeByIndex: function(obj, index) { |
||||||
|
if(typeof obj != 'undefined') { |
||||||
|
var i = 0; |
||||||
|
for (var attr in obj){ |
||||||
|
if (index === i){ |
||||||
|
return obj[attr]; |
||||||
|
} |
||||||
|
i++; |
||||||
|
} |
||||||
|
return ""; |
||||||
|
} else { |
||||||
|
return ""; |
||||||
|
} |
||||||
|
|
||||||
|
}, |
||||||
|
|
||||||
|
/* * ORDINAL |
||||||
|
================================================== */ |
||||||
|
ordinal: function(n) { |
||||||
|
return ["th","st","nd","rd"][(!( ((n%10) >3) || (Math.floor(n%100/10)==1)) ) * (n%10)];
|
||||||
|
}, |
||||||
|
|
||||||
|
/* * RANDOM BETWEEN |
||||||
|
================================================== */ |
||||||
|
//VMM.Util.randomBetween(1, 3)
|
||||||
|
randomBetween: function(min, max) { |
||||||
|
return Math.floor(Math.random() * (max - min + 1) + min); |
||||||
|
}, |
||||||
|
|
||||||
|
/* * AVERAGE |
||||||
|
* http://jsfromhell.com/array/average
|
||||||
|
* var x = VMM.Util.average([2, 3, 4]); |
||||||
|
* VMM.Util.average([2, 3, 4]).mean |
||||||
|
================================================== */ |
||||||
|
average: function(a) { |
||||||
|
var r = {mean: 0, variance: 0, deviation: 0}, t = a.length; |
||||||
|
for(var m, s = 0, l = t; l--; s += a[l]); |
||||||
|
for(m = r.mean = s / t, l = t, s = 0; l--; s += Math.pow(a[l] - m, 2)); |
||||||
|
return r.deviation = Math.sqrt(r.variance = s / t), r; |
||||||
|
}, |
||||||
|
|
||||||
|
/* * CUSTOM SORT |
||||||
|
================================================== */ |
||||||
|
customSort: function(a, b) { |
||||||
|
var a1= a, b1= b; |
||||||
|
if(a1== b1) return 0; |
||||||
|
return a1> b1? 1: -1; |
||||||
|
}, |
||||||
|
|
||||||
|
/* * Remove Duplicates from Array |
||||||
|
================================================== */ |
||||||
|
deDupeArray: function(arr) { |
||||||
|
var i, |
||||||
|
len=arr.length, |
||||||
|
out=[], |
||||||
|
obj={}; |
||||||
|
|
||||||
|
for (i=0;i<len;i++) { |
||||||
|
obj[arr[i]]=0; |
||||||
|
} |
||||||
|
for (i in obj) { |
||||||
|
out.push(i); |
||||||
|
} |
||||||
|
return out; |
||||||
|
}, |
||||||
|
|
||||||
|
/* * Given an int or decimal, turn that into string in $xxx,xxx.xx format. |
||||||
|
================================================== */ |
||||||
|
number2money: function(n, symbol, padding) { |
||||||
|
var symbol = (symbol !== null) ? symbol : true; // add $
|
||||||
|
var padding = (padding !== null) ? padding : false; //pad with .00
|
||||||
|
var number = VMM.Math2.floatPrecision(n,2); // rounded correctly to two digits, if decimals passed
|
||||||
|
var formatted = this.niceNumber(number); |
||||||
|
// no decimal and padding is enabled
|
||||||
|
if (!formatted.split(/\./g)[1] && padding) formatted = formatted + ".00"; |
||||||
|
// add money sign
|
||||||
|
if (symbol) formatted = "$"+formatted; |
||||||
|
return formatted; |
||||||
|
}, |
||||||
|
|
||||||
|
/* * Returns a word count number |
||||||
|
================================================== */ |
||||||
|
wordCount: function(s) { |
||||||
|
var fullStr = s + " "; |
||||||
|
var initial_whitespace_rExp = /^[^A-Za-z0-9\'\-]+/gi; |
||||||
|
var left_trimmedStr = fullStr.replace(initial_whitespace_rExp, ""); |
||||||
|
var non_alphanumerics_rExp = /[^A-Za-z0-9\'\-]+/gi; |
||||||
|
var cleanedStr = left_trimmedStr.replace(non_alphanumerics_rExp, " "); |
||||||
|
var splitString = cleanedStr.split(" "); |
||||||
|
var word_count = splitString.length -1; |
||||||
|
if (fullStr.length <2) { |
||||||
|
word_count = 0; |
||||||
|
} |
||||||
|
return word_count; |
||||||
|
}, |
||||||
|
|
||||||
|
ratio: { |
||||||
|
fit: function(w, h, ratio_w, ratio_h) { |
||||||
|
//VMM.Util.ratio.fit(w, h, ratio_w, ratio_h).width;
|
||||||
|
var _fit = {width:0,height:0}; |
||||||
|
// TRY WIDTH FIRST
|
||||||
|
_fit.width = w; |
||||||
|
//_fit.height = Math.round((h / ratio_h) * ratio_w);
|
||||||
|
_fit.height = Math.round((w / ratio_w) * ratio_h); |
||||||
|
if (_fit.height > h) { |
||||||
|
_fit.height = h; |
||||||
|
//_fit.width = Math.round((w / ratio_w) * ratio_h);
|
||||||
|
_fit.width = Math.round((h / ratio_h) * ratio_w); |
||||||
|
|
||||||
|
if (_fit.width > w) { |
||||||
|
trace("FIT: DIDN'T FIT!!! ") |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return _fit; |
||||||
|
|
||||||
|
}, |
||||||
|
r16_9: function(w,h) { |
||||||
|
//VMM.Util.ratio.r16_9(w, h) // Returns corresponding number
|
||||||
|
if (w !== null && w !== "") { |
||||||
|
return Math.round((h / 16) * 9); |
||||||
|
} else if (h !== null && h !== "") { |
||||||
|
return Math.round((w / 9) * 16); |
||||||
|
} |
||||||
|
}, |
||||||
|
r4_3: function(w,h) { |
||||||
|
if (w !== null && w !== "") { |
||||||
|
return Math.round((h / 4) * 3); |
||||||
|
} else if (h !== null && h !== "") { |
||||||
|
return Math.round((w / 3) * 4); |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
doubledigit: function(n) { |
||||||
|
return (n < 10 ? '0' : '') + n; |
||||||
|
}, |
||||||
|
|
||||||
|
/* * Returns a truncated segement of a long string of between min and max words. If possible, ends on a period (otherwise goes to max). |
||||||
|
================================================== */ |
||||||
|
truncateWords: function(s, min, max) { |
||||||
|
|
||||||
|
if (!min) min = 30; |
||||||
|
if (!max) max = min; |
||||||
|
|
||||||
|
var initial_whitespace_rExp = /^[^A-Za-z0-9\'\-]+/gi; |
||||||
|
var left_trimmedStr = s.replace(initial_whitespace_rExp, ""); |
||||||
|
var words = left_trimmedStr.split(" "); |
||||||
|
|
||||||
|
var result = []; |
||||||
|
|
||||||
|
min = Math.min(words.length, min); |
||||||
|
max = Math.min(words.length, max); |
||||||
|
|
||||||
|
for (var i = 0; i<min; i++) { |
||||||
|
result.push(words[i]); |
||||||
|
}
|
||||||
|
|
||||||
|
for (var j = min; i<max; i++) { |
||||||
|
var word = words[i]; |
||||||
|
|
||||||
|
result.push(word); |
||||||
|
|
||||||
|
if (word.charAt(word.length-1) == '.') { |
||||||
|
break; |
||||||
|
} |
||||||
|
}
|
||||||
|
|
||||||
|
return (result.join(' ')); |
||||||
|
}, |
||||||
|
|
||||||
|
/* * Turns plain text links into real links |
||||||
|
================================================== */ |
||||||
|
linkify: function(text,targets,is_touch) { |
||||||
|
|
||||||
|
// http://, https://, ftp://
|
||||||
|
var urlPattern = /\b(?:https?|ftp):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|]/gim; |
||||||
|
|
||||||
|
// www. sans http:// or https://
|
||||||
|
var pseudoUrlPattern = /(^|[^\/])(www\.[\S]+(\b|$))/gim; |
||||||
|
|
||||||
|
// Email addresses
|
||||||
|
var emailAddressPattern = /(([a-zA-Z0-9_\-\.]+)@[a-zA-Z_]+?(?:\.[a-zA-Z]{2,6}))+/gim; |
||||||
|
|
||||||
|
|
||||||
|
return text |
||||||
|
.replace(urlPattern, "<a target='_blank' href='$&' onclick='void(0)'>$&</a>") |
||||||
|
.replace(pseudoUrlPattern, "$1<a target='_blank' onclick='void(0)' href='http://$2'>$2</a>") |
||||||
|
.replace(emailAddressPattern, "<a target='_blank' onclick='void(0)' href='mailto:$1'>$1</a>"); |
||||||
|
}, |
||||||
|
|
||||||
|
linkify_with_twitter: function(text,targets,is_touch) { |
||||||
|
|
||||||
|
// http://, https://, ftp://
|
||||||
|
var urlPattern = /\b(?:https?|ftp):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|]/gim; |
||||||
|
var url_pattern = /(\()((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(\))|(\[)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(\])|(\{)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(\})|(<|&(?:lt|#60|#x3c);)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(>|&(?:gt|#62|#x3e);)|((?:^|[^=\s'"\]])\s*['"]?|[^=\s]\s+)(\b(?:ht|f)tps?:\/\/[a-z0-9\-._~!$'()*+,;=:\/?#[\]@%]+(?:(?!&(?:gt|#0*62|#x0*3e);|&(?:amp|apos|quot|#0*3[49]|#x0*2[27]);[.!&',:?;]?(?:[^a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]|$))&[a-z0-9\-._~!$'()*+,;=:\/?#[\]@%]*)*[a-z0-9\-_~$()*+=\/#[\]@%])/img; |
||||||
|
var url_replace = '$1$4$7$10$13<a href="$2$5$8$11$14" target="_blank" class="hyphenate">$2$5$8$11$14</a>$3$6$9$12'; |
||||||
|
|
||||||
|
// www. sans http:// or https://
|
||||||
|
var pseudoUrlPattern = /(^|[^\/])(www\.[\S]+(\b|$))/gim; |
||||||
|
function replaceURLWithHTMLLinks(text) { |
||||||
|
var exp = /(\b(https?|ftp|file):\/\/([-A-Z0-9+&@#%?=~_|!:,.;]*)([-A-Z0-9+&@#%?\/=~_|!:,.;]*)[-A-Z0-9+&@#\/%=~_|])/ig; |
||||||
|
return text.replace(exp, "<a href='$1' target='_blank'>$3</a>"); |
||||||
|
} |
||||||
|
// Email addresses
|
||||||
|
var emailAddressPattern = /(([a-zA-Z0-9_\-\.]+)@[a-zA-Z_]+?(?:\.[a-zA-Z]{2,6}))+/gim; |
||||||
|
|
||||||
|
//var twitterHandlePattern = /(@([\w]+))/g;
|
||||||
|
var twitterHandlePattern = /\B@([\w-]+)/gm; |
||||||
|
var twitterSearchPattern = /(#([\w]+))/g; |
||||||
|
|
||||||
|
return text |
||||||
|
//.replace(urlPattern, "<a target='_blank' href='$&' onclick='void(0)'>$&</a>")
|
||||||
|
.replace(url_pattern, url_replace) |
||||||
|
.replace(pseudoUrlPattern, "$1<a target='_blank' class='hyphenate' onclick='void(0)' href='http://$2'>$2</a>") |
||||||
|
.replace(emailAddressPattern, "<a target='_blank' onclick='void(0)' href='mailto:$1'>$1</a>") |
||||||
|
.replace(twitterHandlePattern, "<a href='http://twitter.com/$1' target='_blank' onclick='void(0)'>@$1</a>"); |
||||||
|
|
||||||
|
// TURN THIS BACK ON TO AUTOMAGICALLY LINK HASHTAGS TO TWITTER SEARCH
|
||||||
|
//.replace(twitterSearchPattern, "<a href='http://twitter.com/search?q=%23$2' target='_blank' 'void(0)'>$1</a>");
|
||||||
|
}, |
||||||
|
|
||||||
|
linkify_wikipedia: function(text) { |
||||||
|
|
||||||
|
var urlPattern = /<i[^>]*>(.*?)<\/i>/gim; |
||||||
|
return text |
||||||
|
.replace(urlPattern, "<a target='_blank' href='http://en.wikipedia.org/wiki/$&' onclick='void(0)'>$&</a>") |
||||||
|
.replace(/<i\b[^>]*>/gim, "") |
||||||
|
.replace(/<\/i>/gim, "") |
||||||
|
.replace(/<b\b[^>]*>/gim, "") |
||||||
|
.replace(/<\/b>/gim, ""); |
||||||
|
}, |
||||||
|
|
||||||
|
/* * Turns plain text links into real links |
||||||
|
================================================== */ |
||||||
|
// VMM.Util.unlinkify();
|
||||||
|
unlinkify: function(text) { |
||||||
|
if(!text) return text; |
||||||
|
text = text.replace(/<a\b[^>]*>/i,""); |
||||||
|
text = text.replace(/<\/a>/i, ""); |
||||||
|
return text; |
||||||
|
}, |
||||||
|
|
||||||
|
untagify: function(text) { |
||||||
|
if (!text) { |
||||||
|
return text; |
||||||
|
} |
||||||
|
text = text.replace(/<\s*\w.*?>/g,""); |
||||||
|
return text; |
||||||
|
}, |
||||||
|
|
||||||
|
/* * TK |
||||||
|
================================================== */ |
||||||
|
nl2br: function(text) { |
||||||
|
return text.replace(/(\r\n|[\r\n]|\\n|\\r)/g,"<br/>"); |
||||||
|
}, |
||||||
|
|
||||||
|
/* * Generate a Unique ID |
||||||
|
================================================== */ |
||||||
|
// VMM.Util.unique_ID(size);
|
||||||
|
unique_ID: function(size) { |
||||||
|
|
||||||
|
var getRandomNumber = function(range) { |
||||||
|
return Math.floor(Math.random() * range); |
||||||
|
}; |
||||||
|
|
||||||
|
var getRandomChar = function() { |
||||||
|
var chars = "abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ"; |
||||||
|
return chars.substr( getRandomNumber(62), 1 ); |
||||||
|
}; |
||||||
|
|
||||||
|
var randomID = function(size) { |
||||||
|
var str = ""; |
||||||
|
for(var i = 0; i < size; i++) { |
||||||
|
str += getRandomChar(); |
||||||
|
} |
||||||
|
return str; |
||||||
|
}; |
||||||
|
|
||||||
|
return randomID(size); |
||||||
|
}, |
||||||
|
/* * Tells you if a number is even or not |
||||||
|
================================================== */ |
||||||
|
// VMM.Util.isEven(n)
|
||||||
|
isEven: function(n){ |
||||||
|
return (n%2 === 0) ? true : false; |
||||||
|
}, |
||||||
|
/* * Get URL Variables |
||||||
|
================================================== */ |
||||||
|
// var somestring = VMM.Util.getUrlVars(str_url)["varname"];
|
||||||
|
getUrlVars: function(string) { |
||||||
|
|
||||||
|
var str = string.toString(); |
||||||
|
|
||||||
|
if (str.match('&')) {
|
||||||
|
str = str.replace("&", "&"); |
||||||
|
} else if (str.match('&')) { |
||||||
|
str = str.replace("&", "&"); |
||||||
|
} else if (str.match('&')) { |
||||||
|
str = str.replace("&", "&"); |
||||||
|
} |
||||||
|
|
||||||
|
var vars = [], hash; |
||||||
|
var hashes = str.slice(str.indexOf('?') + 1).split('&'); |
||||||
|
for(var i = 0; i < hashes.length; i++) { |
||||||
|
hash = hashes[i].split('='); |
||||||
|
vars.push(hash[0]); |
||||||
|
vars[hash[0]] = hash[1]; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
return vars; |
||||||
|
}, |
||||||
|
|
||||||
|
/* * Cleans up strings to become real HTML |
||||||
|
================================================== */ |
||||||
|
toHTML: function(text) { |
||||||
|
|
||||||
|
text = this.nl2br(text); |
||||||
|
text = this.linkify(text); |
||||||
|
|
||||||
|
return text.replace(/\s\s/g," "); |
||||||
|
}, |
||||||
|
|
||||||
|
/* * Returns text strings as CamelCase |
||||||
|
================================================== */ |
||||||
|
toCamelCase: function(s,forceLowerCase) { |
||||||
|
|
||||||
|
if(forceLowerCase !== false) forceLowerCase = true; |
||||||
|
|
||||||
|
var sps = ((forceLowerCase) ? s.toLowerCase() : s).split(" "); |
||||||
|
|
||||||
|
for(var i=0; i<sps.length; i++) { |
||||||
|
|
||||||
|
sps[i] = sps[i].substr(0,1).toUpperCase() + sps[i].substr(1); |
||||||
|
} |
||||||
|
|
||||||
|
return sps.join(" "); |
||||||
|
}, |
||||||
|
|
||||||
|
/* * Replaces dumb quote marks with smart ones |
||||||
|
================================================== */ |
||||||
|
properQuotes: function(str) { |
||||||
|
return str.replace(/\"([^\"]*)\"/gi,"“$1”"); |
||||||
|
}, |
||||||
|
/* * Add Commas to numbers |
||||||
|
================================================== */ |
||||||
|
niceNumber: function(nStr){ |
||||||
|
nStr += ''; |
||||||
|
x = nStr.split('.'); |
||||||
|
x1 = x[0]; |
||||||
|
x2 = x.length > 1 ? '.' + x[1] : ''; |
||||||
|
var rgx = /(\d+)(\d{3})/; |
||||||
|
while (rgx.test(x1)) { |
||||||
|
x1 = x1.replace(rgx, '$1' + ',' + '$2'); |
||||||
|
} |
||||||
|
return x1 + x2; |
||||||
|
}, |
||||||
|
/* * Transform text to Title Case |
||||||
|
================================================== */ |
||||||
|
toTitleCase: function(t){ |
||||||
|
if ( VMM.Browser.browser == "Explorer" && parseInt(VMM.Browser.version, 10) >= 7) { |
||||||
|
return t.replace("_", "%20"); |
||||||
|
} else { |
||||||
|
var __TitleCase = { |
||||||
|
__smallWords: ['a', 'an', 'and', 'as', 'at', 'but','by', 'en', 'for', 'if', 'in', 'of', 'on', 'or','the', 'to', 'v[.]?', 'via', 'vs[.]?'], |
||||||
|
|
||||||
|
init: function() { |
||||||
|
this.__smallRE = this.__smallWords.join('|'); |
||||||
|
this.__lowerCaseWordsRE = new RegExp('\\b(' + this.__smallRE + ')\\b', 'gi'); |
||||||
|
this.__firstWordRE = new RegExp('^([^a-zA-Z0-9 \\r\\n\\t]*)(' + this.__smallRE + ')\\b', 'gi'); |
||||||
|
this.__lastWordRE = new RegExp('\\b(' + this.__smallRE + ')([^a-zA-Z0-9 \\r\\n\\t]*)$', 'gi'); |
||||||
|
}, |
||||||
|
|
||||||
|
toTitleCase: function(string) { |
||||||
|
var line = ''; |
||||||
|
|
||||||
|
var split = string.split(/([:.;?!][ ]|(?:[ ]|^)["“])/); |
||||||
|
|
||||||
|
for (var i = 0; i < split.length; ++i) { |
||||||
|
var s = split[i]; |
||||||
|
|
||||||
|
s = s.replace(/\b([a-zA-Z][a-z.'’]*)\b/g,this.__titleCaseDottedWordReplacer); |
||||||
|
|
||||||
|
// lowercase the list of small words
|
||||||
|
s = s.replace(this.__lowerCaseWordsRE, this.__lowerReplacer); |
||||||
|
|
||||||
|
// if the first word in the title is a small word then capitalize it
|
||||||
|
s = s.replace(this.__firstWordRE, this.__firstToUpperCase); |
||||||
|
|
||||||
|
// if the last word in the title is a small word, then capitalize it
|
||||||
|
s = s.replace(this.__lastWordRE, this.__firstToUpperCase); |
||||||
|
|
||||||
|
line += s; |
||||||
|
} |
||||||
|
|
||||||
|
// special cases
|
||||||
|
line = line.replace(/ V(s?)\. /g, ' v$1. '); |
||||||
|
line = line.replace(/(['’])S\b/g, '$1s'); |
||||||
|
line = line.replace(/\b(AT&T|Q&A)\b/ig, this.__upperReplacer); |
||||||
|
|
||||||
|
return line; |
||||||
|
}, |
||||||
|
|
||||||
|
__titleCaseDottedWordReplacer: function (w) { |
||||||
|
return (w.match(/[a-zA-Z][.][a-zA-Z]/)) ? w : __TitleCase.__firstToUpperCase(w); |
||||||
|
}, |
||||||
|
|
||||||
|
__lowerReplacer: function (w) { return w.toLowerCase() }, |
||||||
|
|
||||||
|
__upperReplacer: function (w) { return w.toUpperCase() }, |
||||||
|
|
||||||
|
__firstToUpperCase: function (w) { |
||||||
|
var split = w.split(/(^[^a-zA-Z0-9]*[a-zA-Z0-9])(.*)$/); |
||||||
|
if (split[1]) { |
||||||
|
split[1] = split[1].toUpperCase(); |
||||||
|
} |
||||||
|
|
||||||
|
return split.join(''); |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
__TitleCase.init(); |
||||||
|
|
||||||
|
t = t.replace(/_/g," "); |
||||||
|
t = __TitleCase.toTitleCase(t); |
||||||
|
|
||||||
|
return t; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
}).init(); |
||||||
|
} |
@ -0,0 +1,382 @@ |
|||||||
|
/** |
||||||
|
* VéritéCo JS Core |
||||||
|
* Designed and built by Zach Wise at VéritéCo zach@verite.co |
||||||
|
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public |
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this |
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
*/ |
||||||
|
|
||||||
|
|
||||||
|
/* Simple JavaScript Inheritance |
||||||
|
By John Resig http://ejohn.org/
|
||||||
|
MIT Licensed. |
||||||
|
================================================== */ |
||||||
|
(function() { |
||||||
|
var initializing = false, |
||||||
|
fnTest = /xyz/.test(function() { |
||||||
|
xyz; |
||||||
|
}) ? /\b_super\b/: /.*/; |
||||||
|
// The base Class implementation (does nothing)
|
||||||
|
this.Class = function() {}; |
||||||
|
|
||||||
|
// Create a new Class that inherits from this class
|
||||||
|
Class.extend = function(prop) { |
||||||
|
var _super = this.prototype; |
||||||
|
|
||||||
|
// Instantiate a base class (but only create the instance,
|
||||||
|
// don't run the init constructor)
|
||||||
|
initializing = true; |
||||||
|
var prototype = new this(); |
||||||
|
initializing = false; |
||||||
|
|
||||||
|
// Copy the properties over onto the new prototype
|
||||||
|
for (var name in prop) { |
||||||
|
// Check if we're overwriting an existing function
|
||||||
|
prototype[name] = typeof prop[name] == "function" && |
||||||
|
typeof _super[name] == "function" && fnTest.test(prop[name]) ? |
||||||
|
(function(name, fn) { |
||||||
|
return function() { |
||||||
|
var tmp = this._super; |
||||||
|
|
||||||
|
// Add a new ._super() method that is the same method
|
||||||
|
// but on the super-class
|
||||||
|
this._super = _super[name]; |
||||||
|
|
||||||
|
// The method only need to be bound temporarily, so we
|
||||||
|
// remove it when we're done executing
|
||||||
|
var ret = fn.apply(this, arguments); |
||||||
|
this._super = tmp; |
||||||
|
|
||||||
|
return ret; |
||||||
|
}; |
||||||
|
})(name, prop[name]) : |
||||||
|
prop[name]; |
||||||
|
} |
||||||
|
|
||||||
|
// The dummy class constructor
|
||||||
|
function Class() { |
||||||
|
// All construction is actually done in the init method
|
||||||
|
if (!initializing && this.init) |
||||||
|
this.init.apply(this, arguments); |
||||||
|
} |
||||||
|
|
||||||
|
// Populate our constructed prototype object
|
||||||
|
Class.prototype = prototype; |
||||||
|
|
||||||
|
// Enforce the constructor to be what we expect
|
||||||
|
Class.prototype.constructor = Class; |
||||||
|
|
||||||
|
// And make this class extendable
|
||||||
|
Class.extend = arguments.callee; |
||||||
|
|
||||||
|
return Class; |
||||||
|
}; |
||||||
|
})(); |
||||||
|
|
||||||
|
/* Access to the Global Object |
||||||
|
access the global object without hard-coding the identifier window |
||||||
|
================================================== */ |
||||||
|
var global = (function () { |
||||||
|
return this || (1,eval)('this'); |
||||||
|
}()); |
||||||
|
|
||||||
|
/* VMM |
||||||
|
================================================== */ |
||||||
|
if (typeof VMM == 'undefined') { |
||||||
|
|
||||||
|
/* Main Scope Container |
||||||
|
================================================== */ |
||||||
|
//var VMM = {};
|
||||||
|
var VMM = Class.extend({}); |
||||||
|
|
||||||
|
/* Debug |
||||||
|
================================================== */ |
||||||
|
VMM.debug = true; |
||||||
|
|
||||||
|
/* Master Config |
||||||
|
================================================== */ |
||||||
|
|
||||||
|
VMM.master_config = ({ |
||||||
|
|
||||||
|
init: function() { |
||||||
|
return this; |
||||||
|
}, |
||||||
|
|
||||||
|
sizes: { |
||||||
|
api: { |
||||||
|
width: 0, |
||||||
|
height: 0 |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
vp: "Pellentesque nibh felis, eleifend id, commodo in, interdum vitae, leo", |
||||||
|
|
||||||
|
api_keys_master: { |
||||||
|
flickr: "RAIvxHY4hE/Elm5cieh4X5ptMyDpj7MYIxziGxi0WGCcy1s+yr7rKQ==", |
||||||
|
//google: "jwNGnYw4hE9lmAez4ll0QD+jo6SKBJFknkopLS4FrSAuGfIwyj57AusuR0s8dAo=",
|
||||||
|
google: "uQKadH1VMlCsp560gN2aOiMz4evWkl1s34yryl3F/9FJOsn+/948CbBUvKLN46U=", |
||||||
|
twitter: "" |
||||||
|
}, |
||||||
|
|
||||||
|
timers: { |
||||||
|
api: 7000 |
||||||
|
}, |
||||||
|
|
||||||
|
api: { |
||||||
|
pushques: [] |
||||||
|
|
||||||
|
}, |
||||||
|
|
||||||
|
twitter: { |
||||||
|
active: false, |
||||||
|
array: [], |
||||||
|
api_loaded: false, |
||||||
|
que: [] |
||||||
|
}, |
||||||
|
|
||||||
|
flickr: { |
||||||
|
active: false, |
||||||
|
array: [], |
||||||
|
api_loaded: false, |
||||||
|
que: [] |
||||||
|
}, |
||||||
|
|
||||||
|
youtube: { |
||||||
|
active: false, |
||||||
|
array: [], |
||||||
|
api_loaded: false, |
||||||
|
que: [] |
||||||
|
}, |
||||||
|
|
||||||
|
vimeo: { |
||||||
|
active: false, |
||||||
|
array: [], |
||||||
|
api_loaded: false, |
||||||
|
que: [] |
||||||
|
}, |
||||||
|
|
||||||
|
vine: { |
||||||
|
active: false, |
||||||
|
array: [], |
||||||
|
api_loaded: false, |
||||||
|
que: [] |
||||||
|
}, |
||||||
|
|
||||||
|
webthumb: { |
||||||
|
active: false, |
||||||
|
array: [], |
||||||
|
api_loaded: false, |
||||||
|
que: [] |
||||||
|
}, |
||||||
|
|
||||||
|
googlemaps: { |
||||||
|
active: false, |
||||||
|
map_active: false, |
||||||
|
places_active: false, |
||||||
|
array: [], |
||||||
|
api_loaded: false, |
||||||
|
que: [] |
||||||
|
}, |
||||||
|
|
||||||
|
googledocs: { |
||||||
|
active: false, |
||||||
|
array: [], |
||||||
|
api_loaded: false, |
||||||
|
que: [] |
||||||
|
}, |
||||||
|
|
||||||
|
googleplus: { |
||||||
|
active: false, |
||||||
|
array: [], |
||||||
|
api_loaded: false, |
||||||
|
que: [] |
||||||
|
}, |
||||||
|
|
||||||
|
wikipedia: { |
||||||
|
active: false, |
||||||
|
array: [], |
||||||
|
api_loaded: false, |
||||||
|
que: [], |
||||||
|
tries: 0 |
||||||
|
}, |
||||||
|
|
||||||
|
soundcloud: { |
||||||
|
active: false, |
||||||
|
array: [], |
||||||
|
api_loaded: false, |
||||||
|
que: [] |
||||||
|
} |
||||||
|
|
||||||
|
}).init(); |
||||||
|
|
||||||
|
//VMM.createElement(tag, value, cName, attrs, styles);
|
||||||
|
VMM.createElement = function(tag, value, cName, attrs, styles) { |
||||||
|
|
||||||
|
var ce = ""; |
||||||
|
|
||||||
|
if (tag != null && tag != "") { |
||||||
|
|
||||||
|
// TAG
|
||||||
|
ce += "<" + tag; |
||||||
|
if (cName != null && cName != "") { |
||||||
|
ce += " class='" + cName + "'"; |
||||||
|
}; |
||||||
|
|
||||||
|
if (attrs != null && attrs != "") { |
||||||
|
ce += " " + attrs; |
||||||
|
}; |
||||||
|
|
||||||
|
if (styles != null && styles != "") { |
||||||
|
ce += " style='" + styles + "'"; |
||||||
|
}; |
||||||
|
|
||||||
|
ce += ">"; |
||||||
|
|
||||||
|
if (value != null && value != "") { |
||||||
|
ce += value; |
||||||
|
} |
||||||
|
|
||||||
|
// CLOSE TAG
|
||||||
|
ce = ce + "</" + tag + ">"; |
||||||
|
} |
||||||
|
|
||||||
|
return ce; |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
VMM.createMediaElement = function(media, caption, credit) { |
||||||
|
|
||||||
|
var ce = ""; |
||||||
|
|
||||||
|
var _valid = false; |
||||||
|
|
||||||
|
ce += "<div class='media'>"; |
||||||
|
|
||||||
|
if (media != null && media != "") { |
||||||
|
|
||||||
|
valid = true; |
||||||
|
|
||||||
|
ce += "<img src='" + media + "'>"; |
||||||
|
|
||||||
|
// CREDIT
|
||||||
|
if (credit != null && credit != "") { |
||||||
|
ce += VMM.createElement("div", credit, "credit"); |
||||||
|
} |
||||||
|
|
||||||
|
// CAPTION
|
||||||
|
if (caption != null && caption != "") { |
||||||
|
ce += VMM.createElement("div", caption, "caption"); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
ce += "</div>"; |
||||||
|
|
||||||
|
return ce; |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
// Hide URL Bar for iOS and Android by Scott Jehl
|
||||||
|
// https://gist.github.com/1183357
|
||||||
|
|
||||||
|
VMM.hideUrlBar = function () { |
||||||
|
var win = window, |
||||||
|
doc = win.document; |
||||||
|
|
||||||
|
// If there's a hash, or addEventListener is undefined, stop here
|
||||||
|
if( !location.hash || !win.addEventListener ){ |
||||||
|
|
||||||
|
//scroll to 1
|
||||||
|
window.scrollTo( 0, 1 ); |
||||||
|
var scrollTop = 1, |
||||||
|
|
||||||
|
//reset to 0 on bodyready, if needed
|
||||||
|
bodycheck = setInterval(function(){ |
||||||
|
if( doc.body ){ |
||||||
|
clearInterval( bodycheck ); |
||||||
|
scrollTop = "scrollTop" in doc.body ? doc.body.scrollTop : 1; |
||||||
|
win.scrollTo( 0, scrollTop === 1 ? 0 : 1 ); |
||||||
|
}
|
||||||
|
}, 15 ); |
||||||
|
|
||||||
|
win.addEventListener( "load", function(){ |
||||||
|
setTimeout(function(){ |
||||||
|
//reset to hide addr bar at onload
|
||||||
|
win.scrollTo( 0, scrollTop === 1 ? 0 : 1 ); |
||||||
|
}, 0); |
||||||
|
}, false ); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/* Trace (console.log) |
||||||
|
================================================== */ |
||||||
|
function trace( msg ) { |
||||||
|
if (VMM.debug) { |
||||||
|
if (window.console) { |
||||||
|
console.log(msg); |
||||||
|
} else if ( typeof( jsTrace ) != 'undefined' ) { |
||||||
|
jsTrace.send( msg ); |
||||||
|
} else { |
||||||
|
//alert(msg);
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/* Array Remove - By John Resig (MIT Licensed) |
||||||
|
http://ejohn.org/blog/javascript-array-remove/
|
||||||
|
================================================== */ |
||||||
|
Array.prototype.remove = function(from, to) { |
||||||
|
var rest = this.slice((to || from) + 1 || this.length); |
||||||
|
this.length = from < 0 ? this.length + from : from; |
||||||
|
return this.push.apply(this, rest); |
||||||
|
} |
||||||
|
|
||||||
|
/* Extending Date to include Week |
||||||
|
================================================== */ |
||||||
|
Date.prototype.getWeek = function() { |
||||||
|
var onejan = new Date(this.getFullYear(),0,1); |
||||||
|
return Math.ceil((((this - onejan) / 86400000) + onejan.getDay()+1)/7); |
||||||
|
} |
||||||
|
|
||||||
|
/* Extending Date to include Day of Year |
||||||
|
================================================== */ |
||||||
|
Date.prototype.getDayOfYear = function() { |
||||||
|
var onejan = new Date(this.getFullYear(),0,1); |
||||||
|
return Math.ceil((this - onejan) / 86400000); |
||||||
|
} |
||||||
|
|
||||||
|
/* A MORE SPECIFIC TYPEOF(); |
||||||
|
// http://rolandog.com/archives/2007/01/18/typeof-a-more-specific-typeof/
|
||||||
|
================================================== */ |
||||||
|
// type.of()
|
||||||
|
var is={ |
||||||
|
Null:function(a){return a===null;}, |
||||||
|
Undefined:function(a){return a===undefined;}, |
||||||
|
nt:function(a){return(a===null||a===undefined);}, |
||||||
|
Function:function(a){return(typeof(a)==="function")?a.constructor.toString().match(/Function/)!==null:false;}, |
||||||
|
String:function(a){return(typeof(a)==="string")?true:(typeof(a)==="object")?a.constructor.toString().match(/string/i)!==null:false;}, |
||||||
|
Array:function(a){return(typeof(a)==="object")?a.constructor.toString().match(/array/i)!==null||a.length!==undefined:false;}, |
||||||
|
Boolean:function(a){return(typeof(a)==="boolean")?true:(typeof(a)==="object")?a.constructor.toString().match(/boolean/i)!==null:false;}, |
||||||
|
Date:function(a){return(typeof(a)==="date")?true:(typeof(a)==="object")?a.constructor.toString().match(/date/i)!==null:false;}, |
||||||
|
HTML:function(a){return(typeof(a)==="object")?a.constructor.toString().match(/html/i)!==null:false;}, |
||||||
|
Number:function(a){return(typeof(a)==="number")?true:(typeof(a)==="object")?a.constructor.toString().match(/Number/)!==null:false;}, |
||||||
|
Object:function(a){return(typeof(a)==="object")?a.constructor.toString().match(/object/i)!==null:false;}, |
||||||
|
RegExp:function(a){return(typeof(a)==="function")?a.constructor.toString().match(/regexp/i)!==null:false;} |
||||||
|
}; |
||||||
|
var type={ |
||||||
|
of:function(a){ |
||||||
|
for(var i in is){ |
||||||
|
if(is[i](a)){ |
||||||
|
return i.toLowerCase(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,50 @@ |
|||||||
|
/* |
||||||
|
LoadLib |
||||||
|
Designed and built by Zach Wise http://zachwise.com/
|
||||||
|
Extends LazyLoad |
||||||
|
*/ |
||||||
|
|
||||||
|
/* * CodeKit Import |
||||||
|
* http://incident57.com/codekit/
|
||||||
|
================================================== */ |
||||||
|
// @codekit-prepend "../Library/LazyLoad.js";
|
||||||
|
|
||||||
|
LoadLib = (function (doc) { |
||||||
|
var loaded = []; |
||||||
|
|
||||||
|
function isLoaded(url) { |
||||||
|
|
||||||
|
var i = 0, |
||||||
|
has_loaded = false; |
||||||
|
|
||||||
|
for (i = 0; i < loaded.length; i++) { |
||||||
|
if (loaded[i] == url) { |
||||||
|
has_loaded = true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (has_loaded) { |
||||||
|
return true; |
||||||
|
} else { |
||||||
|
loaded.push(url); |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
return { |
||||||
|
|
||||||
|
css: function (urls, callback, obj, context) { |
||||||
|
if (!isLoaded(urls)) { |
||||||
|
LazyLoad.css(urls, callback, obj, context); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
js: function (urls, callback, obj, context) { |
||||||
|
if (!isLoaded(urls)) { |
||||||
|
LazyLoad.js(urls, callback, obj, context); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
})(this.document); |
@ -0,0 +1,355 @@ |
|||||||
|
//StoryJS Embed Loader
|
||||||
|
// Provide a bootstrap method for instantiating a timeline. On page load, check the definition of these window scoped variables in this order: [url_config, timeline_config, storyjs_config, config]. As soon as one of these is found to be defined with type 'object,' it will be used to automatically instantiate a timeline.
|
||||||
|
|
||||||
|
/* CodeKit Import |
||||||
|
http://incident57.com/codekit/
|
||||||
|
================================================== */ |
||||||
|
// @codekit-prepend "Embed.LoadLib.js";
|
||||||
|
|
||||||
|
var WebFontConfig; |
||||||
|
|
||||||
|
if(typeof embed_path == 'undefined' || typeof embed_path == 'undefined') { |
||||||
|
// REPLACE WITH YOUR BASEPATH IF YOU WANT OTHERWISE IT WILL TRY AND FIGURE IT OUT
|
||||||
|
var embed_path = getEmbedScriptPath("storyjs-embed.js").split("js/")[0]; |
||||||
|
} |
||||||
|
|
||||||
|
function getEmbedScriptPath(scriptname) { |
||||||
|
var scriptTags = document.getElementsByTagName('script'), |
||||||
|
script_path = "", |
||||||
|
script_path_end = ""; |
||||||
|
for(var i = 0; i < scriptTags.length; i++) { |
||||||
|
if (scriptTags[i].src.match(scriptname)) { |
||||||
|
script_path = scriptTags[i].src; |
||||||
|
} |
||||||
|
} |
||||||
|
if (script_path != "") { |
||||||
|
script_path_end = "/" |
||||||
|
} |
||||||
|
return script_path.split('?')[0].split('/').slice(0, -1).join('/') + script_path_end; |
||||||
|
} |
||||||
|
|
||||||
|
/* CHECK TO SEE IF A CONFIG IS ALREADY DEFINED (FOR EASY EMBED) |
||||||
|
================================================== */ |
||||||
|
(function() { |
||||||
|
if (typeof url_config == 'object') { |
||||||
|
createStoryJS(url_config); |
||||||
|
} else if (typeof timeline_config == 'object') { |
||||||
|
createStoryJS(timeline_config); |
||||||
|
} else if (typeof storyjs_config == 'object') { |
||||||
|
createStoryJS(storyjs_config); |
||||||
|
} else if (typeof config == 'object') { |
||||||
|
createStoryJS(config); |
||||||
|
} else { |
||||||
|
// No existing config. Call createStoryJS(your_config) manually with a config
|
||||||
|
} |
||||||
|
})(); |
||||||
|
|
||||||
|
/* CREATE StoryJS Embed |
||||||
|
================================================== */ |
||||||
|
function createStoryJS(c, src) { |
||||||
|
/* VARS |
||||||
|
================================================== */ |
||||||
|
var storyjs_embedjs, t, te, x, |
||||||
|
isCDN = false, |
||||||
|
js_version = "2.24", |
||||||
|
jquery_version_required = "1.7.1", |
||||||
|
jquery_version = "", |
||||||
|
ready = { |
||||||
|
timeout: "", |
||||||
|
checks: 0, |
||||||
|
finished: false, |
||||||
|
js: false, |
||||||
|
css: false, |
||||||
|
jquery: false, |
||||||
|
has_jquery: false, |
||||||
|
language: false, |
||||||
|
font: { |
||||||
|
css: false, |
||||||
|
js: false |
||||||
|
} |
||||||
|
}, |
||||||
|
path = { |
||||||
|
base: embed_path, |
||||||
|
css: embed_path + "css/", |
||||||
|
js: embed_path + "js/", |
||||||
|
locale: embed_path + "js/locale/", |
||||||
|
jquery: "//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js", |
||||||
|
font: { |
||||||
|
google: false, |
||||||
|
css: embed_path + "css/themes/font/", |
||||||
|
js: "//ajax.googleapis.com/ajax/libs/webfont/1/webfont.js" |
||||||
|
} |
||||||
|
}, |
||||||
|
storyjs_e_config = { |
||||||
|
version: js_version, |
||||||
|
debug: false, |
||||||
|
type: 'timeline', |
||||||
|
id: 'storyjs', |
||||||
|
embed_id: 'timeline-embed', |
||||||
|
embed: true, |
||||||
|
width: '100%', |
||||||
|
height: '100%', |
||||||
|
source: 'https://docs.google.com/spreadsheet/pub?key=0Agl_Dv6iEbDadFYzRjJPUGktY0NkWXFUWkVIZDNGRHc&output=html', |
||||||
|
lang: 'en', |
||||||
|
font: 'default', |
||||||
|
css: path.css + 'timeline.css?'+js_version, |
||||||
|
js: '', |
||||||
|
api_keys: { |
||||||
|
google: "", |
||||||
|
flickr: "", |
||||||
|
twitter: "" |
||||||
|
}, |
||||||
|
gmap_key: "" |
||||||
|
}, |
||||||
|
font_presets = [ |
||||||
|
{ name: "Merriweather-NewsCycle", google: [ 'News+Cycle:400,700:latin', 'Merriweather:400,700,900:latin' ] }, |
||||||
|
{ name: "NewsCycle-Merriweather", google: [ 'News+Cycle:400,700:latin', 'Merriweather:300,400,700:latin' ] }, |
||||||
|
{ name: "PoiretOne-Molengo", google: [ 'Poiret+One::latin', 'Molengo::latin' ] }, |
||||||
|
{ name: "Arvo-PTSans", google: [ 'Arvo:400,700,400italic:latin', 'PT+Sans:400,700,400italic:latin' ] }, |
||||||
|
{ name: "PTSerif-PTSans", google: [ 'PT+Sans:400,700,400italic:latin', 'PT+Serif:400,700,400italic:latin' ] }, |
||||||
|
{ name: "PT", google: [ 'PT+Sans+Narrow:400,700:latin', 'PT+Sans:400,700,400italic:latin', 'PT+Serif:400,700,400italic:latin' ] }, |
||||||
|
{ name: "DroidSerif-DroidSans", google: [ 'Droid+Sans:400,700:latin', 'Droid+Serif:400,700,400italic:latin' ] }, |
||||||
|
{ name: "Lekton-Molengo", google: [ 'Lekton:400,700,400italic:latin', 'Molengo::latin' ] }, |
||||||
|
{ name: "NixieOne-Ledger", google: [ 'Nixie+One::latin', 'Ledger::latin' ] }, |
||||||
|
{ name: "AbrilFatface-Average", google: [ 'Average::latin', 'Abril+Fatface::latin' ] }, |
||||||
|
{ name: "PlayfairDisplay-Muli", google: [ 'Playfair+Display:400,400italic:latin', 'Muli:300,400,300italic,400italic:latin' ] }, |
||||||
|
{ name: "Rancho-Gudea", google: [ 'Rancho::latin', 'Gudea:400,700,400italic:latin' ] }, |
||||||
|
{ name: "Bevan-PotanoSans", google: [ 'Bevan::latin', 'Pontano+Sans::latin' ] }, |
||||||
|
{ name: "BreeSerif-OpenSans", google: [ 'Bree+Serif::latin', 'Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800:latin' ] }, |
||||||
|
{ name: "SansitaOne-Kameron", google: [ 'Sansita+One::latin', 'Kameron:400,700:latin' ] }, |
||||||
|
{ name: "Lora-Istok", google: [ 'Lora:400,700,400italic,700italic:latin', 'Istok+Web:400,700,400italic,700italic:latin' ] }, |
||||||
|
{ name: "Pacifico-Arimo", google: [ 'Pacifico::latin', 'Arimo:400,700,400italic,700italic:latin' ] } |
||||||
|
]; |
||||||
|
|
||||||
|
/* BUILD CONFIG |
||||||
|
================================================== */ |
||||||
|
if (typeof c == 'object') { |
||||||
|
for (x in c) { |
||||||
|
if (Object.prototype.hasOwnProperty.call(c, x)) { |
||||||
|
storyjs_e_config[x] = c[x]; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (typeof src != 'undefined') { |
||||||
|
storyjs_e_config.source = src; |
||||||
|
} |
||||||
|
|
||||||
|
/* CDN VERSION? |
||||||
|
================================================== */ |
||||||
|
if (typeof url_config == 'object') { |
||||||
|
isCDN = true; |
||||||
|
|
||||||
|
/* IS THE SOURCE GOOGLE SPREADSHEET WITH JUST THE KEY? |
||||||
|
================================================== */ |
||||||
|
if (storyjs_e_config.source.match("docs.google.com") || storyjs_e_config.source.match("json") || storyjs_e_config.source.match("storify") ) { |
||||||
|
|
||||||
|
} else { |
||||||
|
storyjs_e_config.source = "https://docs.google.com/spreadsheet/pub?key=" + storyjs_e_config.source + "&output=html"; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/* DETERMINE TYPE |
||||||
|
================================================== */ |
||||||
|
// Check for old installs still using the old method of language
|
||||||
|
if (storyjs_e_config.js.match("locale")) { |
||||||
|
storyjs_e_config.lang = storyjs_e_config.js.split("locale/")[1].replace(".js", ""); |
||||||
|
storyjs_e_config.js = path.js + 'timeline-min.js?' + js_version; |
||||||
|
} |
||||||
|
|
||||||
|
if (storyjs_e_config.js.match("/")) { |
||||||
|
|
||||||
|
} else { |
||||||
|
storyjs_e_config.css = path.css + storyjs_e_config.type + ".css?" + js_version; |
||||||
|
|
||||||
|
// Use unminified js file if in debug mode
|
||||||
|
storyjs_e_config.js = path.js + storyjs_e_config.type; |
||||||
|
if (storyjs_e_config.debug) { |
||||||
|
storyjs_e_config.js += ".js?" + js_version; |
||||||
|
} else { |
||||||
|
storyjs_e_config.js += "-min.js?" + js_version; |
||||||
|
} |
||||||
|
|
||||||
|
storyjs_e_config.id = "storyjs-" + storyjs_e_config.type; |
||||||
|
} |
||||||
|
|
||||||
|
/* PREPARE LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if (storyjs_e_config.lang.match("/")) { |
||||||
|
path.locale = storyjs_e_config.lang; |
||||||
|
} else { |
||||||
|
path.locale = path.locale + storyjs_e_config.lang + ".js?" + js_version; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/* PREPARE |
||||||
|
================================================== */ |
||||||
|
createEmbedDiv(); |
||||||
|
|
||||||
|
/* Load CSS |
||||||
|
================================================== */ |
||||||
|
LoadLib.css(storyjs_e_config.css, onloaded_css); |
||||||
|
|
||||||
|
/* Load FONT |
||||||
|
================================================== */ |
||||||
|
if (storyjs_e_config.font == "default") { |
||||||
|
ready.font.js = true; |
||||||
|
ready.font.css = true; |
||||||
|
} else { |
||||||
|
// FONT CSS
|
||||||
|
var fn; |
||||||
|
if (storyjs_e_config.font.match("/")) { |
||||||
|
fn = storyjs_e_config.font.split(".css")[0].split("/"); |
||||||
|
path.font.name = fn[fn.length -1]; |
||||||
|
path.font.css = storyjs_e_config.font; |
||||||
|
} else { |
||||||
|
path.font.name = storyjs_e_config.font; |
||||||
|
path.font.css = path.font.css + storyjs_e_config.font + ".css?" + js_version; |
||||||
|
} |
||||||
|
LoadLib.css(path.font.css, onloaded_font_css); |
||||||
|
|
||||||
|
// FONT GOOGLE JS
|
||||||
|
for(var i = 0; i < font_presets.length; i++) { |
||||||
|
if (path.font.name == font_presets[i].name) { |
||||||
|
path.font.google = true; |
||||||
|
WebFontConfig = {google: { families: font_presets[i].google }}; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (path.font.google) { |
||||||
|
LoadLib.js(path.font.js, onloaded_font_js); |
||||||
|
} else { |
||||||
|
ready.font.js = true; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/* Load jQuery |
||||||
|
================================================== */ |
||||||
|
try { |
||||||
|
ready.has_jquery = jQuery; |
||||||
|
ready.has_jquery = true; |
||||||
|
if (ready.has_jquery) { |
||||||
|
var jquery_version = parseFloat(jQuery.fn.jquery); |
||||||
|
if (jquery_version < parseFloat(jquery_version_required) ) { |
||||||
|
//console.log("NOT THE REQUIRED VERSION OF JQUERY, LOADING THE REQUIRED VERSION");
|
||||||
|
//console.log("YOU HAVE VERSION " + jQuery.fn.jquery + ", JQUERY VERSION " + jquery_version_required + " OR ABOVE NEEDED");
|
||||||
|
ready.jquery = false; |
||||||
|
} else { |
||||||
|
ready.jquery = true; |
||||||
|
} |
||||||
|
} |
||||||
|
} catch(err) { |
||||||
|
ready.jquery = false; |
||||||
|
} |
||||||
|
if (!ready.jquery) { |
||||||
|
LoadLib.js(path.jquery, onloaded_jquery); |
||||||
|
} else { |
||||||
|
onloaded_jquery(); |
||||||
|
} |
||||||
|
|
||||||
|
/* On Loaded |
||||||
|
================================================== */ |
||||||
|
|
||||||
|
function onloaded_jquery() { |
||||||
|
LoadLib.js(storyjs_e_config.js, onloaded_js); |
||||||
|
} |
||||||
|
function onloaded_js() { |
||||||
|
ready.js = true; |
||||||
|
if (storyjs_e_config.lang != "en") { |
||||||
|
LazyLoad.js(path.locale, onloaded_language); |
||||||
|
} else { |
||||||
|
ready.language = true; |
||||||
|
} |
||||||
|
onloaded_check(); |
||||||
|
} |
||||||
|
function onloaded_language() { |
||||||
|
ready.language = true; |
||||||
|
onloaded_check(); |
||||||
|
} |
||||||
|
function onloaded_css() { |
||||||
|
ready.css = true; |
||||||
|
onloaded_check(); |
||||||
|
} |
||||||
|
function onloaded_font_css() { |
||||||
|
ready.font.css = true; |
||||||
|
onloaded_check(); |
||||||
|
} |
||||||
|
function onloaded_font_js() { |
||||||
|
ready.font.js = true; |
||||||
|
onloaded_check(); |
||||||
|
} |
||||||
|
function onloaded_check() { |
||||||
|
if (ready.checks > 40) { |
||||||
|
return; |
||||||
|
alert("Error Loading Files"); |
||||||
|
} else { |
||||||
|
ready.checks++; |
||||||
|
if (ready.js && ready.css && ready.font.css && ready.font.js && ready.language) { |
||||||
|
if (!ready.finished) { |
||||||
|
ready.finished = true; |
||||||
|
buildEmbed(); |
||||||
|
} |
||||||
|
} else { |
||||||
|
ready.timeout = setTimeout('onloaded_check_again();', 250); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
this.onloaded_check_again = function() { |
||||||
|
onloaded_check(); |
||||||
|
}; |
||||||
|
|
||||||
|
/* Build Timeline |
||||||
|
================================================== */ |
||||||
|
function createEmbedDiv() { |
||||||
|
var embed_classname = "storyjs-embed"; |
||||||
|
|
||||||
|
t = document.createElement('div'); |
||||||
|
|
||||||
|
if (storyjs_e_config.embed_id != "") { |
||||||
|
te = document.getElementById(storyjs_e_config.embed_id); |
||||||
|
} else { |
||||||
|
te = document.getElementById("timeline-embed"); |
||||||
|
} |
||||||
|
|
||||||
|
te.appendChild(t); |
||||||
|
t.setAttribute("id", storyjs_e_config.id); |
||||||
|
|
||||||
|
if (storyjs_e_config.width.toString().match("%") ) { |
||||||
|
te.style.width = storyjs_e_config.width.split("%")[0] + "%"; |
||||||
|
} else { |
||||||
|
storyjs_e_config.width = storyjs_e_config.width - 2; |
||||||
|
te.style.width = (storyjs_e_config.width) + 'px'; |
||||||
|
} |
||||||
|
|
||||||
|
if (storyjs_e_config.height.toString().match("%")) { |
||||||
|
te.style.height = storyjs_e_config.height; |
||||||
|
embed_classname += " full-embed"; |
||||||
|
te.style.height = storyjs_e_config.height.split("%")[0] + "%"; |
||||||
|
|
||||||
|
} else if (storyjs_e_config.width.toString().match("%")) { |
||||||
|
embed_classname += " full-embed"; |
||||||
|
storyjs_e_config.height = storyjs_e_config.height - 16; |
||||||
|
te.style.height = (storyjs_e_config.height) + 'px'; |
||||||
|
}else { |
||||||
|
embed_classname += " sized-embed"; |
||||||
|
storyjs_e_config.height = storyjs_e_config.height - 16; |
||||||
|
te.style.height = (storyjs_e_config.height) + 'px'; |
||||||
|
} |
||||||
|
|
||||||
|
te.setAttribute("class", embed_classname); |
||||||
|
te.setAttribute("className", embed_classname);
|
||||||
|
t.style.position = 'relative'; |
||||||
|
} |
||||||
|
|
||||||
|
function buildEmbed() { |
||||||
|
VMM.debug = storyjs_e_config.debug; |
||||||
|
storyjs_embedjs = new VMM.Timeline(storyjs_e_config.id); |
||||||
|
storyjs_embedjs.init(storyjs_e_config); |
||||||
|
if (isCDN) { |
||||||
|
VMM.bindEvent(global, onHeadline, "HEADLINE"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,361 @@ |
|||||||
|
This Source Code Form is subject to the terms of the Mozilla Public |
||||||
|
License, v. 2.0. If a copy of the MPL was not distributed with this |
||||||
|
file, You can obtain one at http://mozilla.org/MPL/2.0/. |
||||||
|
|
||||||
|
Mozilla Public License Version 2.0 |
||||||
|
================================== |
||||||
|
|
||||||
|
1. Definitions |
||||||
|
-------------- |
||||||
|
|
||||||
|
1.1. "Contributor" |
||||||
|
means each individual or legal entity that creates, contributes to |
||||||
|
the creation of, or owns Covered Software. |
||||||
|
|
||||||
|
1.2. "Contributor Version" |
||||||
|
means the combination of the Contributions of others (if any) used |
||||||
|
by a Contributor and that particular Contributor's Contribution. |
||||||
|
|
||||||
|
1.3. "Contribution" |
||||||
|
means Covered Software of a particular Contributor. |
||||||
|
|
||||||
|
1.4. "Covered Software" |
||||||
|
means Source Code Form to which the initial Contributor has attached |
||||||
|
the notice in Exhibit A, the Executable Form of such Source Code |
||||||
|
Form, and Modifications of such Source Code Form, in each case |
||||||
|
including portions thereof. |
||||||
|
|
||||||
|
1.5. "Incompatible With Secondary Licenses" |
||||||
|
means |
||||||
|
|
||||||
|
(a) that the initial Contributor has attached the notice described |
||||||
|
in Exhibit B to the Covered Software; or |
||||||
|
|
||||||
|
(b) that the Covered Software was made available under the terms of |
||||||
|
version 1.1 or earlier of the License, but not also under the |
||||||
|
terms of a Secondary License. |
||||||
|
|
||||||
|
1.6. "Executable Form" |
||||||
|
means any form of the work other than Source Code Form. |
||||||
|
|
||||||
|
1.7. "Larger Work" |
||||||
|
means a work that combines Covered Software with other material, in |
||||||
|
a separate file or files, that is not Covered Software. |
||||||
|
|
||||||
|
1.8. "License" |
||||||
|
means this document. |
||||||
|
|
||||||
|
1.9. "Licensable" |
||||||
|
means having the right to grant, to the maximum extent possible, |
||||||
|
whether at the time of the initial grant or subsequently, any and |
||||||
|
all of the rights conveyed by this License. |
||||||
|
|
||||||
|
1.10. "Modifications" |
||||||
|
means any of the following: |
||||||
|
|
||||||
|
(a) any file in Source Code Form that results from an addition to, |
||||||
|
deletion from, or modification of the contents of Covered |
||||||
|
Software; or |
||||||
|
|
||||||
|
(b) any new file in Source Code Form that contains any Covered |
||||||
|
Software. |
||||||
|
|
||||||
|
1.11. "Patent Claims" of a Contributor |
||||||
|
means any patent claim(s), including without limitation, method, |
||||||
|
process, and apparatus claims, in any patent Licensable by such |
||||||
|
Contributor that would be infringed, but for the grant of the |
||||||
|
License, by the making, using, selling, offering for sale, having |
||||||
|
made, import, or transfer of either its Contributions or its |
||||||
|
Contributor Version. |
||||||
|
|
||||||
|
1.12. "Secondary License" |
||||||
|
means either the GNU General Public License, Version 2.0, the GNU |
||||||
|
Lesser General Public License, Version 2.1, the GNU Affero General |
||||||
|
Public License, Version 3.0, or any later versions of those |
||||||
|
licenses. |
||||||
|
|
||||||
|
1.13. "Source Code Form" |
||||||
|
means the form of the work preferred for making modifications. |
||||||
|
|
||||||
|
1.14. "You" (or "Your") |
||||||
|
means an individual or a legal entity exercising rights under this |
||||||
|
License. For legal entities, "You" includes any entity that |
||||||
|
controls, is controlled by, or is under common control with You. For |
||||||
|
purposes of this definition, "control" means (a) the power, direct |
||||||
|
or indirect, to cause the direction or management of such entity, |
||||||
|
whether by contract or otherwise, or (b) ownership of more than |
||||||
|
fifty percent (50%) of the outstanding shares or beneficial |
||||||
|
ownership of such entity. |
||||||
|
|
||||||
|
2. License Grants and Conditions |
||||||
|
-------------------------------- |
||||||
|
|
||||||
|
2.1. Grants |
||||||
|
|
||||||
|
Each Contributor hereby grants You a world-wide, royalty-free, |
||||||
|
non-exclusive license: |
||||||
|
|
||||||
|
(a) under intellectual property rights (other than patent or trademark) |
||||||
|
Licensable by such Contributor to use, reproduce, make available, |
||||||
|
modify, display, perform, distribute, and otherwise exploit its |
||||||
|
Contributions, either on an unmodified basis, with Modifications, or |
||||||
|
as part of a Larger Work; and |
||||||
|
|
||||||
|
(b) under Patent Claims of such Contributor to make, use, sell, offer |
||||||
|
for sale, have made, import, and otherwise transfer either its |
||||||
|
Contributions or its Contributor Version. |
||||||
|
|
||||||
|
2.2. Effective Date |
||||||
|
|
||||||
|
The licenses granted in Section 2.1 with respect to any Contribution |
||||||
|
become effective for each Contribution on the date the Contributor first |
||||||
|
distributes such Contribution. |
||||||
|
|
||||||
|
2.3. Limitations on Grant Scope |
||||||
|
|
||||||
|
The licenses granted in this Section 2 are the only rights granted under |
||||||
|
this License. No additional rights or licenses will be implied from the |
||||||
|
distribution or licensing of Covered Software under this License. |
||||||
|
Notwithstanding Section 2.1(b) above, no patent license is granted by a |
||||||
|
Contributor: |
||||||
|
|
||||||
|
(a) for any code that a Contributor has removed from Covered Software; |
||||||
|
or |
||||||
|
|
||||||
|
(b) for infringements caused by: (i) Your and any other third party's |
||||||
|
modifications of Covered Software, or (ii) the combination of its |
||||||
|
Contributions with other software (except as part of its Contributor |
||||||
|
Version); or |
||||||
|
|
||||||
|
(c) under Patent Claims infringed by Covered Software in the absence of |
||||||
|
its Contributions. |
||||||
|
|
||||||
|
This License does not grant any rights in the trademarks, service marks, |
||||||
|
or logos of any Contributor (except as may be necessary to comply with |
||||||
|
the notice requirements in Section 3.4). |
||||||
|
|
||||||
|
2.4. Subsequent Licenses |
||||||
|
|
||||||
|
No Contributor makes additional grants as a result of Your choice to |
||||||
|
distribute the Covered Software under a subsequent version of this |
||||||
|
License (see Section 10.2) or under the terms of a Secondary License (if |
||||||
|
permitted under the terms of Section 3.3). |
||||||
|
|
||||||
|
2.5. Representation |
||||||
|
|
||||||
|
Each Contributor represents that the Contributor believes its |
||||||
|
Contributions are its original creation(s) or it has sufficient rights |
||||||
|
to grant the rights to its Contributions conveyed by this License. |
||||||
|
|
||||||
|
2.6. Fair Use |
||||||
|
|
||||||
|
This License is not intended to limit any rights You have under |
||||||
|
applicable copyright doctrines of fair use, fair dealing, or other |
||||||
|
equivalents. |
||||||
|
|
||||||
|
2.7. Conditions |
||||||
|
|
||||||
|
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted |
||||||
|
in Section 2.1. |
||||||
|
|
||||||
|
3. Responsibilities |
||||||
|
------------------- |
||||||
|
|
||||||
|
3.1. Distribution of Source Form |
||||||
|
|
||||||
|
All distribution of Covered Software in Source Code Form, including any |
||||||
|
Modifications that You create or to which You contribute, must be under |
||||||
|
the terms of this License. You must inform recipients that the Source |
||||||
|
Code Form of the Covered Software is governed by the terms of this |
||||||
|
License, and how they can obtain a copy of this License. You may not |
||||||
|
attempt to alter or restrict the recipients' rights in the Source Code |
||||||
|
Form. |
||||||
|
|
||||||
|
3.2. Distribution of Executable Form |
||||||
|
|
||||||
|
If You distribute Covered Software in Executable Form then: |
||||||
|
|
||||||
|
(a) such Covered Software must also be made available in Source Code |
||||||
|
Form, as described in Section 3.1, and You must inform recipients of |
||||||
|
the Executable Form how they can obtain a copy of such Source Code |
||||||
|
Form by reasonable means in a timely manner, at a charge no more |
||||||
|
than the cost of distribution to the recipient; and |
||||||
|
|
||||||
|
(b) You may distribute such Executable Form under the terms of this |
||||||
|
License, or sublicense it under different terms, provided that the |
||||||
|
license for the Executable Form does not attempt to limit or alter |
||||||
|
the recipients' rights in the Source Code Form under this License. |
||||||
|
|
||||||
|
3.3. Distribution of a Larger Work |
||||||
|
|
||||||
|
You may create and distribute a Larger Work under terms of Your choice, |
||||||
|
provided that You also comply with the requirements of this License for |
||||||
|
the Covered Software. If the Larger Work is a combination of Covered |
||||||
|
Software with a work governed by one or more Secondary Licenses, and the |
||||||
|
Covered Software is not Incompatible With Secondary Licenses, this |
||||||
|
License permits You to additionally distribute such Covered Software |
||||||
|
under the terms of such Secondary License(s), so that the recipient of |
||||||
|
the Larger Work may, at their option, further distribute the Covered |
||||||
|
Software under the terms of either this License or such Secondary |
||||||
|
License(s). |
||||||
|
|
||||||
|
3.4. Notices |
||||||
|
|
||||||
|
You may not remove or alter the substance of any license notices |
||||||
|
(including copyright notices, patent notices, disclaimers of warranty, |
||||||
|
or limitations of liability) contained within the Source Code Form of |
||||||
|
the Covered Software, except that You may alter any license notices to |
||||||
|
the extent required to remedy known factual inaccuracies. |
||||||
|
|
||||||
|
3.5. Application of Additional Terms |
||||||
|
|
||||||
|
You may choose to offer, and to charge a fee for, warranty, support, |
||||||
|
indemnity or liability obligations to one or more recipients of Covered |
||||||
|
Software. However, You may do so only on Your own behalf, and not on |
||||||
|
behalf of any Contributor. You must make it absolutely clear that any |
||||||
|
such warranty, support, indemnity, or liability obligation is offered by |
||||||
|
You alone, and You hereby agree to indemnify every Contributor for any |
||||||
|
liability incurred by such Contributor as a result of warranty, support, |
||||||
|
indemnity or liability terms You offer. You may include additional |
||||||
|
disclaimers of warranty and limitations of liability specific to any |
||||||
|
jurisdiction. |
||||||
|
|
||||||
|
4. Inability to Comply Due to Statute or Regulation |
||||||
|
--------------------------------------------------- |
||||||
|
|
||||||
|
If it is impossible for You to comply with any of the terms of this |
||||||
|
License with respect to some or all of the Covered Software due to |
||||||
|
statute, judicial order, or regulation then You must: (a) comply with |
||||||
|
the terms of this License to the maximum extent possible; and (b) |
||||||
|
describe the limitations and the code they affect. Such description must |
||||||
|
be placed in a text file included with all distributions of the Covered |
||||||
|
Software under this License. Except to the extent prohibited by statute |
||||||
|
or regulation, such description must be sufficiently detailed for a |
||||||
|
recipient of ordinary skill to be able to understand it. |
||||||
|
|
||||||
|
5. Termination |
||||||
|
-------------- |
||||||
|
|
||||||
|
5.1. The rights granted under this License will terminate automatically |
||||||
|
if You fail to comply with any of its terms. However, if You become |
||||||
|
compliant, then the rights granted under this License from a particular |
||||||
|
Contributor are reinstated (a) provisionally, unless and until such |
||||||
|
Contributor explicitly and finally terminates Your grants, and (b) on an |
||||||
|
ongoing basis, if such Contributor fails to notify You of the |
||||||
|
non-compliance by some reasonable means prior to 60 days after You have |
||||||
|
come back into compliance. Moreover, Your grants from a particular |
||||||
|
Contributor are reinstated on an ongoing basis if such Contributor |
||||||
|
notifies You of the non-compliance by some reasonable means, this is the |
||||||
|
first time You have received notice of non-compliance with this License |
||||||
|
from such Contributor, and You become compliant prior to 30 days after |
||||||
|
Your receipt of the notice. |
||||||
|
|
||||||
|
5.2. If You initiate litigation against any entity by asserting a patent |
||||||
|
infringement claim (excluding declaratory judgment actions, |
||||||
|
counter-claims, and cross-claims) alleging that a Contributor Version |
||||||
|
directly or indirectly infringes any patent, then the rights granted to |
||||||
|
You by any and all Contributors for the Covered Software under Section |
||||||
|
2.1 of this License shall terminate. |
||||||
|
|
||||||
|
5.3. In the event of termination under Sections 5.1 or 5.2 above, all |
||||||
|
end user license agreements (excluding distributors and resellers) which |
||||||
|
have been validly granted by You or Your distributors under this License |
||||||
|
prior to termination shall survive termination. |
||||||
|
|
||||||
|
************************************************************************ |
||||||
|
* * |
||||||
|
* 6. Disclaimer of Warranty * |
||||||
|
* ------------------------- * |
||||||
|
* * |
||||||
|
* Covered Software is provided under this License on an "as is" * |
||||||
|
* basis, without warranty of any kind, either expressed, implied, or * |
||||||
|
* statutory, including, without limitation, warranties that the * |
||||||
|
* Covered Software is free of defects, merchantable, fit for a * |
||||||
|
* particular purpose or non-infringing. The entire risk as to the * |
||||||
|
* quality and performance of the Covered Software is with You. * |
||||||
|
* Should any Covered Software prove defective in any respect, You * |
||||||
|
* (not any Contributor) assume the cost of any necessary servicing, * |
||||||
|
* repair, or correction. This disclaimer of warranty constitutes an * |
||||||
|
* essential part of this License. No use of any Covered Software is * |
||||||
|
* authorized under this License except under this disclaimer. * |
||||||
|
* * |
||||||
|
************************************************************************ |
||||||
|
|
||||||
|
************************************************************************ |
||||||
|
* * |
||||||
|
* 7. Limitation of Liability * |
||||||
|
* -------------------------- * |
||||||
|
* * |
||||||
|
* Under no circumstances and under no legal theory, whether tort * |
||||||
|
* (including negligence), contract, or otherwise, shall any * |
||||||
|
* Contributor, or anyone who distributes Covered Software as * |
||||||
|
* permitted above, be liable to You for any direct, indirect, * |
||||||
|
* special, incidental, or consequential damages of any character * |
||||||
|
* including, without limitation, damages for lost profits, loss of * |
||||||
|
* goodwill, work stoppage, computer failure or malfunction, or any * |
||||||
|
* and all other commercial damages or losses, even if such party * |
||||||
|
* shall have been informed of the possibility of such damages. This * |
||||||
|
* limitation of liability shall not apply to liability for death or * |
||||||
|
* personal injury resulting from such party's negligence to the * |
||||||
|
* extent applicable law prohibits such limitation. Some * |
||||||
|
* jurisdictions do not allow the exclusion or limitation of * |
||||||
|
* incidental or consequential damages, so this exclusion and * |
||||||
|
* limitation may not apply to You. * |
||||||
|
* * |
||||||
|
************************************************************************ |
||||||
|
|
||||||
|
8. Litigation |
||||||
|
------------- |
||||||
|
|
||||||
|
Any litigation relating to this License may be brought only in the |
||||||
|
courts of a jurisdiction where the defendant maintains its principal |
||||||
|
place of business and such litigation shall be governed by laws of that |
||||||
|
jurisdiction, without reference to its conflict-of-law provisions. |
||||||
|
Nothing in this Section shall prevent a party's ability to bring |
||||||
|
cross-claims or counter-claims. |
||||||
|
|
||||||
|
9. Miscellaneous |
||||||
|
---------------- |
||||||
|
|
||||||
|
This License represents the complete agreement concerning the subject |
||||||
|
matter hereof. If any provision of this License is held to be |
||||||
|
unenforceable, such provision shall be reformed only to the extent |
||||||
|
necessary to make it enforceable. Any law or regulation which provides |
||||||
|
that the language of a contract shall be construed against the drafter |
||||||
|
shall not be used to construe this License against a Contributor. |
||||||
|
|
||||||
|
10. Versions of the License |
||||||
|
--------------------------- |
||||||
|
|
||||||
|
10.1. New Versions |
||||||
|
|
||||||
|
Mozilla Foundation is the license steward. Except as provided in Section |
||||||
|
10.3, no one other than the license steward has the right to modify or |
||||||
|
publish new versions of this License. Each version will be given a |
||||||
|
distinguishing version number. |
||||||
|
|
||||||
|
10.2. Effect of New Versions |
||||||
|
|
||||||
|
You may distribute the Covered Software under the terms of the version |
||||||
|
of the License under which You originally received the Covered Software, |
||||||
|
or under the terms of any subsequent version published by the license |
||||||
|
steward. |
||||||
|
|
||||||
|
10.3. Modified Versions |
||||||
|
|
||||||
|
If you create software not governed by this License, and you want to |
||||||
|
create a new license for such software, you may create and use a |
||||||
|
modified version of this License if you rename the license and remove |
||||||
|
any references to the name of the license steward (except to note that |
||||||
|
such modified license differs from this License). |
||||||
|
|
||||||
|
10.4. Distributing Source Code Form that is Incompatible With Secondary |
||||||
|
Licenses |
||||||
|
|
||||||
|
If You choose to distribute Source Code Form that is Incompatible With |
||||||
|
Secondary Licenses under the terms of this version of the License, the |
||||||
|
notice described in Exhibit B of this License must be attached. |
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------- |
||||||
|
|
@ -0,0 +1,37 @@ |
|||||||
|
/* DEFAULT LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined' && typeof VMM.Language == 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "en", |
||||||
|
api: { |
||||||
|
wikipedia: "en" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], |
||||||
|
month_abbr: ["Jan.", "Feb.", "March", "April", "May", "June", "July", "Aug.", "Sept.", "Oct.", "Nov.", "Dec."], |
||||||
|
day: ["Sunday","Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], |
||||||
|
day_abbr: ["Sun.","Mon.", "Tues.", "Wed.", "Thurs.", "Fri.", "Sat."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "mmmm d',' yyyy", |
||||||
|
time_short: "h:MM:ss TT", |
||||||
|
time_no_seconds_short: "h:MM TT", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long: "mmm d',' yyyy 'at' h:MM TT", |
||||||
|
full_long_small_date: "h:MM TT'<br/><small>mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Loading Timeline... ", |
||||||
|
return_to_title: "Return to Title", |
||||||
|
expand_timeline: "Expand Timeline", |
||||||
|
contract_timeline: "Contract Timeline", |
||||||
|
wikipedia: "From Wikipedia, the free encyclopedia", |
||||||
|
loading_content: "Loading Content", |
||||||
|
loading: "Loading" |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
@ -0,0 +1,38 @@ |
|||||||
|
/* Afrikaans LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "af", |
||||||
|
api: { |
||||||
|
wikipedia: "af" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Januarie", "Februarie", "Maart", "April", "Mei", "Junie", "Julie", "Augustus", "September", "Oktober", "November", "Desember"], |
||||||
|
month_abbr: ["Jan.", "Feb.", "Maart", "April", "Mei", "Junei", "Julie", "Aug.", "Sept.", "Okt.", "Nov.", "Des."], |
||||||
|
day: ["Sondag","Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag"], |
||||||
|
day_abbr: ["Son.","Maan.", "Dins.", "Woen.", "Don.", "Vry.", "Sat."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm yyyy", |
||||||
|
time_short: "HH:MM:SS", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'d mmmm yyyy'</small>'", |
||||||
|
full_long: "d mmm',' yyyy 'om' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>d mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Die tydlyn laai... ", |
||||||
|
return_to_title: "Begin voor", |
||||||
|
expand_timeline: "Rek die tydlyn", |
||||||
|
contract_timeline: "Krimp die tydlyn", |
||||||
|
wikipedia: "Van Wikipedia, die gratis ensiklopedie", |
||||||
|
loading_content: "Die inhoud laai", |
||||||
|
loading: "Aan't laai" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,38 @@ |
|||||||
|
/* Arabic LANGUAGE
|
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "ar", |
||||||
|
right_to_left: true, |
||||||
|
api: { |
||||||
|
wikipedia: "ar" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["كانون الثاني", "شباط", "آذار", "نيسان", "أيار", "حزيران", "تموز", "آب", "أيلول", "تشرين الأول", "تشرين الثاني", "كانون الأول"], |
||||||
|
month_abbr: ["كانون الثاني", "شباط", "آذار", "نيسان", "أيار", "حزيران", "تموز", "آب", "أيلول", "تشرين الأول", "تشرين الثاني", "كانون الأول"], |
||||||
|
day: ["الأحد","الإثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت"], |
||||||
|
day_abbr: ["الأحد","الإثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت"] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "mmmm d',' yyyy", |
||||||
|
time_short: "h:MM:SS TT", |
||||||
|
time_no_seconds_short: "h:MM TT", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long: "mmm d',' yyyy 'at' hh:MM TT", |
||||||
|
full_long_small_date: "hh:MM TT'<br/><small>mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "جاري التحميل... ", |
||||||
|
return_to_title: "العودة", |
||||||
|
expand_timeline: "تكبير العرض", |
||||||
|
contract_timeline: "الاتفاقية", |
||||||
|
wikipedia: "من ويكيبيديا, الموسوعة الحرة", |
||||||
|
loading_content: "تحميل المحتوى", |
||||||
|
loading: "تحميل" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Bulgarian LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "bg", |
||||||
|
api: { |
||||||
|
wikipedia: "bg" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"], |
||||||
|
month_abbr: ["Ян.", "Фев.", "Март", "Апр.", "Май", "Юни", "Юли", "Авг.", "Септ.", "Окт.", "Ноем.", "Дек."], |
||||||
|
day: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота"], |
||||||
|
day_abbr: ["Нед.", "Пон.", "Вт.", "Ср.", "Четв.", "Пет.", "Съб."] |
||||||
|
}, |
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm yyyy", |
||||||
|
time_short: "h:MM:SS TT", |
||||||
|
time_no_seconds_short: "h:MM TT", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br/><small>'d mmmm yyyy'</small>'", |
||||||
|
full_long: "d mmm yyyy 'at' h:MM TT", |
||||||
|
full_long_small_date: "h:MM TT'<br/><small>d mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Зареждане... ", |
||||||
|
return_to_title: "В началото", |
||||||
|
expand_timeline: "Разширяване", |
||||||
|
contract_timeline: "Свиване", |
||||||
|
wikipedia: "От Уикипедия, свободната енциклопедия", |
||||||
|
loading_content: "Съдържанието се зарежда", |
||||||
|
loading: "Зарежда се" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Catalan LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "ca", |
||||||
|
api: { |
||||||
|
wikipedia: "ca" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ['Gener','Febrer','Març','Abril','Maig','Juny','Juliol','Agost','Setembre','Octubre','Novembre','Desembre'], |
||||||
|
month_abbr: ['Gen','Feb','Mar','Abr','Mai','Jun','Jul','Ago','Set','Oct','Nov','Des'], |
||||||
|
day: ['Diumenge','Dilluns','Dimarts','Dimecres','Dijous','Divendres','Dissabte'], |
||||||
|
day_abbr: ['Dg.','Dl.','Dt.','Dc.','Dj.','Dv.','Ds.'] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm yyyy", |
||||||
|
time_short: "HH:MM:SS", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "'<small>'d mmmm yyyy'</small>' HH:MM", |
||||||
|
full_long: "dddd',' d mmm yyyy HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>d mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Carregant cronologia...", |
||||||
|
return_to_title: "Tornar al títol", |
||||||
|
expand_timeline: "Ampliar la cronologia", |
||||||
|
contract_timeline: "Reduir la cronologia", |
||||||
|
wikipedia: "Des de Wikipedia, l'enciclopèdia lliure", |
||||||
|
loading_content: "Carregant contingut", |
||||||
|
loading: "Carregant" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Czech LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "cz", |
||||||
|
api: { |
||||||
|
wikipedia: "cs" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["ledna", "února", "března", "dubna", "května", "června", "července", "srpna", "září", "října", "listopadu", "prosince"], |
||||||
|
month_abbr: ["Led", "Úno", "Bře", "Dub", "Kvě", "Čen", "Čec", "Srp", "Zář", "Říj", "Lis", "Pro"], |
||||||
|
day: ["neděle","pondělí", "úterý", "středa", "čtvrtek", "pátek", "sobota"], |
||||||
|
day_abbr: ["Ne","Po", "Út", "St", "Čt", "Pá", "So"] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d. mmm ", |
||||||
|
full: "d. mmmm yyyy", |
||||||
|
time_short: "HH:MM:SS", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'d. mmmm yyyy'</small>'", |
||||||
|
full_long: "dddd d. mmm yyyy 'v' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>dddd d. mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Načítám časovou osu... ", |
||||||
|
return_to_title: "Zpět na začátek", |
||||||
|
expand_timeline: "Rozbalit časovou osu", |
||||||
|
contract_timeline: "Sbalit časovou osu", |
||||||
|
wikipedia: "Zdroj: otevřená encyklopedie Wikipedia", |
||||||
|
loading_content: "Nahrávám obsah", |
||||||
|
loading: "Nahrávám" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Danish LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "da", |
||||||
|
api: { |
||||||
|
wikipedia: "da" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["januar", "februar", "marts", "april", "maj", "juni", "juli", "august", "september", "oktober", "november", "december"], |
||||||
|
month_abbr: ["jan.", "feb.", "mar.", "apr.", "maj.", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "dec."], |
||||||
|
day: ["søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"], |
||||||
|
day_abbr: ["sø.", "ma.", "ti.", "on.", "to.", "fr.", "lø."], |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d. mmm", |
||||||
|
full: "d. mmmm',' yyyy", |
||||||
|
time_short: "HH:MM:ss", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'d. mmmm',' yyyy'</small>'", |
||||||
|
full_long: "dddd',' d. mmm',' yyyy 'um' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>'dddd',' d. mmm yyyy'</small>'", |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Henter tidslinie...", |
||||||
|
return_to_title: "Tilbage til titel", |
||||||
|
expand_timeline: "Udvid tidslinien", |
||||||
|
contract_timeline: "Træk tidslinien sammen", |
||||||
|
wikipedia: "Fra Wikipedia", |
||||||
|
loading_content: "Henter indhold", |
||||||
|
loading: "Henter" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* German / Deutsch LANGUAGE
|
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "de", |
||||||
|
api: { |
||||||
|
wikipedia: "de" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], |
||||||
|
month_abbr: ["Jan.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sept.", "Okt.", "Nov.", "Dez."], |
||||||
|
day: ["Sonntag","Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"], |
||||||
|
day_abbr: ["So.","Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d. mmm", |
||||||
|
full: "d. mmmm yyyy", |
||||||
|
time_short: "HH:MM:SS", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'d. mmmm yyyy'</small>'", |
||||||
|
full_long: "dddd',' d. mmm yyyy 'um' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>'dddd',' d. mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Chronologie wird geladen...", |
||||||
|
return_to_title: "Zurück zum Anfang", |
||||||
|
expand_timeline: "Chronologie vergrößern", |
||||||
|
contract_timeline: "Chronologie verkleinern", |
||||||
|
wikipedia: "Wikipedia, Die freie Enzyklopädie", |
||||||
|
loading_content: "Loading", |
||||||
|
loading: "Loading" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Greek LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "en", |
||||||
|
api: { |
||||||
|
wikipedia: "en" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"], |
||||||
|
month_abbr: ["Ιαν.", "Φεβ.", "Μαρ.", "Απρ.", "Μαη", "Ιουν.", "Ιουλ.", "Αύγ.", "Σεπτ.", "Οκτ.", "Νοεμ.", "Δεκ."], |
||||||
|
day: ["Κυριακή","Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"], |
||||||
|
day_abbr: ["Κυρ.","Δευ.", "Τρίτη.", "Τετ.", "Πεμπ.", "Παρ.", "Σαβ."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "mmmm d',' yyyy", |
||||||
|
time_short: "h:MM:SS TT", |
||||||
|
time_no_seconds_short: "h:MM TT", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long: "mmm d',' yyyy 'at' h:MM TT", |
||||||
|
full_long_small_date: "h:MM TT'<br/><small>mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Φόρτωση Timeline... ", |
||||||
|
return_to_title: "Επιστροφή στον Τίτλο", |
||||||
|
expand_timeline: "Μεγέθυνση", |
||||||
|
contract_timeline: "Contract Timeline", |
||||||
|
wikipedia: "From Wikipedia, the free encyclopedia", |
||||||
|
loading_content: "Φόρτωση Περιεχομένου", |
||||||
|
loading: "Γίνεται Φόρτωση" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* English LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "en", |
||||||
|
api: { |
||||||
|
wikipedia: "en" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], |
||||||
|
month_abbr: ["Jan.", "Feb.", "March", "April", "May", "June", "July", "Aug.", "Sept.", "Oct.", "Nov.", "Dec."], |
||||||
|
day: ["Sunday","Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], |
||||||
|
day_abbr: ["Sun.","Mon.", "Tues.", "Wed.", "Thurs.", "Fri.", "Sat."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "mmmm d',' yyyy", |
||||||
|
time_short: "HH:MM:ss", |
||||||
|
time_no_seconds_short: "HH:MM TT", |
||||||
|
time_no_seconds_small_date: "HH:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long: "mmm d',' yyyy 'at' HH:MM TT", |
||||||
|
full_long_small_date: "HH:MM TT'<br/><small>mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Loading Timeline... ", |
||||||
|
return_to_title: "Return to Title", |
||||||
|
expand_timeline: "Expand Timeline", |
||||||
|
contract_timeline: "Contract Timeline", |
||||||
|
wikipedia: "From Wikipedia, the free encyclopedia", |
||||||
|
loading_content: "Loading Content", |
||||||
|
loading: "Loading" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* English LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "en", |
||||||
|
api: { |
||||||
|
wikipedia: "en" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], |
||||||
|
month_abbr: ["Jan.", "Feb.", "March", "April", "May", "June", "July", "Aug.", "Sept.", "Oct.", "Nov.", "Dec."], |
||||||
|
day: ["Sunday","Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], |
||||||
|
day_abbr: ["Sun.","Mon.", "Tues.", "Wed.", "Thurs.", "Fri.", "Sat."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "mmmm d',' yyyy", |
||||||
|
time_short: "h:MM:ss TT", |
||||||
|
time_no_seconds_short: "h:MM TT", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long: "mmm d',' yyyy 'at' h:MM TT", |
||||||
|
full_long_small_date: "h:MM TT'<br/><small>mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Loading Timeline... ", |
||||||
|
return_to_title: "Return to Title", |
||||||
|
expand_timeline: "Expand Timeline", |
||||||
|
contract_timeline: "Contract Timeline", |
||||||
|
wikipedia: "From Wikipedia, the free encyclopedia", |
||||||
|
loading_content: "Loading Content", |
||||||
|
loading: "Loading" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Spanish LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "es", |
||||||
|
api: { |
||||||
|
wikipedia: "es" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"], |
||||||
|
month_abbr: ["Ene.", "Feb.", "Mar.", "Abr.", "May.", "Jun.", "Jul.", "Ago.", "Sep.", "Oct.", "Nov.", "Dic."], |
||||||
|
day: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"], |
||||||
|
day_abbr: ["Dom.", "Lun.", "Mar.", "Mié.", "Jue.", "Vie.", "Sáb."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm yyyy", |
||||||
|
time_short: "HH:MM:SS", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "'<small>'d mmmm yyyy'</small>' HH:MM", |
||||||
|
full_long: "dddd',' d mmm yyyy HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>d mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Cronología esta cargando", |
||||||
|
return_to_title: "Volver al título", |
||||||
|
expand_timeline: "Enlargar la cronología", |
||||||
|
contract_timeline: "Reducir la cronología", |
||||||
|
wikipedia: "Desde Wikipedia, la enciclopedia libre", |
||||||
|
loading_content: "cargando", |
||||||
|
loading: "cargando" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
/* Basque/ Euskara LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if (typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "eu", |
||||||
|
api: { |
||||||
|
wikipedia: "eu" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Urtarrila", "Otsaila", "Martxoa", "Apirila", "Maiatza", "Ekaina", "Uztaila", "Abuztua", "Iraila", "Urria", "Azaroa", "Abendua"], |
||||||
|
month_abbr: ["Urt.", "Ots.", "Mar.", "Api.", "Mai.", "Eka.", "Uzt.", "Abu.", "Ira.", "Urr.", "Aza.", "Abe."], |
||||||
|
day: ["Igandea", "Astelehena", "Asteartea", "Asteazkena", "Osteguna", "Ostirala", "Larunbata"], |
||||||
|
day_abbr: ["Iga.", "Asl.", "Asr.", "Asz.", "Osg.", "Osr.", "Lar."] |
||||||
|
}, |
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "yyyy'(e)ko' mmmm", |
||||||
|
full_short: "mmm'-'d", |
||||||
|
full: "yyyy'(e)ko' mmmm'k' d", |
||||||
|
time_short: "h:MM:SS TT", |
||||||
|
time_no_seconds_short: "h:MM TT", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br /><small>'yyyy'-'mmm'-'d'</small>", |
||||||
|
full_long: "yyyy'(e)ko' mmmm'ren' d'(e)an,' hh:MM TT'(r)etan'", |
||||||
|
full_long_small_date: "hh:MM TT'<br /><small>'yyyy'-'mmm'-'d'</small>" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Kronologia kargatzen...", |
||||||
|
return_to_title: "Titulura itzuli", |
||||||
|
expand_timeline: "Handiago ikusi", |
||||||
|
contract_timeline: "Txikiago ikusi", |
||||||
|
wikipedia: "Wikipedia entziklopedia libretik", |
||||||
|
loading_content: "Edukia kargatzen", |
||||||
|
loading: "Kargatzen" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,37 @@ |
|||||||
|
/* Finnish LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "fi", |
||||||
|
api: { |
||||||
|
wikipedia: "fi" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["tammikuuta", "helmikuuta", "maaliskuuta", "huhtikuuta", "toukokuuta", "kesäkuuta", "heinäkuuta", "elokuuta", "syyskuuta", "lokakuuta", "marraskuuta", "joulukuuta"], |
||||||
|
month_abbr: ["tammi", "helmi", "maalis", "huhti", "touko", "kesä", "heinä", "elo", "syys", "loka", "marras", "joulu"], |
||||||
|
day: ["sunnuntai","maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauauntai"], |
||||||
|
day_abbr: ["su","ma", "ti", "ke", "to", "pe", "la"] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d. mmm", |
||||||
|
full: "d. mmmm yyyy", |
||||||
|
time_short: "h:MM:SS TT", |
||||||
|
time_no_seconds_short: "h:MM TT", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br/><small>'d. mmmm yyyy'</small>'", |
||||||
|
full_long: "mmm d yyyy 'klo' h:MM TT", |
||||||
|
full_long_small_date: "h:MM TT'<br/><small>d. mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Ladataan aikajanaa… ", |
||||||
|
return_to_title: "Takaisin etusivulle", |
||||||
|
expand_timeline: "Laajenna aikajanaa", |
||||||
|
contract_timeline: "Tiivistä aikajanaa", |
||||||
|
wikipedia: "Wikipediasta", |
||||||
|
loading_content: "Ladataan sisältöä", |
||||||
|
loading: "Ladataan" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Faroese LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "fo", |
||||||
|
api: { |
||||||
|
wikipedia: "fo" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["januar", "februar", "mars", "aprÌl", "mai", "juni", "juli", "august", "september", "oktober", "november", "desember"], |
||||||
|
month_abbr: ["jan.", "febr.", "mars", "aprÌl", "mai", "juni", "juli", "aug.", "sept.", "okt.", "nov.", "des."], |
||||||
|
day: ["sunnudagur","m·nadagur", "t˝sdagur", "mikudagur", "hÛsdagur", "frÌggjadagur", "leygardagur"], |
||||||
|
day_abbr: ["sun.","m·n.", "t˝s.", "mik.", "hÛs.", "frÌ.", "ley."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d'.' mmm", |
||||||
|
full: "d'.' mmmm yyyy", |
||||||
|
time_short: "HH:MM:SS", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'d'.' mmmm yyyy'</small>'", |
||||||
|
full_long: "d'.' mmmm yyyy 'klokkan' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>'d'.' mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Lesur inn tíðarrás...", |
||||||
|
return_to_title: "Víðka tíðarrás...", |
||||||
|
expand_timeline: "Minka tíðarrás...", |
||||||
|
contract_timeline: "Minka tíðarrás", |
||||||
|
wikipedia: "Fr· Wikipedia", |
||||||
|
loading_content: "Lesur inn tilfar", |
||||||
|
loading: "Lesur inn" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
/* French LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "fr", |
||||||
|
api: { |
||||||
|
wikipedia: "fr" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"], |
||||||
|
month_abbr: ["janv.", "févr.", "mars", "avril", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "dec."], |
||||||
|
day: ["Dimanche","Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"], |
||||||
|
day_abbr: ["Dim.","Lu.", "Ma.", "Me.", "Jeu.", "Vend.", "Sam."], |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm yyyy", |
||||||
|
time_short: "HH:MM:SS", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'d mmmm yyyy'</small>'", |
||||||
|
full_long: "dddd',' d mmm yyyy 'à' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>'dddd',' d mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Chargement de la frise en cours... ", |
||||||
|
return_to_title: "Retour à la page d'accueil", |
||||||
|
expand_timeline: "Elargir la frise", |
||||||
|
contract_timeline: "Réduire la frise", |
||||||
|
wikipedia: "Extrait de Wikipedia, l'encyclopédie libre", |
||||||
|
loading_content: "Chargement", |
||||||
|
loading: "Chargement" |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Galician LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "gl", |
||||||
|
api: { |
||||||
|
wikipedia: "gl" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Xaneiro", "Febreiro", "Marzo", "Abril", "Maio", "Xuño", "Xullo", "Agosto", "Setembro", "Outubro", "Novembro", "Decembro"], |
||||||
|
month_abbr: ["Xan.", "Feb.", "Mar.", "Abr.", "Mai.", "Xuñ.", "Xul.", "Ago.", "Set.", "Out.", "Nov.", "Dec."], |
||||||
|
day: ["Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado"], |
||||||
|
day_abbr: ["Dom.", "Lun.", "Mar.", "Mér.", "Xov.", "Ven.", "Sáb."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm yyyy", |
||||||
|
time_short: "HH:MM:SS", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'d mmmm yyyy'</small>'", |
||||||
|
full_long: "dddd',' d mmm yyyy 'um' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>'dddd',' d mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Cronoloxía esta cargando", |
||||||
|
return_to_title: "Volver ao título", |
||||||
|
expand_timeline: "Alongar a cronoloxía", |
||||||
|
contract_timeline: "Acurtar a cronoloxía", |
||||||
|
wikipedia: "Dende Wikipedia, a enciclopedia libre", |
||||||
|
loading_content: "cargando", |
||||||
|
loading: "cargando" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
/* Hebrew (beta) LANGUAGE
|
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "he", |
||||||
|
right_to_left: true, |
||||||
|
api: { |
||||||
|
wikipedia: "he" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"], |
||||||
|
month_abbr: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"], |
||||||
|
day: ["ראשון","שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת"], |
||||||
|
day_abbr: ["יום א'","יום ב'", "יום ג'", "יום ד'", "יום ה'", "יום ו'", "שבת"] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm,' yyyy", |
||||||
|
time_short: "h:MM:ss TT", |
||||||
|
time_no_seconds_short: "h:MM TT", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long: "d' mmm,' yyyy 'at' h:MM TT", |
||||||
|
full_long_small_date: "h:MM TT'<br/><small>mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "טוען את ציר הזמן... ", |
||||||
|
return_to_title: "חזור לכותרת", |
||||||
|
expand_timeline: "הרחב את ציר הזמן", |
||||||
|
contract_timeline: "צמצם את ציר הזמן", |
||||||
|
wikipedia: "מויקיפדיה, האינציקלופדיה החופשית", |
||||||
|
loading_content: "התוכן בטעינה...", |
||||||
|
loading: "טוען..." |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Hungarian LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "hu", |
||||||
|
api: { |
||||||
|
wikipedia: "hu" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"], |
||||||
|
month_abbr: ["Jan.", "Febr.", "Márc", "Ápr.", "Máj.", "Jún.", "Júl.", "Aug.", "Szept.", "Okt.", "Nov.", "Dec."], |
||||||
|
day: ["Vasárnap","Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat"], |
||||||
|
day_abbr: ["Vas.","Hétfő", "Kedd", "Szer.", "Csüt.", "Pén.", "Szom."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "yyyy mmmm", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "yyyy mmmm d", |
||||||
|
time_short: "HH:MM:SS", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM '<br/><small>'yyyy mmmm d'</small>'", |
||||||
|
full_long: "yyyy mmm d',' HH:MM", |
||||||
|
full_long_small_date: "HH:MM '<br/><small>yyyy mmm d'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Az idővonal betöltése... ", |
||||||
|
return_to_title: "Vissza a címhez", |
||||||
|
expand_timeline: "Nagyítás", |
||||||
|
contract_timeline: "Kicsinyítés", |
||||||
|
wikipedia: "A Wikipédiából, a szabad enciklopédiából", |
||||||
|
loading_content: "Tartalom betöltése", |
||||||
|
loading: "Betöltés" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Armenian LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "hy", |
||||||
|
api: { |
||||||
|
wikipedia: "hy" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Հունվար", "Փետրվար", "Մարտ", "Ապրիլ", "Մայիս", "Հունիս", "Հուլիս", "Օգոստոս", "Սեպտեմբեր", "Հոկտեմբեր", "Նոյեմբեր", "Դեկտեմբեր"], |
||||||
|
month_abbr: ["Հնվ.", "Փետ.", "Մար", "Ապր", "Մայ", "Հուն", "Հուլ", "Օգս.", "Սեպ.", "Հոկ.", "Նոյ.", "Դեկ."], |
||||||
|
day: ["Կիրակի","Երկուշաբթի", "Երեքշաբթի", "Չորեքշաբթի", "Հինգշաբթի", "Ուրբաթ", "Շաբաթ"], |
||||||
|
day_abbr: ["Կի.","Եկ.", "Եք.", "Չո.", "Հի.", "Ու.", "Շա."] |
||||||
|
}, |
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm',' yyyy", |
||||||
|
time_short: "HH:MM:SS", |
||||||
|
time_no_seconds_short: "H:MM", |
||||||
|
time_no_seconds_small_date: "H:MM'<br/><small>'d mmmm',' yyyy'</small>'", |
||||||
|
full_long: "d mmm',' yyyy 'at' H:MM", |
||||||
|
full_long_small_date: "H:MM '<br/><small>d mmm',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Ժամանակագրությունը բեռնվում է... ", |
||||||
|
return_to_title: "Վերադառնալ վերնագրին", |
||||||
|
expand_timeline: "Լայնացնել ժամանակագրությունը", |
||||||
|
contract_timeline: "Նեղացնել ժամանակագրությունը", |
||||||
|
wikipedia: "Ըստ Վիքիպեդիա ազատ հանրագիտարանի", |
||||||
|
loading_content: "Բովանդակությունը բեռնվում է", |
||||||
|
loading: "Բեռնում" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Indonesian LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "id", |
||||||
|
api: { |
||||||
|
wikipedia: "id" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"], |
||||||
|
month_abbr: ["Jan.", "Feb.", "Maret", "April", "Mei", "Juni", "July", "Agus.", "Sept.", "Okt.", "Nov.", "Des."], |
||||||
|
day: ["Ahad","Senin", "Selasa", "Rabu", "Kamis", "Jum'at", "Sabtu"], |
||||||
|
day_abbr: ["Ahad","Sen.", "Sel.", "Rabu", "Kamis", "Jum.", "Sab."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm yyyy", |
||||||
|
time_short: "HH:MM:SS", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'d mmmm yyyy'</small>'", |
||||||
|
full_long: "dddd',' d mmm yyyy 'pukul' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>'dddd',' d mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Memuat Timeline... ", |
||||||
|
return_to_title: "Kembali ke Judul", |
||||||
|
expand_timeline: "Kembangkan Timeline", |
||||||
|
contract_timeline: "Ciutkan Timeline", |
||||||
|
wikipedia: "dari Wikipedia, ensiklopedia bebas", |
||||||
|
loading_content: "Memuat Isi", |
||||||
|
loading: "Memuat" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
/* Icelandic LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "is", |
||||||
|
api: { |
||||||
|
wikipedia: "is" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["janúar", "febrúar", "mars", "apríl", "maí", "júní", "júlí", "ágúst", "september", "október", "nóvember", "desember"], |
||||||
|
month_abbr: ["jan.", "feb.", "mars", "apríl", "maí", "júní", "júlí", "ágúst", "sept.", "okt.", "nóv.", "des."], |
||||||
|
day: ["sunnudagur", "mánudagur", "þriðjudagur", "miðvikudagur", "fimmtudagur", "föstudagur", "laugardagur"], |
||||||
|
day_abbr: ["sun.","mán.", "þri.", "mið.", "fim.", "fös.", "lau."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "mmmm d',' yyyy", |
||||||
|
time_short: "h:MM:SS TT", |
||||||
|
time_no_seconds_short: "hh:MM TT", |
||||||
|
time_no_seconds_small_date: "hh:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long: "dddd',' mmm d',' yyyy 'at' hh:MM TT", |
||||||
|
full_long_small_date: "hh:MM TT'<br/><small>'dddd',' mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Raða upp tímalínu... ", |
||||||
|
return_to_title: "Til baka á forsíðu", |
||||||
|
expand_timeline: "Stækka tímalínu", |
||||||
|
contract_timeline: "Minnka tímalínu", |
||||||
|
wikipedia: "From Wikipedia, the free encyclopedia", |
||||||
|
loading_content: "Raða", |
||||||
|
loading: "Raða" |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
/* Italian LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "it", |
||||||
|
api: { |
||||||
|
wikipedia: "it" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"], |
||||||
|
month_abbr: ["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"], |
||||||
|
day: ["Domenica","Lunedi","Martedi","Mercoledi","Giovedi","Venerdi","Sabato"], |
||||||
|
day_abbr: ["Dom.","Lun.","Mar.","Mer.","Gio.","Ven.","Sab."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm yyyy", |
||||||
|
time_short: "HH:MM:ss", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'d mmmm yyyy'</small>'", |
||||||
|
full_long: "dddd',' d mmm yyyy 'um' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>'dddd',' d mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Loading Timeline... ", |
||||||
|
return_to_title: "Return to Title", |
||||||
|
expand_timeline: "Expand Timeline", |
||||||
|
contract_timeline: "Contract Timeline", |
||||||
|
wikipedia: "Wikipedia, L’enciclopedia libera", |
||||||
|
loading_content: "Loading Content", |
||||||
|
loading: "Loading" |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
/* Hebrew (beta) LANGUAGE
|
||||||
|
================================================== */ |
||||||
|
trace("Language code 'iw' for Hebrew is deprecated. Use 'he' instead.") |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "iw", |
||||||
|
right_to_left: true, |
||||||
|
api: { |
||||||
|
wikipedia: "he" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"], |
||||||
|
month_abbr: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"], |
||||||
|
day: ["ראשון","שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת"], |
||||||
|
day_abbr: ["יום א'","יום ב'", "יום ג'", "יום ד'", "יום ה'", "יום ו'", "שבת"] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm,' yyyy", |
||||||
|
time_short: "h:MM:ss TT", |
||||||
|
time_no_seconds_short: "h:MM TT", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long: "d' mmm,' yyyy 'at' h:MM TT", |
||||||
|
full_long_small_date: "h:MM TT'<br/><small>mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "טוען את ציר הזמן... ", |
||||||
|
return_to_title: "חזור לכותרת", |
||||||
|
expand_timeline: "הרחב את ציר הזמן", |
||||||
|
contract_timeline: "צמצם את ציר הזמן", |
||||||
|
wikipedia: "מויקיפדיה, האינציקלופדיה החופשית", |
||||||
|
loading_content: "התוכן בטעינה...", |
||||||
|
loading: "טוען..." |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
/* Japanese LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "ja", |
||||||
|
api: { |
||||||
|
wikipedia: "ja" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], |
||||||
|
month_abbr: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], |
||||||
|
day: ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"], |
||||||
|
day_abbr: ["日", "月", "火", "水", "木", "金", "土"] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy年", |
||||||
|
month_short: "mmm", |
||||||
|
month: "yyyy年 m月d日 (ddd)", |
||||||
|
full_short: "yyyy年m月d日", |
||||||
|
full: "yyyy年 m月d日 (ddd)", |
||||||
|
time_short: "HH:MM:ss", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'yyyy年m月d日'</small>'", |
||||||
|
full_long: "yyyy年m月d日 H時M分s秒", |
||||||
|
full_long_small_date: "HH:MM:ss'<br/><small>'yyyy年m月d日'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "タイムラインをロードしています…", |
||||||
|
return_to_title: "タイトルへ戻ります", |
||||||
|
expand_timeline: "タイムラインを展開します", |
||||||
|
contract_timeline: "タイムラインを縮めます", |
||||||
|
wikipedia: "出典:フリー百科事典『ウィキペディア(Wikipedia)』", |
||||||
|
loading_content: "コンテンツをロードしています", |
||||||
|
loading: "ローディング" |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Georgian LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "ka", |
||||||
|
api: { |
||||||
|
wikipedia: "ka" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["იანვარი", "თებერვალი", "მარტი", "აპრილი", "მაისი", "ივნისი", "ივლისი", "აგვისტო", "სექტემბერი", "ოქტომბერი", "ნოემბერი", "დეკემბერი"], |
||||||
|
month_abbr: ["იან.", "თებ.", "მარტი", "აპრ", "მაი.", "ივნ.", "ივლ.", "აგვ.", "სექ.", "ოქტ.", "ნოე.", "დეკ."], |
||||||
|
day: ["კვირა","ორშაბათი", "სამშაბათი", "ოთხშაბათი", "ხუთშაბათი", "პარასკევი", "შაბათი"], |
||||||
|
day_abbr: ["კვ.","ორ.", "სამ.", "ოთხ.", "ხუთ.", "პარ.", "შაბ."] |
||||||
|
}, |
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "mmmm d',' yyyy", |
||||||
|
time_short: "h:MM:ss TT", |
||||||
|
time_no_seconds_short: "h:MM TT", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long: "mmm d',' yyyy 'at' h:MM TT", |
||||||
|
full_long_small_date: "h:MM TT'<br/><small>mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "იტვირთება თაიმლაინი... ", |
||||||
|
return_to_title: "დაბრუნდი თავში", |
||||||
|
expand_timeline: "გაშალე თაიმლაინი", |
||||||
|
contract_timeline: "Contract Timeline", |
||||||
|
wikipedia: "თავისუფალი ენციკლოპედია Wikipedia-დან", |
||||||
|
loading_content: "შინაარსის ჩამოტვირთვა", |
||||||
|
loading: "ჩამოტვირთვა" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
/* Korean LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "ko", |
||||||
|
api: { |
||||||
|
wikipedia: "ko" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"], |
||||||
|
month_abbr: ["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"], |
||||||
|
day: ["일요일" , "월요일" , "화요일" , "수요일" , "목요일" , "금요일" , "토요일"], |
||||||
|
day_abbr: ["일" , "월" , "화" , "수" , "목" , "금" , "토"] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "yyyy mmm", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "yyyy mmm d ", |
||||||
|
time_short: "HH:MM:ss", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'yyyy mmm d'</small>'", |
||||||
|
full_long: "dddd',' d mmm yyyy 'um' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>'dddd','yyyy mmm d'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "타임라인을 불러오고 있습니다.... ", |
||||||
|
return_to_title: "첫화면으로", |
||||||
|
expand_timeline: "타임라인 확대", |
||||||
|
contract_timeline: "타임라인 축소", |
||||||
|
wikipedia: "출처: 위키피디아, 우리 모두의 백과사전", |
||||||
|
loading_content: "내용을 불러오고 있습니다.", |
||||||
|
loading: "불러오는중" |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Luxembourgish LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "lb", |
||||||
|
api: { |
||||||
|
wikipedia: "lb" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Januar", "Februar", "Mäerz", "Abrëll", "Mee", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], |
||||||
|
month_abbr: ["Jan.", "Feb.", "Mäe.", "Abr.", "Mee", "Jun.", "Jul", "Aug.", "Sept.", "Okt.", "Nov.", "Dez."], |
||||||
|
day: ["Sonndeg","Méindeg", "Dënschdeg", "Mëttwoch", "Donneschden", "Freiden", "Samschden"], |
||||||
|
day_abbr: ["Son.","Méi.", "Dë.", "Më.", "Do.", "Fr.", "Sa."] |
||||||
|
}, |
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "d'.' mmmm yyyy", |
||||||
|
time_short: "hh:MM:ss", |
||||||
|
time_no_seconds_short: "hh:MM", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br/><small>'d'.' mmmm yyyy'</small>'", |
||||||
|
full_long: "d'.' mmm yyyy 'um' hh:MM TT", |
||||||
|
full_long_small_date: "hh:MM'<br/><small>d'.' mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Timeline gëtt gelueden... ", |
||||||
|
return_to_title: "Zeréck zum Titel", |
||||||
|
expand_timeline: "Timeline vergréisseren", |
||||||
|
contract_timeline: "Timeline verklengeren", |
||||||
|
wikipedia: "Vu Wikipedia, der fräier Enzyklopedie", |
||||||
|
loading_content: "Inhalt lued", |
||||||
|
loading: "Lued" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Latvian LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "lv", |
||||||
|
api: { |
||||||
|
wikipedia: "lv" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Janvāris", "Februāris", "Marts", "Aprīlis", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"], |
||||||
|
month_abbr: ["Jan.", "Feb.", "Mar.", "Apr.", "Mai.", "Jūn.", "Jūl.", "Aug.", "Sep.", "Okt.", "Nov.", "Dec."], |
||||||
|
day: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena"], |
||||||
|
day_abbr: ["Sun.", "Mon.", "Tues.", "Wed.", "Thurs.", "Fri.", "Sat."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "d. mmmm',' yyyy", |
||||||
|
time_short: "h:MM:ss TT", |
||||||
|
time_no_seconds_short: "HH:MM TT", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long: "mmm d',' yyyy 'at' hh:MM TT", |
||||||
|
full_long_small_date: "hh:MM TT'<br/><small>mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Ielādējas grafiks... ", |
||||||
|
return_to_title: "Atgriezties uz sākumu", |
||||||
|
expand_timeline: "Izvērst grafiku", |
||||||
|
contract_timeline: "Sašaurināt grafiku", |
||||||
|
wikipedia: "No Wikipedia, brīvās enciklopēdijas", |
||||||
|
loading_content: "Ielādējas saturs", |
||||||
|
loading: "Ielādējas" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
/* Dutch LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "nl", |
||||||
|
api: { |
||||||
|
wikipedia: "nl" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"], |
||||||
|
month_abbr: ["jan", "febr", "maa", "apr", "mei", "juni", "juli", "aug", "sept", "okt", "nov", "dec"], |
||||||
|
day: ["zondag","maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"], |
||||||
|
day_abbr: ["zo","ma", "di", "wo", "do", "vr", "za"] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm yyyy", |
||||||
|
time_short: "HH:MM:ss", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'d mmmm yyyy'</small>'", |
||||||
|
full_long: "dddd',' d mmm yyyy 'om' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>'dddd',' d mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Tijdlijn laden ... ", |
||||||
|
return_to_title: "Terug naar het begin", |
||||||
|
expand_timeline: "Tijdlijn uitzoomen", |
||||||
|
contract_timeline: "Tijdlijn inzoomen", |
||||||
|
wikipedia: "From Wikipedia, the free encyclopedia", |
||||||
|
loading_content: "Inhoud laden", |
||||||
|
loading: "Laden" |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Norwegian LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "no", |
||||||
|
api: { |
||||||
|
wikipedia: "no" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"], |
||||||
|
month_abbr: ["Jan.", "Feb.", "Mars", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sep.", "Okt.", "Nov.", "Des."], |
||||||
|
day: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"], |
||||||
|
day_abbr: ["Søn.", "Man.", "Tir.", "Ons.", "Tor.", "Fre.", "Lør."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d. mmm", |
||||||
|
full: "d. mmmm',' yyyy", |
||||||
|
time_short: "HH:MM:ss", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'d. mmmm',' yyyy'</small>'", |
||||||
|
full_long: "dddd',' d. mmm',' yyyy 'kl.' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>'dddd',' d. mmm',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Laster timeline... ", |
||||||
|
return_to_title: "Tilbake til tittel", |
||||||
|
expand_timeline: "Utvid timeline", |
||||||
|
contract_timeline: "Krymp timeline", |
||||||
|
wikipedia: "Fra Wikipedia, den frie encyklopedi", |
||||||
|
loading_content: "Laster innhold", |
||||||
|
loading: "Laster" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Polish LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "pl", |
||||||
|
api: { |
||||||
|
wikipedia: "pl" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Stycznia", "Lutego", "Marca", "Kwietnia", "Maja", "Czerwca", "Lipca", "Sierpnia", "Września", "Października", "Listopada", "Grudnia"], |
||||||
|
month_abbr: ["Sty.", "Lut.", "Mar.", "Kwi.", "Maj.", "Cze.", "Lip.", "Sie.", "Wrz.", "Paź.", "Lis.", "Gru."], |
||||||
|
day: ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"], |
||||||
|
day_abbr: ["Nie.", "Pon.", "Wto.", "Śro.", "Czw.", "Pią.", "Sob."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm yyyy", |
||||||
|
time_short: "HH:MM:ss", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'d mmmm yyyy'</small>'", |
||||||
|
full_long: "dddd',' d mmm yyyy 'um' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>'dddd',' d mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages:{ |
||||||
|
loading_timeline: "Ładowanie Timeline... ", |
||||||
|
return_to_title: "Wróć do tytułu", |
||||||
|
expand_timeline: "Powiększ Timeline", |
||||||
|
contract_timeline: "Zmniejsz Timeline", |
||||||
|
wikipedia: "Z Wikipedii, wolnej encyklopedii", |
||||||
|
loading_content: "Ładowanie zawartości", |
||||||
|
loading: "Ładowanie" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
/* Brazilian Portuguese LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "pt-br", |
||||||
|
api: { |
||||||
|
wikipedia: "pt" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], |
||||||
|
month_abbr: ["Jan.", "Fev.", "Mar.", "Abr.", "Mai.", "Jun.", "Jul.", "Ago.", "Set.", "Out.", "Nov.", "Dez."], |
||||||
|
day: ["Domingo","Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"], |
||||||
|
day_abbr: ["Dom.","Seg.", "Ter.", "Qua.", "Qui.", "Sex.", "Sáb."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm 'de' yyyy", |
||||||
|
full_short: "d 'de' mmm", |
||||||
|
full: "d 'de' mmmm',' yyyy", |
||||||
|
time_short: "h:MM:ss TT", |
||||||
|
time_no_seconds_short: "hh:MM TT", |
||||||
|
time_no_seconds_small_date: "hh:MM TT'<br/><small>'d 'de' mmmm',' yyyy'</small>'", |
||||||
|
full_long: "dddd',' d 'de' mmm',' yyyy 'às' hh:MM TT", |
||||||
|
full_long_small_date: "hh:MM TT'<br/><small>'dddd',' d 'de' mmm',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Carregando Timeline... ", |
||||||
|
return_to_title: "Voltar para o título", |
||||||
|
expand_timeline: "Expandir Timeline", |
||||||
|
contract_timeline: "Contrair Timeline", |
||||||
|
wikipedia: "Wikipedia, A enciclopédia livre", |
||||||
|
loading_content: "Carregando Conteúdo", |
||||||
|
loading: "Carregando" |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Portuguese LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "pt", |
||||||
|
api: { |
||||||
|
wikipedia: "pt" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], |
||||||
|
month_abbr: ["Jan", "Fev", "Mar", "Abr", "Maio", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"], |
||||||
|
day: ["Domingo","Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sabado"], |
||||||
|
day_abbr: ["Dom","Seg", "Ter", "Qua", "Qui", "Sex", "Sab"] |
||||||
|
}, |
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "mmmm d',' yyyy", |
||||||
|
time_short: "h:MM:ss TT", |
||||||
|
time_no_seconds_short: "h:MM TT", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long: "mmm d',' yyyy 'at' hh:MM TT", |
||||||
|
full_long_small_date: "hh:MM TT'<br/><small>mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "A carregar a timeline... ", |
||||||
|
return_to_title: "Voltar ao Título", |
||||||
|
expand_timeline: "Expandir Timeline", |
||||||
|
contract_timeline: "Colapsar Timeline", |
||||||
|
wikipedia: "Wikipedia, A enciclopedia Livre.", |
||||||
|
loading_content: "A carregar o conteúdo", |
||||||
|
loading: "A carregar" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Russian LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if (typeof VMM != "undefined") { |
||||||
|
VMM.Language = { |
||||||
|
lang:"ru", |
||||||
|
api:{ |
||||||
|
wikipedia:"ru" |
||||||
|
}, |
||||||
|
date:{ |
||||||
|
month:["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"], |
||||||
|
month_abbr:["Янв.", "Фев.", "Март", "Апр.", "Май", "Июнь", "Июль", "Авг.", "Сент.", "Окт.", "Нояб.", "Дек."], |
||||||
|
day:["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"], |
||||||
|
day_abbr:["Вск.", "Пн.", "Вт.", "Ср.", "Чт.", "Пт.", "Сб."] |
||||||
|
}, |
||||||
|
dateformats:{ |
||||||
|
year:"yyyy", |
||||||
|
month_short:"mmm", |
||||||
|
month:"mmmm yyyy", |
||||||
|
full_short:"mmm d", |
||||||
|
full:"mmmm d',' yyyy", |
||||||
|
time_short: "h:MM:ss TT", |
||||||
|
time_no_seconds_short:"h:MM TT", |
||||||
|
time_no_seconds_small_date:"h:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long:"mmm d',' yyyy 'at' hh:MM TT", |
||||||
|
full_long_small_date:"hh:MM TT'<br/><small>mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages:{ |
||||||
|
loading_timeline:"Загрузка... ", |
||||||
|
return_to_title:"Вернуться к заголовку", |
||||||
|
expand_timeline:"Увеличить", |
||||||
|
contract_timeline:"Уменьшить", |
||||||
|
wikipedia:"Из Wikipedia", |
||||||
|
loading_content:"Загрузка контента", |
||||||
|
loading: "Загрузка" |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
@ -0,0 +1,35 @@ |
|||||||
|
/* Slovak LANGUAGE |
||||||
|
================================================== */ |
||||||
|
typeof VMM != "undefined" && (VMM.Language = { |
||||||
|
lang: "sk", |
||||||
|
api: { |
||||||
|
wikipedia: "sk" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"], |
||||||
|
month_abbr: ["Jan.", "Feb.", "Marec", "Apríl", "Máj", "Jún", "Júl", "Aug.", "Sept.", "Okt.", "Nov.", "Dec."], |
||||||
|
day: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota"], |
||||||
|
day_abbr: ["Ned.", "Pon.", "Uto.", "Str.", "Štv.", "Pia.", "Sob."] |
||||||
|
}, |
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "d. mmmm',' yyyy", |
||||||
|
time_short: "h:MM:ss TT", |
||||||
|
time_no_seconds_short: "h:MM TT", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long: "mmm d',' yyyy 'at' hh:MM TT", |
||||||
|
full_long_small_date: "hh:MM TT'<br/><small>mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Načítam časovú os... ", |
||||||
|
return_to_title: "Späť na úvod", |
||||||
|
expand_timeline: "Zväčšiť časovú os", |
||||||
|
contract_timeline: "Zmenšiť časovú os", |
||||||
|
wikipedia: "Z Wikipedie, encyklopédie zadarmo", |
||||||
|
loading_content: "Načítam obsah", |
||||||
|
loading: "Načítanie" |
||||||
|
} |
||||||
|
}); |
@ -0,0 +1,37 @@ |
|||||||
|
/* Slovenian LANGUAGE SLOVENIAN |
||||||
|
================================================== */ |
||||||
|
if (typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "sl", |
||||||
|
api: { |
||||||
|
wikipedia: "sl" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"], |
||||||
|
month_abbr: ["Jan.", "Feb.", "Marec", "April", "Maj", "Junij", "July", "Avg.", "Sept.", "Okt.", "Nov.", "Dec."], |
||||||
|
day: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Čertek", "Petek", "Sobota"], |
||||||
|
day_abbr: ["Ned.", "Pon.", "Tor.", "Sre.", "Čet.", "Pet.", "Sob."] |
||||||
|
}, |
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm yyyy", |
||||||
|
time_short: "h:MM:ss TT", |
||||||
|
time_no_seconds_short: "h:MM", |
||||||
|
time_no_seconds_small_date: "h:MM' 'd mmmm' 'yyyy", |
||||||
|
full_long: "d mmm yyyy 'ob' hh:MM", |
||||||
|
full_long_small_date: "hh:MM' d mmm yyyy" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Nalagam časovni trak... ", |
||||||
|
return_to_title: "Nazaj na naslov", |
||||||
|
expand_timeline: "Razširi časovni trak", |
||||||
|
contract_timeline: "Pokrči časovni trak", |
||||||
|
wikipedia: "Vir Wikipedija", |
||||||
|
loading_content: "Nalaganje vsebine", |
||||||
|
loading: "Nalaganje" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
/* Serbian (Cyrillic) LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if (typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "рп", |
||||||
|
api: { |
||||||
|
wikipedia: "рп" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Јануар", "Фебруар", "Март", "Април", "Мај", "Јун", "Јул", "Август", "Септембар", "Октобар", "Новембар", "Децембар"], |
||||||
|
month_abbr: ["Јан.", "Феб.", "Март", "Апр.", "Мај", "Јун", "Јул", "Авг.", "Сеп.", "Окт.", "Нов.", "Дец."], |
||||||
|
day: ["Недеља", "Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота"], |
||||||
|
day_abbr: ["Нед.", "Пон.", "Уто.", "Сре.", "Чет.", "Пет.", "Суб."] |
||||||
|
}, |
||||||
|
dateformats: { |
||||||
|
year: "yyyy.", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy.", |
||||||
|
full_short: "d. mmm", |
||||||
|
full: "d. mmmm yyyy.", |
||||||
|
time_short: "HH:MM:ss", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'d. mmmm yyyy.'</small>'", |
||||||
|
full_long: "d. mmm yyyy. 'u' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>d. mmm yyyy.'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Учитавање... ", |
||||||
|
return_to_title: "Почетак", |
||||||
|
expand_timeline: "Увећај", |
||||||
|
contract_timeline: "Умањи", |
||||||
|
wikipedia: "Из Википедије, слободне енциклопедије", |
||||||
|
loading_content: "Садржај се учитава", |
||||||
|
loading: "Учитава се" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,38 @@ |
|||||||
|
/* Serbian (Latin) LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if (typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "sr", |
||||||
|
api: { |
||||||
|
wikipedia: "sr" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"], |
||||||
|
month_abbr: ["Jan.", "Feb.", "Mart", "Apr.", "Maj", "Jun", "Jul", "Avg.", "Sep.", "Okt.", "Nov.", "Dec."], |
||||||
|
day: ["Nedelja", "Ponedeljak", "Utorak", "Sreda", "Četvratk", "Petak", "Subota"], |
||||||
|
day_abbr: ["Ned.", "Pon.", "Uto.", "Sre.", "Čet.", "Pet.", "Sub."] |
||||||
|
}, |
||||||
|
dateformats: { |
||||||
|
year: "yyyy.", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy.", |
||||||
|
full_short: "d. mmm", |
||||||
|
full: "d. mmmm yyyy.", |
||||||
|
time_short: "HH:MM:ss", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'d. mmmm yyyy.'</small>'", |
||||||
|
full_long: "d. mmm yyyy. 'u' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>d. mmm yyyy.'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Učitavanje... ", |
||||||
|
return_to_title: "Početak", |
||||||
|
expand_timeline: "Uvećaj", |
||||||
|
contract_timeline: "Umanji", |
||||||
|
wikipedia: "Iz Vikipedije, slobodne enciklopedije", |
||||||
|
loading_content: "Sadržaj se učitava", |
||||||
|
loading: "Učitava se" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,37 @@ |
|||||||
|
/* Swedish LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "sv", |
||||||
|
api: { |
||||||
|
wikipedia: "sv" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december"], |
||||||
|
month_abbr: ["jan", "febr", "mars", "april", "maj", "juni", "juli", "aug", "sept", "okt", "nov", "dec"], |
||||||
|
day: ["söndag","måndag", "tisdag", "onsdag", "torsdag", "fredag", "lördag"], |
||||||
|
day_abbr: ["sön","mån", "tis", "ons", "tors", "fre", "lör"] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm',' yyyy", |
||||||
|
time_short: "HH:MM:ss", |
||||||
|
time_no_seconds_short: "H:MM", |
||||||
|
time_no_seconds_small_date: "H:MM'<br/><small>'d mmmm',' yyyy'</small>'", |
||||||
|
full_long: "d mmm',' yyyy 'vid' H:MM", |
||||||
|
full_long_small_date: "H:MM'<br/><small>d mmm',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Laddar tidslinje... ", |
||||||
|
return_to_title: "Tillbaka till start", |
||||||
|
expand_timeline: "Förstora tidslinje", |
||||||
|
contract_timeline: "Förminska tidslinje", |
||||||
|
wikipedia: "Från Wikipedia, den fria encyklopedin", |
||||||
|
loading_content: "Laddar innehåll", |
||||||
|
loading: "Laddar" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Tagalog LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "tl", |
||||||
|
api: { |
||||||
|
wikipedia: "tl" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Enemo", "Pebrero", "Marso", "Abril", "Mayo", "Hunyo", "Hulyo", "Agosto", "Setyembre", "Oktubre", "Nobyembre", "Disyembre"], |
||||||
|
month_abbr: ["Ene.", "Peb.", "Mar.", "Abr.", "Mayo", "Hun.", "Hul.", "Ago.", "Set.", "Okt.", "Nob.", "Dis."], |
||||||
|
day: ["Linggo", "Lunes", "Martes", "Miyerkules", "Huwebes", "Biyernes", "Sabado"], |
||||||
|
day_abbr: ["Li.","L.", "M.", "Mi.", "H.", "B.", "S."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "mmmm d',' yyyy", |
||||||
|
time_short: "h:MM:ss TT", |
||||||
|
time_no_seconds_short: "h:MM TT", |
||||||
|
time_no_seconds_small_date: "h:MM TT'<br/><small>'mmmm d',' yyyy'</small>'", |
||||||
|
full_long: "mmm d',' yyyy 'at' h:MM TT", |
||||||
|
full_long_small_date: "h:MM TT'<br/><small>mmm d',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Loading Timeline... ", |
||||||
|
return_to_title: "Return to Title", |
||||||
|
expand_timeline: "Expand Timeline", |
||||||
|
contract_timeline: "Contract Timeline", |
||||||
|
wikipedia: "Mula sa Wikipedia, ang malayang ensiklopedya", |
||||||
|
loading_content: "Loading Content", |
||||||
|
loading: "Loading" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* Turkish LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "tr", |
||||||
|
api: { |
||||||
|
wikipedia: "tr" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"], |
||||||
|
month_abbr: ["Oca.", "Şub.", "Mar.", "Nis.", "May.", "Haz.", "Tem.", "Ağu.", "Eyl.", "Eki.", "Kas.", "Ara."], |
||||||
|
day: ["Pazar","Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"], |
||||||
|
day_abbr: ["Paz.","Pzt.", "Sal.", "Çar.", "Per.", "Cum.", "Cts."] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm',' yyyy", |
||||||
|
time_short: "HH:MM:ss", |
||||||
|
time_no_seconds_short: "H:MM", |
||||||
|
time_no_seconds_small_date: "H:MM'<br/><small>'d mmmm',' yyyy'</small>'", |
||||||
|
full_long: "d mmm',' yyyy 'at' H:MM", |
||||||
|
full_long_small_date: "H:MM '<br/><small>d mmm',' yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "Zaman Çizelgesi Yükleniyor... ", |
||||||
|
return_to_title: "Başlığa Dön", |
||||||
|
expand_timeline: "Zaman Çizelgesini Genişlet", |
||||||
|
contract_timeline: "Zaman Çizelgesini Daralt", |
||||||
|
wikipedia: "Wikipedia'dan, özgür ansiklopedi", |
||||||
|
loading_content: "İçerik Yükleniyor", |
||||||
|
loading: "Yükleniyor" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
/* Chinese LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "zh-cn", |
||||||
|
api: { |
||||||
|
wikipedia: "zh" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], |
||||||
|
month_abbr: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], |
||||||
|
day: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"], |
||||||
|
day_abbr: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy年", |
||||||
|
month_short: "mmm", |
||||||
|
month: "yyyy年 mmmm", |
||||||
|
full_short: "mmm d", |
||||||
|
full: "yyyy年mmmm d日", |
||||||
|
time_short: "HH:MM:ss", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'yyyy年mmmm d日'</small>'", |
||||||
|
full_long: "dddd',' yyyy年 mmm d日'um' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>'dddd',' yyyy年 mmm d日'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "加载时间线... ", |
||||||
|
return_to_title: "回到开头", |
||||||
|
expand_timeline: "伸展时间", |
||||||
|
contract_timeline: "缩短时间", |
||||||
|
wikipedia: "来自维基百科,自由的百科全书", |
||||||
|
loading_content: "正在加载内容", |
||||||
|
loading: "加载中" |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
/* Taiwanese LANGUAGE |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined') { |
||||||
|
VMM.Language = { |
||||||
|
lang: "zh-tw", |
||||||
|
api: { |
||||||
|
wikipedia: "zh" |
||||||
|
}, |
||||||
|
date: { |
||||||
|
month: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], |
||||||
|
month_abbr: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], |
||||||
|
day: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"], |
||||||
|
day_abbr: ["週日", "週一", "週二", "週三", "週四", "週五", "週六"] |
||||||
|
},
|
||||||
|
dateformats: { |
||||||
|
year: "yyyy", |
||||||
|
month_short: "mmm", |
||||||
|
month: "mmmm yyyy", |
||||||
|
full_short: "d mmm", |
||||||
|
full: "d mmmm yyyy", |
||||||
|
time_short: "HH:MM:ss", |
||||||
|
time_no_seconds_short: "HH:MM", |
||||||
|
time_no_seconds_small_date: "HH:MM'<br/><small>'d mmmm yyyy'</small>'", |
||||||
|
full_long: "dddd',' d mmm yyyy 'um' HH:MM", |
||||||
|
full_long_small_date: "HH:MM'<br/><small>'dddd',' d mmm yyyy'</small>'" |
||||||
|
}, |
||||||
|
messages: { |
||||||
|
loading_timeline: "載入時間線... ", |
||||||
|
return_to_title: "回到開頭", |
||||||
|
expand_timeline: "展開時間", |
||||||
|
contract_timeline: "縮短時間", |
||||||
|
wikipedia: "擷取自維基百科, 自由之百科全書", |
||||||
|
loading_content: "載入內容", |
||||||
|
loading: "載入中" |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,463 @@ |
|||||||
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ |
||||||
|
/* AES implementation in JavaScript (c) Chris Veness 2005-2011 */ |
||||||
|
/* - see http://csrc.nist.gov/publications/PubsFIPS.html#197 */ |
||||||
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ |
||||||
|
|
||||||
|
var Aes = {}; // Aes namespace
|
||||||
|
|
||||||
|
/** |
||||||
|
* AES Cipher function: encrypt 'input' state with Rijndael algorithm |
||||||
|
* applies Nr rounds (10/12/14) using key schedule w for 'add round key' stage |
||||||
|
* |
||||||
|
* @param {Number[]} input 16-byte (128-bit) input state array |
||||||
|
* @param {Number[][]} w Key schedule as 2D byte-array (Nr+1 x Nb bytes) |
||||||
|
* @returns {Number[]} Encrypted output state array |
||||||
|
*/ |
||||||
|
Aes.cipher = function(input, w) { // main Cipher function [§5.1]
|
||||||
|
var Nb = 4; // block size (in words): no of columns in state (fixed at 4 for AES)
|
||||||
|
var Nr = w.length/Nb - 1; // no of rounds: 10/12/14 for 128/192/256-bit keys
|
||||||
|
|
||||||
|
var state = [[],[],[],[]]; // initialise 4xNb byte-array 'state' with input [§3.4]
|
||||||
|
for (var i=0; i<4*Nb; i++) state[i%4][Math.floor(i/4)] = input[i]; |
||||||
|
|
||||||
|
state = Aes.addRoundKey(state, w, 0, Nb); |
||||||
|
|
||||||
|
for (var round=1; round<Nr; round++) { |
||||||
|
state = Aes.subBytes(state, Nb); |
||||||
|
state = Aes.shiftRows(state, Nb); |
||||||
|
state = Aes.mixColumns(state, Nb); |
||||||
|
state = Aes.addRoundKey(state, w, round, Nb); |
||||||
|
} |
||||||
|
|
||||||
|
state = Aes.subBytes(state, Nb); |
||||||
|
state = Aes.shiftRows(state, Nb); |
||||||
|
state = Aes.addRoundKey(state, w, Nr, Nb); |
||||||
|
|
||||||
|
var output = new Array(4*Nb); // convert state to 1-d array before returning [§3.4]
|
||||||
|
for (var i=0; i<4*Nb; i++) output[i] = state[i%4][Math.floor(i/4)]; |
||||||
|
return output; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Perform Key Expansion to generate a Key Schedule |
||||||
|
* |
||||||
|
* @param {Number[]} key Key as 16/24/32-byte array |
||||||
|
* @returns {Number[][]} Expanded key schedule as 2D byte-array (Nr+1 x Nb bytes) |
||||||
|
*/ |
||||||
|
Aes.keyExpansion = function(key) { // generate Key Schedule (byte-array Nr+1 x Nb) from Key [§5.2]
|
||||||
|
var Nb = 4; // block size (in words): no of columns in state (fixed at 4 for AES)
|
||||||
|
var Nk = key.length/4 // key length (in words): 4/6/8 for 128/192/256-bit keys
|
||||||
|
var Nr = Nk + 6; // no of rounds: 10/12/14 for 128/192/256-bit keys
|
||||||
|
|
||||||
|
var w = new Array(Nb*(Nr+1)); |
||||||
|
var temp = new Array(4); |
||||||
|
|
||||||
|
for (var i=0; i<Nk; i++) { |
||||||
|
var r = [key[4*i], key[4*i+1], key[4*i+2], key[4*i+3]]; |
||||||
|
w[i] = r; |
||||||
|
} |
||||||
|
|
||||||
|
for (var i=Nk; i<(Nb*(Nr+1)); i++) { |
||||||
|
w[i] = new Array(4); |
||||||
|
for (var t=0; t<4; t++) temp[t] = w[i-1][t]; |
||||||
|
if (i % Nk == 0) { |
||||||
|
temp = Aes.subWord(Aes.rotWord(temp)); |
||||||
|
for (var t=0; t<4; t++) temp[t] ^= Aes.rCon[i/Nk][t]; |
||||||
|
} else if (Nk > 6 && i%Nk == 4) { |
||||||
|
temp = Aes.subWord(temp); |
||||||
|
} |
||||||
|
for (var t=0; t<4; t++) w[i][t] = w[i-Nk][t] ^ temp[t]; |
||||||
|
} |
||||||
|
|
||||||
|
return w; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
* ---- remaining routines are private, not called externally ---- |
||||||
|
*/ |
||||||
|
|
||||||
|
Aes.subBytes = function(s, Nb) { // apply SBox to state S [§5.1.1]
|
||||||
|
for (var r=0; r<4; r++) { |
||||||
|
for (var c=0; c<Nb; c++) s[r][c] = Aes.sBox[s[r][c]]; |
||||||
|
} |
||||||
|
return s; |
||||||
|
} |
||||||
|
|
||||||
|
Aes.shiftRows = function(s, Nb) { // shift row r of state S left by r bytes [§5.1.2]
|
||||||
|
var t = new Array(4); |
||||||
|
for (var r=1; r<4; r++) { |
||||||
|
for (var c=0; c<4; c++) t[c] = s[r][(c+r)%Nb]; // shift into temp copy
|
||||||
|
for (var c=0; c<4; c++) s[r][c] = t[c]; // and copy back
|
||||||
|
} // note that this will work for Nb=4,5,6, but not 7,8 (always 4 for AES):
|
||||||
|
return s; // see asmaes.sourceforge.net/rijndael/rijndaelImplementation.pdf
|
||||||
|
} |
||||||
|
|
||||||
|
Aes.mixColumns = function(s, Nb) { // combine bytes of each col of state S [§5.1.3]
|
||||||
|
for (var c=0; c<4; c++) { |
||||||
|
var a = new Array(4); // 'a' is a copy of the current column from 's'
|
||||||
|
var b = new Array(4); // 'b' is a•{02} in GF(2^8)
|
||||||
|
for (var i=0; i<4; i++) { |
||||||
|
a[i] = s[i][c]; |
||||||
|
b[i] = s[i][c]&0x80 ? s[i][c]<<1 ^ 0x011b : s[i][c]<<1; |
||||||
|
|
||||||
|
} |
||||||
|
// a[n] ^ b[n] is a•{03} in GF(2^8)
|
||||||
|
s[0][c] = b[0] ^ a[1] ^ b[1] ^ a[2] ^ a[3]; // 2*a0 + 3*a1 + a2 + a3
|
||||||
|
s[1][c] = a[0] ^ b[1] ^ a[2] ^ b[2] ^ a[3]; // a0 * 2*a1 + 3*a2 + a3
|
||||||
|
s[2][c] = a[0] ^ a[1] ^ b[2] ^ a[3] ^ b[3]; // a0 + a1 + 2*a2 + 3*a3
|
||||||
|
s[3][c] = a[0] ^ b[0] ^ a[1] ^ a[2] ^ b[3]; // 3*a0 + a1 + a2 + 2*a3
|
||||||
|
} |
||||||
|
return s; |
||||||
|
} |
||||||
|
|
||||||
|
Aes.addRoundKey = function(state, w, rnd, Nb) { // xor Round Key into state S [§5.1.4]
|
||||||
|
for (var r=0; r<4; r++) { |
||||||
|
for (var c=0; c<Nb; c++) state[r][c] ^= w[rnd*4+c][r]; |
||||||
|
} |
||||||
|
return state; |
||||||
|
} |
||||||
|
|
||||||
|
Aes.subWord = function(w) { // apply SBox to 4-byte word w
|
||||||
|
for (var i=0; i<4; i++) w[i] = Aes.sBox[w[i]]; |
||||||
|
return w; |
||||||
|
} |
||||||
|
|
||||||
|
Aes.rotWord = function(w) { // rotate 4-byte word w left by one byte
|
||||||
|
var tmp = w[0]; |
||||||
|
for (var i=0; i<3; i++) w[i] = w[i+1]; |
||||||
|
w[3] = tmp; |
||||||
|
return w; |
||||||
|
} |
||||||
|
|
||||||
|
// sBox is pre-computed multiplicative inverse in GF(2^8) used in subBytes and keyExpansion [§5.1.1]
|
||||||
|
Aes.sBox = [0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76, |
||||||
|
0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0, |
||||||
|
0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15, |
||||||
|
0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75, |
||||||
|
0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84, |
||||||
|
0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf, |
||||||
|
0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8, |
||||||
|
0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2, |
||||||
|
0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73, |
||||||
|
0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb, |
||||||
|
0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79, |
||||||
|
0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08, |
||||||
|
0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a, |
||||||
|
0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e, |
||||||
|
0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf, |
||||||
|
0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16]; |
||||||
|
|
||||||
|
// rCon is Round Constant used for the Key Expansion [1st col is 2^(r-1) in GF(2^8)] [§5.2]
|
||||||
|
Aes.rCon = [ [0x00, 0x00, 0x00, 0x00], |
||||||
|
[0x01, 0x00, 0x00, 0x00], |
||||||
|
[0x02, 0x00, 0x00, 0x00], |
||||||
|
[0x04, 0x00, 0x00, 0x00], |
||||||
|
[0x08, 0x00, 0x00, 0x00], |
||||||
|
[0x10, 0x00, 0x00, 0x00], |
||||||
|
[0x20, 0x00, 0x00, 0x00], |
||||||
|
[0x40, 0x00, 0x00, 0x00], |
||||||
|
[0x80, 0x00, 0x00, 0x00], |
||||||
|
[0x1b, 0x00, 0x00, 0x00], |
||||||
|
[0x36, 0x00, 0x00, 0x00] ];
|
||||||
|
|
||||||
|
|
||||||
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ |
||||||
|
/* AES Counter-mode implementation in JavaScript (c) Chris Veness 2005-2011 */ |
||||||
|
/* - see http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf */ |
||||||
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ |
||||||
|
|
||||||
|
Aes.Ctr = {}; // Aes.Ctr namespace: a subclass or extension of Aes
|
||||||
|
|
||||||
|
/** |
||||||
|
* Encrypt a text using AES encryption in Counter mode of operation |
||||||
|
* |
||||||
|
* Unicode multi-byte character safe |
||||||
|
* |
||||||
|
* @param {String} plaintext Source text to be encrypted |
||||||
|
* @param {String} password The password to use to generate a key |
||||||
|
* @param {Number} nBits Number of bits to be used in the key (128, 192, or 256) |
||||||
|
* @returns {string} Encrypted text |
||||||
|
*/ |
||||||
|
Aes.Ctr.encrypt = function(plaintext, password, nBits) { |
||||||
|
var blockSize = 16; // block size fixed at 16 bytes / 128 bits (Nb=4) for AES
|
||||||
|
if (!(nBits==128 || nBits==192 || nBits==256)) return ''; // standard allows 128/192/256 bit keys
|
||||||
|
plaintext = Utf8.encode(plaintext); |
||||||
|
password = Utf8.encode(password); |
||||||
|
//var t = new Date(); // timer
|
||||||
|
|
||||||
|
// use AES itself to encrypt password to get cipher key (using plain password as source for key
|
||||||
|
// expansion) - gives us well encrypted key (though hashed key might be preferred for prod'n use)
|
||||||
|
var nBytes = nBits/8; // no bytes in key (16/24/32)
|
||||||
|
var pwBytes = new Array(nBytes); |
||||||
|
for (var i=0; i<nBytes; i++) { // use 1st 16/24/32 chars of password for key
|
||||||
|
pwBytes[i] = isNaN(password.charCodeAt(i)) ? 0 : password.charCodeAt(i); |
||||||
|
} |
||||||
|
var key = Aes.cipher(pwBytes, Aes.keyExpansion(pwBytes)); // gives us 16-byte key
|
||||||
|
key = key.concat(key.slice(0, nBytes-16)); // expand key to 16/24/32 bytes long
|
||||||
|
|
||||||
|
// initialise 1st 8 bytes of counter block with nonce (NIST SP800-38A §B.2): [0-1] = millisec,
|
||||||
|
// [2-3] = random, [4-7] = seconds, together giving full sub-millisec uniqueness up to Feb 2106
|
||||||
|
var counterBlock = new Array(blockSize); |
||||||
|
|
||||||
|
var nonce = (new Date()).getTime(); // timestamp: milliseconds since 1-Jan-1970
|
||||||
|
var nonceMs = nonce%1000; |
||||||
|
var nonceSec = Math.floor(nonce/1000); |
||||||
|
var nonceRnd = Math.floor(Math.random()*0xffff); |
||||||
|
|
||||||
|
for (var i=0; i<2; i++) counterBlock[i] = (nonceMs >>> i*8) & 0xff; |
||||||
|
for (var i=0; i<2; i++) counterBlock[i+2] = (nonceRnd >>> i*8) & 0xff; |
||||||
|
for (var i=0; i<4; i++) counterBlock[i+4] = (nonceSec >>> i*8) & 0xff; |
||||||
|
|
||||||
|
// and convert it to a string to go on the front of the ciphertext
|
||||||
|
var ctrTxt = ''; |
||||||
|
for (var i=0; i<8; i++) ctrTxt += String.fromCharCode(counterBlock[i]); |
||||||
|
|
||||||
|
// generate key schedule - an expansion of the key into distinct Key Rounds for each round
|
||||||
|
var keySchedule = Aes.keyExpansion(key); |
||||||
|
|
||||||
|
var blockCount = Math.ceil(plaintext.length/blockSize); |
||||||
|
var ciphertxt = new Array(blockCount); // ciphertext as array of strings
|
||||||
|
|
||||||
|
for (var b=0; b<blockCount; b++) { |
||||||
|
// set counter (block #) in last 8 bytes of counter block (leaving nonce in 1st 8 bytes)
|
||||||
|
// done in two stages for 32-bit ops: using two words allows us to go past 2^32 blocks (68GB)
|
||||||
|
for (var c=0; c<4; c++) counterBlock[15-c] = (b >>> c*8) & 0xff; |
||||||
|
for (var c=0; c<4; c++) counterBlock[15-c-4] = (b/0x100000000 >>> c*8) |
||||||
|
|
||||||
|
var cipherCntr = Aes.cipher(counterBlock, keySchedule); // -- encrypt counter block --
|
||||||
|
|
||||||
|
// block size is reduced on final block
|
||||||
|
var blockLength = b<blockCount-1 ? blockSize : (plaintext.length-1)%blockSize+1; |
||||||
|
var cipherChar = new Array(blockLength); |
||||||
|
|
||||||
|
for (var i=0; i<blockLength; i++) { // -- xor plaintext with ciphered counter char-by-char --
|
||||||
|
cipherChar[i] = cipherCntr[i] ^ plaintext.charCodeAt(b*blockSize+i); |
||||||
|
cipherChar[i] = String.fromCharCode(cipherChar[i]); |
||||||
|
} |
||||||
|
ciphertxt[b] = cipherChar.join('');
|
||||||
|
} |
||||||
|
|
||||||
|
// Array.join is more efficient than repeated string concatenation in IE
|
||||||
|
var ciphertext = ctrTxt + ciphertxt.join(''); |
||||||
|
ciphertext = Base64.encode(ciphertext); // encode in base64
|
||||||
|
|
||||||
|
//alert((new Date()) - t);
|
||||||
|
return ciphertext; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Decrypt a text encrypted by AES in counter mode of operation |
||||||
|
* |
||||||
|
* @param {String} ciphertext Source text to be encrypted |
||||||
|
* @param {String} password The password to use to generate a key |
||||||
|
* @param {Number} nBits Number of bits to be used in the key (128, 192, or 256) |
||||||
|
* @returns {String} Decrypted text |
||||||
|
*/ |
||||||
|
Aes.Ctr.decrypt = function(ciphertext, password, nBits) { |
||||||
|
var blockSize = 16; // block size fixed at 16 bytes / 128 bits (Nb=4) for AES
|
||||||
|
if (!(nBits==128 || nBits==192 || nBits==256)) return ''; // standard allows 128/192/256 bit keys
|
||||||
|
ciphertext = Base64.decode(ciphertext); |
||||||
|
password = Utf8.encode(password); |
||||||
|
//var t = new Date(); // timer
|
||||||
|
|
||||||
|
// use AES to encrypt password (mirroring encrypt routine)
|
||||||
|
var nBytes = nBits/8; // no bytes in key
|
||||||
|
var pwBytes = new Array(nBytes); |
||||||
|
for (var i=0; i<nBytes; i++) { |
||||||
|
pwBytes[i] = isNaN(password.charCodeAt(i)) ? 0 : password.charCodeAt(i); |
||||||
|
} |
||||||
|
var key = Aes.cipher(pwBytes, Aes.keyExpansion(pwBytes)); |
||||||
|
key = key.concat(key.slice(0, nBytes-16)); // expand key to 16/24/32 bytes long
|
||||||
|
|
||||||
|
// recover nonce from 1st 8 bytes of ciphertext
|
||||||
|
var counterBlock = new Array(8); |
||||||
|
ctrTxt = ciphertext.slice(0, 8); |
||||||
|
for (var i=0; i<8; i++) counterBlock[i] = ctrTxt.charCodeAt(i); |
||||||
|
|
||||||
|
// generate key schedule
|
||||||
|
var keySchedule = Aes.keyExpansion(key); |
||||||
|
|
||||||
|
// separate ciphertext into blocks (skipping past initial 8 bytes)
|
||||||
|
var nBlocks = Math.ceil((ciphertext.length-8) / blockSize); |
||||||
|
var ct = new Array(nBlocks); |
||||||
|
for (var b=0; b<nBlocks; b++) ct[b] = ciphertext.slice(8+b*blockSize, 8+b*blockSize+blockSize); |
||||||
|
ciphertext = ct; // ciphertext is now array of block-length strings
|
||||||
|
|
||||||
|
// plaintext will get generated block-by-block into array of block-length strings
|
||||||
|
var plaintxt = new Array(ciphertext.length); |
||||||
|
|
||||||
|
for (var b=0; b<nBlocks; b++) { |
||||||
|
// set counter (block #) in last 8 bytes of counter block (leaving nonce in 1st 8 bytes)
|
||||||
|
for (var c=0; c<4; c++) counterBlock[15-c] = ((b) >>> c*8) & 0xff; |
||||||
|
for (var c=0; c<4; c++) counterBlock[15-c-4] = (((b+1)/0x100000000-1) >>> c*8) & 0xff; |
||||||
|
|
||||||
|
var cipherCntr = Aes.cipher(counterBlock, keySchedule); // encrypt counter block
|
||||||
|
|
||||||
|
var plaintxtByte = new Array(ciphertext[b].length); |
||||||
|
for (var i=0; i<ciphertext[b].length; i++) { |
||||||
|
// -- xor plaintxt with ciphered counter byte-by-byte --
|
||||||
|
plaintxtByte[i] = cipherCntr[i] ^ ciphertext[b].charCodeAt(i); |
||||||
|
plaintxtByte[i] = String.fromCharCode(plaintxtByte[i]); |
||||||
|
} |
||||||
|
plaintxt[b] = plaintxtByte.join(''); |
||||||
|
} |
||||||
|
|
||||||
|
// join array of blocks into single plaintext string
|
||||||
|
var plaintext = plaintxt.join(''); |
||||||
|
plaintext = Utf8.decode(plaintext); // decode from UTF8 back to Unicode multi-byte chars
|
||||||
|
|
||||||
|
//alert((new Date()) - t);
|
||||||
|
return plaintext; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ |
||||||
|
/* Base64 class: Base 64 encoding / decoding (c) Chris Veness 2002-2011 */ |
||||||
|
/* note: depends on Utf8 class */ |
||||||
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ |
||||||
|
|
||||||
|
var Base64 = {}; // Base64 namespace
|
||||||
|
|
||||||
|
Base64.code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; |
||||||
|
|
||||||
|
/** |
||||||
|
* Encode string into Base64, as defined by RFC 4648 [http://tools.ietf.org/html/rfc4648]
|
||||||
|
* (instance method extending String object). As per RFC 4648, no newlines are added. |
||||||
|
* |
||||||
|
* @param {String} str The string to be encoded as base-64 |
||||||
|
* @param {Boolean} [utf8encode=false] Flag to indicate whether str is Unicode string to be encoded
|
||||||
|
* to UTF8 before conversion to base64; otherwise string is assumed to be 8-bit characters |
||||||
|
* @returns {String} Base64-encoded string |
||||||
|
*/ |
||||||
|
Base64.encode = function(str, utf8encode) { // http://tools.ietf.org/html/rfc4648
|
||||||
|
utf8encode = (typeof utf8encode == 'undefined') ? false : utf8encode; |
||||||
|
var o1, o2, o3, bits, h1, h2, h3, h4, e=[], pad = '', c, plain, coded; |
||||||
|
var b64 = Base64.code; |
||||||
|
|
||||||
|
plain = utf8encode ? str.encodeUTF8() : str; |
||||||
|
|
||||||
|
c = plain.length % 3; // pad string to length of multiple of 3
|
||||||
|
if (c > 0) { while (c++ < 3) { pad += '='; plain += '\0'; } } |
||||||
|
// note: doing padding here saves us doing special-case packing for trailing 1 or 2 chars
|
||||||
|
|
||||||
|
for (c=0; c<plain.length; c+=3) { // pack three octets into four hexets
|
||||||
|
o1 = plain.charCodeAt(c); |
||||||
|
o2 = plain.charCodeAt(c+1); |
||||||
|
o3 = plain.charCodeAt(c+2); |
||||||
|
|
||||||
|
bits = o1<<16 | o2<<8 | o3; |
||||||
|
|
||||||
|
h1 = bits>>18 & 0x3f; |
||||||
|
h2 = bits>>12 & 0x3f; |
||||||
|
h3 = bits>>6 & 0x3f; |
||||||
|
h4 = bits & 0x3f; |
||||||
|
|
||||||
|
// use hextets to index into code string
|
||||||
|
e[c/3] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); |
||||||
|
} |
||||||
|
coded = e.join(''); // join() is far faster than repeated string concatenation in IE
|
||||||
|
|
||||||
|
// replace 'A's from padded nulls with '='s
|
||||||
|
coded = coded.slice(0, coded.length-pad.length) + pad; |
||||||
|
|
||||||
|
return coded; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Decode string from Base64, as defined by RFC 4648 [http://tools.ietf.org/html/rfc4648]
|
||||||
|
* (instance method extending String object). As per RFC 4648, newlines are not catered for. |
||||||
|
* |
||||||
|
* @param {String} str The string to be decoded from base-64 |
||||||
|
* @param {Boolean} [utf8decode=false] Flag to indicate whether str is Unicode string to be decoded
|
||||||
|
* from UTF8 after conversion from base64 |
||||||
|
* @returns {String} decoded string |
||||||
|
*/ |
||||||
|
Base64.decode = function(str, utf8decode) { |
||||||
|
utf8decode = (typeof utf8decode == 'undefined') ? false : utf8decode; |
||||||
|
var o1, o2, o3, h1, h2, h3, h4, bits, d=[], plain, coded; |
||||||
|
var b64 = Base64.code; |
||||||
|
|
||||||
|
coded = utf8decode ? str.decodeUTF8() : str; |
||||||
|
|
||||||
|
|
||||||
|
for (var c=0; c<coded.length; c+=4) { // unpack four hexets into three octets
|
||||||
|
h1 = b64.indexOf(coded.charAt(c)); |
||||||
|
h2 = b64.indexOf(coded.charAt(c+1)); |
||||||
|
h3 = b64.indexOf(coded.charAt(c+2)); |
||||||
|
h4 = b64.indexOf(coded.charAt(c+3)); |
||||||
|
|
||||||
|
bits = h1<<18 | h2<<12 | h3<<6 | h4; |
||||||
|
|
||||||
|
o1 = bits>>>16 & 0xff; |
||||||
|
o2 = bits>>>8 & 0xff; |
||||||
|
o3 = bits & 0xff; |
||||||
|
|
||||||
|
d[c/4] = String.fromCharCode(o1, o2, o3); |
||||||
|
// check for padding
|
||||||
|
if (h4 == 0x40) d[c/4] = String.fromCharCode(o1, o2); |
||||||
|
if (h3 == 0x40) d[c/4] = String.fromCharCode(o1); |
||||||
|
} |
||||||
|
plain = d.join(''); // join() is far faster than repeated string concatenation in IE
|
||||||
|
|
||||||
|
return utf8decode ? plain.decodeUTF8() : plain;
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ |
||||||
|
/* Utf8 class: encode / decode between multi-byte Unicode characters and UTF-8 multiple */ |
||||||
|
/* single-byte character encoding (c) Chris Veness 2002-2011 */ |
||||||
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ |
||||||
|
|
||||||
|
var Utf8 = {}; // Utf8 namespace
|
||||||
|
|
||||||
|
/** |
||||||
|
* Encode multi-byte Unicode string into utf-8 multiple single-byte characters
|
||||||
|
* (BMP / basic multilingual plane only) |
||||||
|
* |
||||||
|
* Chars in range U+0080 - U+07FF are encoded in 2 chars, U+0800 - U+FFFF in 3 chars |
||||||
|
* |
||||||
|
* @param {String} strUni Unicode string to be encoded as UTF-8 |
||||||
|
* @returns {String} encoded string |
||||||
|
*/ |
||||||
|
Utf8.encode = function(strUni) { |
||||||
|
// use regular expressions & String.replace callback function for better efficiency
|
||||||
|
// than procedural approaches
|
||||||
|
var strUtf = strUni.replace( |
||||||
|
/[\u0080-\u07ff]/g, // U+0080 - U+07FF => 2 bytes 110yyyyy, 10zzzzzz
|
||||||
|
function(c) {
|
||||||
|
var cc = c.charCodeAt(0); |
||||||
|
return String.fromCharCode(0xc0 | cc>>6, 0x80 | cc&0x3f); } |
||||||
|
); |
||||||
|
strUtf = strUtf.replace( |
||||||
|
/[\u0800-\uffff]/g, // U+0800 - U+FFFF => 3 bytes 1110xxxx, 10yyyyyy, 10zzzzzz
|
||||||
|
function(c) {
|
||||||
|
var cc = c.charCodeAt(0);
|
||||||
|
return String.fromCharCode(0xe0 | cc>>12, 0x80 | cc>>6&0x3F, 0x80 | cc&0x3f); } |
||||||
|
); |
||||||
|
return strUtf; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Decode utf-8 encoded string back into multi-byte Unicode characters |
||||||
|
* |
||||||
|
* @param {String} strUtf UTF-8 string to be decoded back to Unicode |
||||||
|
* @returns {String} decoded string |
||||||
|
*/ |
||||||
|
Utf8.decode = function(strUtf) { |
||||||
|
// note: decode 3-byte chars first as decoded 2-byte strings could appear to be 3-byte char!
|
||||||
|
var strUni = strUtf.replace( |
||||||
|
/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g, // 3-byte chars
|
||||||
|
function(c) { // (note parentheses for precence)
|
||||||
|
var cc = ((c.charCodeAt(0)&0x0f)<<12) | ((c.charCodeAt(1)&0x3f)<<6) | ( c.charCodeAt(2)&0x3f);
|
||||||
|
return String.fromCharCode(cc); } |
||||||
|
); |
||||||
|
strUni = strUni.replace( |
||||||
|
/[\u00c0-\u00df][\u0080-\u00bf]/g, // 2-byte chars
|
||||||
|
function(c) { // (note parentheses for precence)
|
||||||
|
var cc = (c.charCodeAt(0)&0x1f)<<6 | c.charCodeAt(1)&0x3f; |
||||||
|
return String.fromCharCode(cc); } |
||||||
|
); |
||||||
|
return strUni; |
||||||
|
} |
||||||
|
|
||||||
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ |
@ -0,0 +1,391 @@ |
|||||||
|
/*jslint browser: true, eqeqeq: true, bitwise: true, newcap: true, immed: true, regexp: false */ |
||||||
|
|
||||||
|
/* |
||||||
|
LazyLoad makes it easy and painless to lazily load one or more external |
||||||
|
JavaScript or CSS files on demand either during or after the rendering of a web |
||||||
|
page. |
||||||
|
|
||||||
|
Supported browsers include Firefox 2+, IE6+, Safari 3+ (including Mobile |
||||||
|
Safari), Google Chrome, and Opera 9+. Other browsers may or may not work and |
||||||
|
are not officially supported. |
||||||
|
|
||||||
|
Visit https://github.com/rgrove/lazyload/ for more info.
|
||||||
|
|
||||||
|
Copyright (c) 2011 Ryan Grove <ryan@wonko.com> |
||||||
|
All rights reserved. |
||||||
|
|
||||||
|
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. |
||||||
|
|
||||||
|
@module lazyload |
||||||
|
@class LazyLoad |
||||||
|
@static |
||||||
|
@version 2.0.3 (git) |
||||||
|
*/ |
||||||
|
|
||||||
|
LazyLoad = (function (doc) { |
||||||
|
// -- Private Variables ------------------------------------------------------
|
||||||
|
|
||||||
|
// User agent and feature test information.
|
||||||
|
var env, |
||||||
|
|
||||||
|
// Reference to the <head> element (populated lazily).
|
||||||
|
head, |
||||||
|
|
||||||
|
// Requests currently in progress, if any.
|
||||||
|
pending = {}, |
||||||
|
|
||||||
|
// Number of times we've polled to check whether a pending stylesheet has
|
||||||
|
// finished loading. If this gets too high, we're probably stalled.
|
||||||
|
pollCount = 0, |
||||||
|
|
||||||
|
// Queued requests.
|
||||||
|
queue = {css: [], js: []}, |
||||||
|
|
||||||
|
// Reference to the browser's list of stylesheets.
|
||||||
|
styleSheets = doc.styleSheets; |
||||||
|
|
||||||
|
// -- Private Methods --------------------------------------------------------
|
||||||
|
|
||||||
|
/** |
||||||
|
Creates and returns an HTML element with the specified name and attributes. |
||||||
|
|
||||||
|
@method createNode |
||||||
|
@param {String} name element name |
||||||
|
@param {Object} attrs name/value mapping of element attributes |
||||||
|
@return {HTMLElement} |
||||||
|
@private |
||||||
|
*/ |
||||||
|
function createNode(name, attrs) { |
||||||
|
var node = doc.createElement(name), attr; |
||||||
|
|
||||||
|
for (attr in attrs) { |
||||||
|
if (attrs.hasOwnProperty(attr)) { |
||||||
|
node.setAttribute(attr, attrs[attr]); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return node; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
Called when the current pending resource of the specified type has finished |
||||||
|
loading. Executes the associated callback (if any) and loads the next |
||||||
|
resource in the queue. |
||||||
|
|
||||||
|
@method finish |
||||||
|
@param {String} type resource type ('css' or 'js') |
||||||
|
@private |
||||||
|
*/ |
||||||
|
function finish(type) { |
||||||
|
var p = pending[type], |
||||||
|
callback, |
||||||
|
urls; |
||||||
|
|
||||||
|
if (p) { |
||||||
|
callback = p.callback; |
||||||
|
urls = p.urls; |
||||||
|
|
||||||
|
urls.shift(); |
||||||
|
pollCount = 0; |
||||||
|
|
||||||
|
// If this is the last of the pending URLs, execute the callback and
|
||||||
|
// start the next request in the queue (if any).
|
||||||
|
if (!urls.length) { |
||||||
|
callback && callback.call(p.context, p.obj); |
||||||
|
pending[type] = null; |
||||||
|
queue[type].length && load(type); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
Populates the <code>env</code> variable with user agent and feature test |
||||||
|
information. |
||||||
|
|
||||||
|
@method getEnv |
||||||
|
@private |
||||||
|
*/ |
||||||
|
function getEnv() { |
||||||
|
var ua = navigator.userAgent; |
||||||
|
|
||||||
|
env = { |
||||||
|
// True if this browser supports disabling async mode on dynamically
|
||||||
|
// created script nodes. See
|
||||||
|
// http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
|
||||||
|
async: doc.createElement('script').async === true |
||||||
|
}; |
||||||
|
|
||||||
|
(env.webkit = /AppleWebKit\//.test(ua)) |
||||||
|
|| (env.ie = /MSIE/.test(ua)) |
||||||
|
|| (env.opera = /Opera/.test(ua)) |
||||||
|
|| (env.gecko = /Gecko\//.test(ua)) |
||||||
|
|| (env.unknown = true); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
Loads the specified resources, or the next resource of the specified type |
||||||
|
in the queue if no resources are specified. If a resource of the specified |
||||||
|
type is already being loaded, the new request will be queued until the |
||||||
|
first request has been finished. |
||||||
|
|
||||||
|
When an array of resource URLs is specified, those URLs will be loaded in |
||||||
|
parallel if it is possible to do so while preserving execution order. All |
||||||
|
browsers support parallel loading of CSS, but only Firefox and Opera |
||||||
|
support parallel loading of scripts. In other browsers, scripts will be |
||||||
|
queued and loaded one at a time to ensure correct execution order. |
||||||
|
|
||||||
|
@method load |
||||||
|
@param {String} type resource type ('css' or 'js') |
||||||
|
@param {String|Array} urls (optional) URL or array of URLs to load |
||||||
|
@param {Function} callback (optional) callback function to execute when the |
||||||
|
resource is loaded |
||||||
|
@param {Object} obj (optional) object to pass to the callback function |
||||||
|
@param {Object} context (optional) if provided, the callback function will |
||||||
|
be executed in this object's context |
||||||
|
@private |
||||||
|
*/ |
||||||
|
function load(type, urls, callback, obj, context) { |
||||||
|
var _finish = function () { finish(type); }, |
||||||
|
isCSS = type === 'css', |
||||||
|
nodes = [], |
||||||
|
i, len, node, p, pendingUrls, url; |
||||||
|
|
||||||
|
env || getEnv(); |
||||||
|
|
||||||
|
if (urls) { |
||||||
|
// If urls is a string, wrap it in an array. Otherwise assume it's an
|
||||||
|
// array and create a copy of it so modifications won't be made to the
|
||||||
|
// original.
|
||||||
|
urls = typeof urls === 'string' ? [urls] : urls.concat(); |
||||||
|
|
||||||
|
// Create a request object for each URL. If multiple URLs are specified,
|
||||||
|
// the callback will only be executed after all URLs have been loaded.
|
||||||
|
//
|
||||||
|
// Sadly, Firefox and Opera are the only browsers capable of loading
|
||||||
|
// scripts in parallel while preserving execution order. In all other
|
||||||
|
// browsers, scripts must be loaded sequentially.
|
||||||
|
//
|
||||||
|
// All browsers respect CSS specificity based on the order of the link
|
||||||
|
// elements in the DOM, regardless of the order in which the stylesheets
|
||||||
|
// are actually downloaded.
|
||||||
|
if (isCSS || env.async || env.gecko || env.opera) { |
||||||
|
// Load in parallel.
|
||||||
|
queue[type].push({ |
||||||
|
urls : urls, |
||||||
|
callback: callback, |
||||||
|
obj : obj, |
||||||
|
context : context |
||||||
|
}); |
||||||
|
} else { |
||||||
|
// Load sequentially.
|
||||||
|
for (i = 0, len = urls.length; i < len; ++i) { |
||||||
|
queue[type].push({ |
||||||
|
urls : [urls[i]], |
||||||
|
callback: i === len - 1 ? callback : null, // callback is only added to the last URL
|
||||||
|
obj : obj, |
||||||
|
context : context |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// If a previous load request of this type is currently in progress, we'll
|
||||||
|
// wait our turn. Otherwise, grab the next item in the queue.
|
||||||
|
if (pending[type] || !(p = pending[type] = queue[type].shift())) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
head || (head = doc.head || doc.getElementsByTagName('head')[0]); |
||||||
|
pendingUrls = p.urls; |
||||||
|
|
||||||
|
for (i = 0, len = pendingUrls.length; i < len; ++i) { |
||||||
|
url = pendingUrls[i]; |
||||||
|
|
||||||
|
if (isCSS) { |
||||||
|
node = env.gecko ? createNode('style') : createNode('link', { |
||||||
|
href: url, |
||||||
|
rel : 'stylesheet' |
||||||
|
}); |
||||||
|
} else { |
||||||
|
node = createNode('script', {src: url}); |
||||||
|
node.async = false; |
||||||
|
} |
||||||
|
|
||||||
|
node.className = 'lazyload'; |
||||||
|
node.setAttribute('charset', 'utf-8'); |
||||||
|
|
||||||
|
if (env.ie && !isCSS) { |
||||||
|
node.onreadystatechange = function () { |
||||||
|
if (/loaded|complete/.test(node.readyState)) { |
||||||
|
node.onreadystatechange = null; |
||||||
|
_finish(); |
||||||
|
} |
||||||
|
}; |
||||||
|
} else if (isCSS && (env.gecko || env.webkit)) { |
||||||
|
// Gecko and WebKit don't support the onload event on link nodes.
|
||||||
|
if (env.webkit) { |
||||||
|
// In WebKit, we can poll for changes to document.styleSheets to
|
||||||
|
// figure out when stylesheets have loaded.
|
||||||
|
p.urls[i] = node.href; // resolve relative URLs (or polling won't work)
|
||||||
|
pollWebKit(); |
||||||
|
} else { |
||||||
|
// In Gecko, we can import the requested URL into a <style> node and
|
||||||
|
// poll for the existence of node.sheet.cssRules. Props to Zach
|
||||||
|
// Leatherman for calling my attention to this technique.
|
||||||
|
node.innerHTML = '@import "' + url + '";'; |
||||||
|
pollGecko(node); |
||||||
|
} |
||||||
|
} else { |
||||||
|
node.onload = node.onerror = _finish; |
||||||
|
} |
||||||
|
|
||||||
|
nodes.push(node); |
||||||
|
} |
||||||
|
|
||||||
|
for (i = 0, len = nodes.length; i < len; ++i) { |
||||||
|
head.appendChild(nodes[i]); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
Begins polling to determine when the specified stylesheet has finished loading |
||||||
|
in Gecko. Polling stops when all pending stylesheets have loaded or after 10 |
||||||
|
seconds (to prevent stalls). |
||||||
|
|
||||||
|
Thanks to Zach Leatherman for calling my attention to the @import-based |
||||||
|
cross-domain technique used here, and to Oleg Slobodskoi for an earlier |
||||||
|
same-domain implementation. See Zach's blog for more details: |
||||||
|
http://www.zachleat.com/web/2010/07/29/load-css-dynamically/
|
||||||
|
|
||||||
|
@method pollGecko |
||||||
|
@param {HTMLElement} node Style node to poll. |
||||||
|
@private |
||||||
|
*/ |
||||||
|
function pollGecko(node) { |
||||||
|
var hasRules; |
||||||
|
|
||||||
|
try { |
||||||
|
// We don't really need to store this value or ever refer to it again, but
|
||||||
|
// if we don't store it, Closure Compiler assumes the code is useless and
|
||||||
|
// removes it.
|
||||||
|
hasRules = !!node.sheet.cssRules; |
||||||
|
} catch (ex) { |
||||||
|
// An exception means the stylesheet is still loading.
|
||||||
|
pollCount += 1; |
||||||
|
|
||||||
|
if (pollCount < 200) { |
||||||
|
setTimeout(function () { pollGecko(node); }, 50); |
||||||
|
} else { |
||||||
|
// We've been polling for 10 seconds and nothing's happened. Stop
|
||||||
|
// polling and finish the pending requests to avoid blocking further
|
||||||
|
// requests.
|
||||||
|
hasRules && finish('css'); |
||||||
|
} |
||||||
|
|
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
// If we get here, the stylesheet has loaded.
|
||||||
|
finish('css'); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
Begins polling to determine when pending stylesheets have finished loading |
||||||
|
in WebKit. Polling stops when all pending stylesheets have loaded or after 10 |
||||||
|
seconds (to prevent stalls). |
||||||
|
|
||||||
|
@method pollWebKit |
||||||
|
@private |
||||||
|
*/ |
||||||
|
function pollWebKit() { |
||||||
|
var css = pending.css, i; |
||||||
|
|
||||||
|
if (css) { |
||||||
|
i = styleSheets.length; |
||||||
|
|
||||||
|
// Look for a stylesheet matching the pending URL.
|
||||||
|
while (--i >= 0) { |
||||||
|
if (styleSheets[i].href === css.urls[0]) { |
||||||
|
finish('css'); |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
pollCount += 1; |
||||||
|
|
||||||
|
if (css) { |
||||||
|
if (pollCount < 200) { |
||||||
|
setTimeout(pollWebKit, 50); |
||||||
|
} else { |
||||||
|
// We've been polling for 10 seconds and nothing's happened, which may
|
||||||
|
// indicate that the stylesheet has been removed from the document
|
||||||
|
// before it had a chance to load. Stop polling and finish the pending
|
||||||
|
// request to prevent blocking further requests.
|
||||||
|
finish('css'); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return { |
||||||
|
|
||||||
|
/** |
||||||
|
Requests the specified CSS URL or URLs and executes the specified |
||||||
|
callback (if any) when they have finished loading. If an array of URLs is |
||||||
|
specified, the stylesheets will be loaded in parallel and the callback |
||||||
|
will be executed after all stylesheets have finished loading. |
||||||
|
|
||||||
|
@method css |
||||||
|
@param {String|Array} urls CSS URL or array of CSS URLs to load |
||||||
|
@param {Function} callback (optional) callback function to execute when |
||||||
|
the specified stylesheets are loaded |
||||||
|
@param {Object} obj (optional) object to pass to the callback function |
||||||
|
@param {Object} context (optional) if provided, the callback function |
||||||
|
will be executed in this object's context |
||||||
|
@static |
||||||
|
*/ |
||||||
|
css: function (urls, callback, obj, context) { |
||||||
|
load('css', urls, callback, obj, context); |
||||||
|
}, |
||||||
|
|
||||||
|
/** |
||||||
|
Requests the specified JavaScript URL or URLs and executes the specified |
||||||
|
callback (if any) when they have finished loading. If an array of URLs is |
||||||
|
specified and the browser supports it, the scripts will be loaded in |
||||||
|
parallel and the callback will be executed after all scripts have |
||||||
|
finished loading. |
||||||
|
|
||||||
|
Currently, only Firefox and Opera support parallel loading of scripts while |
||||||
|
preserving execution order. In other browsers, scripts will be |
||||||
|
queued and loaded one at a time to ensure correct execution order. |
||||||
|
|
||||||
|
@method js |
||||||
|
@param {String|Array} urls JS URL or array of JS URLs to load |
||||||
|
@param {Function} callback (optional) callback function to execute when |
||||||
|
the specified scripts are loaded |
||||||
|
@param {Object} obj (optional) object to pass to the callback function |
||||||
|
@param {Object} context (optional) if provided, the callback function |
||||||
|
will be executed in this object's context |
||||||
|
@static |
||||||
|
*/ |
||||||
|
js: function (urls, callback, obj, context) { |
||||||
|
load('js', urls, callback, obj, context); |
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
})(this.document); |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,270 @@ |
|||||||
|
/* =========================================================== |
||||||
|
* bootstrap-tooltip.js v2.0.1 |
||||||
|
* http://twitter.github.com/bootstrap/javascript.html#tooltips
|
||||||
|
* Inspired by the original jQuery.tipsy by Jason Frame |
||||||
|
* =========================================================== |
||||||
|
* Copyright 2012 Twitter, Inc. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
* ========================================================== */ |
||||||
|
|
||||||
|
!function( $ ) { |
||||||
|
|
||||||
|
"use strict" |
||||||
|
|
||||||
|
/* TOOLTIP PUBLIC CLASS DEFINITION |
||||||
|
* =============================== */ |
||||||
|
|
||||||
|
var Tooltip = function ( element, options ) { |
||||||
|
this.init('tooltip', element, options) |
||||||
|
} |
||||||
|
|
||||||
|
Tooltip.prototype = { |
||||||
|
|
||||||
|
constructor: Tooltip |
||||||
|
|
||||||
|
, init: function ( type, element, options ) { |
||||||
|
var eventIn |
||||||
|
, eventOut |
||||||
|
|
||||||
|
this.type = type |
||||||
|
this.$element = $(element) |
||||||
|
this.options = this.getOptions(options) |
||||||
|
this.enabled = true |
||||||
|
|
||||||
|
if (this.options.trigger != 'manual') { |
||||||
|
eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus' |
||||||
|
eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur' |
||||||
|
this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this)) |
||||||
|
this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this)) |
||||||
|
} |
||||||
|
|
||||||
|
this.options.selector ? |
||||||
|
(this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : |
||||||
|
this.fixTitle() |
||||||
|
} |
||||||
|
|
||||||
|
, getOptions: function ( options ) { |
||||||
|
options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data()) |
||||||
|
|
||||||
|
if (options.delay && typeof options.delay == 'number') { |
||||||
|
options.delay = { |
||||||
|
show: options.delay |
||||||
|
, hide: options.delay |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return options |
||||||
|
} |
||||||
|
|
||||||
|
, enter: function ( e ) { |
||||||
|
var self = $(e.currentTarget)[this.type](this._options).data(this.type) |
||||||
|
|
||||||
|
if (!self.options.delay || !self.options.delay.show) { |
||||||
|
self.show() |
||||||
|
} else { |
||||||
|
self.hoverState = 'in' |
||||||
|
setTimeout(function() { |
||||||
|
if (self.hoverState == 'in') { |
||||||
|
self.show() |
||||||
|
} |
||||||
|
}, self.options.delay.show) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
, leave: function ( e ) { |
||||||
|
var self = $(e.currentTarget)[this.type](this._options).data(this.type) |
||||||
|
|
||||||
|
if (!self.options.delay || !self.options.delay.hide) { |
||||||
|
self.hide() |
||||||
|
} else { |
||||||
|
self.hoverState = 'out' |
||||||
|
setTimeout(function() { |
||||||
|
if (self.hoverState == 'out') { |
||||||
|
self.hide() |
||||||
|
} |
||||||
|
}, self.options.delay.hide) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
, show: function () { |
||||||
|
var $tip |
||||||
|
, inside |
||||||
|
, pos |
||||||
|
, actualWidth |
||||||
|
, actualHeight |
||||||
|
, placement |
||||||
|
, tp |
||||||
|
|
||||||
|
if (this.hasContent() && this.enabled) { |
||||||
|
$tip = this.tip() |
||||||
|
this.setContent() |
||||||
|
|
||||||
|
if (this.options.animation) { |
||||||
|
$tip.addClass('fade') |
||||||
|
} |
||||||
|
|
||||||
|
placement = typeof this.options.placement == 'function' ? |
||||||
|
this.options.placement.call(this, $tip[0], this.$element[0]) : |
||||||
|
this.options.placement |
||||||
|
|
||||||
|
inside = /in/.test(placement) |
||||||
|
|
||||||
|
$tip |
||||||
|
.remove() |
||||||
|
.css({ top: 0, left: 0, display: 'block' }) |
||||||
|
.appendTo(inside ? this.$element : document.body) |
||||||
|
|
||||||
|
pos = this.getPosition(inside) |
||||||
|
|
||||||
|
actualWidth = $tip[0].offsetWidth |
||||||
|
actualHeight = $tip[0].offsetHeight |
||||||
|
|
||||||
|
switch (inside ? placement.split(' ')[1] : placement) { |
||||||
|
case 'bottom': |
||||||
|
tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2} |
||||||
|
break |
||||||
|
case 'top': |
||||||
|
tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2} |
||||||
|
break |
||||||
|
case 'left': |
||||||
|
tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth} |
||||||
|
break |
||||||
|
case 'right': |
||||||
|
tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width} |
||||||
|
break |
||||||
|
} |
||||||
|
|
||||||
|
$tip |
||||||
|
.css(tp) |
||||||
|
.addClass(placement) |
||||||
|
.addClass('in') |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
, setContent: function () { |
||||||
|
var $tip = this.tip() |
||||||
|
$tip.find('.timeline-tooltip-inner').html(this.getTitle()) |
||||||
|
$tip.removeClass('fade in top bottom left right') |
||||||
|
} |
||||||
|
|
||||||
|
, hide: function () { |
||||||
|
var that = this |
||||||
|
, $tip = this.tip() |
||||||
|
|
||||||
|
$tip.removeClass('in') |
||||||
|
|
||||||
|
function removeWithAnimation() { |
||||||
|
var timeout = setTimeout(function () { |
||||||
|
$tip.off($.support.transition.end).remove() |
||||||
|
}, 500) |
||||||
|
|
||||||
|
$tip.one($.support.transition.end, function () { |
||||||
|
clearTimeout(timeout) |
||||||
|
$tip.remove() |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
$.support.transition && this.$tip.hasClass('fade') ? |
||||||
|
removeWithAnimation() : |
||||||
|
$tip.remove() |
||||||
|
} |
||||||
|
|
||||||
|
, fixTitle: function () { |
||||||
|
var $e = this.$element |
||||||
|
if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') { |
||||||
|
$e.attr('data-original-title', $e.attr('title') || '').removeAttr('title') |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
, hasContent: function () { |
||||||
|
return this.getTitle() |
||||||
|
} |
||||||
|
|
||||||
|
, getPosition: function (inside) { |
||||||
|
return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), { |
||||||
|
width: this.$element[0].offsetWidth |
||||||
|
, height: this.$element[0].offsetHeight |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
, getTitle: function () { |
||||||
|
var title |
||||||
|
, $e = this.$element |
||||||
|
, o = this.options |
||||||
|
|
||||||
|
title = $e.attr('data-original-title') |
||||||
|
|| (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) |
||||||
|
|
||||||
|
title = title.toString().replace(/(^\s*|\s*$)/, "") |
||||||
|
|
||||||
|
return title |
||||||
|
} |
||||||
|
|
||||||
|
, tip: function () { |
||||||
|
return this.$tip = this.$tip || $(this.options.template) |
||||||
|
} |
||||||
|
|
||||||
|
, validate: function () { |
||||||
|
if (!this.$element[0].parentNode) { |
||||||
|
this.hide() |
||||||
|
this.$element = null |
||||||
|
this.options = null |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
, enable: function () { |
||||||
|
this.enabled = true |
||||||
|
} |
||||||
|
|
||||||
|
, disable: function () { |
||||||
|
this.enabled = false |
||||||
|
} |
||||||
|
|
||||||
|
, toggleEnabled: function () { |
||||||
|
this.enabled = !this.enabled |
||||||
|
} |
||||||
|
|
||||||
|
, toggle: function () { |
||||||
|
this[this.tip().hasClass('in') ? 'hide' : 'show']() |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/* TOOLTIP PLUGIN DEFINITION |
||||||
|
* ========================= */ |
||||||
|
|
||||||
|
$.fn.tooltip = function ( option ) { |
||||||
|
return this.each(function () { |
||||||
|
var $this = $(this) |
||||||
|
, data = $this.data('tooltip') |
||||||
|
, options = typeof option == 'object' && option |
||||||
|
if (!data) $this.data('tooltip', (data = new Tooltip(this, options))) |
||||||
|
if (typeof option == 'string') data[option]() |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
$.fn.tooltip.Constructor = Tooltip |
||||||
|
|
||||||
|
$.fn.tooltip.defaults = { |
||||||
|
animation: true |
||||||
|
, delay: 0 |
||||||
|
, selector: false |
||||||
|
, placement: 'top' |
||||||
|
, trigger: 'hover' |
||||||
|
, title: '' |
||||||
|
, template: '<div class="timeline-tooltip"><div class="timeline-tooltip-arrow"></div><div class="timeline-tooltip-inner"></div></div>' |
||||||
|
} |
||||||
|
|
||||||
|
}( window.jQuery ); |
@ -0,0 +1,205 @@ |
|||||||
|
/* |
||||||
|
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
|
||||||
|
* |
||||||
|
* Uses the built in easing capabilities added In jQuery 1.1 |
||||||
|
* to offer multiple easing options |
||||||
|
* |
||||||
|
* TERMS OF USE - jQuery Easing |
||||||
|
*
|
||||||
|
* Open source under the BSD License.
|
||||||
|
*
|
||||||
|
* Copyright © 2008 George McGinley Smith |
||||||
|
* All rights reserved. |
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met: |
||||||
|
*
|
||||||
|
* Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer. |
||||||
|
* Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution. |
||||||
|
*
|
||||||
|
* Neither the name of the author nor the names of contributors may be used to endorse
|
||||||
|
* or promote products derived from this software without specific prior written permission. |
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
||||||
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
||||||
|
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||||
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
* |
||||||
|
*/ |
||||||
|
|
||||||
|
// t: current time, b: begInnIng value, c: change In value, d: duration
|
||||||
|
jQuery.easing['jswing'] = jQuery.easing['swing']; |
||||||
|
|
||||||
|
jQuery.extend( jQuery.easing, |
||||||
|
{ |
||||||
|
def: 'easeOutQuad', |
||||||
|
swing: function (x, t, b, c, d) { |
||||||
|
//alert(jQuery.easing.default);
|
||||||
|
return jQuery.easing[jQuery.easing.def](x, t, b, c, d); |
||||||
|
}, |
||||||
|
easeInQuad: function (x, t, b, c, d) { |
||||||
|
return c*(t/=d)*t + b; |
||||||
|
}, |
||||||
|
easeOutQuad: function (x, t, b, c, d) { |
||||||
|
return -c *(t/=d)*(t-2) + b; |
||||||
|
}, |
||||||
|
easeInOutQuad: function (x, t, b, c, d) { |
||||||
|
if ((t/=d/2) < 1) return c/2*t*t + b; |
||||||
|
return -c/2 * ((--t)*(t-2) - 1) + b; |
||||||
|
}, |
||||||
|
easeInCubic: function (x, t, b, c, d) { |
||||||
|
return c*(t/=d)*t*t + b; |
||||||
|
}, |
||||||
|
easeOutCubic: function (x, t, b, c, d) { |
||||||
|
return c*((t=t/d-1)*t*t + 1) + b; |
||||||
|
}, |
||||||
|
easeInOutCubic: function (x, t, b, c, d) { |
||||||
|
if ((t/=d/2) < 1) return c/2*t*t*t + b; |
||||||
|
return c/2*((t-=2)*t*t + 2) + b; |
||||||
|
}, |
||||||
|
easeInQuart: function (x, t, b, c, d) { |
||||||
|
return c*(t/=d)*t*t*t + b; |
||||||
|
}, |
||||||
|
easeOutQuart: function (x, t, b, c, d) { |
||||||
|
return -c * ((t=t/d-1)*t*t*t - 1) + b; |
||||||
|
}, |
||||||
|
easeInOutQuart: function (x, t, b, c, d) { |
||||||
|
if ((t/=d/2) < 1) return c/2*t*t*t*t + b; |
||||||
|
return -c/2 * ((t-=2)*t*t*t - 2) + b; |
||||||
|
}, |
||||||
|
easeInQuint: function (x, t, b, c, d) { |
||||||
|
return c*(t/=d)*t*t*t*t + b; |
||||||
|
}, |
||||||
|
easeOutQuint: function (x, t, b, c, d) { |
||||||
|
return c*((t=t/d-1)*t*t*t*t + 1) + b; |
||||||
|
}, |
||||||
|
easeInOutQuint: function (x, t, b, c, d) { |
||||||
|
if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; |
||||||
|
return c/2*((t-=2)*t*t*t*t + 2) + b; |
||||||
|
}, |
||||||
|
easeInSine: function (x, t, b, c, d) { |
||||||
|
return -c * Math.cos(t/d * (Math.PI/2)) + c + b; |
||||||
|
}, |
||||||
|
easeOutSine: function (x, t, b, c, d) { |
||||||
|
return c * Math.sin(t/d * (Math.PI/2)) + b; |
||||||
|
}, |
||||||
|
easeInOutSine: function (x, t, b, c, d) { |
||||||
|
return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; |
||||||
|
}, |
||||||
|
easeInExpo: function (x, t, b, c, d) { |
||||||
|
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; |
||||||
|
}, |
||||||
|
easeOutExpo: function (x, t, b, c, d) { |
||||||
|
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; |
||||||
|
}, |
||||||
|
easeInOutExpo: function (x, t, b, c, d) { |
||||||
|
if (t==0) return b; |
||||||
|
if (t==d) return b+c; |
||||||
|
if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; |
||||||
|
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; |
||||||
|
}, |
||||||
|
easeInCirc: function (x, t, b, c, d) { |
||||||
|
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; |
||||||
|
}, |
||||||
|
easeOutCirc: function (x, t, b, c, d) { |
||||||
|
return c * Math.sqrt(1 - (t=t/d-1)*t) + b; |
||||||
|
}, |
||||||
|
easeInOutCirc: function (x, t, b, c, d) { |
||||||
|
if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; |
||||||
|
return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; |
||||||
|
}, |
||||||
|
easeInElastic: function (x, t, b, c, d) { |
||||||
|
var s=1.70158;var p=0;var a=c; |
||||||
|
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; |
||||||
|
if (a < Math.abs(c)) { a=c; var s=p/4; } |
||||||
|
else var s = p/(2*Math.PI) * Math.asin (c/a); |
||||||
|
return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; |
||||||
|
}, |
||||||
|
easeOutElastic: function (x, t, b, c, d) { |
||||||
|
var s=1.70158;var p=0;var a=c; |
||||||
|
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; |
||||||
|
if (a < Math.abs(c)) { a=c; var s=p/4; } |
||||||
|
else var s = p/(2*Math.PI) * Math.asin (c/a); |
||||||
|
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; |
||||||
|
}, |
||||||
|
easeInOutElastic: function (x, t, b, c, d) { |
||||||
|
var s=1.70158;var p=0;var a=c; |
||||||
|
if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); |
||||||
|
if (a < Math.abs(c)) { a=c; var s=p/4; } |
||||||
|
else var s = p/(2*Math.PI) * Math.asin (c/a); |
||||||
|
if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; |
||||||
|
return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; |
||||||
|
}, |
||||||
|
easeInBack: function (x, t, b, c, d, s) { |
||||||
|
if (s == undefined) s = 1.70158; |
||||||
|
return c*(t/=d)*t*((s+1)*t - s) + b; |
||||||
|
}, |
||||||
|
easeOutBack: function (x, t, b, c, d, s) { |
||||||
|
if (s == undefined) s = 1.70158; |
||||||
|
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; |
||||||
|
}, |
||||||
|
easeInOutBack: function (x, t, b, c, d, s) { |
||||||
|
if (s == undefined) s = 1.70158;
|
||||||
|
if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; |
||||||
|
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; |
||||||
|
}, |
||||||
|
easeInBounce: function (x, t, b, c, d) { |
||||||
|
return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; |
||||||
|
}, |
||||||
|
easeOutBounce: function (x, t, b, c, d) { |
||||||
|
if ((t/=d) < (1/2.75)) { |
||||||
|
return c*(7.5625*t*t) + b; |
||||||
|
} else if (t < (2/2.75)) { |
||||||
|
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; |
||||||
|
} else if (t < (2.5/2.75)) { |
||||||
|
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; |
||||||
|
} else { |
||||||
|
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; |
||||||
|
} |
||||||
|
}, |
||||||
|
easeInOutBounce: function (x, t, b, c, d) { |
||||||
|
if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; |
||||||
|
return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
/* |
||||||
|
* |
||||||
|
* TERMS OF USE - EASING EQUATIONS |
||||||
|
*
|
||||||
|
* Open source under the BSD License.
|
||||||
|
*
|
||||||
|
* Copyright © 2001 Robert Penner |
||||||
|
* All rights reserved. |
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met: |
||||||
|
*
|
||||||
|
* Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer. |
||||||
|
* Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution. |
||||||
|
*
|
||||||
|
* Neither the name of the author nor the names of contributors may be used to endorse
|
||||||
|
* or promote products derived from this software without specific prior written permission. |
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
||||||
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
||||||
|
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||||
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
* |
||||||
|
*/ |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,10 @@ |
|||||||
|
/* Media |
||||||
|
================================================== */ |
||||||
|
|
||||||
|
/* * CodeKit Import |
||||||
|
* http://incident57.com/codekit/
|
||||||
|
================================================== */ |
||||||
|
// @codekit-prepend "VMM.ExternalAPI.js";
|
||||||
|
// @codekit-prepend "VMM.MediaElement.js";
|
||||||
|
// @codekit-prepend "VMM.MediaType.js";
|
||||||
|
// @codekit-prepend "VMM.TextElement.js";
|
@ -0,0 +1,228 @@ |
|||||||
|
/* MediaElement |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined' && typeof VMM.MediaElement == 'undefined') { |
||||||
|
|
||||||
|
VMM.MediaElement = ({ |
||||||
|
|
||||||
|
init: function() { |
||||||
|
return this; |
||||||
|
}, |
||||||
|
|
||||||
|
loadingmessage: function(m) { |
||||||
|
return "<div class='vco-loading'><div class='vco-loading-container'><div class='vco-loading-icon'></div>" + "<div class='vco-message'><p>" + m + "</p></div></div></div>"; |
||||||
|
}, |
||||||
|
|
||||||
|
thumbnail: function(data, w, h, uid) { |
||||||
|
var _w = 16, |
||||||
|
_h = 24, |
||||||
|
_uid = ""; |
||||||
|
|
||||||
|
if (w != null && w != "") {_w = w}; |
||||||
|
if (h != null && h != "") {_h = h}; |
||||||
|
if (uid != null && uid != "") {_uid = uid}; |
||||||
|
|
||||||
|
if (data.media != null && data.media != "") { |
||||||
|
var _valid = true, |
||||||
|
mediaElem = "", |
||||||
|
m = VMM.MediaType(data.media); //returns an object with .type and .id
|
||||||
|
|
||||||
|
// DETERMINE THUMBNAIL OR ICON
|
||||||
|
if (data.thumbnail != null && data.thumbnail != "") { |
||||||
|
trace("CUSTOM THUMB"); |
||||||
|
mediaElem = "<div class='thumbnail thumb-custom' id='" + uid + "_custom_thumb'><img src='" + data.thumbnail + "'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "image") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-photo'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "flickr") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-photo' id='" + uid + "_thumb'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "instagram") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-instagram' id='" + uid + "_thumb'><img src='" + VMM.ExternalAPI.instagram.get(m.id, true) + "'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "youtube") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-youtube' id='" + uid + "_thumb'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "googledoc") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-document'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "vimeo") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-vimeo' id='" + uid + "_thumb'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "vine") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-vine'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "dailymotion") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-video'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "twitter"){ |
||||||
|
mediaElem = "<div class='thumbnail thumb-twitter'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "twitter-ready") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-twitter'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "soundcloud") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-audio'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "google-map") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-map'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "googleplus") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-googleplus'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "wikipedia") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-wikipedia'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "storify") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-storify'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "quote") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-quote'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "iframe") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-video'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "unknown") { |
||||||
|
if (m.id.match("blockquote")) { |
||||||
|
mediaElem = "<div class='thumbnail thumb-quote'></div>"; |
||||||
|
} else { |
||||||
|
mediaElem = "<div class='thumbnail thumb-plaintext'></div>"; |
||||||
|
} |
||||||
|
return mediaElem; |
||||||
|
} else if (m.type == "website") { |
||||||
|
mediaElem = "<div class='thumbnail thumb-website' id='" + uid + "_thumb'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} else { |
||||||
|
mediaElem = "<div class='thumbnail thumb-plaintext'></div>"; |
||||||
|
return mediaElem; |
||||||
|
} |
||||||
|
}
|
||||||
|
}, |
||||||
|
|
||||||
|
create: function(data, uid) { |
||||||
|
var _valid = false, |
||||||
|
//loading_messege = "<span class='messege'><p>" + VMM.master_config.language.messages.loading + "</p></span>";
|
||||||
|
loading_messege = VMM.MediaElement.loadingmessage(VMM.master_config.language.messages.loading + "..."); |
||||||
|
|
||||||
|
if (data.media != null && data.media != "") { |
||||||
|
var mediaElem = "", captionElem = "", creditElem = "", _id = "", isTextMedia = false, m; |
||||||
|
|
||||||
|
m = VMM.MediaType(data.media); //returns an object with .type and .id
|
||||||
|
m.uid = uid; |
||||||
|
_valid = true; |
||||||
|
|
||||||
|
// CREDIT
|
||||||
|
if (data.credit != null && data.credit != "") { |
||||||
|
creditElem = "<div class='credit'>" + VMM.Util.linkify_with_twitter(data.credit, "_blank") + "</div>"; |
||||||
|
} |
||||||
|
// CAPTION
|
||||||
|
if (data.caption != null && data.caption != "") { |
||||||
|
captionElem = "<div class='caption'>" + VMM.Util.linkify_with_twitter(data.caption, "_blank") + "</div>"; |
||||||
|
} |
||||||
|
// IMAGE
|
||||||
|
if (m.type == "image") { |
||||||
|
if (m.id.match("https://")) { |
||||||
|
m.id = m.id.replace("https://","http://"); |
||||||
|
} |
||||||
|
mediaElem = "<div class='media-image media-shadow'><img src='" + m.id + "' class='media-image'></div>"; |
||||||
|
// FLICKR
|
||||||
|
} else if (m.type == "flickr") { |
||||||
|
//mediaElem = "<div class='media-image media-shadow' id='" + uid + "'>" + loading_messege + "</div>";
|
||||||
|
mediaElem = "<div class='media-image media-shadow'><a href='" + m.link + "' target='_blank'><img id='" + uid + "'></a></div>"; |
||||||
|
VMM.ExternalAPI.flickr.get(m); |
||||||
|
// INSTAGRAM
|
||||||
|
} else if (m.type == "instagram") { |
||||||
|
mediaElem = "<div class='media-image media-shadow'><a href='" + m.link + "' target='_blank'><img src='" + VMM.ExternalAPI.instagram.get(m) + "'></a></div>"; |
||||||
|
//VMM.ExternalAPI.instagram.get(m.id, uid);
|
||||||
|
// GOOGLE DOCS
|
||||||
|
} else if (m.type == "googledoc") { |
||||||
|
mediaElem = "<div class='media-frame media-shadow doc' id='" + m.uid + "'>" + loading_messege + "</div>"; |
||||||
|
VMM.ExternalAPI.googledocs.get(m); |
||||||
|
// YOUTUBE
|
||||||
|
} else if (m.type == "youtube") { |
||||||
|
mediaElem = "<div class='media-shadow'><div class='media-frame video youtube' id='" + m.uid + "'>" + loading_messege + "</div></div>"; |
||||||
|
VMM.ExternalAPI.youtube.get(m); |
||||||
|
// VIMEO
|
||||||
|
} else if (m.type == "vimeo") { |
||||||
|
mediaElem = "<div class='media-shadow media-frame video vimeo' id='" + m.uid + "'>" + loading_messege + "</div>"; |
||||||
|
VMM.ExternalAPI.vimeo.get(m); |
||||||
|
// DAILYMOTION
|
||||||
|
} else if (m.type == "dailymotion") { |
||||||
|
mediaElem = "<div class='media-shadow'><iframe class='media-frame video dailymotion' autostart='false' frameborder='0' width='100%' height='100%' src='http://www.dailymotion.com/embed/video/" + m.id + "'></iframe></div>"; |
||||||
|
// VINE
|
||||||
|
} else if (m.type == "vine") { |
||||||
|
mediaElem = "<div class='media-shadow media-frame video vine' id='" + m.uid + "'>" + loading_messege + "</div>"; |
||||||
|
VMM.ExternalAPI.vine.get(m); |
||||||
|
// TWITTER
|
||||||
|
} else if (m.type == "twitter"){ |
||||||
|
mediaElem = "<div class='twitter' id='" + m.uid + "'>" + loading_messege + "</div>"; |
||||||
|
isTextMedia = true; |
||||||
|
VMM.ExternalAPI.twitter.get(m); |
||||||
|
// TWITTER
|
||||||
|
} else if (m.type == "twitter-ready") { |
||||||
|
isTextMedia = true; |
||||||
|
mediaElem = m.id; |
||||||
|
// SOUNDCLOUD
|
||||||
|
} else if (m.type == "soundcloud") { |
||||||
|
mediaElem = "<div class='media-frame media-shadow soundcloud' id='" + m.uid + "'>" + loading_messege + "</div>"; |
||||||
|
VMM.ExternalAPI.soundcloud.get(m); |
||||||
|
// GOOGLE MAPS
|
||||||
|
} else if (m.type == "google-map") { |
||||||
|
mediaElem = "<div class='media-frame media-shadow map' id='" + m.uid + "'>" + loading_messege + "</div>"; |
||||||
|
VMM.ExternalAPI.googlemaps.get(m); |
||||||
|
// GOOGLE PLUS
|
||||||
|
} else if (m.type == "googleplus") { |
||||||
|
_id = "googleplus_" + m.id; |
||||||
|
mediaElem = "<div class='googleplus' id='" + _id + "'>" + loading_messege + "</div>"; |
||||||
|
isTextMedia = true; |
||||||
|
VMM.ExternalAPI.googleplus.get(m); |
||||||
|
// WIKIPEDIA
|
||||||
|
} else if (m.type == "wikipedia") { |
||||||
|
mediaElem = "<div class='wikipedia' id='" + m.uid + "'>" + loading_messege + "</div>"; |
||||||
|
isTextMedia = true; |
||||||
|
VMM.ExternalAPI.wikipedia.get(m); |
||||||
|
// STORIFY
|
||||||
|
} else if (m.type == "storify") {
|
||||||
|
isTextMedia = true; |
||||||
|
mediaElem = "<div class='plain-text-quote'>" + m.id + "</div>"; |
||||||
|
// IFRAME
|
||||||
|
} else if (m.type == "iframe") {
|
||||||
|
isTextMedia = true; |
||||||
|
mediaElem = "<div class='media-shadow'><iframe class='media-frame video' autostart='false' frameborder='0' width='100%' height='100%' src='" + m.id + "'></iframe></div>"; |
||||||
|
// QUOTE
|
||||||
|
} else if (m.type == "quote") {
|
||||||
|
isTextMedia = true; |
||||||
|
mediaElem = "<div class='plain-text-quote'>" + m.id + "</div>"; |
||||||
|
// UNKNOWN
|
||||||
|
} else if (m.type == "unknown") {
|
||||||
|
trace("NO KNOWN MEDIA TYPE FOUND TRYING TO JUST PLACE THE HTML");
|
||||||
|
isTextMedia = true; |
||||||
|
mediaElem = "<div class='plain-text'><div class='container'>" + VMM.Util.properQuotes(m.id) + "</div></div>"; |
||||||
|
// WEBSITE
|
||||||
|
} else if (m.type == "website") {
|
||||||
|
|
||||||
|
mediaElem = "<div class='media-shadow website' id='" + m.uid + "'>" + loading_messege + "</div>"; |
||||||
|
VMM.ExternalAPI.webthumb.get(m); |
||||||
|
//mediaElem = "<div class='media-shadow website'><a href='" + m.id + "' target='_blank'>" + "<img src='http://api1.thumbalizr.com/?url=" + m.id.replace(/[\./]$/g, "") + "&width=300' class='media-image'></a></div>";
|
||||||
|
|
||||||
|
// NO MATCH
|
||||||
|
} else { |
||||||
|
trace("NO KNOWN MEDIA TYPE FOUND"); |
||||||
|
trace(m.type); |
||||||
|
} |
||||||
|
|
||||||
|
// WRAP THE MEDIA ELEMENT
|
||||||
|
mediaElem = "<div class='media-container' >" + mediaElem + creditElem + captionElem + "</div>"; |
||||||
|
// RETURN
|
||||||
|
if (isTextMedia) { |
||||||
|
return "<div class='text-media'><div class='media-wrapper'>" + mediaElem + "</div></div>"; |
||||||
|
} else { |
||||||
|
return "<div class='media-wrapper'>" + mediaElem + "</div>"; |
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
}).init(); |
||||||
|
} |
@ -0,0 +1,145 @@ |
|||||||
|
/* MediaType |
||||||
|
Determines the type of media the url string is. |
||||||
|
returns an object with .type and .id |
||||||
|
the id is a key piece of information needed to make |
||||||
|
the request of the api. |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined' && typeof VMM.MediaType == 'undefined') { |
||||||
|
|
||||||
|
VMM.MediaType = function(_d) { |
||||||
|
var d = _d.replace(/^\s\s*/, '').replace(/\s\s*$/, ''), |
||||||
|
success = false, |
||||||
|
media = { |
||||||
|
type: "unknown", |
||||||
|
id: "", |
||||||
|
start: 0, |
||||||
|
hd: false, |
||||||
|
link: "", |
||||||
|
lang: VMM.Language.lang, |
||||||
|
uniqueid: VMM.Util.unique_ID(6) |
||||||
|
}; |
||||||
|
|
||||||
|
if (d.match("div class='twitter'")) { |
||||||
|
media.type = "twitter-ready"; |
||||||
|
media.id = d; |
||||||
|
success = true; |
||||||
|
} else if (d.match('(www.)?youtube|youtu\.be')) { |
||||||
|
if (d.match('v=')) { |
||||||
|
media.id = VMM.Util.getUrlVars(d)["v"]; |
||||||
|
} else if (d.match('\/embed\/')) { |
||||||
|
media.id = d.split("embed\/")[1].split(/[?&]/)[0]; |
||||||
|
} else if (d.match(/v\/|v=|youtu\.be\//)){ |
||||||
|
media.id = d.split(/v\/|v=|youtu\.be\//)[1].split(/[?&]/)[0]; |
||||||
|
} else { |
||||||
|
trace("YOUTUBE IN URL BUT NOT A VALID VIDEO"); |
||||||
|
} |
||||||
|
media.start = VMM.Util.getUrlVars(d)["t"]; |
||||||
|
media.hd = VMM.Util.getUrlVars(d)["hd"]; |
||||||
|
media.type = "youtube"; |
||||||
|
success = true; |
||||||
|
} else if (d.match('(player.)?vimeo\.com')) { |
||||||
|
media.type = "vimeo"; |
||||||
|
media.id = d.split(/video\/|\/\/vimeo\.com\//)[1].split(/[?&]/)[0];; |
||||||
|
success = true; |
||||||
|
} else if (d.match('(www.)?dailymotion\.com')) { |
||||||
|
media.id = d.split(/video\/|\/\/dailymotion\.com\//)[1]; |
||||||
|
media.type = "dailymotion"; |
||||||
|
success = true; |
||||||
|
} else if (d.match('(www.)?vine\.co')) { |
||||||
|
trace("VINE"); |
||||||
|
//https://vine.co/v/b55LOA1dgJU
|
||||||
|
if (d.match("vine.co/v/")) { |
||||||
|
media.id = d.split("vine.co/v/")[1]; |
||||||
|
trace(media.id); |
||||||
|
} |
||||||
|
trace(d); |
||||||
|
media.type = "vine"; |
||||||
|
success = true; |
||||||
|
} else if (d.match('(player.)?soundcloud\.com')) { |
||||||
|
media.type = "soundcloud"; |
||||||
|
media.id = d; |
||||||
|
success = true; |
||||||
|
} else if (d.match('(www.)?twitter\.com') && d.match('status') ) { |
||||||
|
if (d.match("status\/")) { |
||||||
|
media.id = d.split("status\/")[1]; |
||||||
|
} else if (d.match("statuses\/")) { |
||||||
|
media.id = d.split("statuses\/")[1]; |
||||||
|
} else { |
||||||
|
media.id = ""; |
||||||
|
} |
||||||
|
media.type = "twitter"; |
||||||
|
success = true; |
||||||
|
} else if (d.match("maps.google") && !d.match("staticmap")) { |
||||||
|
media.type = "google-map"; |
||||||
|
media.id = d.split(/src=['|"][^'|"]*?['|"]/gi); |
||||||
|
success = true; |
||||||
|
} else if (d.match("plus.google")) { |
||||||
|
media.type = "googleplus"; |
||||||
|
media.id = d.split("/posts/")[1]; |
||||||
|
//https://plus.google.com/u/0/112374836634096795698/posts/bRJSvCb5mUU
|
||||||
|
//https://plus.google.com/107096716333816995401/posts/J5iMpEDHWNL
|
||||||
|
if (d.split("/posts/")[0].match("u/0/")) { |
||||||
|
media.user = d.split("u/0/")[1].split("/posts")[0]; |
||||||
|
} else { |
||||||
|
media.user = d.split("google.com/")[1].split("/posts/")[0]; |
||||||
|
} |
||||||
|
success = true; |
||||||
|
} else if (d.match("flickr.com/photos")) { |
||||||
|
media.type = "flickr"; |
||||||
|
media.id = d.split("photos\/")[1].split("/")[1]; |
||||||
|
media.link = d; |
||||||
|
success = true; |
||||||
|
} else if (d.match("instagr.am/p/")) { |
||||||
|
media.type = "instagram"; |
||||||
|
media.link = d; |
||||||
|
media.id = d.split("\/p\/")[1].split("/")[0]; |
||||||
|
success = true; |
||||||
|
} else if (d.match(/jpg|jpeg|png|gif/i) || d.match("staticmap") || d.match("yfrog.com") || d.match("twitpic.com")) { |
||||||
|
media.type = "image"; |
||||||
|
media.id = d; |
||||||
|
success = true; |
||||||
|
} else if (VMM.FileExtention.googleDocType(d)) { |
||||||
|
media.type = "googledoc"; |
||||||
|
media.id = d; |
||||||
|
success = true; |
||||||
|
} else if (d.match('(www.)?wikipedia\.org')) { |
||||||
|
media.type = "wikipedia"; |
||||||
|
//media.id = d.split("wiki\/")[1];
|
||||||
|
var wiki_id = d.split("wiki\/")[1].split("#")[0].replace("_", " "); |
||||||
|
media.id = wiki_id.replace(" ", "%20"); |
||||||
|
media.lang = d.split("//")[1].split(".wikipedia")[0]; |
||||||
|
success = true; |
||||||
|
} else if (d.indexOf('http://') == 0) { |
||||||
|
media.type = "website"; |
||||||
|
media.id = d; |
||||||
|
success = true; |
||||||
|
} else if (d.match('storify')) { |
||||||
|
media.type = "storify"; |
||||||
|
media.id = d; |
||||||
|
success = true; |
||||||
|
} else if (d.match('blockquote')) { |
||||||
|
media.type = "quote"; |
||||||
|
media.id = d; |
||||||
|
success = true; |
||||||
|
} else if (d.match('iframe')) { |
||||||
|
media.type = "iframe"; |
||||||
|
trace("IFRAME") |
||||||
|
trace( d.match(/src\=([^\s]*)\s/)[1].split(/"/)[1]); |
||||||
|
media.id = d.match(/src\=([^\s]*)\s/)[1].split(/"/)[1]; |
||||||
|
success = true; |
||||||
|
} else { |
||||||
|
trace("unknown media");
|
||||||
|
media.type = "unknown"; |
||||||
|
media.id = d; |
||||||
|
success = true; |
||||||
|
} |
||||||
|
|
||||||
|
if (success) {
|
||||||
|
return media; |
||||||
|
} else { |
||||||
|
trace("No valid media id detected"); |
||||||
|
trace(d); |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
/* TextElement |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined' && typeof VMM.TextElement == 'undefined') { |
||||||
|
|
||||||
|
VMM.TextElement = ({ |
||||||
|
|
||||||
|
init: function() { |
||||||
|
return this; |
||||||
|
}, |
||||||
|
|
||||||
|
create: function(data) { |
||||||
|
return data; |
||||||
|
} |
||||||
|
|
||||||
|
}).init(); |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
StoryJS-Core |
||||||
|
============ |
||||||
|
|
||||||
|
Core javascript functionality for StoryJS (including TimelineJS) |
||||||
|
|
||||||
|
This Source Code Form is subject to the terms of the Mozilla Public |
||||||
|
License, v. 2.0. If a copy of the MPL was not distributed with this |
||||||
|
file, You can obtain one at http://mozilla.org/MPL/2.0/. |
@ -0,0 +1,247 @@ |
|||||||
|
/* DRAG SLIDER |
||||||
|
================================================== */ |
||||||
|
if(typeof VMM != 'undefined' && typeof VMM.DragSlider == 'undefined') { |
||||||
|
|
||||||
|
VMM.DragSlider = function() { |
||||||
|
var drag = { |
||||||
|
element: "", |
||||||
|
element_move: "", |
||||||
|
constraint: "", |
||||||
|
sliding: false, |
||||||
|
pagex: { |
||||||
|
start: 0, |
||||||
|
end: 0 |
||||||
|
}, |
||||||
|
pagey: { |
||||||
|
start: 0, |
||||||
|
end: 0 |
||||||
|
}, |
||||||
|
left: { |
||||||
|
start: 0, |
||||||
|
end: 0 |
||||||
|
}, |
||||||
|
time: { |
||||||
|
start: 0, |
||||||
|
end: 0 |
||||||
|
}, |
||||||
|
touch: false, |
||||||
|
ease: "easeOutExpo" |
||||||
|
}, |
||||||
|
dragevent = { |
||||||
|
down: "mousedown", |
||||||
|
up: "mouseup", |
||||||
|
leave: "mouseleave", |
||||||
|
move: "mousemove" |
||||||
|
}, |
||||||
|
mousedrag = { |
||||||
|
down: "mousedown", |
||||||
|
up: "mouseup", |
||||||
|
leave: "mouseleave", |
||||||
|
move: "mousemove" |
||||||
|
}, |
||||||
|
touchdrag = { |
||||||
|
down: "touchstart", |
||||||
|
up: "touchend", |
||||||
|
leave: "mouseleave", |
||||||
|
move: "touchmove" |
||||||
|
}, |
||||||
|
dragslider = this, |
||||||
|
is_sticky = false; |
||||||
|
|
||||||
|
/* PUBLIC FUNCTIONS |
||||||
|
================================================== */ |
||||||
|
this.createPanel = function(drag_object, move_object, constraint, touch, sticky) { |
||||||
|
drag.element = drag_object; |
||||||
|
drag.element_move = move_object; |
||||||
|
//dragslider = drag_object;
|
||||||
|
if ( sticky != null && sticky != "") { |
||||||
|
is_sticky = sticky; |
||||||
|
} |
||||||
|
if ( constraint != null && constraint != "") { |
||||||
|
drag.constraint = constraint; |
||||||
|
} else { |
||||||
|
drag.constraint = false; |
||||||
|
} |
||||||
|
if ( touch) { |
||||||
|
drag.touch = touch; |
||||||
|
} else { |
||||||
|
drag.touch = false; |
||||||
|
} |
||||||
|
trace("TOUCH" + drag.touch); |
||||||
|
if (drag.touch) { |
||||||
|
dragevent = touchdrag; |
||||||
|
} else { |
||||||
|
dragevent = mousedrag; |
||||||
|
} |
||||||
|
|
||||||
|
makeDraggable(drag.element, drag.element_move); |
||||||
|
} |
||||||
|
|
||||||
|
this.updateConstraint = function(constraint) { |
||||||
|
trace("updateConstraint"); |
||||||
|
drag.constraint = constraint; |
||||||
|
} |
||||||
|
|
||||||
|
this.cancelSlide = function(e) { |
||||||
|
VMM.unbindEvent(drag.element, onDragMove, dragevent.move); |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
/* PRIVATE FUNCTIONS |
||||||
|
================================================== */ |
||||||
|
function makeDraggable(drag_object, move_object) { |
||||||
|
|
||||||
|
VMM.bindEvent(drag_object, onDragStart, dragevent.down, {element: move_object, delement: drag_object}); |
||||||
|
VMM.bindEvent(drag_object, onDragEnd, dragevent.up, {element: move_object, delement: drag_object}); |
||||||
|
VMM.bindEvent(drag_object, onDragLeave, dragevent.leave, {element: move_object, delement: drag_object}); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
function onDragLeave(e) { |
||||||
|
VMM.unbindEvent(e.data.delement, onDragMove, dragevent.move); |
||||||
|
if (!drag.touch) { |
||||||
|
e.preventDefault(); |
||||||
|
} |
||||||
|
e.stopPropagation(); |
||||||
|
if (drag.sliding) { |
||||||
|
drag.sliding = false; |
||||||
|
dragEnd(e.data.element, e.data.delement, e); |
||||||
|
return false; |
||||||
|
} else { |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function onDragStart(e) { |
||||||
|
dragStart(e.data.element, e.data.delement, e); |
||||||
|
if (!drag.touch) { |
||||||
|
e.preventDefault(); |
||||||
|
} |
||||||
|
//e.stopPropagation();
|
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
function onDragEnd(e) { |
||||||
|
if (!drag.touch) { |
||||||
|
e.preventDefault(); |
||||||
|
} |
||||||
|
//e.stopPropagation();
|
||||||
|
if (drag.sliding) { |
||||||
|
drag.sliding = false; |
||||||
|
dragEnd(e.data.element, e.data.delement, e); |
||||||
|
return false; |
||||||
|
} else { |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function onDragMove(e) { |
||||||
|
dragMove(e.data.element, e); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
function dragStart(elem, delem, e) { |
||||||
|
if (drag.touch) { |
||||||
|
trace("IS TOUCH") |
||||||
|
VMM.Lib.css(elem, '-webkit-transition-duration', '0'); |
||||||
|
drag.pagex.start = e.originalEvent.touches[0].screenX; |
||||||
|
drag.pagey.start = e.originalEvent.touches[0].screenY; |
||||||
|
} else { |
||||||
|
drag.pagex.start = e.pageX; |
||||||
|
drag.pagey.start = e.pageY; |
||||||
|
} |
||||||
|
drag.left.start = getLeft(elem); |
||||||
|
drag.time.start = new Date().getTime(); |
||||||
|
|
||||||
|
VMM.Lib.stop(elem); |
||||||
|
VMM.bindEvent(delem, onDragMove, dragevent.move, {element: elem}); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
function dragEnd(elem, delem, e) { |
||||||
|
VMM.unbindEvent(delem, onDragMove, dragevent.move); |
||||||
|
dragMomentum(elem, e); |
||||||
|
} |
||||||
|
|
||||||
|
function dragMove(elem, e) { |
||||||
|
var drag_to, drag_to_y; |
||||||
|
drag.sliding = true; |
||||||
|
if (drag.touch) { |
||||||
|
drag.pagex.end = e.originalEvent.touches[0].screenX; |
||||||
|
drag.pagey.end = e.originalEvent.touches[0].screenY; |
||||||
|
} else { |
||||||
|
drag.pagex.end = e.pageX; |
||||||
|
drag.pagey.end = e.pageY; |
||||||
|
} |
||||||
|
|
||||||
|
drag.left.end = getLeft(elem); |
||||||
|
drag_to = -(drag.pagex.start - drag.pagex.end - drag.left.start); |
||||||
|
|
||||||
|
|
||||||
|
if (Math.abs(drag.pagey.start) - Math.abs(drag.pagey.end) > 10) { |
||||||
|
trace("SCROLLING Y") |
||||||
|
trace(Math.abs(drag.pagey.start) - Math.abs(drag.pagey.end)); |
||||||
|
} |
||||||
|
if (Math.abs(drag_to - drag.left.start) > 10) { |
||||||
|
VMM.Lib.css(elem, 'left', drag_to); |
||||||
|
e.preventDefault(); |
||||||
|
e.stopPropagation(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function dragMomentum(elem, e) { |
||||||
|
var drag_info = { |
||||||
|
left: drag.left.end, |
||||||
|
left_adjust: 0, |
||||||
|
change: { |
||||||
|
x: 0 |
||||||
|
}, |
||||||
|
time: (new Date().getTime() - drag.time.start) * 10, |
||||||
|
time_adjust: (new Date().getTime() - drag.time.start) * 10 |
||||||
|
}, |
||||||
|
multiplier = 3000; |
||||||
|
|
||||||
|
if (drag.touch) { |
||||||
|
multiplier = 6000; |
||||||
|
} |
||||||
|
|
||||||
|
drag_info.change.x = multiplier * (Math.abs(drag.pagex.end) - Math.abs(drag.pagex.start)); |
||||||
|
|
||||||
|
|
||||||
|
drag_info.left_adjust = Math.round(drag_info.change.x / drag_info.time); |
||||||
|
|
||||||
|
drag_info.left = Math.min(drag_info.left + drag_info.left_adjust); |
||||||
|
|
||||||
|
if (drag.constraint) { |
||||||
|
if (drag_info.left > drag.constraint.left) { |
||||||
|
drag_info.left = drag.constraint.left; |
||||||
|
if (drag_info.time > 5000) { |
||||||
|
drag_info.time = 5000; |
||||||
|
} |
||||||
|
} else if (drag_info.left < drag.constraint.right) { |
||||||
|
drag_info.left = drag.constraint.right; |
||||||
|
if (drag_info.time > 5000) { |
||||||
|
drag_info.time = 5000; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
VMM.fireEvent(dragslider, "DRAGUPDATE", [drag_info]); |
||||||
|
|
||||||
|
if (!is_sticky) { |
||||||
|
if (drag_info.time > 0) { |
||||||
|
if (drag.touch) { |
||||||
|
VMM.Lib.animate(elem, drag_info.time, "easeOutCirc", {"left": drag_info.left}); |
||||||
|
} else { |
||||||
|
VMM.Lib.animate(elem, drag_info.time, drag.ease, {"left": drag_info.left}); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function getLeft(elem) { |
||||||
|
return parseInt(VMM.Lib.css(elem, 'left').substring(0, VMM.Lib.css(elem, 'left').length - 2), 10); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,281 @@ |
|||||||
|
/* Slider Slide |
||||||
|
================================================== */ |
||||||
|
|
||||||
|
if (typeof VMM.Slider != 'undefined') { |
||||||
|
VMM.Slider.Slide = function(d, _parent) { |
||||||
|
|
||||||
|
var $media, $text, $slide, $wrap, element, c, |
||||||
|
data = d, |
||||||
|
slide = {}, |
||||||
|
element = "", |
||||||
|
media = "", |
||||||
|
loaded = false, |
||||||
|
preloaded = false, |
||||||
|
is_skinny = false, |
||||||
|
_enqueue = true, |
||||||
|
_removeque = false, |
||||||
|
_id = "slide_", |
||||||
|
_class = 0, |
||||||
|
timer = {pushque:"", render:"", relayout:"", remove:"", skinny:false}, |
||||||
|
times = {pushque:500, render:100, relayout:100, remove:30000}; |
||||||
|
|
||||||
|
_id = _id + data.uniqueid; |
||||||
|
this.enqueue = _enqueue; |
||||||
|
this.id = _id; |
||||||
|
|
||||||
|
|
||||||
|
element = VMM.appendAndGetElement(_parent, "<div>", "slider-item"); |
||||||
|
|
||||||
|
if (typeof data.classname != 'undefined') { |
||||||
|
trace("HAS CLASSNAME"); |
||||||
|
VMM.Lib.addClass(element, data.classname); |
||||||
|
} else { |
||||||
|
trace("NO CLASSNAME"); |
||||||
|
trace(data); |
||||||
|
} |
||||||
|
|
||||||
|
c = {slide:"", text: "", media: "", media_element: "", layout: "content-container layout", has: { headline: false, text: false, media: false }}; |
||||||
|
|
||||||
|
/* PUBLIC |
||||||
|
================================================== */ |
||||||
|
this.show = function(skinny) { |
||||||
|
_enqueue = false; |
||||||
|
timer.skinny = skinny; |
||||||
|
_removeque = false; |
||||||
|
clearTimeout(timer.remove); |
||||||
|
|
||||||
|
if (!loaded) { |
||||||
|
if (preloaded) { |
||||||
|
clearTimeout(timer.relayout); |
||||||
|
timer.relayout = setTimeout(reloadLayout, times.relayout); |
||||||
|
} else { |
||||||
|
render(skinny); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
this.hide = function() { |
||||||
|
if (loaded && !_removeque) { |
||||||
|
_removeque = true; |
||||||
|
clearTimeout(timer.remove); |
||||||
|
timer.remove = setTimeout(removeSlide, times.remove); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
this.clearTimers = function() { |
||||||
|
//clearTimeout(timer.remove);
|
||||||
|
clearTimeout(timer.relayout); |
||||||
|
clearTimeout(timer.pushque); |
||||||
|
clearTimeout(timer.render); |
||||||
|
}; |
||||||
|
|
||||||
|
this.layout = function(skinny) { |
||||||
|
if (loaded && preloaded) { |
||||||
|
reLayout(skinny); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
this.elem = function() {
|
||||||
|
return element; |
||||||
|
}; |
||||||
|
|
||||||
|
this.position = function() { |
||||||
|
return VMM.Lib.position(element); |
||||||
|
}; |
||||||
|
|
||||||
|
this.leftpos = function(p) { |
||||||
|
if(typeof p != 'undefined') { |
||||||
|
VMM.Lib.css(element, "left", p); |
||||||
|
} else { |
||||||
|
return VMM.Lib.position(element).left |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
this.animate = function(d, e, p) { |
||||||
|
VMM.Lib.animate(element, d, e, p); |
||||||
|
}; |
||||||
|
|
||||||
|
this.css = function(p, v) { |
||||||
|
VMM.Lib.css(element, p, v ); |
||||||
|
} |
||||||
|
|
||||||
|
this.opacity = function(p) { |
||||||
|
VMM.Lib.css(element, "opacity", p);
|
||||||
|
} |
||||||
|
|
||||||
|
this.width = function() { |
||||||
|
return VMM.Lib.width(element); |
||||||
|
}; |
||||||
|
|
||||||
|
this.height = function() { |
||||||
|
return VMM.Lib.height(element); |
||||||
|
}; |
||||||
|
|
||||||
|
this.content_height = function () { |
||||||
|
var ch = VMM.Lib.find( element, ".content")[0]; |
||||||
|
|
||||||
|
if (ch != 'undefined' && ch != null) { |
||||||
|
return VMM.Lib.height(ch); |
||||||
|
} else { |
||||||
|
return 0; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/* PRIVATE |
||||||
|
================================================== */ |
||||||
|
var render = function(skinny) { |
||||||
|
trace("RENDER " + _id); |
||||||
|
|
||||||
|
loaded = true; |
||||||
|
preloaded = true; |
||||||
|
timer.skinny = skinny; |
||||||
|
|
||||||
|
buildSlide(); |
||||||
|
|
||||||
|
clearTimeout(timer.pushque); |
||||||
|
clearTimeout(timer.render); |
||||||
|
timer.pushque = setTimeout(VMM.ExternalAPI.pushQues, times.pushque); |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
var removeSlide = function() { |
||||||
|
//VMM.attachElement(element, "");
|
||||||
|
trace("REMOVE SLIDE TIMER FINISHED"); |
||||||
|
loaded = false; |
||||||
|
VMM.Lib.detach($text); |
||||||
|
VMM.Lib.detach($media); |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
var reloadLayout = function() { |
||||||
|
loaded = true; |
||||||
|
reLayout(timer.skinny, true); |
||||||
|
}; |
||||||
|
|
||||||
|
var reLayout = function(skinny, reload) { |
||||||
|
if (c.has.text) { |
||||||
|
if (skinny) { |
||||||
|
if (!is_skinny || reload) { |
||||||
|
VMM.Lib.removeClass($slide, "pad-left"); |
||||||
|
VMM.Lib.detach($text); |
||||||
|
VMM.Lib.detach($media); |
||||||
|
VMM.Lib.append($slide, $text); |
||||||
|
VMM.Lib.append($slide, $media); |
||||||
|
is_skinny = true; |
||||||
|
}
|
||||||
|
} else { |
||||||
|
if (is_skinny || reload) { |
||||||
|
VMM.Lib.addClass($slide, "pad-left"); |
||||||
|
VMM.Lib.detach($text); |
||||||
|
VMM.Lib.detach($media); |
||||||
|
VMM.Lib.append($slide, $media); |
||||||
|
VMM.Lib.append($slide, $text); |
||||||
|
is_skinny = false; |
||||||
|
|
||||||
|
}
|
||||||
|
} |
||||||
|
} else if (reload) { |
||||||
|
if (c.has.headline) { |
||||||
|
VMM.Lib.detach($text); |
||||||
|
VMM.Lib.append($slide, $text); |
||||||
|
} |
||||||
|
VMM.Lib.detach($media); |
||||||
|
VMM.Lib.append($slide, $media); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
var buildSlide = function() { |
||||||
|
trace("BUILDSLIDE"); |
||||||
|
$wrap = VMM.appendAndGetElement(element, "<div>", "content"); |
||||||
|
$slide = VMM.appendAndGetElement($wrap, "<div>"); |
||||||
|
|
||||||
|
/* DATE |
||||||
|
================================================== */ |
||||||
|
if (data.startdate != null && data.startdate != "") { |
||||||
|
if (type.of(data.startdate) == "date") { |
||||||
|
if (data.type != "start") { |
||||||
|
var st = VMM.Date.prettyDate(data.startdate, false, data.precisiondate); |
||||||
|
var en = VMM.Date.prettyDate(data.enddate, false, data.precisiondate); |
||||||
|
var tag = ""; |
||||||
|
/* TAG / CATEGORY |
||||||
|
================================================== */ |
||||||
|
if (data.tag != null && data.tag != "") { |
||||||
|
tag = VMM.createElement("span", data.tag, "slide-tag"); |
||||||
|
} |
||||||
|
|
||||||
|
if (st != en) { |
||||||
|
c.text += VMM.createElement("h2", st + " — " + en + tag, "date"); |
||||||
|
} else { |
||||||
|
c.text += VMM.createElement("h2", st + tag, "date"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/* HEADLINE |
||||||
|
================================================== */ |
||||||
|
if (data.headline != null && data.headline != "") { |
||||||
|
c.has.headline = true; |
||||||
|
if (data.type == "start") { |
||||||
|
c.text += VMM.createElement("h2", VMM.Util.linkify_with_twitter(data.headline, "_blank"), "start"); |
||||||
|
} else {
|
||||||
|
c.text += VMM.createElement("h3", VMM.Util.linkify_with_twitter(data.headline, "_blank")); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/* TEXT |
||||||
|
================================================== */ |
||||||
|
if (data.text != null && data.text != "") { |
||||||
|
c.has.text = true; |
||||||
|
c.text += VMM.createElement("p", VMM.Util.linkify_with_twitter(data.text, "_blank")); |
||||||
|
} |
||||||
|
|
||||||
|
if (c.has.text || c.has.headline) { |
||||||
|
c.text = VMM.createElement("div", c.text, "container"); |
||||||
|
//$text = VMM.appendAndGetElement($slide, "<div>", "text", c.text);
|
||||||
|
|
||||||
|
$text = VMM.appendAndGetElement($slide, "<div>", "text", VMM.TextElement.create(c.text)); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/* SLUG |
||||||
|
================================================== */ |
||||||
|
if (data.needs_slug) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/* MEDIA |
||||||
|
================================================== */ |
||||||
|
if (data.asset != null && data.asset != "") { |
||||||
|
if (data.asset.media != null && data.asset.media != "") { |
||||||
|
c.has.media = true; |
||||||
|
$media = VMM.appendAndGetElement($slide, "<div>", "media", VMM.MediaElement.create(data.asset, data.uniqueid)); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/* COMBINE |
||||||
|
================================================== */ |
||||||
|
if (c.has.text) { c.layout += "-text" }; |
||||||
|
if (c.has.media){ c.layout += "-media" }; |
||||||
|
|
||||||
|
if (c.has.text) { |
||||||
|
if (timer.skinny) { |
||||||
|
VMM.Lib.addClass($slide, c.layout); |
||||||
|
is_skinny = true; |
||||||
|
} else { |
||||||
|
VMM.Lib.addClass($slide, c.layout); |
||||||
|
VMM.Lib.addClass($slide, "pad-left"); |
||||||
|
VMM.Lib.detach($text); |
||||||
|
VMM.Lib.append($slide, $text); |
||||||
|
} |
||||||
|
|
||||||
|
} else { |
||||||
|
VMM.Lib.addClass($slide, c.layout); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
}; |
@ -0,0 +1,805 @@ |
|||||||
|
/* Slider |
||||||
|
================================================== */ |
||||||
|
/* * CodeKit Import |
||||||
|
* http://incident57.com/codekit/
|
||||||
|
================================================== */ |
||||||
|
// @codekit-append "VMM.Slider.Slide.js";
|
||||||
|
|
||||||
|
if(typeof VMM != 'undefined' && typeof VMM.Slider == 'undefined') { |
||||||
|
|
||||||
|
VMM.Slider = function(parent, parent_config) { |
||||||
|
|
||||||
|
var config, |
||||||
|
timer, |
||||||
|
$slider, |
||||||
|
$slider_mask, |
||||||
|
$slider_container, |
||||||
|
$slides_items, |
||||||
|
$dragslide, |
||||||
|
$explainer, |
||||||
|
events = {}, |
||||||
|
data = [], |
||||||
|
slides = [], |
||||||
|
slide_positions = [], |
||||||
|
slides_content = "", |
||||||
|
current_slide = 0, |
||||||
|
current_width = 960, |
||||||
|
touch = { |
||||||
|
move: false, |
||||||
|
x: 10, |
||||||
|
y: 0, |
||||||
|
off: 0, |
||||||
|
dampen: 48 |
||||||
|
}, |
||||||
|
content = "", |
||||||
|
_active = false, |
||||||
|
layout = parent, |
||||||
|
navigation = { |
||||||
|
nextBtn: "", |
||||||
|
prevBtn: "", |
||||||
|
nextDate: "", |
||||||
|
prevDate: "", |
||||||
|
nextTitle: "", |
||||||
|
prevTitle: "" |
||||||
|
}; |
||||||
|
|
||||||
|
// CONFIG
|
||||||
|
if(typeof parent_config != 'undefined') { |
||||||
|
config = parent_config; |
||||||
|
} else { |
||||||
|
config = { |
||||||
|
preload: 4, |
||||||
|
current_slide: 0, |
||||||
|
interval: 10,
|
||||||
|
something: 0,
|
||||||
|
width: 720,
|
||||||
|
height: 400,
|
||||||
|
ease: "easeInOutExpo",
|
||||||
|
duration: 1000,
|
||||||
|
timeline: false,
|
||||||
|
spacing: 15, |
||||||
|
slider: { |
||||||
|
width: 720,
|
||||||
|
height: 400,
|
||||||
|
content: { |
||||||
|
width: 720,
|
||||||
|
height: 400,
|
||||||
|
padding: 120, |
||||||
|
padding_default: 120 |
||||||
|
},
|
||||||
|
nav: { |
||||||
|
width: 100,
|
||||||
|
height: 200 |
||||||
|
}
|
||||||
|
}
|
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
/* PUBLIC VARS |
||||||
|
================================================== */ |
||||||
|
this.ver = "0.6"; |
||||||
|
|
||||||
|
config.slider.width = config.width; |
||||||
|
config.slider.height = config.height; |
||||||
|
|
||||||
|
/* PUBLIC FUNCTIONS |
||||||
|
================================================== */ |
||||||
|
this.init = function(d) { |
||||||
|
slides = []; |
||||||
|
slide_positions = []; |
||||||
|
|
||||||
|
if(typeof d != 'undefined') { |
||||||
|
this.setData(d); |
||||||
|
} else { |
||||||
|
trace("WAITING ON DATA"); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
this.width = function(w) { |
||||||
|
if (w != null && w != "") { |
||||||
|
config.slider.width = w; |
||||||
|
reSize(); |
||||||
|
} else { |
||||||
|
return config.slider.width; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
this.height = function(h) { |
||||||
|
if (h != null && h != "") { |
||||||
|
config.slider.height = h; |
||||||
|
reSize(); |
||||||
|
} else { |
||||||
|
return config.slider.height; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/* GETTERS AND SETTERS |
||||||
|
================================================== */ |
||||||
|
this.setData = function(d) { |
||||||
|
if(typeof d != 'undefined') { |
||||||
|
data = d; |
||||||
|
build(); |
||||||
|
} else{ |
||||||
|
trace("NO DATA"); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
this.getData = function() { |
||||||
|
return data; |
||||||
|
}; |
||||||
|
|
||||||
|
this.setConfig = function(d) { |
||||||
|
if(typeof d != 'undefined') { |
||||||
|
config = d; |
||||||
|
} else{ |
||||||
|
trace("NO CONFIG DATA"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
this.getConfig = function() { |
||||||
|
return config; |
||||||
|
}; |
||||||
|
|
||||||
|
this.setSize = function(w, h) { |
||||||
|
if (w != null) {config.slider.width = w}; |
||||||
|
if (h != null) {config.slider.height = h}; |
||||||
|
if (_active) { |
||||||
|
reSize(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
this.active = function() { |
||||||
|
return _active; |
||||||
|
}; |
||||||
|
|
||||||
|
this.getCurrentNumber = function() { |
||||||
|
return current_slide; |
||||||
|
}; |
||||||
|
|
||||||
|
this.setSlide = function(n) { |
||||||
|
goToSlide(n); |
||||||
|
}; |
||||||
|
|
||||||
|
/* ON EVENT |
||||||
|
================================================== */ |
||||||
|
function onConfigSet() { |
||||||
|
trace("onConfigSet"); |
||||||
|
}; |
||||||
|
|
||||||
|
function reSize(go_to_slide, from_start) { |
||||||
|
var _go_to_slide = true, |
||||||
|
_from_start = false; |
||||||
|
|
||||||
|
if (go_to_slide != null) {_go_to_slide = go_to_slide}; |
||||||
|
if (from_start != null) {_from_start = from_start}; |
||||||
|
|
||||||
|
current_width = config.slider.width; |
||||||
|
|
||||||
|
config.slider.nav.height = VMM.Lib.height(navigation.prevBtnContainer); |
||||||
|
|
||||||
|
// Handle smaller sizes
|
||||||
|
if (VMM.Browser.device == "mobile" || current_width <= 640) { |
||||||
|
config.slider.content.padding = 10; |
||||||
|
} else { |
||||||
|
config.slider.content.padding = config.slider.content.padding_default; |
||||||
|
} |
||||||
|
|
||||||
|
config.slider.content.width = current_width - (config.slider.content.padding *2); |
||||||
|
|
||||||
|
VMM.Lib.width($slides_items, (slides.length * config.slider.content.width)); |
||||||
|
|
||||||
|
if (_from_start) { |
||||||
|
VMM.Lib.css($slider_container, "left", slides[current_slide].leftpos()); |
||||||
|
} |
||||||
|
|
||||||
|
// RESIZE SLIDES
|
||||||
|
sizeSlides(); |
||||||
|
|
||||||
|
// POSITION SLIDES
|
||||||
|
positionSlides(); |
||||||
|
|
||||||
|
// POSITION NAV
|
||||||
|
VMM.Lib.css(navigation.nextBtn, "left", (current_width - config.slider.nav.width)); |
||||||
|
VMM.Lib.height(navigation.prevBtn, config.slider.height); |
||||||
|
VMM.Lib.height(navigation.nextBtn, config.slider.height); |
||||||
|
VMM.Lib.css(navigation.nextBtnContainer, "top", ( (config.slider.height/2) - (config.slider.nav.height/2) ) + 10 ); |
||||||
|
VMM.Lib.css(navigation.prevBtnContainer, "top", ( (config.slider.height/2) - (config.slider.nav.height/2) ) + 10 ); |
||||||
|
|
||||||
|
// Animate Changes
|
||||||
|
VMM.Lib.height($slider_mask, config.slider.height); |
||||||
|
VMM.Lib.width($slider_mask, current_width); |
||||||
|
|
||||||
|
if (_go_to_slide) { |
||||||
|
goToSlide(current_slide, "linear", 1); |
||||||
|
}; |
||||||
|
|
||||||
|
if (current_slide == 0) { |
||||||
|
VMM.Lib.visible(navigation.prevBtn, false); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
function onDragFinish(e, d) { |
||||||
|
trace("DRAG FINISH"); |
||||||
|
trace(d.left_adjust); |
||||||
|
trace((config.slider.width / 2)); |
||||||
|
|
||||||
|
if (d.left_adjust < 0 ) { |
||||||
|
if (Math.abs(d.left_adjust) > (config.slider.width / 2) ) { |
||||||
|
//onNextClick(e);
|
||||||
|
if (current_slide == slides.length - 1) { |
||||||
|
backToCurrentSlide(); |
||||||
|
} else { |
||||||
|
goToSlide(current_slide+1, "easeOutExpo"); |
||||||
|
upDate(); |
||||||
|
} |
||||||
|
} else { |
||||||
|
backToCurrentSlide(); |
||||||
|
|
||||||
|
} |
||||||
|
} else if (Math.abs(d.left_adjust) > (config.slider.width / 2) ) { |
||||||
|
if (current_slide == 0) { |
||||||
|
backToCurrentSlide(); |
||||||
|
} else { |
||||||
|
goToSlide(current_slide-1, "easeOutExpo"); |
||||||
|
upDate(); |
||||||
|
} |
||||||
|
} else { |
||||||
|
backToCurrentSlide(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
/* NAVIGATION |
||||||
|
================================================== */ |
||||||
|
function onNextClick(e) { |
||||||
|
if (current_slide == slides.length - 1) { |
||||||
|
backToCurrentSlide(); |
||||||
|
} else { |
||||||
|
goToSlide(current_slide+1); |
||||||
|
upDate(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function onPrevClick(e) { |
||||||
|
if (current_slide == 0) { |
||||||
|
backToCurrentSlide(); |
||||||
|
} else { |
||||||
|
goToSlide(current_slide-1); |
||||||
|
upDate(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function onKeypressNav(e) { |
||||||
|
switch(e.keyCode) { |
||||||
|
case 39: |
||||||
|
// RIGHT ARROW
|
||||||
|
onNextClick(e); |
||||||
|
break; |
||||||
|
case 37: |
||||||
|
// LEFT ARROW
|
||||||
|
onPrevClick(e); |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function onTouchUpdate(e, b) { |
||||||
|
if (slide_positions.length == 0) { |
||||||
|
for(var i = 0; i < slides.length; i++) { |
||||||
|
slide_positions.push( slides[i].leftpos() ); |
||||||
|
} |
||||||
|
} |
||||||
|
if (typeof b.left == "number") { |
||||||
|
var _pos = b.left; |
||||||
|
var _slide_pos = -(slides[current_slide].leftpos()); |
||||||
|
if (_pos < _slide_pos - (config.slider_width/3)) { |
||||||
|
onNextClick(); |
||||||
|
} else if (_pos > _slide_pos + (config.slider_width/3)) { |
||||||
|
onPrevClick(); |
||||||
|
} else { |
||||||
|
VMM.Lib.animate($slider_container, config.duration, config.ease, {"left": _slide_pos }); |
||||||
|
} |
||||||
|
} else { |
||||||
|
VMM.Lib.animate($slider_container, config.duration, config.ease, {"left": _slide_pos }); |
||||||
|
} |
||||||
|
|
||||||
|
if (typeof b.top == "number") { |
||||||
|
VMM.Lib.animate($slider_container, config.duration, config.ease, {"top": -b.top}); |
||||||
|
} else { |
||||||
|
|
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
function onExplainerClick(e) { |
||||||
|
detachMessege(); |
||||||
|
} |
||||||
|
|
||||||
|
/* UPDATE |
||||||
|
================================================== */ |
||||||
|
function upDate() { |
||||||
|
config.current_slide = current_slide; |
||||||
|
VMM.fireEvent(layout, "UPDATE"); |
||||||
|
}; |
||||||
|
|
||||||
|
/* GET DATA |
||||||
|
================================================== */ |
||||||
|
function getData(d) { |
||||||
|
data = d; |
||||||
|
}; |
||||||
|
|
||||||
|
/* BUILD SLIDES |
||||||
|
================================================== */ |
||||||
|
function buildSlides(d) { |
||||||
|
var i = 0; |
||||||
|
|
||||||
|
VMM.attachElement($slides_items, ""); |
||||||
|
slides = []; |
||||||
|
|
||||||
|
for(i = 0; i < d.length; i++) { |
||||||
|
var _slide = new VMM.Slider.Slide(d[i], $slides_items); |
||||||
|
//_slide.show();
|
||||||
|
slides.push(_slide); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function preloadSlides(skip) { |
||||||
|
var i = 0; |
||||||
|
|
||||||
|
if (skip) { |
||||||
|
preloadTimeOutSlides(); |
||||||
|
} else { |
||||||
|
for(i = 0; i < slides.length; i++) { |
||||||
|
slides[i].clearTimers(); |
||||||
|
} |
||||||
|
timer = setTimeout(preloadTimeOutSlides, config.duration); |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function preloadTimeOutSlides() { |
||||||
|
var i = 0; |
||||||
|
|
||||||
|
for(i = 0; i < slides.length; i++) { |
||||||
|
slides[i].enqueue = true; |
||||||
|
} |
||||||
|
|
||||||
|
for(i = 0; i < config.preload; i++) { |
||||||
|
if ( !((current_slide + i) > slides.length - 1)) { |
||||||
|
slides[current_slide + i].show(); |
||||||
|
slides[current_slide + i].enqueue = false; |
||||||
|
} |
||||||
|
if ( !( (current_slide - i) < 0 ) ) { |
||||||
|
slides[current_slide - i].show(); |
||||||
|
slides[current_slide - i].enqueue = false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (slides.length > 50) { |
||||||
|
for(i = 0; i < slides.length; i++) { |
||||||
|
if (slides[i].enqueue) { |
||||||
|
slides[i].hide(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
sizeSlides(); |
||||||
|
} |
||||||
|
|
||||||
|
function sizeSlide(slide_id) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/* SIZE SLIDES |
||||||
|
================================================== */ |
||||||
|
function sizeSlides() { |
||||||
|
var i = 0, |
||||||
|
layout_text_media = ".slider-item .layout-text-media .media .media-container ", |
||||||
|
layout_media = ".slider-item .layout-media .media .media-container ", |
||||||
|
layout_both = ".slider-item .media .media-container", |
||||||
|
layout_caption = ".slider-item .media .media-container .media-shadow .caption", |
||||||
|
is_skinny = false, |
||||||
|
mediasize = { |
||||||
|
text_media: { |
||||||
|
width: (config.slider.content.width/100) * 60, |
||||||
|
height: config.slider.height - 60, |
||||||
|
video: { |
||||||
|
width: 0, |
||||||
|
height: 0 |
||||||
|
}, |
||||||
|
text: { |
||||||
|
width: ((config.slider.content.width/100) * 40) - 30, |
||||||
|
height: config.slider.height |
||||||
|
} |
||||||
|
}, |
||||||
|
media: { |
||||||
|
width: config.slider.content.width, |
||||||
|
height: config.slider.height - 110, |
||||||
|
video: { |
||||||
|
width: 0, |
||||||
|
height: 0 |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
// Handle smaller sizes
|
||||||
|
if (VMM.Browser.device == "mobile" || current_width < 641) { |
||||||
|
is_skinny = true; |
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
VMM.master_config.sizes.api.width = mediasize.media.width; |
||||||
|
VMM.master_config.sizes.api.height = mediasize.media.height; |
||||||
|
|
||||||
|
mediasize.text_media.video = VMM.Util.ratio.fit(mediasize.text_media.width, mediasize.text_media.height, 16, 9); |
||||||
|
mediasize.media.video = VMM.Util.ratio.fit(mediasize.media.width, mediasize.media.height, 16, 9); |
||||||
|
|
||||||
|
VMM.Lib.css(".slider-item", "width", config.slider.content.width ); |
||||||
|
VMM.Lib.height(".slider-item", config.slider.height); |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (is_skinny) { |
||||||
|
|
||||||
|
mediasize.text_media.width = config.slider.content.width - (config.slider.content.padding*2); |
||||||
|
mediasize.media.width = config.slider.content.width - (config.slider.content.padding*2); |
||||||
|
mediasize.text_media.height = ((config.slider.height/100) * 50 ) - 50; |
||||||
|
mediasize.media.height = ((config.slider.height/100) * 70 ) - 40; |
||||||
|
|
||||||
|
mediasize.text_media.video = VMM.Util.ratio.fit(mediasize.text_media.width, mediasize.text_media.height, 16, 9); |
||||||
|
mediasize.media.video = VMM.Util.ratio.fit(mediasize.media.width, mediasize.media.height, 16, 9); |
||||||
|
|
||||||
|
VMM.Lib.css(".slider-item .layout-text-media .text", "width", "100%" ); |
||||||
|
VMM.Lib.css(".slider-item .layout-text-media .text", "display", "block" ); |
||||||
|
VMM.Lib.css(".slider-item .layout-text-media .text .container", "display", "block" ); |
||||||
|
VMM.Lib.css(".slider-item .layout-text-media .text .container", "width", mediasize.media.width ); |
||||||
|
VMM.Lib.css(".slider-item .layout-text-media .text .container .start", "width", "auto" ); |
||||||
|
|
||||||
|
VMM.Lib.css(".slider-item .layout-text-media .media", "float", "none" ); |
||||||
|
VMM.Lib.addClass(".slider-item .content-container", "pad-top"); |
||||||
|
|
||||||
|
VMM.Lib.css(".slider-item .media blockquote p", "line-height", "18px" ); |
||||||
|
VMM.Lib.css(".slider-item .media blockquote p", "font-size", "16px" ); |
||||||
|
|
||||||
|
VMM.Lib.css(".slider-item", "overflow-y", "auto" ); |
||||||
|
|
||||||
|
|
||||||
|
} else { |
||||||
|
|
||||||
|
VMM.Lib.css(".slider-item .layout-text-media .text", "width", "40%" ); |
||||||
|
VMM.Lib.css(".slider-item .layout-text-media .text", "display", "table-cell" ); |
||||||
|
VMM.Lib.css(".slider-item .layout-text-media .text .container", "display", "table-cell" ); |
||||||
|
VMM.Lib.css(".slider-item .layout-text-media .text .container", "width", "auto" ); |
||||||
|
VMM.Lib.css(".slider-item .layout-text-media .text .container .start", "width", mediasize.text_media.text.width ); |
||||||
|
//VMM.Lib.addClass(".slider-item .content-container", "pad-left");
|
||||||
|
VMM.Lib.removeClass(".slider-item .content-container", "pad-top"); |
||||||
|
|
||||||
|
VMM.Lib.css(".slider-item .layout-text-media .media", "float", "left" ); |
||||||
|
VMM.Lib.css(".slider-item .layout-text-media", "display", "table" ); |
||||||
|
|
||||||
|
VMM.Lib.css(".slider-item .media blockquote p", "line-height", "36px" ); |
||||||
|
VMM.Lib.css(".slider-item .media blockquote p", "font-size", "28px" ); |
||||||
|
|
||||||
|
VMM.Lib.css(".slider-item", "display", "table" ); |
||||||
|
VMM.Lib.css(".slider-item", "overflow-y", "auto" ); |
||||||
|
} |
||||||
|
|
||||||
|
// MEDIA FRAME
|
||||||
|
VMM.Lib.css( layout_text_media + ".media-frame", "max-width", mediasize.text_media.width); |
||||||
|
VMM.Lib.height( layout_text_media + ".media-frame", mediasize.text_media.height); |
||||||
|
VMM.Lib.width( layout_text_media + ".media-frame", mediasize.text_media.width); |
||||||
|
|
||||||
|
// WEBSITES
|
||||||
|
//VMM.Lib.css( layout_both + ".website", "max-width", 300 );
|
||||||
|
|
||||||
|
// IMAGES
|
||||||
|
VMM.Lib.css( layout_text_media + "img", "max-height", mediasize.text_media.height ); |
||||||
|
VMM.Lib.css( layout_media + "img", "max-height", mediasize.media.height ); |
||||||
|
|
||||||
|
// FIX FOR NON-WEBKIT BROWSERS
|
||||||
|
VMM.Lib.css( layout_text_media + "img", "max-width", mediasize.text_media.width ); |
||||||
|
VMM.Lib.css( layout_text_media + ".avatar img", "max-width", 32 ); |
||||||
|
VMM.Lib.css( layout_text_media + ".avatar img", "max-height", 32 ); |
||||||
|
VMM.Lib.css( layout_media + ".avatar img", "max-width", 32 ); |
||||||
|
VMM.Lib.css( layout_media + ".avatar img", "max-height", 32 ); |
||||||
|
|
||||||
|
VMM.Lib.css( layout_text_media + ".article-thumb", "max-width", "50%" ); |
||||||
|
//VMM.Lib.css( layout_text_media + ".article-thumb", "max-height", 100 );
|
||||||
|
VMM.Lib.css( layout_media + ".article-thumb", "max-width", 200 ); |
||||||
|
//VMM.Lib.css( layout_media + ".article-thumb", "max-height", 100 );
|
||||||
|
|
||||||
|
|
||||||
|
// IFRAME FULL SIZE VIDEO
|
||||||
|
VMM.Lib.width( layout_text_media + ".media-frame", mediasize.text_media.video.width); |
||||||
|
VMM.Lib.height( layout_text_media + ".media-frame", mediasize.text_media.video.height); |
||||||
|
VMM.Lib.width( layout_media + ".media-frame", mediasize.media.video.width); |
||||||
|
VMM.Lib.height( layout_media + ".media-frame", mediasize.media.video.height); |
||||||
|
VMM.Lib.css( layout_media + ".media-frame", "max-height", mediasize.media.video.height); |
||||||
|
VMM.Lib.css( layout_media + ".media-frame", "max-width", mediasize.media.video.width); |
||||||
|
|
||||||
|
// SOUNDCLOUD
|
||||||
|
VMM.Lib.height( layout_media + ".soundcloud", 168); |
||||||
|
VMM.Lib.height( layout_text_media + ".soundcloud", 168); |
||||||
|
VMM.Lib.width( layout_media + ".soundcloud", mediasize.media.width); |
||||||
|
VMM.Lib.width( layout_text_media + ".soundcloud", mediasize.text_media.width); |
||||||
|
VMM.Lib.css( layout_both + ".soundcloud", "max-height", 168 ); |
||||||
|
|
||||||
|
// MAPS
|
||||||
|
VMM.Lib.height( layout_text_media + ".map", mediasize.text_media.height); |
||||||
|
VMM.Lib.width( layout_text_media + ".map", mediasize.text_media.width); |
||||||
|
VMM.Lib.css( layout_media + ".map", "max-height", mediasize.media.height); |
||||||
|
VMM.Lib.width( layout_media + ".map", mediasize.media.width); |
||||||
|
|
||||||
|
|
||||||
|
// DOCS
|
||||||
|
VMM.Lib.height( layout_text_media + ".doc", mediasize.text_media.height); |
||||||
|
VMM.Lib.width( layout_text_media + ".doc", mediasize.text_media.width); |
||||||
|
VMM.Lib.height( layout_media + ".doc", mediasize.media.height); |
||||||
|
VMM.Lib.width( layout_media + ".doc", mediasize.media.width); |
||||||
|
|
||||||
|
// IE8 NEEDS THIS
|
||||||
|
VMM.Lib.width( layout_media + ".wikipedia", mediasize.media.width); |
||||||
|
VMM.Lib.width( layout_media + ".twitter", mediasize.media.width); |
||||||
|
VMM.Lib.width( layout_media + ".plain-text-quote", mediasize.media.width); |
||||||
|
VMM.Lib.width( layout_media + ".plain-text", mediasize.media.width); |
||||||
|
|
||||||
|
VMM.Lib.css( layout_both, "max-width", mediasize.media.width); |
||||||
|
|
||||||
|
|
||||||
|
// CAPTION WIDTH
|
||||||
|
VMM.Lib.css( layout_text_media + ".caption", "max-width", mediasize.text_media.video.width); |
||||||
|
VMM.Lib.css( layout_media + ".caption", "max-width", mediasize.media.video.width); |
||||||
|
//VMM.Lib.css( layout_text_media + ".caption", "max-width", mediasize.text_media.width);
|
||||||
|
//VMM.Lib.css( layout_media + ".caption", "max-width", mediasize.media.width);
|
||||||
|
|
||||||
|
// MAINTAINS VERTICAL CENTER IF IT CAN
|
||||||
|
for(i = 0; i < slides.length; i++) { |
||||||
|
|
||||||
|
slides[i].layout(is_skinny); |
||||||
|
|
||||||
|
if (slides[i].content_height() > config.slider.height + 20) { |
||||||
|
slides[i].css("display", "block"); |
||||||
|
} else { |
||||||
|
slides[i].css("display", "table"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/* POSITION SLIDES |
||||||
|
================================================== */ |
||||||
|
function positionSlides() { |
||||||
|
var pos = 0, |
||||||
|
i = 0; |
||||||
|
|
||||||
|
for(i = 0; i < slides.length; i++) { |
||||||
|
pos = i * (config.slider.width+config.spacing); |
||||||
|
slides[i].leftpos(pos); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/* OPACITY SLIDES |
||||||
|
================================================== */ |
||||||
|
function opacitySlides(n) { |
||||||
|
var _ease = "linear", |
||||||
|
i = 0; |
||||||
|
|
||||||
|
for(i = 0; i < slides.length; i++) { |
||||||
|
if (i == current_slide) { |
||||||
|
slides[i].animate(config.duration, _ease, {"opacity": 1}); |
||||||
|
} else if (i == current_slide - 1 || i == current_slide + 1) { |
||||||
|
slides[i].animate(config.duration, _ease, {"opacity": 0.1}); |
||||||
|
} else { |
||||||
|
slides[i].opacity(n); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/* GO TO SLIDE |
||||||
|
goToSlide(n, ease, duration); |
||||||
|
================================================== */ |
||||||
|
function goToSlide(n, ease, duration, fast, firstrun) { |
||||||
|
var _ease = config.ease, |
||||||
|
_duration = config.duration, |
||||||
|
is_last = false, |
||||||
|
is_first = false, |
||||||
|
_title = "", |
||||||
|
_pos; |
||||||
|
|
||||||
|
/* STOP ANY VIDEO PLAYERS ACTIVE |
||||||
|
================================================== */ |
||||||
|
VMM.ExternalAPI.youtube.stopPlayers(); |
||||||
|
|
||||||
|
// Set current slide
|
||||||
|
current_slide = n; |
||||||
|
_pos = slides[current_slide].leftpos(); |
||||||
|
|
||||||
|
|
||||||
|
if (current_slide == 0) {is_first = true}; |
||||||
|
if (current_slide +1 >= slides.length) {is_last = true}; |
||||||
|
if (ease != null && ease != "") {_ease = ease}; |
||||||
|
if (duration != null && duration != "") {_duration = duration}; |
||||||
|
|
||||||
|
/* NAVIGATION |
||||||
|
set proper nav titles and dates etc. |
||||||
|
================================================== */ |
||||||
|
// Handle smaller sizes
|
||||||
|
if (VMM.Browser.device == "mobile") { |
||||||
|
//if (VMM.Browser.device == "mobile" || current_width <= 640) {
|
||||||
|
VMM.Lib.visible(navigation.prevBtn, false); |
||||||
|
VMM.Lib.visible(navigation.nextBtn, false); |
||||||
|
} else { |
||||||
|
if (is_first) { |
||||||
|
VMM.Lib.visible(navigation.prevBtn, false); |
||||||
|
} else { |
||||||
|
VMM.Lib.visible(navigation.prevBtn, true); |
||||||
|
_title = VMM.Util.unlinkify(data[current_slide - 1].title) |
||||||
|
if (config.type == "timeline") { |
||||||
|
if(typeof data[current_slide - 1].date === "undefined") { |
||||||
|
VMM.attachElement(navigation.prevDate, _title); |
||||||
|
VMM.attachElement(navigation.prevTitle, ""); |
||||||
|
} else { |
||||||
|
VMM.attachElement(navigation.prevDate, VMM.Date.prettyDate(data[current_slide - 1].startdate, false, data[current_slide - 1].precisiondate)); |
||||||
|
VMM.attachElement(navigation.prevTitle, _title); |
||||||
|
} |
||||||
|
} else { |
||||||
|
VMM.attachElement(navigation.prevTitle, _title); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
if (is_last) { |
||||||
|
VMM.Lib.visible(navigation.nextBtn, false); |
||||||
|
} else { |
||||||
|
VMM.Lib.visible(navigation.nextBtn, true); |
||||||
|
_title = VMM.Util.unlinkify(data[current_slide + 1].title); |
||||||
|
if (config.type == "timeline") { |
||||||
|
if(typeof data[current_slide + 1].date === "undefined") { |
||||||
|
VMM.attachElement(navigation.nextDate, _title); |
||||||
|
VMM.attachElement(navigation.nextTitle, ""); |
||||||
|
} else { |
||||||
|
VMM.attachElement(navigation.nextDate, VMM.Date.prettyDate(data[current_slide + 1].startdate, false, data[current_slide + 1].precisiondate) ); |
||||||
|
VMM.attachElement(navigation.nextTitle, _title); |
||||||
|
} |
||||||
|
} else { |
||||||
|
VMM.attachElement(navigation.nextTitle, _title); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/* ANIMATE SLIDE |
||||||
|
================================================== */ |
||||||
|
if (fast) { |
||||||
|
VMM.Lib.css($slider_container, "left", -(_pos - config.slider.content.padding));
|
||||||
|
} else{ |
||||||
|
VMM.Lib.stop($slider_container); |
||||||
|
VMM.Lib.animate($slider_container, _duration, _ease, {"left": -(_pos - config.slider.content.padding)}); |
||||||
|
} |
||||||
|
|
||||||
|
if (firstrun) { |
||||||
|
VMM.fireEvent(layout, "LOADED"); |
||||||
|
} |
||||||
|
|
||||||
|
/* SET Vertical Scoll |
||||||
|
================================================== */ |
||||||
|
if (slides[current_slide].height() > config.slider_height) { |
||||||
|
VMM.Lib.css(".slider", "overflow-y", "scroll" ); |
||||||
|
} else { |
||||||
|
VMM.Lib.css(layout, "overflow-y", "hidden" ); |
||||||
|
var scroll_height = 0; |
||||||
|
try { |
||||||
|
scroll_height = VMM.Lib.prop(layout, "scrollHeight"); |
||||||
|
VMM.Lib.animate(layout, _duration, _ease, {scrollTop: scroll_height - VMM.Lib.height(layout) }); |
||||||
|
} |
||||||
|
catch(err) { |
||||||
|
scroll_height = VMM.Lib.height(layout); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
preloadSlides(); |
||||||
|
VMM.fireEvent($slider, "MESSAGE", "TEST"); |
||||||
|
} |
||||||
|
|
||||||
|
function backToCurrentSlide() { |
||||||
|
VMM.Lib.stop($slider_container); |
||||||
|
VMM.Lib.animate($slider_container, config.duration, "easeOutExpo", {"left": -(slides[current_slide].leftpos()) + config.slider.content.padding} ); |
||||||
|
} |
||||||
|
|
||||||
|
/* MESSEGES |
||||||
|
================================================== */ |
||||||
|
function showMessege(e, msg, other) { |
||||||
|
trace("showMessege " + msg); |
||||||
|
//VMM.attachElement($timeline, $feedback);
|
||||||
|
VMM.attachElement($explainer, "<div class='vco-explainer'><div class='vco-explainer-container'><div class='vco-bezel'><div class='vco-gesture-icon'></div>" + "<div class='vco-message'><p>" + msg + "</p></div></div></div></div>"); |
||||||
|
}; |
||||||
|
|
||||||
|
function hideMessege() { |
||||||
|
VMM.Lib.animate($explainer, config.duration, config.ease, {"opacity": 0}, detachMessege); |
||||||
|
}; |
||||||
|
|
||||||
|
function detachMessege() { |
||||||
|
VMM.Lib.detach($explainer); |
||||||
|
} |
||||||
|
|
||||||
|
/* BUILD NAVIGATION |
||||||
|
================================================== */ |
||||||
|
function buildNavigation() { |
||||||
|
|
||||||
|
var temp_icon = "<div class='icon'> </div>"; |
||||||
|
|
||||||
|
navigation.nextBtn = VMM.appendAndGetElement($slider, "<div>", "nav-next"); |
||||||
|
navigation.prevBtn = VMM.appendAndGetElement($slider, "<div>", "nav-previous"); |
||||||
|
navigation.nextBtnContainer = VMM.appendAndGetElement(navigation.nextBtn, "<div>", "nav-container", temp_icon); |
||||||
|
navigation.prevBtnContainer = VMM.appendAndGetElement(navigation.prevBtn, "<div>", "nav-container", temp_icon); |
||||||
|
if (config.type == "timeline") { |
||||||
|
navigation.nextDate = VMM.appendAndGetElement(navigation.nextBtnContainer, "<div>", "date", ""); |
||||||
|
navigation.prevDate = VMM.appendAndGetElement(navigation.prevBtnContainer, "<div>", "date", ""); |
||||||
|
} |
||||||
|
navigation.nextTitle = VMM.appendAndGetElement(navigation.nextBtnContainer, "<div>", "title", ""); |
||||||
|
navigation.prevTitle = VMM.appendAndGetElement(navigation.prevBtnContainer, "<div>", "title", ""); |
||||||
|
|
||||||
|
VMM.bindEvent(".nav-next", onNextClick); |
||||||
|
VMM.bindEvent(".nav-previous", onPrevClick); |
||||||
|
VMM.bindEvent(window, onKeypressNav, 'keydown'); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/* BUILD |
||||||
|
================================================== */ |
||||||
|
function build() { |
||||||
|
var __duration = 3000; |
||||||
|
// Clear out existing content
|
||||||
|
VMM.attachElement(layout, ""); |
||||||
|
|
||||||
|
// Get DOM Objects to local objects
|
||||||
|
$slider = VMM.getElement(layout); |
||||||
|
$slider_mask = VMM.appendAndGetElement($slider, "<div>", "slider-container-mask"); |
||||||
|
$slider_container = VMM.appendAndGetElement($slider_mask, "<div>", "slider-container"); |
||||||
|
$slides_items = VMM.appendAndGetElement($slider_container, "<div>", "slider-item-container"); |
||||||
|
|
||||||
|
|
||||||
|
// BUILD NAVIGATION
|
||||||
|
buildNavigation(); |
||||||
|
|
||||||
|
// ATTACH SLIDES
|
||||||
|
buildSlides(data); |
||||||
|
|
||||||
|
/* MAKE SLIDER DRAGGABLE/TOUCHABLE |
||||||
|
================================================== */ |
||||||
|
|
||||||
|
if (VMM.Browser.device == "tablet" || VMM.Browser.device == "mobile") { |
||||||
|
// Different Animation duration for touch
|
||||||
|
config.duration = 500; |
||||||
|
__duration = 1000; |
||||||
|
|
||||||
|
// Make touchable
|
||||||
|
$dragslide = new VMM.DragSlider(); |
||||||
|
$dragslide.createPanel($slider, $slider_container, "", config.touch, true); |
||||||
|
VMM.bindEvent($dragslide, onDragFinish, 'DRAGUPDATE'); |
||||||
|
|
||||||
|
// EXPLAINER
|
||||||
|
$explainer = VMM.appendAndGetElement($slider_mask, "<div>", "vco-feedback", ""); |
||||||
|
showMessege(null, "Swipe to Navigate"); |
||||||
|
VMM.Lib.height($explainer, config.slider.height); |
||||||
|
VMM.bindEvent($explainer, onExplainerClick); |
||||||
|
VMM.bindEvent($explainer, onExplainerClick, 'touchend'); |
||||||
|
} |
||||||
|
|
||||||
|
reSize(false, true); |
||||||
|
|
||||||
|
|
||||||
|
VMM.Lib.visible(navigation.prevBtn, false); |
||||||
|
goToSlide(config.current_slide, "easeOutExpo", __duration, true, true); |
||||||
|
|
||||||
|
_active = true; |
||||||
|
}; |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,30 @@ |
|||||||
|
/* VeriteCo StoryJS |
||||||
|
================================================== */ |
||||||
|
|
||||||
|
/* * CodeKit Import |
||||||
|
* http://incident57.com/codekit/
|
||||||
|
================================================== */ |
||||||
|
// @codekit-prepend "Core/VMM.Core.js";
|
||||||
|
// @codekit-prepend "Language/VMM.Language.js";
|
||||||
|
// @codekit-prepend "Media/VMM.Media.js";
|
||||||
|
// @codekit-prepend "Slider/VMM.DragSlider.js";
|
||||||
|
// @codekit-prepend "Slider/VMM.Slider.js";
|
||||||
|
// @codekit-prepend "Library/AES.js";
|
||||||
|
// @codekit-prepend "Library/bootstrap-tooltip.js";
|
||||||
|
|
||||||
|
|
||||||
|
if(typeof VMM != 'undefined' && typeof VMM.StoryJS == 'undefined') { |
||||||
|
|
||||||
|
VMM.StoryJS = function() {
|
||||||
|
|
||||||
|
/* PRIVATE VARS |
||||||
|
================================================== */ |
||||||
|
|
||||||
|
/* PUBLIC FUNCTIONS |
||||||
|
================================================== */ |
||||||
|
this.init = function(d) { |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
Default |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-sans: "Helvetica Neue", Helvetica, Arial, sans-serif; |
||||||
|
@font-serif: "Georgia", Times New Roman, Times, serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-serif; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container, { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-serif !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,40 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
PT Serif and PT Sans |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-serif: 'Abril Fatface', cursive; |
||||||
|
@font-sans: 'Average', serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-sans; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
Arvo and PT Sans |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-serif: 'Arvo', serif; |
||||||
|
@font-sans: 'PT Sans', sans-serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-serif; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-serif !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
Bevan and Potano Sans |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-serif: 'Bevan', serif; |
||||||
|
@font-sans: 'Pontano Sans', sans-serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-sans; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
Bree Serif, Open Sans |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-serif: 'Bree Serif', Georgia, serif; |
||||||
|
@font-sans: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-sans; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,45 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
Droid Serif, Droid Sans |
||||||
|
http://www.google.com/webfonts#UsePlace:use/Collection:Droid+Sans:400,700|Droid+Serif:400,700,400italic |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-sans: 'Droid Sans', sans-serif; |
||||||
|
@font-serif: 'Droid Serif', serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-serif; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-serif !important; |
||||||
|
} |
||||||
|
|
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
font-weight: 700; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
Default |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-sans: "Helvetica Neue", Helvetica, Arial, sans-serif; |
||||||
|
@font-serif: "Georgia", Times New Roman, Times, serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-serif; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container, { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-serif !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
Lekton and Molengo |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-serif: 'Molengo', sans-serif; |
||||||
|
@font-sans: 'Lekton', sans-serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-sans; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,40 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
Lora and Istok Web |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
@font-serif: 'Lora', serif; |
||||||
|
@font-sans: 'Istok Web', sans-serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-serif; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-sans !important; |
||||||
|
|
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
font-weight: 700; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,50 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
Merriweather and NewsCycle |
||||||
|
http://www.google.com/webfonts#UsePlace:use/Collection:News+Cycle:400,700|Merriweather:400,700,900 |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-serif: 'Merriweather', serif; |
||||||
|
@font-sans: 'News Cycle', sans-serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-serif; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
p { |
||||||
|
font-size:16px; |
||||||
|
line-height:22px; |
||||||
|
} |
||||||
|
.wikipedia p { |
||||||
|
font-size: 14px !important; |
||||||
|
line-height: 20px !important; |
||||||
|
} |
||||||
|
|
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
font-weight: 900; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,50 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
NewsCycle and Merriweather |
||||||
|
http://www.google.com/webfonts#UsePlace:use/Collection:News+Cycle:400,700|Merriweather:400,700,900 |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-serif: 'Merriweather', serif; |
||||||
|
@font-sans: 'News Cycle', sans-serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-sans; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-serif !important; |
||||||
|
} |
||||||
|
p { |
||||||
|
font-size:16px; |
||||||
|
line-height:22px; |
||||||
|
} |
||||||
|
.wikipedia p { |
||||||
|
font-size: 14px !important; |
||||||
|
line-height: 20px !important; |
||||||
|
} |
||||||
|
|
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans; |
||||||
|
font-weight: 900; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
Nixie One and Ledger |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-serif: 'Nixie One', cursive; |
||||||
|
@font-sans: 'Ledger', serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-sans; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,44 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
PT Sans Narrow, PT Serif and PT Sans |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-serif: 'PT Serif', serif; |
||||||
|
@font-sans: 'PT Sans', sans-serif; |
||||||
|
@font-headline: 'PT Sans Narrow', sans-serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-serif; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-serif !important; |
||||||
|
} |
||||||
|
blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-style: italic; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-headline; |
||||||
|
font-weight: 700; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,40 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
PT Serif and PT Sans |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-serif: 'PT Serif', serif; |
||||||
|
@font-sans: 'PT Sans', sans-serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-serif; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-serif !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans; |
||||||
|
font-weight: 700; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
Pacifico and Arimo |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-serif: 'Pacifico', cursive; |
||||||
|
@font-sans: 'Arimo', sans-serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-sans; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
Playfair Display and Muli |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-serif: 'Playfair Display', serif; |
||||||
|
@font-sans: 'Muli', sans-serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-sans; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
Poiret One and Molengo |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-serif: 'Poiret One', serif; |
||||||
|
@font-sans: 'Molengo', sans-serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-serif; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p { |
||||||
|
font-family: @font-sans !important; |
||||||
|
font-size: 16px !important; |
||||||
|
line-height:22px !important; |
||||||
|
} |
||||||
|
.wikipedia p { |
||||||
|
font-size: 14px !important; |
||||||
|
line-height: 20px !important; |
||||||
|
} |
||||||
|
blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-serif !important; |
||||||
|
} |
||||||
|
|
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,41 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
Rancho and Gudea |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-serif: 'Rancho', cursive; |
||||||
|
@font-sans: 'Gudea', sans-serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-sans; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
|
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
/* |
||||||
|
FONT |
||||||
|
Sansita One and Kameron |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
@font-serif: 'Sansita One', cursive; |
||||||
|
@font-sans: 'Kameron', serif; |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-family: @font-sans; |
||||||
|
/* HEADERS |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
.twitter, .vcard, .messege, .credit, .caption, .zoom-in, .zoom-out, .back-home, .time-interval div, .time-interval-major div, .nav-container { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.timenav, .flag-content, .era { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
} |
||||||
|
/* CONTENT |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
p, blockquote, blockquote p, .twitter blockquote p { |
||||||
|
font-family: @font-sans !important; |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-family: @font-serif; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.timeline-tooltip { |
||||||
|
font-family: @font-sans; |
||||||
|
} |
@ -0,0 +1,453 @@ |
|||||||
|
/* |
||||||
|
GFX |
||||||
|
Icons etc |
||||||
|
----------------------------------------------------------------- */ |
||||||
|
.thumbnail { |
||||||
|
.base-sprite(); |
||||||
|
} |
||||||
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), |
||||||
|
only screen and (min-device-pixel-ratio: 2) { |
||||||
|
.thumbnail { |
||||||
|
/* Reference the @2x Sprite */ |
||||||
|
.base-sprite2x(); |
||||||
|
/* Translate the @2x sprite's dimensions back to 1x */ |
||||||
|
background-size: 352px 260px; |
||||||
|
} |
||||||
|
} |
||||||
|
/* Feature Navigation |
||||||
|
----------------------------------------------------------------- */ |
||||||
|
.icon-previous() { |
||||||
|
height:24px; |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -160px 0; width: 24px; height: 24px; |
||||||
|
overflow:hidden; |
||||||
|
} |
||||||
|
.icon-previous2x() { |
||||||
|
height:24px; |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -160px 0; width: 24px; height: 24px; |
||||||
|
overflow:hidden; |
||||||
|
} |
||||||
|
|
||||||
|
.icon-next() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -184px 0; width: 24px; height: 24px; |
||||||
|
height:24px; |
||||||
|
overflow:hidden; |
||||||
|
} |
||||||
|
.icon-next2x() { |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -184px 0; width: 24px; height: 24px; |
||||||
|
height:24px; |
||||||
|
overflow:hidden; |
||||||
|
} |
||||||
|
|
||||||
|
.icon-previous-light() { |
||||||
|
height:24px; |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -208px 0; width: 24px; height: 24px; |
||||||
|
overflow:hidden; |
||||||
|
} |
||||||
|
.icon-previous-light2x() { |
||||||
|
height:24px; |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -208px 0; width: 24px; height: 24px; |
||||||
|
overflow:hidden; |
||||||
|
} |
||||||
|
|
||||||
|
.icon-next-light() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -232px 0; width: 24px; height: 24px; |
||||||
|
height:24px; |
||||||
|
overflow:hidden; |
||||||
|
} |
||||||
|
.icon-next-light2x() { |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -232px 0; width: 24px; height: 24px; |
||||||
|
height:24px; |
||||||
|
overflow:hidden; |
||||||
|
} |
||||||
|
|
||||||
|
/* TimeNav Navigation |
||||||
|
----------------------------------------------------------------- */ |
||||||
|
.icon-zoom-in() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -256px 0; width: 24px; height: 24px; |
||||||
|
} |
||||||
|
.icon-zoom-in2x() { |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -256px 0; width: 24px; height: 24px; |
||||||
|
} |
||||||
|
|
||||||
|
.icon-zoom-out() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -280px 0; width: 24px; height: 24px; |
||||||
|
} |
||||||
|
.icon-zoom-out2x() { |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -280px 0; width: 24px; height: 24px; |
||||||
|
} |
||||||
|
|
||||||
|
.icon-back-home() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -328px 0; width: 24px; height: 24px; |
||||||
|
} |
||||||
|
.icon-back-home2x() { |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -328px 0; width: 24px; height: 24px; |
||||||
|
} |
||||||
|
/* TimeNav Navigation Touch |
||||||
|
----------------------------------------------------------------- */ |
||||||
|
|
||||||
|
.icon-touch-zoom-in() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -208px -160px; width: 40px; height: 40px; |
||||||
|
} |
||||||
|
.icon-touch-zoom-in2x() { |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -208px -160px; width: 40px; height: 40px; |
||||||
|
} |
||||||
|
|
||||||
|
.icon-touch-zoom-out() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -256px -160px; width: 40px; height: 40px; |
||||||
|
} |
||||||
|
.icon-touch-zoom-out2x() { |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -256px -160px; width: 40px; height: 40px; |
||||||
|
} |
||||||
|
|
||||||
|
.icon-touch-back-home() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -304px -160px; width: 40px; height: 40px; |
||||||
|
} |
||||||
|
.icon-touch-back-home2x() { |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -304px -160px; width: 40px; height: 40px; |
||||||
|
} |
||||||
|
|
||||||
|
.icon-touch-gesture() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -160px -160px; width: 48px; height: 48px; |
||||||
|
} |
||||||
|
.icon-touch-gesture2x() { |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -160px -160px; width: 48px; height: 48px; |
||||||
|
} |
||||||
|
/* Time Flag |
||||||
|
----------------------------------------------------------------- */ |
||||||
|
.time-flag() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: 0 0; width:153px; height: 53px; |
||||||
|
} |
||||||
|
.time-flag2x() { |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: 0 0; width:153px; height: 53px; |
||||||
|
} |
||||||
|
|
||||||
|
.time-flag-active() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: 0 -53px; width:153px; height: 53px; |
||||||
|
} |
||||||
|
.time-flag-active2x() { |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: 0 -53px; width:153px; height: 53px; |
||||||
|
} |
||||||
|
|
||||||
|
.time-flag-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: 0 -135px; width:153px; height: 26px; |
||||||
|
} |
||||||
|
.time-flag-small2x() { |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: 0 -135px; width:153px; height: 26px; |
||||||
|
} |
||||||
|
|
||||||
|
.time-flag-small-active() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: 0 -109px; width:153px; height: 26px; |
||||||
|
} |
||||||
|
.time-flag-small-active2x() { |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: 0 -109px; width:153px; height: 26px; |
||||||
|
} |
||||||
|
|
||||||
|
/* Thumbnail Icons |
||||||
|
----------------------------------------------------------------- */ |
||||||
|
.icon-map() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -208px -24px; |
||||||
|
} |
||||||
|
.icon-mappin() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -208px -48px; |
||||||
|
} |
||||||
|
.icon-website() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -232px -24px; |
||||||
|
} |
||||||
|
.icon-document() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -256px -48px; |
||||||
|
} |
||||||
|
.icon-quote() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -232px -48px; |
||||||
|
} |
||||||
|
.icon-plaintext() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -280px -48px; |
||||||
|
} |
||||||
|
.icon-twitter() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -256px -24px; |
||||||
|
} |
||||||
|
.icon-video() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -328px -24px; |
||||||
|
} |
||||||
|
.icon-audio() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -304px -24px; |
||||||
|
} |
||||||
|
.icon-photo() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -280px -24px; |
||||||
|
} |
||||||
|
.icon-link() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -184px -72px; |
||||||
|
} |
||||||
|
.icon-storify() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -328px -96px; |
||||||
|
} |
||||||
|
.icon-wikipedia() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -184px -48px; |
||||||
|
} |
||||||
|
.icon-instagram() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -208px -96px; |
||||||
|
} |
||||||
|
.icon-vine() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -232px -72px; |
||||||
|
} |
||||||
|
.icon-googleplus() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -208px -72px; |
||||||
|
} |
||||||
|
.icon-vimeo() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -328px -48px; |
||||||
|
} |
||||||
|
.icon-youtube() { |
||||||
|
//.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -328px -72px; |
||||||
|
} |
||||||
|
|
||||||
|
/* Thumbnail Icons Small 10px |
||||||
|
----------------------------------------------------------------- */ |
||||||
|
.icon-map-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -208px -120px; |
||||||
|
} |
||||||
|
.icon-mappin-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -208px -120px; |
||||||
|
} |
||||||
|
.icon-website-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -232px -120px; |
||||||
|
} |
||||||
|
.icon-document-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -256px -130px; |
||||||
|
} |
||||||
|
.icon-quote-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -232px -130px; |
||||||
|
} |
||||||
|
.icon-plaintext-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -280px -130px; |
||||||
|
} |
||||||
|
.icon-twitter-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -256px -120px; |
||||||
|
} |
||||||
|
.icon-video-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -328px -120px; |
||||||
|
} |
||||||
|
.icon-audio-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -304px -120px; |
||||||
|
} |
||||||
|
.icon-photo-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -280px -120px; |
||||||
|
} |
||||||
|
.icon-link-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -232px -120px; |
||||||
|
} |
||||||
|
.icon-wikipedia-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -184px -120px; |
||||||
|
} |
||||||
|
.icon-instagram-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -208px -96px; |
||||||
|
} |
||||||
|
.icon-googleplus-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -208px -130px; |
||||||
|
} |
||||||
|
.icon-vine-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -160px -120px; |
||||||
|
} |
||||||
|
.icon-vimeo-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -328px -130px; |
||||||
|
} |
||||||
|
.icon-youtube-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -304px -130px; |
||||||
|
} |
||||||
|
.icon-storify-small() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -184px -130px; |
||||||
|
} |
||||||
|
|
||||||
|
/* Thumbnail Icons (Extra) |
||||||
|
----------------------------------------------------------------- */ |
||||||
|
.icon-twitter-inline() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -160px -96px; |
||||||
|
} |
||||||
|
.icon-googleplus-inline() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -208px -96px; |
||||||
|
} |
||||||
|
.icon-storify-inline() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -184px -96px; |
||||||
|
} |
||||||
|
.icon-storify-full() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -280px -96px; |
||||||
|
width:@base-thumb*2; |
||||||
|
//height:12px; |
||||||
|
} |
||||||
|
.icon-instagram-full() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -232px -96px; |
||||||
|
width:@base-thumb*2; |
||||||
|
height:@base-thumb; |
||||||
|
} |
||||||
|
|
||||||
|
/* Current Time Indicator |
||||||
|
----------------------------------------------------------------- */ |
||||||
|
.icon-currenttime() { |
||||||
|
.base-sprite(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -160px -48px; |
||||||
|
width:24px; |
||||||
|
height:24px; |
||||||
|
} |
||||||
|
.icon-currenttime2x() { |
||||||
|
.base-sprite2x(); |
||||||
|
background-repeat:no-repeat; |
||||||
|
background-position: -160px -48px; |
||||||
|
width:24px; |
||||||
|
height:24px; |
||||||
|
} |
||||||
|
/* Time Tics |
||||||
|
----------------------------------------------------------------- */ |
||||||
|
.background-time-tic() { |
||||||
|
background: @color-background url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAMAAAA8JaR5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRFzMzM////040VdgAAAAJ0Uk5T/wDltzBKAAAAEklEQVR42mJgYAQCBrwkQIABAAHIABkHeR3aAAAAAElFTkSuQmCC); |
||||||
|
} |
||||||
|
|
||||||
|
.background-time-interval() { |
||||||
|
//background: @color-base url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAMCAMAAACdvocfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRFzMzM////040VdgAAAAJ0Uk5T/wDltzBKAAAAEklEQVR42mJgYAQCBopJgAADAAbwADHy2qHzAAAAAElFTkSuQmCC); |
||||||
|
//background-repeat: no-repeat; |
||||||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAMCAMAAACdvocfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRFzMzM////040VdgAAAAJ0Uk5T/wDltzBKAAAAEklEQVR42mJgYAQCBopJgAADAAbwADHy2qHzAAAAAElFTkSuQmCC); |
||||||
|
|
||||||
|
} |
||||||
|
.background-time-interval-major() { |
||||||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQAQMAAADtUYf0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyOTAzRjI3REIzNDcxMUUxQUQ3QUZCOThEODQ1NDhCNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyOTAzRjI3RUIzNDcxMUUxQUQ3QUZCOThEODQ1NDhCNyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI5MDNGMjdCQjM0NzExRTFBRDdBRkI5OEQ4NDU0OEI3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI5MDNGMjdDQjM0NzExRTFBRDdBRkI5OEQ4NDU0OEI3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+DPWNfQAAAANQTFRFzMzMylJEJwAAAAtJREFUCB1jYMAPAAAgAAHDvpOtAAAAAElFTkSuQmCC); |
||||||
|
} |
@ -0,0 +1,361 @@ |
|||||||
|
This Source Code Form is subject to the terms of the Mozilla Public |
||||||
|
License, v. 2.0. If a copy of the MPL was not distributed with this |
||||||
|
file, You can obtain one at http://mozilla.org/MPL/2.0/. |
||||||
|
|
||||||
|
Mozilla Public License Version 2.0 |
||||||
|
================================== |
||||||
|
|
||||||
|
1. Definitions |
||||||
|
-------------- |
||||||
|
|
||||||
|
1.1. "Contributor" |
||||||
|
means each individual or legal entity that creates, contributes to |
||||||
|
the creation of, or owns Covered Software. |
||||||
|
|
||||||
|
1.2. "Contributor Version" |
||||||
|
means the combination of the Contributions of others (if any) used |
||||||
|
by a Contributor and that particular Contributor's Contribution. |
||||||
|
|
||||||
|
1.3. "Contribution" |
||||||
|
means Covered Software of a particular Contributor. |
||||||
|
|
||||||
|
1.4. "Covered Software" |
||||||
|
means Source Code Form to which the initial Contributor has attached |
||||||
|
the notice in Exhibit A, the Executable Form of such Source Code |
||||||
|
Form, and Modifications of such Source Code Form, in each case |
||||||
|
including portions thereof. |
||||||
|
|
||||||
|
1.5. "Incompatible With Secondary Licenses" |
||||||
|
means |
||||||
|
|
||||||
|
(a) that the initial Contributor has attached the notice described |
||||||
|
in Exhibit B to the Covered Software; or |
||||||
|
|
||||||
|
(b) that the Covered Software was made available under the terms of |
||||||
|
version 1.1 or earlier of the License, but not also under the |
||||||
|
terms of a Secondary License. |
||||||
|
|
||||||
|
1.6. "Executable Form" |
||||||
|
means any form of the work other than Source Code Form. |
||||||
|
|
||||||
|
1.7. "Larger Work" |
||||||
|
means a work that combines Covered Software with other material, in |
||||||
|
a separate file or files, that is not Covered Software. |
||||||
|
|
||||||
|
1.8. "License" |
||||||
|
means this document. |
||||||
|
|
||||||
|
1.9. "Licensable" |
||||||
|
means having the right to grant, to the maximum extent possible, |
||||||
|
whether at the time of the initial grant or subsequently, any and |
||||||
|
all of the rights conveyed by this License. |
||||||
|
|
||||||
|
1.10. "Modifications" |
||||||
|
means any of the following: |
||||||
|
|
||||||
|
(a) any file in Source Code Form that results from an addition to, |
||||||
|
deletion from, or modification of the contents of Covered |
||||||
|
Software; or |
||||||
|
|
||||||
|
(b) any new file in Source Code Form that contains any Covered |
||||||
|
Software. |
||||||
|
|
||||||
|
1.11. "Patent Claims" of a Contributor |
||||||
|
means any patent claim(s), including without limitation, method, |
||||||
|
process, and apparatus claims, in any patent Licensable by such |
||||||
|
Contributor that would be infringed, but for the grant of the |
||||||
|
License, by the making, using, selling, offering for sale, having |
||||||
|
made, import, or transfer of either its Contributions or its |
||||||
|
Contributor Version. |
||||||
|
|
||||||
|
1.12. "Secondary License" |
||||||
|
means either the GNU General Public License, Version 2.0, the GNU |
||||||
|
Lesser General Public License, Version 2.1, the GNU Affero General |
||||||
|
Public License, Version 3.0, or any later versions of those |
||||||
|
licenses. |
||||||
|
|
||||||
|
1.13. "Source Code Form" |
||||||
|
means the form of the work preferred for making modifications. |
||||||
|
|
||||||
|
1.14. "You" (or "Your") |
||||||
|
means an individual or a legal entity exercising rights under this |
||||||
|
License. For legal entities, "You" includes any entity that |
||||||
|
controls, is controlled by, or is under common control with You. For |
||||||
|
purposes of this definition, "control" means (a) the power, direct |
||||||
|
or indirect, to cause the direction or management of such entity, |
||||||
|
whether by contract or otherwise, or (b) ownership of more than |
||||||
|
fifty percent (50%) of the outstanding shares or beneficial |
||||||
|
ownership of such entity. |
||||||
|
|
||||||
|
2. License Grants and Conditions |
||||||
|
-------------------------------- |
||||||
|
|
||||||
|
2.1. Grants |
||||||
|
|
||||||
|
Each Contributor hereby grants You a world-wide, royalty-free, |
||||||
|
non-exclusive license: |
||||||
|
|
||||||
|
(a) under intellectual property rights (other than patent or trademark) |
||||||
|
Licensable by such Contributor to use, reproduce, make available, |
||||||
|
modify, display, perform, distribute, and otherwise exploit its |
||||||
|
Contributions, either on an unmodified basis, with Modifications, or |
||||||
|
as part of a Larger Work; and |
||||||
|
|
||||||
|
(b) under Patent Claims of such Contributor to make, use, sell, offer |
||||||
|
for sale, have made, import, and otherwise transfer either its |
||||||
|
Contributions or its Contributor Version. |
||||||
|
|
||||||
|
2.2. Effective Date |
||||||
|
|
||||||
|
The licenses granted in Section 2.1 with respect to any Contribution |
||||||
|
become effective for each Contribution on the date the Contributor first |
||||||
|
distributes such Contribution. |
||||||
|
|
||||||
|
2.3. Limitations on Grant Scope |
||||||
|
|
||||||
|
The licenses granted in this Section 2 are the only rights granted under |
||||||
|
this License. No additional rights or licenses will be implied from the |
||||||
|
distribution or licensing of Covered Software under this License. |
||||||
|
Notwithstanding Section 2.1(b) above, no patent license is granted by a |
||||||
|
Contributor: |
||||||
|
|
||||||
|
(a) for any code that a Contributor has removed from Covered Software; |
||||||
|
or |
||||||
|
|
||||||
|
(b) for infringements caused by: (i) Your and any other third party's |
||||||
|
modifications of Covered Software, or (ii) the combination of its |
||||||
|
Contributions with other software (except as part of its Contributor |
||||||
|
Version); or |
||||||
|
|
||||||
|
(c) under Patent Claims infringed by Covered Software in the absence of |
||||||
|
its Contributions. |
||||||
|
|
||||||
|
This License does not grant any rights in the trademarks, service marks, |
||||||
|
or logos of any Contributor (except as may be necessary to comply with |
||||||
|
the notice requirements in Section 3.4). |
||||||
|
|
||||||
|
2.4. Subsequent Licenses |
||||||
|
|
||||||
|
No Contributor makes additional grants as a result of Your choice to |
||||||
|
distribute the Covered Software under a subsequent version of this |
||||||
|
License (see Section 10.2) or under the terms of a Secondary License (if |
||||||
|
permitted under the terms of Section 3.3). |
||||||
|
|
||||||
|
2.5. Representation |
||||||
|
|
||||||
|
Each Contributor represents that the Contributor believes its |
||||||
|
Contributions are its original creation(s) or it has sufficient rights |
||||||
|
to grant the rights to its Contributions conveyed by this License. |
||||||
|
|
||||||
|
2.6. Fair Use |
||||||
|
|
||||||
|
This License is not intended to limit any rights You have under |
||||||
|
applicable copyright doctrines of fair use, fair dealing, or other |
||||||
|
equivalents. |
||||||
|
|
||||||
|
2.7. Conditions |
||||||
|
|
||||||
|
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted |
||||||
|
in Section 2.1. |
||||||
|
|
||||||
|
3. Responsibilities |
||||||
|
------------------- |
||||||
|
|
||||||
|
3.1. Distribution of Source Form |
||||||
|
|
||||||
|
All distribution of Covered Software in Source Code Form, including any |
||||||
|
Modifications that You create or to which You contribute, must be under |
||||||
|
the terms of this License. You must inform recipients that the Source |
||||||
|
Code Form of the Covered Software is governed by the terms of this |
||||||
|
License, and how they can obtain a copy of this License. You may not |
||||||
|
attempt to alter or restrict the recipients' rights in the Source Code |
||||||
|
Form. |
||||||
|
|
||||||
|
3.2. Distribution of Executable Form |
||||||
|
|
||||||
|
If You distribute Covered Software in Executable Form then: |
||||||
|
|
||||||
|
(a) such Covered Software must also be made available in Source Code |
||||||
|
Form, as described in Section 3.1, and You must inform recipients of |
||||||
|
the Executable Form how they can obtain a copy of such Source Code |
||||||
|
Form by reasonable means in a timely manner, at a charge no more |
||||||
|
than the cost of distribution to the recipient; and |
||||||
|
|
||||||
|
(b) You may distribute such Executable Form under the terms of this |
||||||
|
License, or sublicense it under different terms, provided that the |
||||||
|
license for the Executable Form does not attempt to limit or alter |
||||||
|
the recipients' rights in the Source Code Form under this License. |
||||||
|
|
||||||
|
3.3. Distribution of a Larger Work |
||||||
|
|
||||||
|
You may create and distribute a Larger Work under terms of Your choice, |
||||||
|
provided that You also comply with the requirements of this License for |
||||||
|
the Covered Software. If the Larger Work is a combination of Covered |
||||||
|
Software with a work governed by one or more Secondary Licenses, and the |
||||||
|
Covered Software is not Incompatible With Secondary Licenses, this |
||||||
|
License permits You to additionally distribute such Covered Software |
||||||
|
under the terms of such Secondary License(s), so that the recipient of |
||||||
|
the Larger Work may, at their option, further distribute the Covered |
||||||
|
Software under the terms of either this License or such Secondary |
||||||
|
License(s). |
||||||
|
|
||||||
|
3.4. Notices |
||||||
|
|
||||||
|
You may not remove or alter the substance of any license notices |
||||||
|
(including copyright notices, patent notices, disclaimers of warranty, |
||||||
|
or limitations of liability) contained within the Source Code Form of |
||||||
|
the Covered Software, except that You may alter any license notices to |
||||||
|
the extent required to remedy known factual inaccuracies. |
||||||
|
|
||||||
|
3.5. Application of Additional Terms |
||||||
|
|
||||||
|
You may choose to offer, and to charge a fee for, warranty, support, |
||||||
|
indemnity or liability obligations to one or more recipients of Covered |
||||||
|
Software. However, You may do so only on Your own behalf, and not on |
||||||
|
behalf of any Contributor. You must make it absolutely clear that any |
||||||
|
such warranty, support, indemnity, or liability obligation is offered by |
||||||
|
You alone, and You hereby agree to indemnify every Contributor for any |
||||||
|
liability incurred by such Contributor as a result of warranty, support, |
||||||
|
indemnity or liability terms You offer. You may include additional |
||||||
|
disclaimers of warranty and limitations of liability specific to any |
||||||
|
jurisdiction. |
||||||
|
|
||||||
|
4. Inability to Comply Due to Statute or Regulation |
||||||
|
--------------------------------------------------- |
||||||
|
|
||||||
|
If it is impossible for You to comply with any of the terms of this |
||||||
|
License with respect to some or all of the Covered Software due to |
||||||
|
statute, judicial order, or regulation then You must: (a) comply with |
||||||
|
the terms of this License to the maximum extent possible; and (b) |
||||||
|
describe the limitations and the code they affect. Such description must |
||||||
|
be placed in a text file included with all distributions of the Covered |
||||||
|
Software under this License. Except to the extent prohibited by statute |
||||||
|
or regulation, such description must be sufficiently detailed for a |
||||||
|
recipient of ordinary skill to be able to understand it. |
||||||
|
|
||||||
|
5. Termination |
||||||
|
-------------- |
||||||
|
|
||||||
|
5.1. The rights granted under this License will terminate automatically |
||||||
|
if You fail to comply with any of its terms. However, if You become |
||||||
|
compliant, then the rights granted under this License from a particular |
||||||
|
Contributor are reinstated (a) provisionally, unless and until such |
||||||
|
Contributor explicitly and finally terminates Your grants, and (b) on an |
||||||
|
ongoing basis, if such Contributor fails to notify You of the |
||||||
|
non-compliance by some reasonable means prior to 60 days after You have |
||||||
|
come back into compliance. Moreover, Your grants from a particular |
||||||
|
Contributor are reinstated on an ongoing basis if such Contributor |
||||||
|
notifies You of the non-compliance by some reasonable means, this is the |
||||||
|
first time You have received notice of non-compliance with this License |
||||||
|
from such Contributor, and You become compliant prior to 30 days after |
||||||
|
Your receipt of the notice. |
||||||
|
|
||||||
|
5.2. If You initiate litigation against any entity by asserting a patent |
||||||
|
infringement claim (excluding declaratory judgment actions, |
||||||
|
counter-claims, and cross-claims) alleging that a Contributor Version |
||||||
|
directly or indirectly infringes any patent, then the rights granted to |
||||||
|
You by any and all Contributors for the Covered Software under Section |
||||||
|
2.1 of this License shall terminate. |
||||||
|
|
||||||
|
5.3. In the event of termination under Sections 5.1 or 5.2 above, all |
||||||
|
end user license agreements (excluding distributors and resellers) which |
||||||
|
have been validly granted by You or Your distributors under this License |
||||||
|
prior to termination shall survive termination. |
||||||
|
|
||||||
|
************************************************************************ |
||||||
|
* * |
||||||
|
* 6. Disclaimer of Warranty * |
||||||
|
* ------------------------- * |
||||||
|
* * |
||||||
|
* Covered Software is provided under this License on an "as is" * |
||||||
|
* basis, without warranty of any kind, either expressed, implied, or * |
||||||
|
* statutory, including, without limitation, warranties that the * |
||||||
|
* Covered Software is free of defects, merchantable, fit for a * |
||||||
|
* particular purpose or non-infringing. The entire risk as to the * |
||||||
|
* quality and performance of the Covered Software is with You. * |
||||||
|
* Should any Covered Software prove defective in any respect, You * |
||||||
|
* (not any Contributor) assume the cost of any necessary servicing, * |
||||||
|
* repair, or correction. This disclaimer of warranty constitutes an * |
||||||
|
* essential part of this License. No use of any Covered Software is * |
||||||
|
* authorized under this License except under this disclaimer. * |
||||||
|
* * |
||||||
|
************************************************************************ |
||||||
|
|
||||||
|
************************************************************************ |
||||||
|
* * |
||||||
|
* 7. Limitation of Liability * |
||||||
|
* -------------------------- * |
||||||
|
* * |
||||||
|
* Under no circumstances and under no legal theory, whether tort * |
||||||
|
* (including negligence), contract, or otherwise, shall any * |
||||||
|
* Contributor, or anyone who distributes Covered Software as * |
||||||
|
* permitted above, be liable to You for any direct, indirect, * |
||||||
|
* special, incidental, or consequential damages of any character * |
||||||
|
* including, without limitation, damages for lost profits, loss of * |
||||||
|
* goodwill, work stoppage, computer failure or malfunction, or any * |
||||||
|
* and all other commercial damages or losses, even if such party * |
||||||
|
* shall have been informed of the possibility of such damages. This * |
||||||
|
* limitation of liability shall not apply to liability for death or * |
||||||
|
* personal injury resulting from such party's negligence to the * |
||||||
|
* extent applicable law prohibits such limitation. Some * |
||||||
|
* jurisdictions do not allow the exclusion or limitation of * |
||||||
|
* incidental or consequential damages, so this exclusion and * |
||||||
|
* limitation may not apply to You. * |
||||||
|
* * |
||||||
|
************************************************************************ |
||||||
|
|
||||||
|
8. Litigation |
||||||
|
------------- |
||||||
|
|
||||||
|
Any litigation relating to this License may be brought only in the |
||||||
|
courts of a jurisdiction where the defendant maintains its principal |
||||||
|
place of business and such litigation shall be governed by laws of that |
||||||
|
jurisdiction, without reference to its conflict-of-law provisions. |
||||||
|
Nothing in this Section shall prevent a party's ability to bring |
||||||
|
cross-claims or counter-claims. |
||||||
|
|
||||||
|
9. Miscellaneous |
||||||
|
---------------- |
||||||
|
|
||||||
|
This License represents the complete agreement concerning the subject |
||||||
|
matter hereof. If any provision of this License is held to be |
||||||
|
unenforceable, such provision shall be reformed only to the extent |
||||||
|
necessary to make it enforceable. Any law or regulation which provides |
||||||
|
that the language of a contract shall be construed against the drafter |
||||||
|
shall not be used to construe this License against a Contributor. |
||||||
|
|
||||||
|
10. Versions of the License |
||||||
|
--------------------------- |
||||||
|
|
||||||
|
10.1. New Versions |
||||||
|
|
||||||
|
Mozilla Foundation is the license steward. Except as provided in Section |
||||||
|
10.3, no one other than the license steward has the right to modify or |
||||||
|
publish new versions of this License. Each version will be given a |
||||||
|
distinguishing version number. |
||||||
|
|
||||||
|
10.2. Effect of New Versions |
||||||
|
|
||||||
|
You may distribute the Covered Software under the terms of the version |
||||||
|
of the License under which You originally received the Covered Software, |
||||||
|
or under the terms of any subsequent version published by the license |
||||||
|
steward. |
||||||
|
|
||||||
|
10.3. Modified Versions |
||||||
|
|
||||||
|
If you create software not governed by this License, and you want to |
||||||
|
create a new license for such software, you may create and use a |
||||||
|
modified version of this License if you rename the license and remove |
||||||
|
any references to the name of the license steward (except to note that |
||||||
|
such modified license differs from this License). |
||||||
|
|
||||||
|
10.4. Distributing Source Code Form that is Incompatible With Secondary |
||||||
|
Licenses |
||||||
|
|
||||||
|
If You choose to distribute Source Code Form that is Incompatible With |
||||||
|
Secondary Licenses under the terms of this version of the License, the |
||||||
|
notice described in Exhibit B of this License must be attached. |
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------- |
||||||
|
|
@ -0,0 +1,236 @@ |
|||||||
|
/* Mixins.less |
||||||
|
* Snippets of reusable CSS to develop faster and keep code readable |
||||||
|
* ----------------------------------------------------------------- */ |
||||||
|
|
||||||
|
// Text Font |
||||||
|
.text-font(@fontsize: 15px) { |
||||||
|
font-size: @fontsize; |
||||||
|
line-height: round((@fontsize/100) * 130); |
||||||
|
} |
||||||
|
// Border Radius |
||||||
|
.border-radius(@radius: 5px) { |
||||||
|
-webkit-border-radius: @radius; |
||||||
|
-moz-border-radius: @radius; |
||||||
|
border-radius: @radius; |
||||||
|
} |
||||||
|
// User Select |
||||||
|
.user-select(@userselect) { |
||||||
|
-webkit-user-select: @userselect; |
||||||
|
-moz-user-select: @userselect; |
||||||
|
user-select: @userselect; |
||||||
|
} |
||||||
|
// Box Shadow |
||||||
|
.box-shadow(@shadow: 1px 1px 7px rgba(0,0,0,.30)) { |
||||||
|
-webkit-box-shadow: @shadow; |
||||||
|
-moz-box-shadow: @shadow; |
||||||
|
box-shadow: @shadow; |
||||||
|
} |
||||||
|
// Media Shadow |
||||||
|
.media-shadow(@shadow: 0 1px 3px 0px @color-dark-fourth) { |
||||||
|
-webkit-box-shadow: @shadow; |
||||||
|
-moz-box-shadow: @shadow; |
||||||
|
box-shadow: @shadow; |
||||||
|
border: 1px solid; |
||||||
|
border-color: @color-line @color-dark-fourth @color-dark-fourth @color-line; |
||||||
|
} |
||||||
|
// Transform |
||||||
|
.transform(@transform) { |
||||||
|
-webkit-transform: @transform; |
||||||
|
-moz-transform: @transform; |
||||||
|
-ms-transform: @transform; |
||||||
|
-o-transform: @transform; |
||||||
|
transform: @transform; |
||||||
|
} |
||||||
|
// Transitions |
||||||
|
.transition(@transition) { |
||||||
|
-webkit-transition: @transition; |
||||||
|
-moz-transition: @transition; |
||||||
|
-ms-transition: @transition; |
||||||
|
-o-transition: @transition; |
||||||
|
transition: @transition; |
||||||
|
} |
||||||
|
// Background clipping |
||||||
|
.background-clip(@clip) { |
||||||
|
-webkit-background-clip: @clip; |
||||||
|
-moz-background-clip: @clip; |
||||||
|
background-clip: @clip; |
||||||
|
} |
||||||
|
// Opacity |
||||||
|
.opacity(@opacity: 100) { |
||||||
|
filter: e(%("alpha(opacity=%d)", @opacity)); |
||||||
|
-khtml-opacity: @opacity / 100; |
||||||
|
-moz-opacity: @opacity / 100; |
||||||
|
opacity: @opacity / 100; |
||||||
|
} |
||||||
|
// Hyphens |
||||||
|
.hyphens(@hyphens: auto) { |
||||||
|
-webkit-hyphens:@hyphens; |
||||||
|
-moz-hyphens:@hyphens; |
||||||
|
-ms-hyphens:@hyphens; |
||||||
|
hyphens:@hyphens; |
||||||
|
} |
||||||
|
// Clear Fix |
||||||
|
.clearfix() { |
||||||
|
*zoom: 1; |
||||||
|
&:before, |
||||||
|
&:after { |
||||||
|
display: table; |
||||||
|
content: ""; |
||||||
|
} |
||||||
|
&:after { |
||||||
|
clear: both; |
||||||
|
} |
||||||
|
} |
||||||
|
// Reset filters for IE |
||||||
|
.reset-filter() { |
||||||
|
filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); |
||||||
|
} |
||||||
|
// Center-align a block level element |
||||||
|
.center-block() { |
||||||
|
display: block; |
||||||
|
margin-left: auto; |
||||||
|
margin-right: auto; |
||||||
|
} |
||||||
|
// Button backgrounds |
||||||
|
// ------------------ |
||||||
|
.buttonBackground(@startColor, @endColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) { |
||||||
|
// gradientBar will set the background to a pleasing blend of these, to support IE<=9 |
||||||
|
.gradientBar(@startColor, @endColor, @textColor, @textShadow); |
||||||
|
*background-color: @endColor; /* Darken IE7 buttons by default so they stand out more given they won't have borders */ |
||||||
|
.reset-filter(); |
||||||
|
|
||||||
|
// in these cases the gradient won't cover the background, so we override |
||||||
|
&:hover, &:active, &.active, &.disabled, &[disabled] { |
||||||
|
color: @textColor; |
||||||
|
background-color: @endColor; |
||||||
|
*background-color: darken(@endColor, 5%); |
||||||
|
} |
||||||
|
|
||||||
|
// IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves |
||||||
|
&:active, |
||||||
|
&.active { |
||||||
|
background-color: darken(@endColor, 10%) e("\9"); |
||||||
|
} |
||||||
|
} |
||||||
|
// Font Stacks |
||||||
|
#font { |
||||||
|
.shorthand(@weight: normal, @size: 14px, @lineHeight: 20px) { |
||||||
|
font-size: @size; |
||||||
|
font-weight: @weight; |
||||||
|
line-height: @lineHeight; |
||||||
|
} |
||||||
|
.sans-serif(@weight: normal, @size: 14px, @lineHeight: 20px) { |
||||||
|
font-family: @font-sansserif; |
||||||
|
font-size: @size; |
||||||
|
font-weight: @weight; |
||||||
|
line-height: @lineHeight; |
||||||
|
} |
||||||
|
.font-body(@weight: normal, @size: 14px, @lineHeight: 20px) { |
||||||
|
font-family: @fontBody, Helvetica, Arial, sans-serif; |
||||||
|
font-size: @size; |
||||||
|
font-weight: @weight; |
||||||
|
line-height: @lineHeight; |
||||||
|
} |
||||||
|
.font-header(@weight: normal, @size: 14px, @lineHeight: 20px) { |
||||||
|
font-family: @fontHeader; |
||||||
|
font-size: @size; |
||||||
|
font-weight: @weight; |
||||||
|
line-height: @lineHeight; |
||||||
|
} |
||||||
|
.serif(@weight: normal, @size: 14px, @lineHeight: 20px) { |
||||||
|
font-family: @font-serif; |
||||||
|
font-size: @size; |
||||||
|
font-weight: @weight; |
||||||
|
line-height: @lineHeight; |
||||||
|
} |
||||||
|
.monospace(@weight: normal, @size: 12px, @lineHeight: 20px) { |
||||||
|
font-family: "Monaco", Courier New, monospace; |
||||||
|
font-size: @size; |
||||||
|
font-weight: @weight; |
||||||
|
line-height: @lineHeight; |
||||||
|
} |
||||||
|
|
||||||
|
.navigation(@weight: normal, @size: 14px, @lineHeight: 20px) { |
||||||
|
font-family: @font-sansserif; |
||||||
|
font-size: @size; |
||||||
|
font-weight: @weight; |
||||||
|
line-height: @lineHeight; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// CSS3 Content Columns |
||||||
|
.content-columns(@columnCount, @columnGap: 20px) { |
||||||
|
-webkit-column-count: @columnCount; |
||||||
|
-moz-column-count: @columnCount; |
||||||
|
column-count: @columnCount; |
||||||
|
-webkit-column-gap: @columnGap; |
||||||
|
-moz-column-gap: @columnGap; |
||||||
|
column-gap: @columnGap; |
||||||
|
} |
||||||
|
|
||||||
|
// Add an alphatransparency value to any background or border color (via Elyse Holladay) |
||||||
|
#translucent { |
||||||
|
.background(@color: @white, @alpha: 1) { |
||||||
|
background-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha); |
||||||
|
} |
||||||
|
.border(@color: @white, @alpha: 1) { |
||||||
|
border-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha); |
||||||
|
background-clip: padding-box; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// Gradient Bar Colors for buttons and alerts |
||||||
|
.gradientBar(@primaryColor, @secondaryColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) { |
||||||
|
color: @textColor; |
||||||
|
text-shadow: @textShadow; |
||||||
|
#gradient > .vertical(@primaryColor, @secondaryColor); |
||||||
|
border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%); |
||||||
|
border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%); |
||||||
|
} |
||||||
|
// Gradients |
||||||
|
#gradient { |
||||||
|
.horizontal (@startColor: #555, @endColor: #333) { |
||||||
|
background-color: @endColor; |
||||||
|
background-repeat: repeat-x; |
||||||
|
background-image: -khtml-gradient(linear, left top, right top, from(@startColor), to(@endColor)); // Konqueror |
||||||
|
background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+ |
||||||
|
background-image: -ms-linear-gradient(left, @startColor, @endColor); // IE10 |
||||||
|
background-image: -webkit-gradient(linear, left top, right top, color-stop(0%, @startColor), color-stop(100%, @endColor)); // Safari 4+, Chrome 2+ |
||||||
|
background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+ |
||||||
|
background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10 |
||||||
|
background-image: linear-gradient(left, @startColor, @endColor); // Le standard |
||||||
|
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",@startColor,@endColor)); // IE9 and down |
||||||
|
} |
||||||
|
.vertical (@startColor: #555, @endColor: #333) { |
||||||
|
background-color: @endColor; |
||||||
|
background-repeat: repeat-x; |
||||||
|
background-image: -khtml-gradient(linear, left top, left bottom, from(@startColor), to(@endColor)); // Konqueror |
||||||
|
background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+ |
||||||
|
background-image: -ms-linear-gradient(top, @startColor, @endColor); // IE10 |
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, @startColor), color-stop(100%, @endColor)); // Safari 4+, Chrome 2+ |
||||||
|
background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+ |
||||||
|
background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10 |
||||||
|
background-image: linear-gradient(top, @startColor, @endColor); // The standard |
||||||
|
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down |
||||||
|
} |
||||||
|
.directional (@startColor: #555, @endColor: #333, @deg: 45deg) { |
||||||
|
background-color: @endColor; |
||||||
|
background-repeat: repeat-x; |
||||||
|
background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+ |
||||||
|
background-image: -ms-linear-gradient(@deg, @startColor, @endColor); // IE10 |
||||||
|
background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+ |
||||||
|
background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10 |
||||||
|
background-image: linear-gradient(@deg, @startColor, @endColor); // The standard |
||||||
|
} |
||||||
|
.vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) { |
||||||
|
background-color: @endColor; |
||||||
|
background-repeat: no-repeat; |
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor)); |
||||||
|
background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor); |
||||||
|
background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor); |
||||||
|
background-image: -ms-linear-gradient(@startColor, @midColor @colorStop, @endColor); |
||||||
|
background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor); |
||||||
|
background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor); |
||||||
|
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down, gets no color-stop at all for proper fallback |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
StoryJS-Core-CSS |
||||||
|
================ |
||||||
|
|
||||||
|
Core CSS for StoryJS (including TimelineJS) |
||||||
|
|
||||||
|
This Source Code Form is subject to the terms of the Mozilla Public |
||||||
|
License, v. 2.0. If a copy of the MPL was not distributed with this |
||||||
|
file, You can obtain one at http://mozilla.org/MPL/2.0/. |
@ -0,0 +1,117 @@ |
|||||||
|
/* Reset |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
|
||||||
|
/* Reset tags and common classes |
||||||
|
Display in IE6-9 and FF3 |
||||||
|
Based on: http://github.com/necolas/normalize.css |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
div * { |
||||||
|
-webkit-box-sizing:content-box; |
||||||
|
-moz-box-sizing:content-box; |
||||||
|
box-sizing:content-box; |
||||||
|
} |
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, cite, code, del, dfn, em, img, q, s, samp, small, strike, strong, |
||||||
|
sub, sup, tt, var, dd, dl, dt, li, ol, ul, fieldset, form, label, legend, button, table, caption, tbody, tfoot, thead, tr, th, td, |
||||||
|
.vco-container, .content-container, .media, .text, .vco-slider, .slider, .date, .title, .messege, .map, .credit, .caption, .vco-feedback, .vco-feature, .toolbar, |
||||||
|
.marker, .dot, .line, .flag, .time, .era, .major, .minor, .vco-navigation, .start, .active { |
||||||
|
margin: 0; |
||||||
|
padding: 0; |
||||||
|
border: 0; |
||||||
|
font-weight: normal; |
||||||
|
font-style: normal; |
||||||
|
font-size: 100%; |
||||||
|
line-height: 1; |
||||||
|
font-family: inherit; |
||||||
|
width: auto; |
||||||
|
float:none; |
||||||
|
} |
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
clear:none; |
||||||
|
} |
||||||
|
table { border-collapse: collapse; border-spacing: 0;} |
||||||
|
ol, ul { list-style: none;} |
||||||
|
q:before, q:after, blockquote:before, blockquote:after { content: ""; } |
||||||
|
a:focus { outline: thin dotted; } |
||||||
|
a:hover, a:active { outline: 0;} |
||||||
|
article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { |
||||||
|
display: block; |
||||||
|
} |
||||||
|
audio, canvas, video { |
||||||
|
display: inline-block; |
||||||
|
*display: inline; |
||||||
|
*zoom: 1; |
||||||
|
} |
||||||
|
|
||||||
|
/* Prevents modern browsers from displaying 'audio' without controls |
||||||
|
Based on: http://github.com/necolas/normalize.css |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
audio:not([controls]) { |
||||||
|
display: none; |
||||||
|
} |
||||||
|
div { |
||||||
|
max-width:none; |
||||||
|
} |
||||||
|
|
||||||
|
/* Prevents sub and sup affecting line-height in all browsers |
||||||
|
Based on: http://github.com/necolas/normalize.css |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
sub, sup { |
||||||
|
font-size: 75%; |
||||||
|
line-height: 0; |
||||||
|
position: relative; |
||||||
|
vertical-align: baseline; |
||||||
|
} |
||||||
|
sup { |
||||||
|
top: -0.5em; |
||||||
|
} |
||||||
|
sub { |
||||||
|
bottom: -0.25em; |
||||||
|
} |
||||||
|
|
||||||
|
/* Img border in a's and image quality |
||||||
|
Based on: http://github.com/necolas/normalize.css |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
img { |
||||||
|
border: 0; |
||||||
|
-ms-interpolation-mode: bicubic; |
||||||
|
} |
||||||
|
|
||||||
|
/* Forms |
||||||
|
Based on: http://github.com/necolas/normalize.css |
||||||
|
------------------------------------------------------------------------------------------- */ |
||||||
|
button, input, select, textarea { |
||||||
|
font-size: 100%; |
||||||
|
margin: 0; |
||||||
|
vertical-align: baseline; |
||||||
|
*vertical-align: middle; |
||||||
|
} |
||||||
|
button, input { |
||||||
|
line-height: normal; // FF3/4 have !important on line-height in UA stylesheet |
||||||
|
*overflow: visible; // Inner spacing ie IE6/7 |
||||||
|
} |
||||||
|
button::-moz-focus-inner, input::-moz-focus-inner { // Inner padding and border oddities in FF3/4 |
||||||
|
border: 0; |
||||||
|
padding: 0; |
||||||
|
} |
||||||
|
button, input[type="button"], input[type="reset"], input[type="submit"] { |
||||||
|
cursor: pointer; // Cursors on all buttons applied consistently |
||||||
|
-webkit-appearance: button; // Style clicable inputs in iOS |
||||||
|
} |
||||||
|
input[type="search"] { // Appearance in Safari/Chrome |
||||||
|
-webkit-appearance: textfield; |
||||||
|
-webkit-box-sizing: content-box; |
||||||
|
-moz-box-sizing: content-box; |
||||||
|
box-sizing: content-box; |
||||||
|
} |
||||||
|
input[type="search"]::-webkit-search-decoration { |
||||||
|
-webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5 |
||||||
|
} |
||||||
|
textarea { |
||||||
|
overflow: auto; // Remove vertical scrollbar in IE6-9 |
||||||
|
vertical-align: top; // Readability and alignment cross-browser |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,195 @@ |
|||||||
|
/* Typography.less |
||||||
|
* Headings, body text, lists, etc |
||||||
|
* ---------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
.vco-storyjs { |
||||||
|
font-size: @base-font; |
||||||
|
font-weight: normal; |
||||||
|
line-height: @base-line; |
||||||
|
-webkit-font-smoothing: antialiased; /* Fix for webkit rendering */ |
||||||
|
-webkit-text-size-adjust: 100%; |
||||||
|
|
||||||
|
p { |
||||||
|
font-size: @base-font; |
||||||
|
font-weight: normal; |
||||||
|
line-height: @base-line; |
||||||
|
margin-bottom: @base-line; |
||||||
|
color: @color-feature-description; |
||||||
|
|
||||||
|
small { |
||||||
|
font-size: @base-font - 3; |
||||||
|
line-height: @base-line - 3; |
||||||
|
} |
||||||
|
} |
||||||
|
p:first-child { |
||||||
|
margin-top:@base-line; |
||||||
|
} |
||||||
|
.vco-navigation { |
||||||
|
p { |
||||||
|
color: @color-nav-description; |
||||||
|
} |
||||||
|
} |
||||||
|
.vco-feature { |
||||||
|
h3, h4, h5, h6 { |
||||||
|
margin-bottom: @base-space; |
||||||
|
} |
||||||
|
p { |
||||||
|
color: @color-feature-description; |
||||||
|
} |
||||||
|
blockquote, blockquote p { |
||||||
|
color:@color-feature-title; |
||||||
|
} |
||||||
|
} |
||||||
|
.date, .title { |
||||||
|
a { |
||||||
|
color: @color-nav-description; |
||||||
|
} |
||||||
|
} |
||||||
|
.hyphenate { |
||||||
|
.hyphens(auto); |
||||||
|
word-wrap:break-word; |
||||||
|
} |
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6 { |
||||||
|
font-weight: normal; |
||||||
|
color: @color-feature-title; |
||||||
|
text-transform: none; |
||||||
|
a { |
||||||
|
color: @color-nav-description; |
||||||
|
} |
||||||
|
small { |
||||||
|
color: @color-nav-title; |
||||||
|
} |
||||||
|
} |
||||||
|
h1.date, h2.date, h3.date, h4.date, h5.date, h6.date { |
||||||
|
font-weight: bold; |
||||||
|
} |
||||||
|
h2.start { |
||||||
|
//font-size: 42px; |
||||||
|
//line-height: 44px; |
||||||
|
font-size: 36px; |
||||||
|
line-height: 38px; |
||||||
|
|
||||||
|
margin-bottom: @base-space; |
||||||
|
} |
||||||
|
h1 { |
||||||
|
margin-bottom: @base-space; |
||||||
|
font-size: 32px; |
||||||
|
line-height: 34px; |
||||||
|
small { |
||||||
|
font-size: 18px; |
||||||
|
} |
||||||
|
} |
||||||
|
h2 { |
||||||
|
margin-bottom: @base-space; |
||||||
|
font-size: 28px; |
||||||
|
line-height: 30px; |
||||||
|
|
||||||
|
small { |
||||||
|
font-size: 14px; |
||||||
|
line-height: 16px; |
||||||
|
|
||||||
|
//margin-left:5px; |
||||||
|
} |
||||||
|
} |
||||||
|
h2.date { |
||||||
|
font-size: 16px; |
||||||
|
line-height:18px; |
||||||
|
margin-bottom: @base-space/4; |
||||||
|
color:@color-feature-date; |
||||||
|
|
||||||
|
//margin-bottom: @base-space; |
||||||
|
} |
||||||
|
h3, h4, h5, h6 { |
||||||
|
line-height: @base-line * 2; |
||||||
|
.active { |
||||||
|
color: @color-theme; |
||||||
|
} |
||||||
|
} |
||||||
|
h3 { |
||||||
|
font-size: 28px; |
||||||
|
line-height: 30px; |
||||||
|
//font-size: 24px; |
||||||
|
//line-height:26px; |
||||||
|
small { |
||||||
|
font-size: 14px; |
||||||
|
} |
||||||
|
} |
||||||
|
h4 { |
||||||
|
font-size: 20px; |
||||||
|
line-height: 22px; |
||||||
|
//font-size: 16px; |
||||||
|
//line-height:18px; |
||||||
|
small { |
||||||
|
font-size: 12px; |
||||||
|
} |
||||||
|
} |
||||||
|
h5 { |
||||||
|
font-size: 16px; |
||||||
|
line-height:18px; |
||||||
|
|
||||||
|
//font-size: 14px; |
||||||
|
//line-height:16px; |
||||||
|
} |
||||||
|
h6 { |
||||||
|
font-size: 13px; |
||||||
|
line-height:14px; |
||||||
|
text-transform: uppercase; |
||||||
|
} |
||||||
|
strong { |
||||||
|
font-weight:bold; |
||||||
|
font-style:inherit; |
||||||
|
} |
||||||
|
em { |
||||||
|
font-style: italic; |
||||||
|
font-weight: inherit; |
||||||
|
} |
||||||
|
Q { |
||||||
|
quotes: '„' '“'; |
||||||
|
font-style: italic; |
||||||
|
} |
||||||
|
|
||||||
|
/* BLOCKQUOTES |
||||||
|
================================================== */ |
||||||
|
blockquote, blockquote p { |
||||||
|
font-size: @base-font-large; |
||||||
|
line-height: @base-line-large; |
||||||
|
text-align:left; |
||||||
|
margin-bottom: 6px; |
||||||
|
padding-top: 10px; |
||||||
|
background-color:@white; |
||||||
|
color:@color-feature-title; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/* Caption and Credits |
||||||
|
================================================== */ |
||||||
|
.credit { |
||||||
|
color: @color-credit; |
||||||
|
text-align: right; |
||||||
|
font-size: 10px; |
||||||
|
line-height: 10px; |
||||||
|
display: block; |
||||||
|
margin: 0 auto; |
||||||
|
clear:both; |
||||||
|
} |
||||||
|
.caption { |
||||||
|
text-align:left; |
||||||
|
margin-top:5px; |
||||||
|
color: @color-caption; |
||||||
|
font-size: 11px; |
||||||
|
line-height: 14px; |
||||||
|
clear:both; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/* Right to Left |
||||||
|
* ---------------------------------------------------------------------------------------- */ |
||||||
|
.vco-storyjs.vco-right-to-left { |
||||||
|
h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, cite, code, del, dfn, em, img, q, s, samp, small, strike, strong, |
||||||
|
sub, sup, tt, var, dd, dl, dt, li, ol, ul, fieldset, form, label, legend, button, table, caption, tbody, tfoot, thead, tr, th, td, { |
||||||
|
direction:rtl; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,404 @@ |
|||||||
|
/* |
||||||
|
* VMM StoryJS Core |
||||||
|
* Basic and global styles for generating structural layout |
||||||
|
* ------------------------------------------------------------------------------------------- */ |
||||||
|
|
||||||
|
/* BASE |
||||||
|
----------------------------------------------------- */ |
||||||
|
// CSS Reset |
||||||
|
@import "Reset.less"; |
||||||
|
|
||||||
|
// Core variables and mixins |
||||||
|
@import "Font.Default.less"; |
||||||
|
@import "Variables.less"; |
||||||
|
@import "Mixins.less"; |
||||||
|
@import "GFX.less"; |
||||||
|
@import "Typography.less"; |
||||||
|
@import "VMM.Tooltip.less"; |
||||||
|
@import "VMM.FancyBox.less"; |
||||||
|
|
||||||
|
// Grid system and page structure |
||||||
|
@import "VMM.Slider.less"; |
||||||
|
|
||||||
|
|
||||||
|
/* StoryJS Embed |
||||||
|
================================================== */ |
||||||
|
.storyjs-embed { |
||||||
|
background-color: @color-base; |
||||||
|
margin-bottom:20px; |
||||||
|
border: 1px solid @color-line; |
||||||
|
padding-top:20px; |
||||||
|
padding-bottom:20px; |
||||||
|
clear:both; |
||||||
|
|
||||||
|
.border-radius(10px); |
||||||
|
.box-shadow(1px 1px 3px rgba(0,0,0,.35)); |
||||||
|
} |
||||||
|
.storyjs-embed.full-embed { |
||||||
|
overflow:hidden; |
||||||
|
border: 0 !important; |
||||||
|
padding: 0 !important; |
||||||
|
margin: 0 !important; |
||||||
|
clear:both; |
||||||
|
|
||||||
|
.border-radius(0) !important; |
||||||
|
.box-shadow(0 0px 0px rgba(0, 0, 0, 0.25)) !important; |
||||||
|
} |
||||||
|
.storyjs-embed.sized-embed { |
||||||
|
overflow:hidden; |
||||||
|
border: 1px solid @color-line; |
||||||
|
padding-top:7px; |
||||||
|
padding-bottom:7px; |
||||||
|
margin: 0 !important; |
||||||
|
clear:both; |
||||||
|
|
||||||
|
.box-shadow(0 0px 0px rgba(0, 0, 0, 0.25)) !important; |
||||||
|
} |
||||||
|
|
||||||
|
/* StoryJS |
||||||
|
================================================== */ |
||||||
|
.vco-storyjs { |
||||||
|
width: 100%; |
||||||
|
height:100%; |
||||||
|
padding:0px; |
||||||
|
margin:0px; |
||||||
|
background-color:@color-background; |
||||||
|
position: absolute; |
||||||
|
z-index:100; |
||||||
|
clear:both; |
||||||
|
overflow:hidden; |
||||||
|
|
||||||
|
.vmm-clear:before, |
||||||
|
.vmm-clear:after { |
||||||
|
content:""; |
||||||
|
display:table; |
||||||
|
} |
||||||
|
.vmm-clear:after { |
||||||
|
clear:both; |
||||||
|
} |
||||||
|
.vmm-clear { |
||||||
|
*zoom:1; |
||||||
|
} |
||||||
|
|
||||||
|
/* FEATURE |
||||||
|
================================================== */ |
||||||
|
.vco-feature { |
||||||
|
width: 100%; |
||||||
|
.slider, .vco-slider { |
||||||
|
width: 100%; |
||||||
|
float: left; |
||||||
|
position: relative; |
||||||
|
z-index:10; |
||||||
|
padding-top:@base-space; |
||||||
|
.box-shadow(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/* FEEDBACK |
||||||
|
================================================== */ |
||||||
|
.vco-feedback { |
||||||
|
position: absolute; |
||||||
|
display:table; |
||||||
|
overflow:hidden; |
||||||
|
top:0px; |
||||||
|
left:0px; |
||||||
|
z-index:205; |
||||||
|
width: 100%; |
||||||
|
height:100%; |
||||||
|
//background-color: @color-base; |
||||||
|
} |
||||||
|
div.vco-loading, div.vco-explainer { |
||||||
|
display:table; |
||||||
|
text-align:center; |
||||||
|
min-width: 100px; |
||||||
|
margin-top:@base-space; |
||||||
|
height:100%; |
||||||
|
width:100%; |
||||||
|
background-color: @color-background; |
||||||
|
.vco-loading-container, .vco-explainer-container { |
||||||
|
display:table-cell; |
||||||
|
vertical-align:middle; |
||||||
|
.vco-loading-icon { |
||||||
|
display:block; |
||||||
|
background-repeat:no-repeat; |
||||||
|
vertical-align:middle; |
||||||
|
margin-left:auto; |
||||||
|
margin-right:auto; |
||||||
|
text-align:center; |
||||||
|
.loading-sprite(); |
||||||
|
width:28px; |
||||||
|
height:28px; |
||||||
|
} |
||||||
|
.vco-gesture-icon { |
||||||
|
display:block; |
||||||
|
background-repeat:no-repeat; |
||||||
|
vertical-align:middle; |
||||||
|
margin-left:auto; |
||||||
|
margin-right:auto; |
||||||
|
text-align:center; |
||||||
|
.icon-touch-gesture(); |
||||||
|
width:48px; |
||||||
|
height:48px; |
||||||
|
} |
||||||
|
.vco-message { |
||||||
|
display:block; |
||||||
|
} |
||||||
|
.vco-message, .vco-message p { |
||||||
|
text-align:center; |
||||||
|
font-size: @base-font-small; |
||||||
|
line-height:@base-font-small + 2; |
||||||
|
text-transform: uppercase; |
||||||
|
margin-top:@base-space/2; |
||||||
|
margin-bottom:@base-space/2; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
.vco-explainer-container { |
||||||
|
//background-color:@color-dark-second; |
||||||
|
//background-color: fade(@color-dark, 65%); |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
div.vco-explainer { |
||||||
|
background-color: transparent; |
||||||
|
//height:400px; |
||||||
|
//margin-top:100px; |
||||||
|
|
||||||
|
} |
||||||
|
.vco-bezel { |
||||||
|
background-color:@color-dark-second; |
||||||
|
background-color: fade(@color-dark, 80%); |
||||||
|
//border: 1px solid fade(@color-base, 50%); |
||||||
|
width:80px; |
||||||
|
height:50px; |
||||||
|
padding:50px; |
||||||
|
padding-top:25px; |
||||||
|
padding: 25px 20px 50px 20px; |
||||||
|
margin:auto; |
||||||
|
.border-radius(10px); |
||||||
|
.vco-message, .vco-message p { |
||||||
|
color: @color-base; |
||||||
|
font-weight: bold; |
||||||
|
} |
||||||
|
} |
||||||
|
/* Container |
||||||
|
================================================== */ |
||||||
|
.vco-container.vco-main { |
||||||
|
position: absolute; |
||||||
|
top:0px; |
||||||
|
left:0px; |
||||||
|
padding-bottom:3px; |
||||||
|
//margin-top:@base-space; |
||||||
|
width: auto; |
||||||
|
height: auto; |
||||||
|
margin:0px; |
||||||
|
clear:both; |
||||||
|
} |
||||||
|
img, embed, object, video, iframe { |
||||||
|
max-width: 100%; |
||||||
|
} |
||||||
|
iframe { |
||||||
|
//margin-bottom:5px; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
img { |
||||||
|
max-height:100%; |
||||||
|
border: 1px solid @color-credit; |
||||||
|
} |
||||||
|
a { |
||||||
|
color:@color-theme; |
||||||
|
text-decoration: none; |
||||||
|
} |
||||||
|
a:hover { |
||||||
|
color:@color-theme-dark; |
||||||
|
text-decoration: underline; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
.vcard { |
||||||
|
float:right; |
||||||
|
margin-bottom:@base-space; |
||||||
|
a { |
||||||
|
color: @color-dark-second; |
||||||
|
} |
||||||
|
a:hover { |
||||||
|
text-decoration: none; |
||||||
|
.fn { |
||||||
|
text-decoration: underline; |
||||||
|
} |
||||||
|
} |
||||||
|
.fn, .nickname { |
||||||
|
|
||||||
|
padding-left: 42px; |
||||||
|
} |
||||||
|
.fn { |
||||||
|
display:block; |
||||||
|
font-weight: bold; |
||||||
|
|
||||||
|
} |
||||||
|
.nickname { |
||||||
|
margin-top:1px; |
||||||
|
display:block; |
||||||
|
color: @color-dark-third; |
||||||
|
} |
||||||
|
|
||||||
|
.avatar { |
||||||
|
float:left; |
||||||
|
display: block; |
||||||
|
width: 32px; |
||||||
|
height: 32px; |
||||||
|
img { |
||||||
|
-moz-border-radius: 5px; |
||||||
|
-webkit-border-radius: 5px; |
||||||
|
border-radius: 5px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.thumbnail { |
||||||
|
width:@base-thumb; |
||||||
|
height:@base-thumb; |
||||||
|
overflow:hidden; |
||||||
|
float:left; |
||||||
|
margin:0; |
||||||
|
margin-right:1px; |
||||||
|
margin-top:6px; |
||||||
|
|
||||||
|
//Fixes for bootstrap sites |
||||||
|
border:0; |
||||||
|
padding:0; |
||||||
|
-webkit-border-radius: 0; |
||||||
|
-moz-border-radius: 0; |
||||||
|
border-radius: 0; |
||||||
|
-webkit-box-shadow: none; |
||||||
|
-moz-box-shadow: none; |
||||||
|
box-shadow: none; |
||||||
|
} |
||||||
|
// fixes for bootstrap sites |
||||||
|
a.thumbnail:hover { |
||||||
|
-webkit-box-shadow: none; |
||||||
|
-moz-box-shadow: none; |
||||||
|
box-shadow: none; |
||||||
|
} |
||||||
|
|
||||||
|
.thumbnail.thumb-plaintext { |
||||||
|
.icon-plaintext(); |
||||||
|
} |
||||||
|
.thumbnail.thumb-quote { |
||||||
|
.icon-quote(); |
||||||
|
} |
||||||
|
.thumbnail.thumb-document { |
||||||
|
.icon-document(); |
||||||
|
} |
||||||
|
.thumbnail.thumb-photo { |
||||||
|
.icon-photo(); |
||||||
|
border:0; |
||||||
|
img { |
||||||
|
border:0px none @color-line !important; |
||||||
|
} |
||||||
|
} |
||||||
|
.thumbnail.thumb-twitter { |
||||||
|
.icon-twitter(); |
||||||
|
} |
||||||
|
.thumbnail.thumb-vimeo { |
||||||
|
.icon-vimeo(); |
||||||
|
} |
||||||
|
.thumbnail.thumb-vine { |
||||||
|
.icon-vine(); |
||||||
|
} |
||||||
|
.thumbnail.thumb-youtube { |
||||||
|
.icon-youtube(); |
||||||
|
} |
||||||
|
.thumbnail.thumb-video { |
||||||
|
.icon-video(); |
||||||
|
} |
||||||
|
.thumbnail.thumb-audio { |
||||||
|
.icon-audio(); |
||||||
|
} |
||||||
|
.thumbnail.thumb-map { |
||||||
|
.icon-mappin(); |
||||||
|
} |
||||||
|
.thumbnail.thumb-website { |
||||||
|
.icon-website(); |
||||||
|
} |
||||||
|
.thumbnail.thumb-link { |
||||||
|
.icon-link(); |
||||||
|
} |
||||||
|
.thumbnail.thumb-wikipedia { |
||||||
|
.icon-wikipedia(); |
||||||
|
} |
||||||
|
.thumbnail.thumb-storify { |
||||||
|
.icon-storify(); |
||||||
|
} |
||||||
|
.thumbnail.thumb-googleplus { |
||||||
|
.icon-googleplus(); |
||||||
|
} |
||||||
|
thumbnail.thumb-instagram { |
||||||
|
.icon-instagram(); |
||||||
|
} |
||||||
|
|
||||||
|
thumbnail.thumb-instagram-full { |
||||||
|
.icon-instagram-full(); |
||||||
|
} |
||||||
|
.thumb-storify-full { |
||||||
|
//display:inline-block; |
||||||
|
height:12px; |
||||||
|
.icon-storify-full(); |
||||||
|
} |
||||||
|
|
||||||
|
.thumbnail-inline { |
||||||
|
width:16px; |
||||||
|
height:14px; |
||||||
|
overflow:hidden; |
||||||
|
display:inline-block; |
||||||
|
margin-right:1px; |
||||||
|
margin-left:3px; |
||||||
|
margin-top:2px; |
||||||
|
//float:left; |
||||||
|
.opacity(50); |
||||||
|
} |
||||||
|
.twitter { |
||||||
|
.thumbnail-inline { |
||||||
|
.icon-twitter-inline(); |
||||||
|
} |
||||||
|
} |
||||||
|
.storify { |
||||||
|
.thumbnail-inline { |
||||||
|
.icon-storify-inline(); |
||||||
|
} |
||||||
|
} |
||||||
|
.googleplus { |
||||||
|
.thumbnail-inline { |
||||||
|
.icon-googleplus-inline(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
.zFront { |
||||||
|
z-index:204; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/* RETINA |
||||||
|
================================================== */ |
||||||
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), |
||||||
|
only screen and (min-device-pixel-ratio: 2) { |
||||||
|
.vco-storyjs { |
||||||
|
div.vco-loading, div.vco-explainer { |
||||||
|
.vco-loading-container, .vco-explainer-container { |
||||||
|
.vco-loading-icon { |
||||||
|
.loading-sprite2x(); |
||||||
|
} |
||||||
|
.vco-gesture-icon { |
||||||
|
.icon-touch-gesture2x(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue