[LON-CAPA-cvs] cvs: loncom /html/adm/countdown countdownGlowing.gif countdownLED.png jquery.countdown-ar.js jquery.countdown-bg.js jquery.countdown-bn.js jquery.countdown-ca.js jquery.countdown-cs.js jquery.countdown-da.js jquery.countdown-de.js jquery.countdown-el.js jquery.countdown-es.js jquery.countdown-et.js jquery.countdown-fa.js jquery.countdown-fi.js jquery.countdown-fr.js jquery.countdown-gl.js jquery.countdown-he.js jquery.countdown-hr.js jquery.countdown-hu.js jquery.countdown-id.js jquery.countdown-it.js jquery.countdown-ja.js jquery.countdown-ko.js jquery.countdown-lt.js jquery.countdown-lv.js jquery.countdown-ms.js jquery.countdown-my.js jquery.countdown-nb.js jquery.countdown-nl.js jquery.countdown-pl.js jquery.countdown-pt-BR.js jquery.countdown-ro.js jquery.countdown-ru.js jquery.countdown-sk.js jquery.countdown-sl.js jquery.countdown-sr-SR.js jquery.countdown-sr.js jquery.countdown-sv.js jquery.countdown-th.js jquery.countdown-tr.js jquery.countdown-uk.js jquery.!countdown-vi.js jquery.countdown-zh-CN.js jquery.countdown-zh-TW.js jquery.countdown.css jquery.countdown.js jquery.countdown.min.js jquery.countdown.pack.js

foxr foxr at source.lon-capa.org
Sun Mar 18 09:51:12 EDT 2012


foxr		Sun Mar 18 13:51:12 2012 EDT

  Added files:                 
    /loncom/html/adm/countdown	countdownGlowing.gif countdownLED.png 
                              	jquery.countdown-ar.js 
                              	jquery.countdown-bg.js 
                              	jquery.countdown-bn.js 
                              	jquery.countdown-ca.js 
                              	jquery.countdown-cs.js 
                              	jquery.countdown-da.js 
                              	jquery.countdown-de.js 
                              	jquery.countdown-el.js 
                              	jquery.countdown-es.js 
                              	jquery.countdown-et.js 
                              	jquery.countdown-fa.js 
                              	jquery.countdown-fi.js 
                              	jquery.countdown-fr.js 
                              	jquery.countdown-gl.js 
                              	jquery.countdown-he.js 
                              	jquery.countdown-hr.js 
                              	jquery.countdown-hu.js 
                              	jquery.countdown-id.js 
                              	jquery.countdown-it.js 
                              	jquery.countdown-ja.js 
                              	jquery.countdown-ko.js 
                              	jquery.countdown-lt.js 
                              	jquery.countdown-lv.js 
                              	jquery.countdown-ms.js 
                              	jquery.countdown-my.js 
                              	jquery.countdown-nb.js 
                              	jquery.countdown-nl.js 
                              	jquery.countdown-pl.js 
                              	jquery.countdown-pt-BR.js 
                              	jquery.countdown-ro.js 
                              	jquery.countdown-ru.js 
                              	jquery.countdown-sk.js 
                              	jquery.countdown-sl.js 
                              	jquery.countdown-sr-SR.js 
                              	jquery.countdown-sr.js 
                              	jquery.countdown-sv.js 
                              	jquery.countdown-th.js 
                              	jquery.countdown-tr.js 
                              	jquery.countdown-uk.js 
                              	jquery.countdown-vi.js 
                              	jquery.countdown-zh-CN.js 
                              	jquery.countdown-zh-TW.js 
                              	jquery.countdown.css jquery.countdown.js 
                              	jquery.countdown.min.js 
                              	jquery.countdown.pack.js 
  Log:
  Add jquery countdown widget to the repository (BZ 5891 resolution will use
  this for the timer).
  
  
-------------- next part --------------

Index: loncom/html/adm/countdown/jquery.countdown-ar.js
+++ loncom/html/adm/countdown/jquery.countdown-ar.js
/* http://keith-wood.name/countdown.html
   Arabic (عربي) initialisation for the jQuery countdown extension
   Translated by Talal Al Asmari (talal at psdgroups.com), April 2009. */
(function($) {
	$.countdown.regional['ar'] = {
		labels: ['سنوات','أشهر','أسابيع','أيام','ساعات','دقائق','ثواني'],
		labels1: ['سنة','شهر','أسبوع','يوم','ساعة','دقيقة','ثانية'],
		compactLabels: ['س', 'ش', 'أ', 'ي'],
		whichLabels: null,
		timeSeparator: ':', isRTL: true};
	$.countdown.setDefaults($.countdown.regional['ar']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-bg.js
+++ loncom/html/adm/countdown/jquery.countdown-bg.js
/* http://keith-wood.name/countdown.html
 * Bulgarian initialisation for the jQuery countdown extension
 * Written by Manol Trendafilov manol at rastermania.com (2010) */
(function($) {
	$.countdown.regional['bg'] = {
		labels: ['Години', 'Месеца', 'Седмица', 'Дни', 'Часа', 'Минути', 'Секунди'],
		labels1: ['Година', 'Месец', 'Седмица', 'Ден', 'Час', 'Минута', 'Секунда'],
		compactLabels: ['l', 'm', 'n', 'd'], compactLabels1: ['g', 'm', 'n', 'd'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['bg']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-bn.js
+++ loncom/html/adm/countdown/jquery.countdown-bn.js
ÿþ/












Index: loncom/html/adm/countdown/jquery.countdown-ca.js
+++ loncom/html/adm/countdown/jquery.countdown-ca.js
/* http://keith-wood.name/countdown.html
   Catalan initialisation for the jQuery countdown extension
   Written by Amanida Media www.amanidamedia.com (2010) */
(function($) {
	$.countdown.regional['ca'] = {
		labels: ['Anys', 'Mesos', 'Setmanes', 'Dies', 'Hores', 'Minuts', 'Segons'],
		labels1: ['Anys', 'Mesos', 'Setmanes', 'Dies', 'Hores', 'Minuts', 'Segons'],
		compactLabels: ['a', 'm', 's', 'g'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['ca']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-cs.js
+++ loncom/html/adm/countdown/jquery.countdown-cs.js
/* http://keith-wood.name/countdown.html
 * Czech initialisation for the jQuery countdown extension
 * Written by Roman Chlebec (creamd at c64.sk) (2008) */
(function($) {
	$.countdown.regional['cs'] = {
		labels: ['Roků', 'Měsíců', 'Týdnů', 'Dní', 'Hodin', 'Minut', 'Sekund'],
		labels1: ['Rok', 'Měsíc', 'Týden', 'Den', 'Hodina', 'Minuta', 'Sekunda'],
		labels2: ['Roky', 'Měsíce', 'Týdny', 'Dny', 'Hodiny', 'Minuty', 'Sekundy'],
		compactLabels: ['r', 'm', 't', 'd'],
		whichLabels: function(amount) {
			return (amount == 1 ? 1 : (amount >= 2 && amount <= 4 ? 2 : 0));
		},
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['cs']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-da.js
+++ loncom/html/adm/countdown/jquery.countdown-da.js
/* http://keith-wood.name/countdown.html
   Danish initialisation for the jQuery countdown extension
   Written by Buch (admin at buch90.dk). */
(function($) {
	$.countdown.regional['da'] = {
		labels: ['Ã…r', 'MÃ¥neder', 'Uger', 'Dage', 'Timer', 'Minutter', 'Sekunder'],
		labels1: ['Ã…r', 'MÃ¥nad', 'Uge', 'Dag', 'Time', 'Minut', 'Sekund'],
		compactLabels: ['Ã…', 'M', 'U', 'D'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['da']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-de.js
+++ loncom/html/adm/countdown/jquery.countdown-de.js
/* http://keith-wood.name/countdown.html
   German initialisation for the jQuery countdown extension
   Written by Samuel Wulf. */
(function($) {
	$.countdown.regional['de'] = {
		labels: ['Jahre', 'Monate', 'Wochen', 'Tage', 'Stunden', 'Minuten', 'Sekunden'],
		labels1: ['Jahr', 'Monat', 'Woche', 'Tag', 'Stunde', 'Minute', 'Sekunde'],
		compactLabels: ['J', 'M', 'W', 'T'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['de']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-el.js
+++ loncom/html/adm/countdown/jquery.countdown-el.js
/* http://keith-wood.name/countdown.html
   Greek initialisation for the jQuery countdown extension
   Written by Philip. */
(function($) {
	$.countdown.regional['el'] = {
		labels: ['Χρόνια', 'Μήνες', 'Εβδομάδες', 'Μέρες', 'Ώρες', 'Λεπτά', 'Δευτερόλεπτα'],
		labels1: ['Χρόνος', 'Μήνας', 'Εβδομάδα', 'Ημέρα', 'Ώρα', 'Λεπτό', 'Δευτερόλεπτο'],
		compactLabels: ['Χρ.', 'Μην.', 'Εβδ.', 'Ημ.'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['el']);
})(jQuery);
Index: loncom/html/adm/countdown/jquery.countdown-es.js
+++ loncom/html/adm/countdown/jquery.countdown-es.js
/* http://keith-wood.name/countdown.html
 * Spanish initialisation for the jQuery countdown extension
 * Written by Sergio Carracedo Martinez webmaster at neodisenoweb.com (2008) */
(function($) {
	$.countdown.regional['es'] = {
		labels: ['Años', 'Meses', 'Semanas', 'Días', 'Horas', 'Minutos', 'Segundos'],
		labels1: ['Año', 'Mes', 'Semana', 'Día', 'Hora', 'Minuto', 'Segundo'],
		compactLabels: ['a', 'm', 's', 'g'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['es']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-et.js
+++ loncom/html/adm/countdown/jquery.countdown-et.js
/* http://keith-wood.name/countdown.html
   Estonian initialisation for the jQuery countdown extension
   Written by Helmer <helmer{at}city.ee> */
(function($) {
    $.countdown.regional['et'] = {
        labels: ['Aastat', 'Kuud', 'Nädalat', 'Päeva', 'Tundi', 'Minutit', 'Sekundit'],
        labels1: ['Aasta', 'Kuu', 'Nädal', 'Päev', 'Tund', 'Minut', 'Sekund'],
        compactLabels: ['a', 'k', 'n', 'p'],
        whichLabels: null,
        timeSeparator: ':', isRTL: false};
    $.countdown.setDefaults($.countdown.regional['et']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-fa.js
+++ loncom/html/adm/countdown/jquery.countdown-fa.js
/* http://keith-wood.name/countdown.html
   Persian (فارسی) initialisation for the jQuery countdown extension
   Written by Alireza Ziaie (ziai at magfa.com) Oct 2008. */
(function($) {
	$.countdown.regional['fa'] = {
		labels: ['‌سال', 'ماه', 'هفته', 'روز', 'ساعت', 'دقیقه', 'ثانیه'],
		labels1: ['سال', 'ماه', 'هفته', 'روز', 'ساعت', 'دقیقه', 'ثانیه'],
		compactLabels: ['س', 'م', 'ه', 'ر'],
		whichLabels: null,
		timeSeparator: ':', isRTL: true};
	$.countdown.setDefaults($.countdown.regional['fa']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-fi.js
+++ loncom/html/adm/countdown/jquery.countdown-fi.js
/* http://keith-wood.name/countdown.html
   Finnish initialisation for the jQuery countdown extension
   Written by Kalle Vänskä and Juha Suni (juhis.suni at gmail.com). */
(function($) {
	$.countdown.regional['fi'] = {
		labels: ['Vuotta', 'Kuukautta', 'Viikkoa', 'Päivää', 'Tuntia', 'Minuuttia', 'Sekuntia'],
		labels1: ['Vuosi', 'Kuukausi', 'Viikko', 'Päivä', 'Tunti', 'Minuutti', 'Sekunti'],
		compactLabels: ['v', 'kk', 'vk', 'pv'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['fi']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-fr.js
+++ loncom/html/adm/countdown/jquery.countdown-fr.js
/* http://keith-wood.name/countdown.html
   French initialisation for the jQuery countdown extension
   Written by Keith Wood (kbwood{at}iinet.com.au) Jan 2008. */
(function($) {
	$.countdown.regional['fr'] = {
		labels: ['Années', 'Mois', 'Semaines', 'Jours', 'Heures', 'Minutes', 'Secondes'],
		labels1: ['Année', 'Mois', 'Semaine', 'Jour', 'Heure', 'Minute', 'Seconde'],
		compactLabels: ['a', 'm', 's', 'j'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['fr']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-gl.js
+++ loncom/html/adm/countdown/jquery.countdown-gl.js
/* http://keith-wood.name/countdown.html
 * Galician initialisation for the jQuery countdown extension
 * Written by Moncho Pena ramon.pena.rodriguez at gmail.com (2009) */
(function($) {
	$.countdown.regional['gl'] = {
		labels: ['Anos', 'Meses', 'Semanas', 'Días', 'Horas', 'Minutos', 'Segundos'],
		labels1: ['Anos', 'Meses', 'Semanas', 'Días', 'Horas', 'Minutos', 'Segundos'],
		compactLabels: ['a', 'm', 's', 'g'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['gl']);
})(jQuery);
Index: loncom/html/adm/countdown/jquery.countdown-he.js
+++ loncom/html/adm/countdown/jquery.countdown-he.js
/* http://keith-wood.name/countdown.html
 * Hebrew initialisation for the jQuery countdown extension
 * Translated by Nir Livne, Dec 2008 */
(function($) {
	$.countdown.regional['he'] = {
		labels: ['שנים', 'חודשים', 'שבועות', 'ימים', 'שעות', 'דקות', 'שניות'],
		labels1: ['שנה', 'חודש', 'שבוע', 'יום', 'שעה', 'דקה', 'שנייה'],
		compactLabels: ['שנ', 'ח', 'שב', 'י'],
		whichLabels: null,
		timeSeparator: ':', isRTL: true};
	$.countdown.setDefaults($.countdown.regional['he']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-hr.js
+++ loncom/html/adm/countdown/jquery.countdown-hr.js
/* http://keith-wood.name/countdown.html
 * Croatian Latin initialisation for the jQuery countdown extension
 * Written by Dejan Broz info at hqfactory.com (2011) */
(function($) {
	$.countdown.regional['hr'] = {
		labels: ['Godina', 'Mjeseci', 'Tjedana', 'Dana', 'Sati', 'Minuta', 'Sekundi'],
		labels1: ['Godina', 'Mjesec', 'Tjedan', 'Dan', 'Sat', 'Minuta', 'Sekunda'],
		labels2: ['Godine', 'Mjeseca', 'Tjedna', 'Dana', 'Sata', 'Minute', 'Sekunde'],
		compactLabels: ['g', 'm', 't', 'd'],
		whichLabels: function(amount) {
			return (amount == 1 ? 1 : (amount >= 2 && amount <= 4 ? 2 : 0));
		},
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['hr']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-hu.js
+++ loncom/html/adm/countdown/jquery.countdown-hu.js
/* http://keith-wood.name/countdown.html
 * Hungarian initialisation for the jQuery countdown extension
 * Written by Edmond L. (webmond at gmail.com). */
(function($) {
	$.countdown.regional['hu'] = {
		labels: ['Év', 'Hónap', 'Hét', 'Nap', 'Óra', 'Perc', 'Másodperc'],
		labels1: ['Év', 'Hónap', 'Hét', 'Nap', 'Óra', 'Perc', 'Másodperc'],
		compactLabels: ['É', 'H', 'Hé', 'N'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['hu']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-id.js
+++ loncom/html/adm/countdown/jquery.countdown-id.js
/* http://keith-wood.name/countdown.html
   Indonesian initialisation for the jQuery countdown extension
   Written by Erwin Yonathan Jan 2009. */
(function($) {
	$.countdown.regional['id'] = {
		labels: ['tahun', 'bulan', 'minggu', 'hari', 'jam', 'menit', 'detik'],
		labels1: ['tahun', 'bulan', 'minggu', 'hari', 'jam', 'menit', 'detik'],
		compactLabels: ['t', 'b', 'm', 'h'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['id']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-it.js
+++ loncom/html/adm/countdown/jquery.countdown-it.js
/* http://keith-wood.name/countdown.html
 * Italian initialisation for the jQuery countdown extension
 * Written by Davide Bellettini (davide.bellettini at gmail.com) Feb 2008. */
(function($) {
	$.countdown.regional['it'] = {
		labels: ['Anni', 'Mesi', 'Settimane', 'Giorni', 'Ore', 'Minuti', 'Secondi'],
		labels1: ['Anni', 'Mesi', 'Settimane', 'Giorni', 'Ore', 'Minuti', 'Secondi'],
		compactLabels: ['a', 'm', 's', 'g'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['it']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-ja.js
+++ loncom/html/adm/countdown/jquery.countdown-ja.js
/* http://keith-wood.name/countdown.html
   Japanese initialisation for the jQuery countdown extension
   Written by Ken Ishimoto (ken at ksroom.com) Aug 2009. */
(function($) {
	$.countdown.regional['ja'] = {
		labels: ['年', '月', '週', '日', '時', '分', '秒'],
		labels1: ['年', '月', '週', '日', '時', '分', '秒'],
		compactLabels: ['年', '月', '週', '日'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['ja']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-ko.js
+++ loncom/html/adm/countdown/jquery.countdown-ko.js
/* http://keith-wood.name/countdown.html
   Korean initialisation for the jQuery countdown extension
   Written by Ryan Yu (ryanyu79 at gmail.com). */
(function($) {
	$.countdown.regional['ko'] = {
		labels: ['년', '월', '주', '일', '시', '분', '초'],
		labels1: ['년', '월', '주', '일', '시', '분', '초'],
		compactLabels: ['년', '월', '주', '일'],
		compactLabels1: ['년', '월', '주', '일'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['ko']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-lt.js
+++ loncom/html/adm/countdown/jquery.countdown-lt.js
/* http://keith-wood.name/countdown.html
 * Lithuanian localisation for the jQuery countdown extension
 * Written by Moacir P. de Sá Pereira (moacir{at}gmail.com) (2009) */
(function($) {
	$.countdown.regional['lt'] = {
		labels: ['Metų', 'Mėnesių', 'Savaičių', 'Dienų', 'Valandų', 'Minučių', 'Sekundžių'],
		labels1: ['Metai', 'MÄ—nuo', 'SavaitÄ—', 'Diena', 'Valanda', 'MinutÄ—', 'SekundÄ—'],
		compactLabels: ['m', 'm', 's', 'd'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['lt']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-lv.js
+++ loncom/html/adm/countdown/jquery.countdown-lv.js
/* http://keith-wood.name/countdown.html
 * Latvian initialisation for the jQuery countdown extension
 * Written by Jānis Peisenieks janis.peisenieks at gmail.com (2010) */
(function($) {
	$.countdown.regional['lv'] = {
		labels: ['Gadi', 'Mēneši', 'Nedēļas', 'Dienas', 'Stundas', 'Minūtes', 'Sekundes'],
		labels1: ['Gads', 'Mēnesis', 'Nedēļa', 'Diena', 'Stunda', 'Minūte', 'Sekunde'],
		compactLabels: ['l', 'm', 'n', 'd'], compactLabels1: ['g', 'm', 'n', 'd'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['lv']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-ms.js
+++ loncom/html/adm/countdown/jquery.countdown-ms.js
/* http://keith-wood.name/countdown.html
   Malay initialisation for the jQuery countdown extension
   Written by Jason Ong (jason{at}portalgroove.com) May 2010. */
(function($) {
	$.countdown.regional['ms'] = {
		labels: ['Tahun', 'Bulan', 'Minggu', 'Hari', 'Jam', 'Minit', 'Saat'],
		labels1: ['Tahun', 'Bulan', 'Minggu', 'Hari', 'Jam', 'Minit', 'Saat'],
		compactLabels: ['t', 'b', 'm', 'h'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['ms']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-my.js
+++ loncom/html/adm/countdown/jquery.countdown-my.js
/* http://keith-wood.name/countdown.html
   Burmese initialisation for the jQuery countdown extension
   Written by Win Lwin Moe (winnlwinmoe at gmail.com) Dec 2009. */
(function($) {
	$.countdown.regional['my'] = {
		labels: ['နွစ္', 'လ', 'ရက္သတဿတပတ္', 'ရက္', 'နာရီ', 'မိနစ္', 'စကဿကန့္'],
		labels1: ['နွစ္', 'လ', 'ရက္သတဿတပတ္', 'ရက္', 'နာရီ', 'မိနစ္', 'စကဿကန့္'],
		compactLabels: ['နွစ္', 'လ', 'ရက္သတဿတပတ္', 'ရက္'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['my']);
})(jQuery);
Index: loncom/html/adm/countdown/jquery.countdown-nb.js
+++ loncom/html/adm/countdown/jquery.countdown-nb.js
/* http://keith-wood.name/countdown.html
   Norwegian Bokmål translation
   Written by Kristian Ravnevand */
(function($) {
	$.countdown.regional['nb'] = {
		labels: ['Ã…r', 'MÃ¥neder', 'Uker', 'Dager', 'Timer', 'Minutter', 'Sekunder'],
		labels1: ['Ã…r', 'MÃ¥ned', 'Uke', 'Dag', 'Time', 'Minutt', 'Sekund'],
		compactLabels: ['Ã…', 'M', 'U', 'D'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['nb']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-nl.js
+++ loncom/html/adm/countdown/jquery.countdown-nl.js
/* http://keith-wood.name/countdown.html
   Dutch initialisation for the jQuery countdown extension
   Written by Mathias Bynens <http://mathiasbynens.be/> Mar 2008. */
(function($) {
	$.countdown.regional['nl'] = {
		labels: ['Jaren', 'Maanden', 'Weken', 'Dagen', 'Uren', 'Minuten', 'Seconden'],
		labels1: ['Jaar', 'Maand', 'Week', 'Dag', 'Uur', 'Minuut', 'Seconde'],
		compactLabels: ['j', 'm', 'w', 'd'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['nl']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-pl.js
+++ loncom/html/adm/countdown/jquery.countdown-pl.js
/* http://keith-wood.name/countdown.html
 * Polish initialisation for the jQuery countdown extension
 * Written by Pawel Lewtak lewtak at gmail.com (2008) */
(function($) {
	$.countdown.regional['pl'] = {
		labels: ['lat', 'miesięcy', 'tygodni', 'dni', 'godzin', 'minut', 'sekund'],
		labels1: ['rok', 'miesiąc', 'tydzień', 'dzień', 'godzina', 'minuta', 'sekunda'],
		labels2: ['lata', 'miesiÄ…ce', 'tygodnie', 'dni', 'godziny', 'minuty', 'sekundy'],
		compactLabels: ['l', 'm', 't', 'd'], compactLabels1: ['r', 'm', 't', 'd'],
		whichLabels: function(amount) {
			var units = amount % 10;
			var tens = Math.floor((amount % 100) / 10);
			return (amount == 1 ? 1 : (units >= 2 && units <= 4 && tens != 1 ? 2 : 0));
		},
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['pl']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-pt-BR.js
+++ loncom/html/adm/countdown/jquery.countdown-pt-BR.js
/* http://keith-wood.name/countdown.html
   Brazilian initialisation for the jQuery countdown extension
   Translated by Marcelo Pellicano de Oliveira (pellicano at gmail.com) Feb 2008. */
(function($) {
	$.countdown.regional['pt-BR'] = {
		labels: ['Anos', 'Meses', 'Semanas', 'Dias', 'Horas', 'Minutos', 'Segundos'],
		labels1: ['Anos', 'Meses', 'Semanas', 'Dias', 'Horas', 'Minutos', 'Segundos'],
		compactLabels: ['a', 'm', 's', 'd'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['pt-BR']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-ro.js
+++ loncom/html/adm/countdown/jquery.countdown-ro.js
/* http://keith-wood.name/countdown.html
 * Romanian initialisation for the jQuery countdown extension
 * Written by Edmond L. (webmond at gmail.com). */
(function($) {
	$.countdown.regional['ro'] = {
		labels: ['Ani', 'Luni', 'Saptamani', 'Zile', 'Ore', 'Minute', 'Secunde'],
		labels1: ['An', 'Luna', 'Saptamana', 'Ziua', 'Ora', 'Minutul', 'Secunda'],
		compactLabels: ['A', 'L', 'S', 'Z'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['ro']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-ru.js
+++ loncom/html/adm/countdown/jquery.countdown-ru.js
/* http://keith-wood.name/countdown.html
 * Russian initialisation for the jQuery countdown extension
 * Written by Sergey K. (xslade{at}gmail.com) June 2010. */
(function($) {
        $.countdown.regional['ru'] = {
		labels: ['Лет', 'Месяцев', 'Недель', 'Дней', 'Часов', 'Минут', 'Секунд'],
		labels1: ['Год', 'Месяц', 'Неделя', 'День', 'Час', 'Минута', 'Секунда'],
		labels2: ['Года', 'Месяца', 'Недели', 'Дня', 'Часа', 'Минуты', 'Секунды'],
		compactLabels: ['l', 'm', 't', 'd'], compactLabels1: ['r', 'm', 't', 'd'],
		whichLabels: function(amount) {
			var units = amount % 10;
			var tens = Math.floor((amount % 100) / 10);
			return (amount == 1 ? 1 : (units >= 2 && units <= 4 && tens != 1 ? 2 :
				(units == 1 && tens != 1 ? 1 : 0)));
		},
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['ru']);
})(jQuery);
Index: loncom/html/adm/countdown/jquery.countdown-sk.js
+++ loncom/html/adm/countdown/jquery.countdown-sk.js
/* http://keith-wood.name/countdown.html
 * Slovak initialisation for the jQuery countdown extension
 * Written by Roman Chlebec (creamd at c64.sk) (2008) */
(function($) {
	$.countdown.regional['sk'] = {
		labels: ['Rokov', 'Mesiacov', 'Týždňov', 'Dní', 'Hodín', 'Minút', 'Sekúnd'],
		labels1: ['Rok', 'Mesiac', 'Týždeň', 'Deň', 'Hodina', 'Minúta', 'Sekunda'],
		labels2: ['Roky', 'Mesiace', 'Týždne', 'Dni', 'Hodiny', 'Minúty', 'Sekundy'],
		compactLabels: ['r', 'm', 't', 'd'],
		whichLabels: function(amount) {
			return (amount == 1 ? 1 : (amount >= 2 && amount <= 4 ? 2 : 0));
		},
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['sk']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-sl.js
+++ loncom/html/adm/countdown/jquery.countdown-sl.js
/* http://keith-wood.name/countdown.html
 * Slovenian localisation for the jQuery countdown extension
 * Written by Borut Tomažin (debijan{at}gmail.com) (2011) */
(function($) {
	$.countdown.regional['sl'] = {
		labels: ['Let', 'Mesecev', 'Tednov', 'Dni', 'Ur', 'Minut', 'Sekund'],
		labels1: ['Leto', 'Mesec', 'Teden', 'Dan', 'Ura', 'Minuta', 'Sekunda'],
		compactLabels: ['l', 'm', 't', 'd'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['sl']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-sr-SR.js
+++ loncom/html/adm/countdown/jquery.countdown-sr-SR.js
/* http://keith-wood.name/countdown.html
 * Serbian Latin initialisation for the jQuery countdown extension
 * Written by Predrag Leka lp at lemurcake.com (2010) */
(function($) {
	$.countdown.regional['sr-SR'] = {
		labels: ['Godina', 'Meseci', 'Nedelja', 'Dana', 'ÄŒasova', 'Minuta', 'Sekundi'],
		labels1: ['Godina', 'Mesec', 'Nedelja', 'Dan', 'ÄŒas', 'Minut', 'Sekunda'],
		labels2: ['Godine', 'Meseca', 'Nedelje', 'Dana', 'ÄŒasa', 'Minuta', 'Sekunde'],
		compactLabels: ['g', 'm', 'n', 'd'],
		whichLabels: function(amount) {
			return (amount == 1 ? 1 : (amount >= 2 && amount <= 4 ? 2 : 0));
		},
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['sr-SR']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-sr.js
+++ loncom/html/adm/countdown/jquery.countdown-sr.js
/* http://keith-wood.name/countdown.html
 * Serbian Cyrillic initialisation for the jQuery countdown extension
 * Written by Predrag Leka lp at lemurcake.com (2010) */
(function($) {
	$.countdown.regional['sr'] = {
		labels: ['Година', 'Месеци', 'Недеља', 'Дана', 'Часова', 'Минута', 'Секунди'],
		labels1: ['Година', 'месец', 'Недеља', 'Дан', 'Час', 'Минут', 'Секунда'],
		labels2: ['Године', 'Месеца', 'Недеље', 'Дана', 'Часа', 'Минута', 'Секунде'],
		compactLabels: ['г', 'м', 'н', 'д'],
		whichLabels: function(amount) {
			return (amount == 1 ? 1 : (amount >= 2 && amount <= 4 ? 2 : 0));
		},
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['sr']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-sv.js
+++ loncom/html/adm/countdown/jquery.countdown-sv.js
/* http://keith-wood.name/countdown.html
   Swedish initialisation for the jQuery countdown extension
   Written by Carl (carl at nordenfelt.com). */
(function($) {
	$.countdown.regional['sv'] = {
		labels: ['Ã…r', 'MÃ¥nader', 'Veckor', 'Dagar', 'Timmar', 'Minuter', 'Sekunder'],
		labels1: ['Ã…r', 'MÃ¥nad', 'Vecka', 'Dag', 'Timme', 'Minut', 'Sekund'],
		compactLabels: ['Ã…', 'M', 'V', 'D'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['sv']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-th.js
+++ loncom/html/adm/countdown/jquery.countdown-th.js
/* http://keith-wood.name/countdown.html
   Thai initialisation for the jQuery countdown extension
   Written by Pornchai Sakulsrimontri (li_sin_th at yahoo.com). */
(function($) {
	$.countdown.regional['th'] = {
		labels: ['ปี', 'เดือน', 'สัปดาห์', 'วัน', 'ชั่วโมง', 'นาที', 'วินาที'],
		labels1: ['ปี', 'เดือน', 'สัปดาห์', 'วัน', 'ชั่วโมง', 'นาที', 'วินาที'],
		compactLabels: ['ปี', 'เดือน', 'สัปดาห์', 'วัน'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['th']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-tr.js
+++ loncom/html/adm/countdown/jquery.countdown-tr.js
/* http://keith-wood.name/countdown.html
* Turkish initialisation for the jQuery countdown extension
* Written by Bekir AhmetoÄŸlu (bekir at cerek.com) Aug 2008. */
(function($) {
	$.countdown.regional['tr'] = {
		labels: ['Yıl', 'Ay', 'Hafta', 'Gün', 'Saat', 'Dakika', 'Saniye'],
		labels1: ['Yıl', 'Ay', 'Hafta', 'Gün', 'Saat', 'Dakika', 'Saniye'],
		compactLabels: ['y', 'a', 'h', 'g'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['tr']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-uk.js
+++ loncom/html/adm/countdown/jquery.countdown-uk.js
/* http://keith-wood.name/countdown.html
 * Ukrainian initialisation for the jQuery countdown extension
 * Written by Goloborodko M misha.gm at gmail.com (2009) */
(function($) {
	$.countdown.regional['uk'] = {
		labels: ['Років', 'Місяців', 'Тижднів', 'Днів', 'Годин', 'Хвилин', 'Секунд'],
		labels1: ['Рік', 'Місяць', 'Тиждень', 'День', 'Година', 'Хвилина', 'Секунда'],
		compactLabels: ['r', 'm', 't', 'd'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['uk']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-vi.js
+++ loncom/html/adm/countdown/jquery.countdown-vi.js
/* http://keith-wood.name/countdown.html
 * Vietnamese initialisation for the jQuery countdown extension
 * Written by Pham Tien Hung phamtienhung at gmail.com (2010) */
(function($) {
	$.countdown.regional['vi'] = {
		labels: ['Năm', 'Tháng', 'Tuần', 'Ngày', 'Giờ', 'Phút', 'Giây'],
		labels1: ['Năm', 'Tháng', 'Tuần', 'Ngày', 'Giờ', 'Phút', 'Giây'],
		compactLabels: ['năm', 'th', 'tu', 'ng'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['vi']);
})(jQuery);
Index: loncom/html/adm/countdown/jquery.countdown-zh-CN.js
+++ loncom/html/adm/countdown/jquery.countdown-zh-CN.js
/* http://keith-wood.name/countdown.html
   Simplified Chinese initialisation for the jQuery countdown extension
   Written by Cloudream (cloudream at gmail.com). */
(function($) {
	$.countdown.regional['zh-CN'] = {
		labels: ['年', '月', '周', '天', '时', '分', '秒'],
		labels1: ['年', '月', '周', '天', '时', '分', '秒'],
		compactLabels: ['年', '月', '周', '天'], compactLabels1: ['年', '月', '周', '天'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['zh-CN']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown-zh-TW.js
+++ loncom/html/adm/countdown/jquery.countdown-zh-TW.js
/* http://keith-wood.name/countdown.html
   Traditional Chinese initialisation for the jQuery countdown extension
   Written by Cloudream (cloudream at gmail.com). */
(function($) {
	$.countdown.regional['zh-TW'] = {
		labels: ['年', '月', '周', '天', '時', '分', '秒'],
		labels1: ['年', '月', '周', '天', '時', '分', '秒'],
		compactLabels: ['年', '月', '周', '天'], compactLabels1: ['年', '月', '周', '天'],
		whichLabels: null,
		timeSeparator: ':', isRTL: false};
	$.countdown.setDefaults($.countdown.regional['zh-TW']);
})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown.css
+++ loncom/html/adm/countdown/jquery.countdown.css
/* jQuery Countdown styles 1.5.11. */
hasCountdown {
	border: 1px solid #ccc;
	background-color: #eee;
}
countdown_rtl {
	direction: rtl;
}
countdown_holding span {
	background-color: #ccc;
}
countdown_row {
	clear: both;
	width: 100%;
	padding: 0px 2px;
	text-align: center;
}
countdown_show1 .countdown_section {
	width: 98%;
}
countdown_show2 .countdown_section {
	width: 48%;
}
countdown_show3 .countdown_section {
	width: 32.5%;
}
countdown_show4 .countdown_section {
	width: 24.5%;
}
countdown_show5 .countdown_section {
	width: 19.5%;
}
countdown_show6 .countdown_section {
	width: 16.25%;
}
countdown_show7 .countdown_section {
	width: 14%;
}
countdown_section {
	display: block;
	float: left;
	font-size: 75%;
	text-align: center;
}
countdown_amount {
	font-size: 200%;
}
countdown_descr {
	display: block;
	width: 100%;
}

Index: loncom/html/adm/countdown/jquery.countdown.js
+++ loncom/html/adm/countdown/jquery.countdown.js
/* http://keith-wood.name/countdown.html
   Countdown for jQuery v1.5.11.
   Written by Keith Wood (kbwood{at}iinet.com.au) January 2008.
   Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and 
   MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses. 
   Please attribute the author if you use it. */

/* Display a countdown timer.
   Attach it with options like:
   $('div selector').countdown(
       {until: new Date(2009, 1 - 1, 1, 0, 0, 0), onExpiry: happyNewYear}); */

(function($) { // Hide scope, no $ conflict

/* Countdown manager. */
function Countdown() {
	this.regional = []; // Available regional settings, indexed by language code
	this.regional[''] = { // Default regional settings
		// The display texts for the counters
		labels: ['Years', 'Months', 'Weeks', 'Days', 'Hours', 'Minutes', 'Seconds'],
		// The display texts for the counters if only one
		labels1: ['Year', 'Month', 'Week', 'Day', 'Hour', 'Minute', 'Second'],
		compactLabels: ['y', 'm', 'w', 'd'], // The compact texts for the counters
		whichLabels: null, // Function to determine which labels to use
		timeSeparator: ':', // Separator for time periods
		isRTL: false // True for right-to-left languages, false for left-to-right
	};
	this._defaults = {
		until: null, // new Date(year, mth - 1, day, hr, min, sec) - date/time to count down to
			// or numeric for seconds offset, or string for unit offset(s):
			// 'Y' years, 'O' months, 'W' weeks, 'D' days, 'H' hours, 'M' minutes, 'S' seconds
		since: null, // new Date(year, mth - 1, day, hr, min, sec) - date/time to count up from
			// or numeric for seconds offset, or string for unit offset(s):
			// 'Y' years, 'O' months, 'W' weeks, 'D' days, 'H' hours, 'M' minutes, 'S' seconds
		timezone: null, // The timezone (hours or minutes from GMT) for the target times,
			// or null for client local
		serverSync: null, // A function to retrieve the current server time for synchronisation
		format: 'dHMS', // Format for display - upper case for always, lower case only if non-zero,
			// 'Y' years, 'O' months, 'W' weeks, 'D' days, 'H' hours, 'M' minutes, 'S' seconds
		layout: '', // Build your own layout for the countdown
		compact: false, // True to display in a compact format, false for an expanded one
		significant: 0, // The number of periods with values to show, zero for all
		description: '', // The description displayed for the countdown
		expiryUrl: '', // A URL to load upon expiry, replacing the current page
		expiryText: '', // Text to display upon expiry, replacing the countdown
		alwaysExpire: false, // True to trigger onExpiry even if never counted down
		onExpiry: null, // Callback when the countdown expires -
			// receives no parameters and 'this' is the containing division
		onTick: null, // Callback when the countdown is updated -
			// receives int[7] being the breakdown by period (based on format)
			// and 'this' is the containing division
		tickInterval: 1 // Interval (seconds) between onTick callbacks
	};
	$.extend(this._defaults, this.regional['']);
	this._serverSyncs = [];
	// Shared timer for all countdowns
	function timerCallBack(timestamp) {
		var drawStart = (timestamp || new Date().getTime());
		if (drawStart - animationStartTime >= 1000) {
			$.countdown._updateTargets();
			animationStartTime = drawStart;
		}
		requestAnimationFrame(timerCallBack);
	}
	var requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame ||
		window.mozRequestAnimationFrame || window.oRequestAnimationFrame ||
		window.msRequestAnimationFrame || null; // this is when we expect a fall-back to setInterval as it's much more fluid
	var animationStartTime = 0;
	if (!requestAnimationFrame) {
		setInterval(function() { $.countdown._updateTargets(); }, 980); // Fall back to good old setInterval
	}
	else {
		animationStartTime = window.mozAnimationStartTime || new Date().getTime();
		requestAnimationFrame(timerCallBack);
	}
}

var PROP_NAME = 'countdown';

var Y = 0; // Years
var O = 1; // Months
var W = 2; // Weeks
var D = 3; // Days
var H = 4; // Hours
var M = 5; // Minutes
var S = 6; // Seconds

$.extend(Countdown.prototype, {
	/* Class name added to elements to indicate already configured with countdown. */
	markerClassName: 'hasCountdown',

	/* List of currently active countdown targets. */
	_timerTargets: [],
	
	/* Override the default settings for all instances of the countdown widget.
	   @param  options  (object) the new settings to use as defaults */
	setDefaults: function(options) {
		this._resetExtraLabels(this._defaults, options);
		extendRemove(this._defaults, options || {});
	},

	/* Convert a date/time to UTC.
	   @param  tz     (number) the hour or minute offset from GMT, e.g. +9, -360
	   @param  year   (Date) the date/time in that timezone or
	                  (number) the year in that timezone
	   @param  month  (number, optional) the month (0 - 11) (omit if year is a Date)
	   @param  day    (number, optional) the day (omit if year is a Date)
	   @param  hours  (number, optional) the hour (omit if year is a Date)
	   @param  mins   (number, optional) the minute (omit if year is a Date)
	   @param  secs   (number, optional) the second (omit if year is a Date)
	   @param  ms     (number, optional) the millisecond (omit if year is a Date)
	   @return  (Date) the equivalent UTC date/time */
	UTCDate: function(tz, year, month, day, hours, mins, secs, ms) {
		if (typeof year == 'object' && year.constructor == Date) {
			ms = year.getMilliseconds();
			secs = year.getSeconds();
			mins = year.getMinutes();
			hours = year.getHours();
			day = year.getDate();
			month = year.getMonth();
			year = year.getFullYear();
		}
		var d = new Date();
		d.setUTCFullYear(year);
		d.setUTCDate(1);
		d.setUTCMonth(month || 0);
		d.setUTCDate(day || 1);
		d.setUTCHours(hours || 0);
		d.setUTCMinutes((mins || 0) - (Math.abs(tz) < 30 ? tz * 60 : tz));
		d.setUTCSeconds(secs || 0);
		d.setUTCMilliseconds(ms || 0);
		return d;
	},

	/* Convert a set of periods into seconds.
	   Averaged for months and years.
	   @param  periods  (number[7]) the periods per year/month/week/day/hour/minute/second
	   @return  (number) the corresponding number of seconds */
	periodsToSeconds: function(periods) {
		return periods[0] * 31557600 + periods[1] * 2629800 + periods[2] * 604800 +
			periods[3] * 86400 + periods[4] * 3600 + periods[5] * 60 + periods[6];
	},

	/* Retrieve one or more settings values.
	   @param  name  (string, optional) the name of the setting to retrieve
	                 or 'all' for all instance settings or omit for all default settings
	   @return  (any) the requested setting(s) */
	_settingsCountdown: function(target, name) {
		if (!name) {
			return $.countdown._defaults;
		}
		var inst = $.data(target, PROP_NAME);
		return (name == 'all' ? inst.options : inst.options[name]);
	},

	/* Attach the countdown widget to a div.
	   @param  target   (element) the containing division
	   @param  options  (object) the initial settings for the countdown */
	_attachCountdown: function(target, options) {
		var $target = $(target);
		if ($target.hasClass(this.markerClassName)) {
			return;
		}
		$target.addClass(this.markerClassName);
		var inst = {options: $.extend({}, options),
			_periods: [0, 0, 0, 0, 0, 0, 0]};
		$.data(target, PROP_NAME, inst);
		this._changeCountdown(target);
	},

	/* Add a target to the list of active ones.
	   @param  target  (element) the countdown target */
	_addTarget: function(target) {
		if (!this._hasTarget(target)) {
			this._timerTargets.push(target);
		}
	},

	/* See if a target is in the list of active ones.
	   @param  target  (element) the countdown target
	   @return  (boolean) true if present, false if not */
	_hasTarget: function(target) {
		return ($.inArray(target, this._timerTargets) > -1);
	},

	/* Remove a target from the list of active ones.
	   @param  target  (element) the countdown target */
	_removeTarget: function(target) {
		this._timerTargets = $.map(this._timerTargets,
			function(value) { return (value == target ? null : value); }); // delete entry
	},

	/* Update each active timer target. */
	_updateTargets: function() {
		for (var i = this._timerTargets.length - 1; i >= 0; i--) {
			this._updateCountdown(this._timerTargets[i]);
		}
	},

	/* Redisplay the countdown with an updated display.
	   @param  target  (jQuery) the containing division
	   @param  inst    (object) the current settings for this instance */
	_updateCountdown: function(target, inst) {
		var $target = $(target);
		inst = inst || $.data(target, PROP_NAME);
		if (!inst) {
			return;
		}
		$target.html(this._generateHTML(inst));
		$target[(this._get(inst, 'isRTL') ? 'add' : 'remove') + 'Class']('countdown_rtl');
		var onTick = this._get(inst, 'onTick');
		if (onTick) {
			var periods = inst._hold != 'lap' ? inst._periods :
				this._calculatePeriods(inst, inst._show, this._get(inst, 'significant'), new Date());
			var tickInterval = this._get(inst, 'tickInterval');
			if (tickInterval == 1 || this.periodsToSeconds(periods) % tickInterval == 0) {
				onTick.apply(target, [periods]);
			}
		}
		var expired = inst._hold != 'pause' &&
			(inst._since ? inst._now.getTime() < inst._since.getTime() :
			inst._now.getTime() >= inst._until.getTime());
		if (expired && !inst._expiring) {
			inst._expiring = true;
			if (this._hasTarget(target) || this._get(inst, 'alwaysExpire')) {
				this._removeTarget(target);
				var onExpiry = this._get(inst, 'onExpiry');
				if (onExpiry) {
					onExpiry.apply(target, []);
				}
				var expiryText = this._get(inst, 'expiryText');
				if (expiryText) {
					var layout = this._get(inst, 'layout');
					inst.options.layout = expiryText;
					this._updateCountdown(target, inst);
					inst.options.layout = layout;
				}
				var expiryUrl = this._get(inst, 'expiryUrl');
				if (expiryUrl) {
					window.location = expiryUrl;
				}
			}
			inst._expiring = false;
		}
		else if (inst._hold == 'pause') {
			this._removeTarget(target);
		}
		$.data(target, PROP_NAME, inst);
	},

	/* Reconfigure the settings for a countdown div.
	   @param  target   (element) the containing division
	   @param  options  (object) the new settings for the countdown or
	                    (string) an individual property name
	   @param  value    (any) the individual property value
	                    (omit if options is an object) */
	_changeCountdown: function(target, options, value) {
		options = options || {};
		if (typeof options == 'string') {
			var name = options;
			options = {};
			options[name] = value;
		}
		var inst = $.data(target, PROP_NAME);
		if (inst) {
			this._resetExtraLabels(inst.options, options);
			extendRemove(inst.options, options);
			this._adjustSettings(target, inst);
			$.data(target, PROP_NAME, inst);
			var now = new Date();
			if ((inst._since && inst._since < now) ||
					(inst._until && inst._until > now)) {
				this._addTarget(target);
			}
			this._updateCountdown(target, inst);
		}
	},

	/* Reset any extra labelsn and compactLabelsn entries if changing labels.
	   @param  base     (object) the options to be updated
	   @param  options  (object) the new option values */
	_resetExtraLabels: function(base, options) {
		var changingLabels = false;
		for (var n in options) {
			if (n != 'whichLabels' && n.match(/[Ll]abels/)) {
				changingLabels = true;
				break;
			}
		}
		if (changingLabels) {
			for (var n in base) { // Remove custom numbered labels
				if (n.match(/[Ll]abels[0-9]/)) {
					base[n] = null;
				}
			}
		}
	},
	
	/* Calculate interal settings for an instance.
	   @param  target  (element) the containing division
	   @param  inst    (object) the current settings for this instance */
	_adjustSettings: function(target, inst) {
		var now;
		var serverSync = this._get(inst, 'serverSync');
		var serverOffset = 0;
		var serverEntry = null;
		for (var i = 0; i < this._serverSyncs.length; i++) {
			if (this._serverSyncs[i][0] == serverSync) {
				serverEntry = this._serverSyncs[i][1];
				break;
			}
		}
		if (serverEntry != null) {
			serverOffset = (serverSync ? serverEntry : 0);
			now = new Date();
		}
		else {
			var serverResult = (serverSync ? serverSync.apply(target, []) : null);
			now = new Date();
			serverOffset = (serverResult ? now.getTime() - serverResult.getTime() : 0);
			this._serverSyncs.push([serverSync, serverOffset]);
		}
		var timezone = this._get(inst, 'timezone');
		timezone = (timezone == null ? -now.getTimezoneOffset() : timezone);
		inst._since = this._get(inst, 'since');
		if (inst._since != null) {
			inst._since = this.UTCDate(timezone, this._determineTime(inst._since, null));
			if (inst._since && serverOffset) {
				inst._since.setMilliseconds(inst._since.getMilliseconds() + serverOffset);
			}
		}
		inst._until = this.UTCDate(timezone, this._determineTime(this._get(inst, 'until'), now));
		if (serverOffset) {
			inst._until.setMilliseconds(inst._until.getMilliseconds() + serverOffset);
		}
		inst._show = this._determineShow(inst);
	},

	/* Remove the countdown widget from a div.
	   @param  target  (element) the containing division */
	_destroyCountdown: function(target) {
		var $target = $(target);
		if (!$target.hasClass(this.markerClassName)) {
			return;
		}
		this._removeTarget(target);
		$target.removeClass(this.markerClassName).empty();
		$.removeData(target, PROP_NAME);
	},

	/* Pause a countdown widget at the current time.
	   Stop it running but remember and display the current time.
	   @param  target  (element) the containing division */
	_pauseCountdown: function(target) {
		this._hold(target, 'pause');
	},

	/* Pause a countdown widget at the current time.
	   Stop the display but keep the countdown running.
	   @param  target  (element) the containing division */
	_lapCountdown: function(target) {
		this._hold(target, 'lap');
	},

	/* Resume a paused countdown widget.
	   @param  target  (element) the containing division */
	_resumeCountdown: function(target) {
		this._hold(target, null);
	},

	/* Pause or resume a countdown widget.
	   @param  target  (element) the containing division
	   @param  hold    (string) the new hold setting */
	_hold: function(target, hold) {
		var inst = $.data(target, PROP_NAME);
		if (inst) {
			if (inst._hold == 'pause' && !hold) {
				inst._periods = inst._savePeriods;
				var sign = (inst._since ? '-' : '+');
				inst[inst._since ? '_since' : '_until'] =
					this._determineTime(sign + inst._periods[0] + 'y' +
						sign + inst._periods[1] + 'o' + sign + inst._periods[2] + 'w' +
						sign + inst._periods[3] + 'd' + sign + inst._periods[4] + 'h' + 
						sign + inst._periods[5] + 'm' + sign + inst._periods[6] + 's');
				this._addTarget(target);
			}
			inst._hold = hold;
			inst._savePeriods = (hold == 'pause' ? inst._periods : null);
			$.data(target, PROP_NAME, inst);
			this._updateCountdown(target, inst);
		}
	},

	/* Return the current time periods.
	   @param  target  (element) the containing division
	   @return  (number[7]) the current periods for the countdown */
	_getTimesCountdown: function(target) {
		var inst = $.data(target, PROP_NAME);
		return (!inst ? null : (!inst._hold ? inst._periods :
			this._calculatePeriods(inst, inst._show, this._get(inst, 'significant'), new Date())));
	},

	/* Get a setting value, defaulting if necessary.
	   @param  inst  (object) the current settings for this instance
	   @param  name  (string) the name of the required setting
	   @return  (any) the setting's value or a default if not overridden */
	_get: function(inst, name) {
		return (inst.options[name] != null ?
			inst.options[name] : $.countdown._defaults[name]);
	},

	/* A time may be specified as an exact value or a relative one.
	   @param  setting      (string or number or Date) - the date/time value
	                        as a relative or absolute value
	   @param  defaultTime  (Date) the date/time to use if no other is supplied
	   @return  (Date) the corresponding date/time */
	_determineTime: function(setting, defaultTime) {
		var offsetNumeric = function(offset) { // e.g. +300, -2
			var time = new Date();
			time.setTime(time.getTime() + offset * 1000);
			return time;
		};
		var offsetString = function(offset) { // e.g. '+2d', '-4w', '+3h +30m'
			offset = offset.toLowerCase();
			var time = new Date();
			var year = time.getFullYear();
			var month = time.getMonth();
			var day = time.getDate();
			var hour = time.getHours();
			var minute = time.getMinutes();
			var second = time.getSeconds();
			var pattern = /([+-]?[0-9]+)\s*(s|m|h|d|w|o|y)?/g;
			var matches = pattern.exec(offset);
			while (matches) {
				switch (matches[2] || 's') {
					case 's': second += parseInt(matches[1], 10); break;
					case 'm': minute += parseInt(matches[1], 10); break;
					case 'h': hour += parseInt(matches[1], 10); break;
					case 'd': day += parseInt(matches[1], 10); break;
					case 'w': day += parseInt(matches[1], 10) * 7; break;
					case 'o':
						month += parseInt(matches[1], 10); 
						day = Math.min(day, $.countdown._getDaysInMonth(year, month));
						break;
					case 'y':
						year += parseInt(matches[1], 10);
						day = Math.min(day, $.countdown._getDaysInMonth(year, month));
						break;
				}
				matches = pattern.exec(offset);
			}
			return new Date(year, month, day, hour, minute, second, 0);
		};
		var time = (setting == null ? defaultTime :
			(typeof setting == 'string' ? offsetString(setting) :
			(typeof setting == 'number' ? offsetNumeric(setting) : setting)));
		if (time) time.setMilliseconds(0);
		return time;
	},

	/* Determine the number of days in a month.
	   @param  year   (number) the year
	   @param  month  (number) the month
	   @return  (number) the days in that month */
	_getDaysInMonth: function(year, month) {
		return 32 - new Date(year, month, 32).getDate();
	},

	/* Determine which set of labels should be used for an amount.
	   @param  num  (number) the amount to be displayed
	   @return  (number) the set of labels to be used for this amount */
	_normalLabels: function(num) {
		return num;
	},

	/* Generate the HTML to display the countdown widget.
	   @param  inst  (object) the current settings for this instance
	   @return  (string) the new HTML for the countdown display */
	_generateHTML: function(inst) {
		// Determine what to show
		var significant = this._get(inst, 'significant');
		inst._periods = (inst._hold ? inst._periods :
			this._calculatePeriods(inst, inst._show, significant, new Date()));
		// Show all 'asNeeded' after first non-zero value
		var shownNonZero = false;
		var showCount = 0;
		var sigCount = significant;
		var show = $.extend({}, inst._show);
		for (var period = Y; period <= S; period++) {
			shownNonZero |= (inst._show[period] == '?' && inst._periods[period] > 0);
			show[period] = (inst._show[period] == '?' && !shownNonZero ? null : inst._show[period]);
			showCount += (show[period] ? 1 : 0);
			sigCount -= (inst._periods[period] > 0 ? 1 : 0);
		}
		var showSignificant = [false, false, false, false, false, false, false];
		for (var period = S; period >= Y; period--) { // Determine significant periods
			if (inst._show[period]) {
				if (inst._periods[period]) {
					showSignificant[period] = true;
				}
				else {
					showSignificant[period] = sigCount > 0;
					sigCount--;
				}
			}
		}
		var compact = this._get(inst, 'compact');
		var layout = this._get(inst, 'layout');
		var labels = (compact ? this._get(inst, 'compactLabels') : this._get(inst, 'labels'));
		var whichLabels = this._get(inst, 'whichLabels') || this._normalLabels;
		var timeSeparator = this._get(inst, 'timeSeparator');
		var description = this._get(inst, 'description') || '';
		var showCompact = function(period) {
			var labelsNum = $.countdown._get(inst,
				'compactLabels' + whichLabels(inst._periods[period]));
			return (show[period] ? inst._periods[period] +
				(labelsNum ? labelsNum[period] : labels[period]) + ' ' : '');
		};
		var showFull = function(period) {
			var labelsNum = $.countdown._get(inst, 'labels' + whichLabels(inst._periods[period]));
			return ((!significant && show[period]) || (significant && showSignificant[period]) ?
				'<span class="countdown_section"><span class="countdown_amount">' +
				inst._periods[period] + '</span><br/>' +
				(labelsNum ? labelsNum[period] : labels[period]) + '</span>' : '');
		};
		return (layout ? this._buildLayout(inst, show, layout, compact, significant, showSignificant) :
			((compact ? // Compact version
			'<span class="countdown_row countdown_amount' +
			(inst._hold ? ' countdown_holding' : '') + '">' + 
			showCompact(Y) + showCompact(O) + showCompact(W) + showCompact(D) + 
			(show[H] ? this._minDigits(inst._periods[H], 2) : '') +
			(show[M] ? (show[H] ? timeSeparator : '') +
			this._minDigits(inst._periods[M], 2) : '') +
			(show[S] ? (show[H] || show[M] ? timeSeparator : '') +
			this._minDigits(inst._periods[S], 2) : '') :
			// Full version
			'<span class="countdown_row countdown_show' + (significant || showCount) +
			(inst._hold ? ' countdown_holding' : '') + '">' +
			showFull(Y) + showFull(O) + showFull(W) + showFull(D) +
			showFull(H) + showFull(M) + showFull(S)) + '</span>' +
			(description ? '<span class="countdown_row countdown_descr">' + description + '</span>' : '')));
	},

	/* Construct a custom layout.
	   @param  inst             (object) the current settings for this instance
	   @param  show             (string[7]) flags indicating which periods are requested
	   @param  layout           (string) the customised layout
	   @param  compact          (boolean) true if using compact labels
	   @param  significant      (number) the number of periods with values to show, zero for all
	   @param  showSignificant  (boolean[7]) other periods to show for significance
	   @return  (string) the custom HTML */
	_buildLayout: function(inst, show, layout, compact, significant, showSignificant) {
		var labels = this._get(inst, (compact ? 'compactLabels' : 'labels'));
		var whichLabels = this._get(inst, 'whichLabels') || this._normalLabels;
		var labelFor = function(index) {
			return ($.countdown._get(inst,
				(compact ? 'compactLabels' : 'labels') + whichLabels(inst._periods[index])) ||
				labels)[index];
		};
		var digit = function(value, position) {
			return Math.floor(value / position) % 10;
		};
		var subs = {desc: this._get(inst, 'description'), sep: this._get(inst, 'timeSeparator'),
			yl: labelFor(Y), yn: inst._periods[Y], ynn: this._minDigits(inst._periods[Y], 2),
			ynnn: this._minDigits(inst._periods[Y], 3), y1: digit(inst._periods[Y], 1),
			y10: digit(inst._periods[Y], 10), y100: digit(inst._periods[Y], 100),
			y1000: digit(inst._periods[Y], 1000),
			ol: labelFor(O), on: inst._periods[O], onn: this._minDigits(inst._periods[O], 2),
			onnn: this._minDigits(inst._periods[O], 3), o1: digit(inst._periods[O], 1),
			o10: digit(inst._periods[O], 10), o100: digit(inst._periods[O], 100),
			o1000: digit(inst._periods[O], 1000),
			wl: labelFor(W), wn: inst._periods[W], wnn: this._minDigits(inst._periods[W], 2),
			wnnn: this._minDigits(inst._periods[W], 3), w1: digit(inst._periods[W], 1),
			w10: digit(inst._periods[W], 10), w100: digit(inst._periods[W], 100),
			w1000: digit(inst._periods[W], 1000),
			dl: labelFor(D), dn: inst._periods[D], dnn: this._minDigits(inst._periods[D], 2),
			dnnn: this._minDigits(inst._periods[D], 3), d1: digit(inst._periods[D], 1),
			d10: digit(inst._periods[D], 10), d100: digit(inst._periods[D], 100),
			d1000: digit(inst._periods[D], 1000),
			hl: labelFor(H), hn: inst._periods[H], hnn: this._minDigits(inst._periods[H], 2),
			hnnn: this._minDigits(inst._periods[H], 3), h1: digit(inst._periods[H], 1),
			h10: digit(inst._periods[H], 10), h100: digit(inst._periods[H], 100),
			h1000: digit(inst._periods[H], 1000),
			ml: labelFor(M), mn: inst._periods[M], mnn: this._minDigits(inst._periods[M], 2),
			mnnn: this._minDigits(inst._periods[M], 3), m1: digit(inst._periods[M], 1),
			m10: digit(inst._periods[M], 10), m100: digit(inst._periods[M], 100),
			m1000: digit(inst._periods[M], 1000),
			sl: labelFor(S), sn: inst._periods[S], snn: this._minDigits(inst._periods[S], 2),
			snnn: this._minDigits(inst._periods[S], 3), s1: digit(inst._periods[S], 1),
			s10: digit(inst._periods[S], 10), s100: digit(inst._periods[S], 100),
			s1000: digit(inst._periods[S], 1000)};
		var html = layout;
		// Replace period containers: {p<}...{p>}
		for (var i = Y; i <= S; i++) {
			var period = 'yowdhms'.charAt(i);
			var re = new RegExp('\\{' + period + '<\\}(.*)\\{' + period + '>\\}', 'g');
			html = html.replace(re, ((!significant && show[i]) ||
				(significant && showSignificant[i]) ? '$1' : ''));
		}
		// Replace period values: {pn}
		$.each(subs, function(n, v) {
			var re = new RegExp('\\{' + n + '\\}', 'g');
			html = html.replace(re, v);
		});
		return html;
	},

	/* Ensure a numeric value has at least n digits for display.
	   @param  value  (number) the value to display
	   @param  len    (number) the minimum length
	   @return  (string) the display text */
	_minDigits: function(value, len) {
		value = '' + value;
		if (value.length >= len) {
			return value;
		}
		value = '0000000000' + value;
		return value.substr(value.length - len);
	},

	/* Translate the format into flags for each period.
	   @param  inst  (object) the current settings for this instance
	   @return  (string[7]) flags indicating which periods are requested (?) or
	            required (!) by year, month, week, day, hour, minute, second */
	_determineShow: function(inst) {
		var format = this._get(inst, 'format');
		var show = [];
		show[Y] = (format.match('y') ? '?' : (format.match('Y') ? '!' : null));
		show[O] = (format.match('o') ? '?' : (format.match('O') ? '!' : null));
		show[W] = (format.match('w') ? '?' : (format.match('W') ? '!' : null));
		show[D] = (format.match('d') ? '?' : (format.match('D') ? '!' : null));
		show[H] = (format.match('h') ? '?' : (format.match('H') ? '!' : null));
		show[M] = (format.match('m') ? '?' : (format.match('M') ? '!' : null));
		show[S] = (format.match('s') ? '?' : (format.match('S') ? '!' : null));
		return show;
	},
	
	/* Calculate the requested periods between now and the target time.
	   @param  inst         (object) the current settings for this instance
	   @param  show         (string[7]) flags indicating which periods are requested/required
	   @param  significant  (number) the number of periods with values to show, zero for all
	   @param  now          (Date) the current date and time
	   @return  (number[7]) the current time periods (always positive)
	            by year, month, week, day, hour, minute, second */
	_calculatePeriods: function(inst, show, significant, now) {
		// Find endpoints
		inst._now = now;
		inst._now.setMilliseconds(0);
		var until = new Date(inst._now.getTime());
		if (inst._since) {
			if (now.getTime() < inst._since.getTime()) {
				inst._now = now = until;
			}
			else {
				now = inst._since;
			}
		}
		else {
			until.setTime(inst._until.getTime());
			if (now.getTime() > inst._until.getTime()) {
				inst._now = now = until;
			}
		}
		// Calculate differences by period
		var periods = [0, 0, 0, 0, 0, 0, 0];
		if (show[Y] || show[O]) {
			// Treat end of months as the same
			var lastNow = $.countdown._getDaysInMonth(now.getFullYear(), now.getMonth());
			var lastUntil = $.countdown._getDaysInMonth(until.getFullYear(), until.getMonth());
			var sameDay = (until.getDate() == now.getDate() ||
				(until.getDate() >= Math.min(lastNow, lastUntil) &&
				now.getDate() >= Math.min(lastNow, lastUntil)));
			var getSecs = function(date) {
				return (date.getHours() * 60 + date.getMinutes()) * 60 + date.getSeconds();
			};
			var months = Math.max(0,
				(until.getFullYear() - now.getFullYear()) * 12 + until.getMonth() - now.getMonth() +
				((until.getDate() < now.getDate() && !sameDay) ||
				(sameDay && getSecs(until) < getSecs(now)) ? -1 : 0));
			periods[Y] = (show[Y] ? Math.floor(months / 12) : 0);
			periods[O] = (show[O] ? months - periods[Y] * 12 : 0);
			// Adjust for months difference and end of month if necessary
			now = new Date(now.getTime());
			var wasLastDay = (now.getDate() == lastNow);
			var lastDay = $.countdown._getDaysInMonth(now.getFullYear() + periods[Y],
				now.getMonth() + periods[O]);
			if (now.getDate() > lastDay) {
				now.setDate(lastDay);
			}
			now.setFullYear(now.getFullYear() + periods[Y]);
			now.setMonth(now.getMonth() + periods[O]);
			if (wasLastDay) {
				now.setDate(lastDay);
			}
		}
		var diff = Math.floor((until.getTime() - now.getTime()) / 1000);
		var extractPeriod = function(period, numSecs) {
			periods[period] = (show[period] ? Math.floor(diff / numSecs) : 0);
			diff -= periods[period] * numSecs;
		};
		extractPeriod(W, 604800);
		extractPeriod(D, 86400);
		extractPeriod(H, 3600);
		extractPeriod(M, 60);
		extractPeriod(S, 1);
		if (diff > 0 && !inst._since) { // Round up if left overs
			var multiplier = [1, 12, 4.3482, 7, 24, 60, 60];
			var lastShown = S;
			var max = 1;
			for (var period = S; period >= Y; period--) {
				if (show[period]) {
					if (periods[lastShown] >= max) {
						periods[lastShown] = 0;
						diff = 1;
					}
					if (diff > 0) {
						periods[period]++;
						diff = 0;
						lastShown = period;
						max = 1;
					}
				}
				max *= multiplier[period];
			}
		}
		if (significant) { // Zero out insignificant periods
			for (var period = Y; period <= S; period++) {
				if (significant && periods[period]) {
					significant--;
				}
				else if (!significant) {
					periods[period] = 0;
				}
			}
		}
		return periods;
	}
});

/* jQuery extend now ignores nulls!
   @param  target  (object) the object to update
   @param  props   (object) the new settings
   @return  (object) the updated object */
function extendRemove(target, props) {
	$.extend(target, props);
	for (var name in props) {
		if (props[name] == null) {
			target[name] = null;
		}
	}
	return target;
}

/* Process the countdown functionality for a jQuery selection.
   @param  command  (string) the command to run (optional, default 'attach')
   @param  options  (object) the new settings to use for these countdown instances
   @return  (jQuery) for chaining further calls */
$.fn.countdown = function(options) {
	var otherArgs = Array.prototype.slice.call(arguments, 1);
	if (options == 'getTimes' || options == 'settings') {
		return $.countdown['_' + options + 'Countdown'].
			apply($.countdown, [this[0]].concat(otherArgs));
	}
	return this.each(function() {
		if (typeof options == 'string') {
			$.countdown['_' + options + 'Countdown'].apply($.countdown, [this].concat(otherArgs));
		}
		else {
			$.countdown._attachCountdown(this, options);
		}
	});
};

/* Initialise the countdown functionality. */
$.countdown = new Countdown(); // singleton instance

})(jQuery);

Index: loncom/html/adm/countdown/jquery.countdown.min.js
+++ loncom/html/adm/countdown/jquery.countdown.min.js
/* http://keith-wood.name/countdown.html
   Countdown for jQuery v1.5.11.
   Written by Keith Wood (kbwood{at}iinet.com.au) January 2008.
   Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and 
   MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses. 
   Please attribute the author if you use it. */
(function($){function Countdown(){this.regional=[];this.regional['']={labels:['Years','Months','Weeks','Days','Hours','Minutes','Seconds'],labels1:['Year','Month','Week','Day','Hour','Minute','Second'],compactLabels:['y','m','w','d'],whichLabels:null,timeSeparator:':',isRTL:false};this._defaults={until:null,since:null,timezone:null,serverSync:null,format:'dHMS',layout:'',compact:false,significant:0,description:'',expiryUrl:'',expiryText:'',alwaysExpire:false,onExpiry:null,onTick:null,tickInterval:1};$.extend(this._defaults,this.regional['']);this._serverSyncs=[];function timerCallBack(a){var b=(a||new Date().getTime());if(b-d>=1000){$.countdown._updateTargets();d=b}c(timerCallBack)}var c=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||null;var d=0;if(!c){setInterval(function(){$.countdown._updateTargets()},980)}else{d=window.mozAnimationStartTime||new Date().getT!
 ime();c(timerCallBack)}}var w='countdown';var Y=0;var O=1;var W=2;var D=3;var H=4;var M=5;var S=6;$.extend(Countdown.prototype,{markerClassName:'hasCountdown',_timerTargets:[],setDefaults:function(a){this._resetExtraLabels(this._defaults,a);extendRemove(this._defaults,a||{})},UTCDate:function(a,b,c,e,f,g,h,i){if(typeof b=='object'&&b.constructor==Date){i=b.getMilliseconds();h=b.getSeconds();g=b.getMinutes();f=b.getHours();e=b.getDate();c=b.getMonth();b=b.getFullYear()}var d=new Date();d.setUTCFullYear(b);d.setUTCDate(1);d.setUTCMonth(c||0);d.setUTCDate(e||1);d.setUTCHours(f||0);d.setUTCMinutes((g||0)-(Math.abs(a)<30?a*60:a));d.setUTCSeconds(h||0);d.setUTCMilliseconds(i||0);return d},periodsToSeconds:function(a){return a[0]*31557600+a[1]*2629800+a[2]*604800+a[3]*86400+a[4]*3600+a[5]*60+a[6]},_settingsCountdown:function(a,b){if(!b){return $.countdown._defaults}var c=$.data(a,w);return(b=='all'?c.options:c.options[b])},_attachCountdown:function(a,b){var c=$(a);if(c.hasClass(th!
 is.markerClassName)){return}c.addClass(this.markerClassName);var d={op
tions:$.extend({},b),_periods:[0,0,0,0,0,0,0]};$.data(a,w,d);this._changeCountdown(a)},_addTarget:function(a){if(!this._hasTarget(a)){this._timerTargets.push(a)}},_hasTarget:function(a){return($.inArray(a,this._timerTargets)>-1)},_removeTarget:function(b){this._timerTargets=$.map(this._timerTargets,function(a){return(a==b?null:a)})},_updateTargets:function(){for(var i=this._timerTargets.length-1;i>=0;i--){this._updateCountdown(this._timerTargets[i])}},_updateCountdown:function(a,b){var c=$(a);b=b||$.data(a,w);if(!b){return}c.html(this._generateHTML(b));c[(this._get(b,'isRTL')?'add':'remove')+'Class']('countdown_rtl');var d=this._get(b,'onTick');if(d){var e=b._hold!='lap'?b._periods:this._calculatePeriods(b,b._show,this._get(b,'significant'),new Date());var f=this._get(b,'tickInterval');if(f==1||this.periodsToSeconds(e)%f==0){d.apply(a,[e])}}var g=b._hold!='pause'&&(b._since?b._now.getTime()<b._since.getTime():b._now.getTime()>=b._until.getTime());if(g&&!b._expiring){b._expir!
 ing=true;if(this._hasTarget(a)||this._get(b,'alwaysExpire')){this._removeTarget(a);var h=this._get(b,'onExpiry');if(h){h.apply(a,[])}var i=this._get(b,'expiryText');if(i){var j=this._get(b,'layout');b.options.layout=i;this._updateCountdown(a,b);b.options.layout=j}var k=this._get(b,'expiryUrl');if(k){window.location=k}}b._expiring=false}else if(b._hold=='pause'){this._removeTarget(a)}$.data(a,w,b)},_changeCountdown:function(a,b,c){b=b||{};if(typeof b=='string'){var d=b;b={};b[d]=c}var e=$.data(a,w);if(e){this._resetExtraLabels(e.options,b);extendRemove(e.options,b);this._adjustSettings(a,e);$.data(a,w,e);var f=new Date();if((e._since&&e._since<f)||(e._until&&e._until>f)){this._addTarget(a)}this._updateCountdown(a,e)}},_resetExtraLabels:function(a,b){var c=false;for(var n in b){if(n!='whichLabels'&&n.match(/[Ll]abels/)){c=true;break}}if(c){for(var n in a){if(n.match(/[Ll]abels[0-9]/)){a[n]=null}}}},_adjustSettings:function(a,b){var c;var d=this._get(b,'serverSync');var e=0;va!
 r f=null;for(var i=0;i<this._serverSyncs.length;i++){if(this._serverSy
ncs[i][0]==d){f=this._serverSyncs[i][1];break}}if(f!=null){e=(d?f:0);c=new Date()}else{var g=(d?d.apply(a,[]):null);c=new Date();e=(g?c.getTime()-g.getTime():0);this._serverSyncs.push([d,e])}var h=this._get(b,'timezone');h=(h==null?-c.getTimezoneOffset():h);b._since=this._get(b,'since');if(b._since!=null){b._since=this.UTCDate(h,this._determineTime(b._since,null));if(b._since&&e){b._since.setMilliseconds(b._since.getMilliseconds()+e)}}b._until=this.UTCDate(h,this._determineTime(this._get(b,'until'),c));if(e){b._until.setMilliseconds(b._until.getMilliseconds()+e)}b._show=this._determineShow(b)},_destroyCountdown:function(a){var b=$(a);if(!b.hasClass(this.markerClassName)){return}this._removeTarget(a);b.removeClass(this.markerClassName).empty();$.removeData(a,w)},_pauseCountdown:function(a){this._hold(a,'pause')},_lapCountdown:function(a){this._hold(a,'lap')},_resumeCountdown:function(a){this._hold(a,null)},_hold:function(a,b){var c=$.data(a,w);if(c){if(c._hold=='pause'&&!b){c!
 ._periods=c._savePeriods;var d=(c._since?'-':'+');c[c._since?'_since':'_until']=this._determineTime(d+c._periods[0]+'y'+d+c._periods[1]+'o'+d+c._periods[2]+'w'+d+c._periods[3]+'d'+d+c._periods[4]+'h'+d+c._periods[5]+'m'+d+c._periods[6]+'s');this._addTarget(a)}c._hold=b;c._savePeriods=(b=='pause'?c._periods:null);$.data(a,w,c);this._updateCountdown(a,c)}},_getTimesCountdown:function(a){var b=$.data(a,w);return(!b?null:(!b._hold?b._periods:this._calculatePeriods(b,b._show,this._get(b,'significant'),new Date())))},_get:function(a,b){return(a.options[b]!=null?a.options[b]:$.countdown._defaults[b])},_determineTime:function(k,l){var m=function(a){var b=new Date();b.setTime(b.getTime()+a*1000);return b};var n=function(a){a=a.toLowerCase();var b=new Date();var c=b.getFullYear();var d=b.getMonth();var e=b.getDate();var f=b.getHours();var g=b.getMinutes();var h=b.getSeconds();var i=/([+-]?[0-9]+)\s*(s|m|h|d|w|o|y)?/g;var j=i.exec(a);while(j){switch(j[2]||'s'){case's':h+=parseInt(j[1]!
 ,10);break;case'm':g+=parseInt(j[1],10);break;case'h':f+=parseInt(j[1]
,10);break;case'd':e+=parseInt(j[1],10);break;case'w':e+=parseInt(j[1],10)*7;break;case'o':d+=parseInt(j[1],10);e=Math.min(e,$.countdown._getDaysInMonth(c,d));break;case'y':c+=parseInt(j[1],10);e=Math.min(e,$.countdown._getDaysInMonth(c,d));break}j=i.exec(a)}return new Date(c,d,e,f,g,h,0)};var o=(k==null?l:(typeof k=='string'?n(k):(typeof k=='number'?m(k):k)));if(o)o.setMilliseconds(0);return o},_getDaysInMonth:function(a,b){return 32-new Date(a,b,32).getDate()},_normalLabels:function(a){return a},_generateHTML:function(c){var d=this._get(c,'significant');c._periods=(c._hold?c._periods:this._calculatePeriods(c,c._show,d,new Date()));var e=false;var f=0;var g=d;var h=$.extend({},c._show);for(var i=Y;i<=S;i++){e|=(c._show[i]=='?'&&c._periods[i]>0);h[i]=(c._show[i]=='?'&&!e?null:c._show[i]);f+=(h[i]?1:0);g-=(c._periods[i]>0?1:0)}var j=[false,false,false,false,false,false,false];for(var i=S;i>=Y;i--){if(c._show[i]){if(c._periods[i]){j[i]=true}else{j[i]=g>0;g--}}}var k=this._get(!
 c,'compact');var l=this._get(c,'layout');var m=(k?this._get(c,'compactLabels'):this._get(c,'labels'));var n=this._get(c,'whichLabels')||this._normalLabels;var o=this._get(c,'timeSeparator');var p=this._get(c,'description')||'';var q=function(a){var b=$.countdown._get(c,'compactLabels'+n(c._periods[a]));return(h[a]?c._periods[a]+(b?b[a]:m[a])+' ':'')};var r=function(a){var b=$.countdown._get(c,'labels'+n(c._periods[a]));return((!d&&h[a])||(d&&j[a])?'<span class="countdown_section"><span class="countdown_amount">'+c._periods[a]+'</span><br/>'+(b?b[a]:m[a])+'</span>':'')};return(l?this._buildLayout(c,h,l,k,d,j):((k?'<span class="countdown_row countdown_amount'+(c._hold?' countdown_holding':'')+'">'+q(Y)+q(O)+q(W)+q(D)+(h[H]?this._minDigits(c._periods[H],2):'')+(h[M]?(h[H]?o:'')+this._minDigits(c._periods[M],2):'')+(h[S]?(h[H]||h[M]?o:'')+this._minDigits(c._periods[S],2):''):'<span class="countdown_row countdown_show'+(d||f)+(c._hold?' countdown_holding':'')+'">'+r(Y)+r(O)+r(W)!
 +r(D)+r(H)+r(M)+r(S))+'</span>'+(p?'<span class="countdown_row countdo
wn_descr">'+p+'</span>':'')))},_buildLayout:function(c,d,e,f,g,h){var j=this._get(c,(f?'compactLabels':'labels'));var k=this._get(c,'whichLabels')||this._normalLabels;var l=function(a){return($.countdown._get(c,(f?'compactLabels':'labels')+k(c._periods[a]))||j)[a]};var m=function(a,b){return Math.floor(a/b)%10};var o={desc:this._get(c,'description'),sep:this._get(c,'timeSeparator'),yl:l(Y),yn:c._periods[Y],ynn:this._minDigits(c._periods[Y],2),ynnn:this._minDigits(c._periods[Y],3),y1:m(c._periods[Y],1),y10:m(c._periods[Y],10),y100:m(c._periods[Y],100),y1000:m(c._periods[Y],1000),ol:l(O),on:c._periods[O],onn:this._minDigits(c._periods[O],2),onnn:this._minDigits(c._periods[O],3),o1:m(c._periods[O],1),o10:m(c._periods[O],10),o100:m(c._periods[O],100),o1000:m(c._periods[O],1000),wl:l(W),wn:c._periods[W],wnn:this._minDigits(c._periods[W],2),wnnn:this._minDigits(c._periods[W],3),w1:m(c._periods[W],1),w10:m(c._periods[W],10),w100:m(c._periods[W],100),w1000:m(c._periods[W],1000),dl:l!
 (D),dn:c._periods[D],dnn:this._minDigits(c._periods[D],2),dnnn:this._minDigits(c._periods[D],3),d1:m(c._periods[D],1),d10:m(c._periods[D],10),d100:m(c._periods[D],100),d1000:m(c._periods[D],1000),hl:l(H),hn:c._periods[H],hnn:this._minDigits(c._periods[H],2),hnnn:this._minDigits(c._periods[H],3),h1:m(c._periods[H],1),h10:m(c._periods[H],10),h100:m(c._periods[H],100),h1000:m(c._periods[H],1000),ml:l(M),mn:c._periods[M],mnn:this._minDigits(c._periods[M],2),mnnn:this._minDigits(c._periods[M],3),m1:m(c._periods[M],1),m10:m(c._periods[M],10),m100:m(c._periods[M],100),m1000:m(c._periods[M],1000),sl:l(S),sn:c._periods[S],snn:this._minDigits(c._periods[S],2),snnn:this._minDigits(c._periods[S],3),s1:m(c._periods[S],1),s10:m(c._periods[S],10),s100:m(c._periods[S],100),s1000:m(c._periods[S],1000)};var p=e;for(var i=Y;i<=S;i++){var q='yowdhms'.charAt(i);var r=new RegExp('\\{'+q+'<\\}(.*)\\{'+q+'>\\}','g');p=p.replace(r,((!g&&d[i])||(g&&h[i])?'$1':''))}$.each(o,function(n,v){var a=new Re!
 gExp('\\{'+n+'\\}','g');p=p.replace(a,v)});return p},_minDigits:functi
on(a,b){a=''+a;if(a.length>=b){return a}a='0000000000'+a;return a.substr(a.length-b)},_determineShow:function(a){var b=this._get(a,'format');var c=[];c[Y]=(b.match('y')?'?':(b.match('Y')?'!':null));c[O]=(b.match('o')?'?':(b.match('O')?'!':null));c[W]=(b.match('w')?'?':(b.match('W')?'!':null));c[D]=(b.match('d')?'?':(b.match('D')?'!':null));c[H]=(b.match('h')?'?':(b.match('H')?'!':null));c[M]=(b.match('m')?'?':(b.match('M')?'!':null));c[S]=(b.match('s')?'?':(b.match('S')?'!':null));return c},_calculatePeriods:function(c,d,e,f){c._now=f;c._now.setMilliseconds(0);var g=new Date(c._now.getTime());if(c._since){if(f.getTime()<c._since.getTime()){c._now=f=g}else{f=c._since}}else{g.setTime(c._until.getTime());if(f.getTime()>c._until.getTime()){c._now=f=g}}var h=[0,0,0,0,0,0,0];if(d[Y]||d[O]){var i=$.countdown._getDaysInMonth(f.getFullYear(),f.getMonth());var j=$.countdown._getDaysInMonth(g.getFullYear(),g.getMonth());var k=(g.getDate()==f.getDate()||(g.getDate()>=Math.min(i,j)&&f.ge!
 tDate()>=Math.min(i,j)));var l=function(a){return(a.getHours()*60+a.getMinutes())*60+a.getSeconds()};var m=Math.max(0,(g.getFullYear()-f.getFullYear())*12+g.getMonth()-f.getMonth()+((g.getDate()<f.getDate()&&!k)||(k&&l(g)<l(f))?-1:0));h[Y]=(d[Y]?Math.floor(m/12):0);h[O]=(d[O]?m-h[Y]*12:0);f=new Date(f.getTime());var n=(f.getDate()==i);var o=$.countdown._getDaysInMonth(f.getFullYear()+h[Y],f.getMonth()+h[O]);if(f.getDate()>o){f.setDate(o)}f.setFullYear(f.getFullYear()+h[Y]);f.setMonth(f.getMonth()+h[O]);if(n){f.setDate(o)}}var p=Math.floor((g.getTime()-f.getTime())/1000);var q=function(a,b){h[a]=(d[a]?Math.floor(p/b):0);p-=h[a]*b};q(W,604800);q(D,86400);q(H,3600);q(M,60);q(S,1);if(p>0&&!c._since){var r=[1,12,4.3482,7,24,60,60];var s=S;var t=1;for(var u=S;u>=Y;u--){if(d[u]){if(h[s]>=t){h[s]=0;p=1}if(p>0){h[u]++;p=0;s=u;t=1}}t*=r[u]}}if(e){for(var u=Y;u<=S;u++){if(e&&h[u]){e--}else if(!e){h[u]=0}}}return h}});function extendRemove(a,b){$.extend(a,b);for(var c in b){if(b[c]==nu!
 ll){a[c]=null}}return a}$.fn.countdown=function(a){var b=Array.prototy
pe.slice.call(arguments,1);if(a=='getTimes'||a=='settings'){return $.countdown['_'+a+'Countdown'].apply($.countdown,[this[0]].concat(b))}return this.each(function(){if(typeof a=='string'){$.countdown['_'+a+'Countdown'].apply($.countdown,[this].concat(b))}else{$.countdown._attachCountdown(this,a)}})};$.countdown=new Countdown()})(jQuery);
Index: loncom/html/adm/countdown/jquery.countdown.pack.js
+++ loncom/html/adm/countdown/jquery.countdown.pack.js
/* http://keith-wood.name/countdown.html
   Countdown for jQuery v1.5.11.
   Written by Keith Wood (kbwood{at}iinet.com.au) January 2008.
   Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and 
   MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses. 
   Please attribute the author if you use it. */
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(B($){B 1j(){x.1E=[];x.1E[\'\']={1k:[\'2E\',\'2F\',\'2G\',\'2H\',\'2I\',\'2J\',\'2K\'],2L:[\'2M\',\'2N\',\'2O\',\'2P\',\'2Q\',\'2R\',\'2S\'],1l:[\'y\',\'m\',\'w\',\'d\'],1v:C,1F:\':\',1Y:Q};x.1h={1Z:C,20:C,21:C,22:C,23:\'2T\',1m:\'\',25:Q,1w:0,1G:\'\',26:\'\',27:\'\',28:Q,29:C,2a:C,2b:1};$.1n(x.1h,x.1E[\'\']);x.1o=[];B 1H(a){8 b=(a||I N().J());A(b-d>=U){$.G.1I();d=b}c(1H)}8 c=1a.2U||1a.2V||1a.2W||1a.2X||1a.2Y||C;8 d=0;A(!c){2Z(B(){$.G.1I()},31)}17{d=1a.33||I N().J();c(1H)}}8 w=\'G\';8 Y=0;8 O=1;8 W=2;8 D=3;8 H=4;8 M=5;8 S=6;$.1n(1j.2c,{1p:\'34\',1b:[],35:B(a){x.1J(x.1h,a);1K(x.1h,a||{})},1L:B(a,b,c,e,f,g,h,i){A(1q b==\'36\'&&b.37==N){i=b.1M();h=b.1N();g=b!
 .1O();f=b.1P();e=b.T();c=b.18();b=b.19()}8 d=I N();d.38(b);d.2d(1);d.39(c||0);d.2d(e||1);d.3a(f||0);d.3b((g||0)-(V.3c(a)<30?a*1c:a));d.3d(h||0);d.3e(i||0);F d},2e:B(a){F a[0]*3f+a[1]*3g+a[2]*2f+a[3]*2g+a[4]*2h+a[5]*1c+a[6]},3h:B(a,b){A(!b){F $.G.1h}8 c=$.Z(a,w);F(b==\'3i\'?c.11:c.11[b])},2i:B(a,b){8 c=$(a);A(c.2j(x.1p)){F}c.3j(x.1p);8 d={11:$.1n({},b),z:[0,0,0,0,0,0,0]};$.Z(a,w,d);x.2k(a)},1Q:B(a){A(!x.1R(a)){x.1b.2l(a)}},1R:B(a){F($.3k(a,x.1b)>-1)},1x:B(b){x.1b=$.3l(x.1b,B(a){F(a==b?C:a)})},1I:B(){X(8 i=x.1b.1y-1;i>=0;i--){x.1r(x.1b[i])}},1r:B(a,b){8 c=$(a);b=b||$.Z(a,w);A(!b){F}c.3m(x.2m(b));c[(x.E(b,\'1Y\')?\'3n\':\'3o\')+\'3p\'](\'3q\');8 d=x.E(b,\'2a\');A(d){8 e=b.R!=\'2n\'?b.z:x.1z(b,b.13,x.E(b,\'1w\'),I N());8 f=x.E(b,\'2b\');A(f==1||x.2e(e)%f==0){d.1s(a,[e])}}8 g=b.R!=\'1t\'&&(b.K?b.1d.J()<b.K.J():b.1d.J()>=b.14.J());A(g&&!b.1S){b.1S=1T;A(x.1R(a)||x.E(b,\'28\')){x.1x(a);8 h=x.E(b,\'29\');A(h){h.1s(a,[])}8 i=x.E(b,\'27\');A(i){8 j=x.E(b,\'1m\');b.11.1m=i;x.1r(a,b);b.!
 11.1m=j}8 k=x.E(b,\'26\');A(k){1a.3r=k}}b.1S=Q}17 A(b.R==\'1t\'){x.1x(
a)}$.Z(a,w,b)},2k:B(a,b,c){b=b||{};A(1q b==\'1U\'){8 d=b;b={};b[d]=c}8 e=$.Z(a,w);A(e){x.1J(e.11,b);1K(e.11,b);x.2o(a,e);$.Z(a,w,e);8 f=I N();A((e.K&&e.K<f)||(e.14&&e.14>f)){x.1Q(a)}x.1r(a,e)}},1J:B(a,b){8 c=Q;X(8 n 1V b){A(n!=\'1v\'&&n.P(/[2p]2q/)){c=1T;15}}A(c){X(8 n 1V a){A(n.P(/[2p]2q[0-9]/)){a[n]=C}}}},2o:B(a,b){8 c;8 d=x.E(b,\'22\');8 e=0;8 f=C;X(8 i=0;i<x.1o.1y;i++){A(x.1o[i][0]==d){f=x.1o[i][1];15}}A(f!=C){e=(d?f:0);c=I N()}17{8 g=(d?d.1s(a,[]):C);c=I N();e=(g?c.J()-g.J():0);x.1o.2l([d,e])}8 h=x.E(b,\'21\');h=(h==C?-c.3s():h);b.K=x.E(b,\'20\');A(b.K!=C){b.K=x.1L(h,x.1A(b.K,C));A(b.K&&e){b.K.1B(b.K.1M()+e)}}b.14=x.1L(h,x.1A(x.E(b,\'1Z\'),c));A(e){b.14.1B(b.14.1M()+e)}b.13=x.2r(b)},3t:B(a){8 b=$(a);A(!b.2j(x.1p)){F}x.1x(a);b.3u(x.1p).3v();$.3w(a,w)},3x:B(a){x.R(a,\'1t\')},3y:B(a){x.R(a,\'2n\')},3z:B(a){x.R(a,C)},R:B(a,b){8 c=$.Z(a,w);A(c){A(c.R==\'1t\'&&!b){c.z=c.2s;8 d=(c.K?\'-\':\'+\');c[c.K?\'K\':\'14\']=x.1A(d+c.z[0]+\'y\'+d+c.z[1]+\'o\'+d+c.z[2]+\'w\'+d+c.z[3]+\'d!
 \'+d+c.z[4]+\'h\'+d+c.z[5]+\'m\'+d+c.z[6]+\'s\');x.1Q(a)}c.R=b;c.2s=(b==\'1t\'?c.z:C);$.Z(a,w,c);x.1r(a,c)}},3A:B(a){8 b=$.Z(a,w);F(!b?C:(!b.R?b.z:x.1z(b,b.13,x.E(b,\'1w\'),I N())))},E:B(a,b){F(a.11[b]!=C?a.11[b]:$.G.1h[b])},1A:B(k,l){8 m=B(a){8 b=I N();b.2t(b.J()+a*U);F b};8 n=B(a){a=a.3B();8 b=I N();8 c=b.19();8 d=b.18();8 e=b.T();8 f=b.1P();8 g=b.1O();8 h=b.1N();8 i=/([+-]?[0-9]+)\\s*(s|m|h|d|w|o|y)?/g;8 j=i.2u(a);3C(j){3D(j[2]||\'s\'){1e\'s\':h+=1f(j[1],10);15;1e\'m\':g+=1f(j[1],10);15;1e\'h\':f+=1f(j[1],10);15;1e\'d\':e+=1f(j[1],10);15;1e\'w\':e+=1f(j[1],10)*7;15;1e\'o\':d+=1f(j[1],10);e=V.1C(e,$.G.1i(c,d));15;1e\'y\':c+=1f(j[1],10);e=V.1C(e,$.G.1i(c,d));15}j=i.2u(a)}F I N(c,d,e,f,g,h,0)};8 o=(k==C?l:(1q k==\'1U\'?n(k):(1q k==\'3E\'?m(k):k)));A(o)o.1B(0);F o},1i:B(a,b){F 32-I N(a,b,32).T()},1W:B(a){F a},2m:B(c){8 d=x.E(c,\'1w\');c.z=(c.R?c.z:x.1z(c,c.13,d,I N()));8 e=Q;8 f=0;8 g=d;8 h=$.1n({},c.13);X(8 i=Y;i<=S;i++){e|=(c.13[i]==\'?\'&&c.z[i]>0);h[i]=(c.13[i]==\'?\'&&!!
 e?C:c.13[i]);f+=(h[i]?1:0);g-=(c.z[i]>0?1:0)}8 j=[Q,Q,Q,Q,Q,Q,Q];X(8 i
=S;i>=Y;i--){A(c.13[i]){A(c.z[i]){j[i]=1T}17{j[i]=g>0;g--}}}8 k=x.E(c,\'25\');8 l=x.E(c,\'1m\');8 m=(k?x.E(c,\'1l\'):x.E(c,\'1k\'));8 n=x.E(c,\'1v\')||x.1W;8 o=x.E(c,\'1F\');8 p=x.E(c,\'1G\')||\'\';8 q=B(a){8 b=$.G.E(c,\'1l\'+n(c.z[a]));F(h[a]?c.z[a]+(b?b[a]:m[a])+\' \':\'\')};8 r=B(a){8 b=$.G.E(c,\'1k\'+n(c.z[a]));F((!d&&h[a])||(d&&j[a])?\'<16 1u="3F"><16 1u="2v">\'+c.z[a]+\'</16><3G/>\'+(b?b[a]:m[a])+\'</16>\':\'\')};F(l?x.2w(c,h,l,k,d,j):((k?\'<16 1u="1X 2v\'+(c.R?\' 2x\':\'\')+\'">\'+q(Y)+q(O)+q(W)+q(D)+(h[H]?x.L(c.z[H],2):\'\')+(h[M]?(h[H]?o:\'\')+x.L(c.z[M],2):\'\')+(h[S]?(h[H]||h[M]?o:\'\')+x.L(c.z[S],2):\'\'):\'<16 1u="1X 3H\'+(d||f)+(c.R?\' 2x\':\'\')+\'">\'+r(Y)+r(O)+r(W)+r(D)+r(H)+r(M)+r(S))+\'</16>\'+(p?\'<16 1u="1X 3I">\'+p+\'</16>\':\'\')))},2w:B(c,d,e,f,g,h){8 j=x.E(c,(f?\'1l\':\'1k\'));8 k=x.E(c,\'1v\')||x.1W;8 l=B(a){F($.G.E(c,(f?\'1l\':\'1k\')+k(c.z[a]))||j)[a]};8 m=B(a,b){F V.1D(a/b)%10};8 o={3J:x.E(c,\'1G\'),3K:x.E(c,\'1F\'),3L:l(Y),3M:c.z[Y],3N:x.L(c.z[Y!
 ],2),3O:x.L(c.z[Y],3),3P:m(c.z[Y],1),3Q:m(c.z[Y],10),3R:m(c.z[Y],1g),3S:m(c.z[Y],U),3T:l(O),3U:c.z[O],3V:x.L(c.z[O],2),3W:x.L(c.z[O],3),3X:m(c.z[O],1),3Y:m(c.z[O],10),3Z:m(c.z[O],1g),40:m(c.z[O],U),41:l(W),42:c.z[W],43:x.L(c.z[W],2),44:x.L(c.z[W],3),45:m(c.z[W],1),46:m(c.z[W],10),47:m(c.z[W],1g),48:m(c.z[W],U),49:l(D),4a:c.z[D],4b:x.L(c.z[D],2),4c:x.L(c.z[D],3),4d:m(c.z[D],1),4e:m(c.z[D],10),4f:m(c.z[D],1g),4g:m(c.z[D],U),4h:l(H),4i:c.z[H],4j:x.L(c.z[H],2),4k:x.L(c.z[H],3),4l:m(c.z[H],1),4m:m(c.z[H],10),4n:m(c.z[H],1g),4o:m(c.z[H],U),4p:l(M),4q:c.z[M],4r:x.L(c.z[M],2),4s:x.L(c.z[M],3),4t:m(c.z[M],1),4u:m(c.z[M],10),4v:m(c.z[M],1g),4w:m(c.z[M],U),4x:l(S),4y:c.z[S],4z:x.L(c.z[S],2),4A:x.L(c.z[S],3),4B:m(c.z[S],1),4C:m(c.z[S],10),4D:m(c.z[S],1g),4E:m(c.z[S],U)};8 p=e;X(8 i=Y;i<=S;i++){8 q=\'4F\'.4G(i);8 r=I 2y(\'\\\\{\'+q+\'<\\\\}(.*)\\\\{\'+q+\'>\\\\}\',\'g\');p=p.2z(r,((!g&&d[i])||(g&&h[i])?\'$1\':\'\'))}$.2A(o,B(n,v){8 a=I 2y(\'\\\\{\'+n+\'\\\\}\',\'g\');p=p.2z(a,v)});F p},!
 L:B(a,b){a=\'\'+a;A(a.1y>=b){F a}a=\'4H\'+a;F a.4I(a.1y-b)},2r:B(a){8 
b=x.E(a,\'23\');8 c=[];c[Y]=(b.P(\'y\')?\'?\':(b.P(\'Y\')?\'!\':C));c[O]=(b.P(\'o\')?\'?\':(b.P(\'O\')?\'!\':C));c[W]=(b.P(\'w\')?\'?\':(b.P(\'W\')?\'!\':C));c[D]=(b.P(\'d\')?\'?\':(b.P(\'D\')?\'!\':C));c[H]=(b.P(\'h\')?\'?\':(b.P(\'H\')?\'!\':C));c[M]=(b.P(\'m\')?\'?\':(b.P(\'M\')?\'!\':C));c[S]=(b.P(\'s\')?\'?\':(b.P(\'S\')?\'!\':C));F c},1z:B(c,d,e,f){c.1d=f;c.1d.1B(0);8 g=I N(c.1d.J());A(c.K){A(f.J()<c.K.J()){c.1d=f=g}17{f=c.K}}17{g.2t(c.14.J());A(f.J()>c.14.J()){c.1d=f=g}}8 h=[0,0,0,0,0,0,0];A(d[Y]||d[O]){8 i=$.G.1i(f.19(),f.18());8 j=$.G.1i(g.19(),g.18());8 k=(g.T()==f.T()||(g.T()>=V.1C(i,j)&&f.T()>=V.1C(i,j)));8 l=B(a){F(a.1P()*1c+a.1O())*1c+a.1N()};8 m=V.4J(0,(g.19()-f.19())*12+g.18()-f.18()+((g.T()<f.T()&&!k)||(k&&l(g)<l(f))?-1:0));h[Y]=(d[Y]?V.1D(m/12):0);h[O]=(d[O]?m-h[Y]*12:0);f=I N(f.J());8 n=(f.T()==i);8 o=$.G.1i(f.19()+h[Y],f.18()+h[O]);A(f.T()>o){f.2B(o)}f.4K(f.19()+h[Y]);f.4L(f.18()+h[O]);A(n){f.2B(o)}}8 p=V.1D((g.J()-f.J())/U);8 q=B(a,b){h[a]=(d[a]?V.1D(p/b!
 ):0);p-=h[a]*b};q(W,2f);q(D,2g);q(H,2h);q(M,1c);q(S,1);A(p>0&&!c.K){8 r=[1,12,4.4M,7,24,1c,1c];8 s=S;8 t=1;X(8 u=S;u>=Y;u--){A(d[u]){A(h[s]>=t){h[s]=0;p=1}A(p>0){h[u]++;p=0;s=u;t=1}}t*=r[u]}}A(e){X(8 u=Y;u<=S;u++){A(e&&h[u]){e--}17 A(!e){h[u]=0}}}F h}});B 1K(a,b){$.1n(a,b);X(8 c 1V b){A(b[c]==C){a[c]=C}}F a}$.4N.G=B(a){8 b=4O.2c.4P.4Q(4R,1);A(a==\'4S\'||a==\'4T\'){F $.G[\'2C\'+a+\'1j\'].1s($.G,[x[0]].2D(b))}F x.2A(B(){A(1q a==\'1U\'){$.G[\'2C\'+a+\'1j\'].1s($.G,[x].2D(b))}17{$.G.2i(x,a)}})};$.G=I 1j()})(4U);',62,305,'||||||||var|||||||||||||||||||||||||this||_periods|if|function|null||_get|return|countdown||new|getTime|_since|_minDigits||Date||match|false|_hold||getDate|1000|Math||for||data||options||_show|_until|break|span|else|getMonth|getFullYear|window|_timerTargets|60|_now|case|parseInt|100|_defaults|_getDaysInMonth|Countdown|labels|compactLabels|layout|extend|_serverSyncs|markerClassName|typeof|_updateCountdown|apply|pause|class|whichLabels|significant|_removeTarget|l!
 ength|_calculatePeriods|_determineTime|setMilliseconds|min|floor|regio
nal|timeSeparator|description|timerCallBack|_updateTargets|_resetExtraLabels|extendRemove|UTCDate|getMilliseconds|getSeconds|getMinutes|getHours|_addTarget|_hasTarget|_expiring|true|string|in|_normalLabels|countdown_row|isRTL|until|since|timezone|serverSync|format||compact|expiryUrl|expiryText|alwaysExpire|onExpiry|onTick|tickInterval|prototype|setUTCDate|periodsToSeconds|604800|86400|3600|_attachCountdown|hasClass|_changeCountdown|push|_generateHTML|lap|_adjustSettings|Ll|abels|_determineShow|_savePeriods|setTime|exec|countdown_amount|_buildLayout|countdown_holding|RegExp|replace|each|setDate|_|concat|Years|Months|Weeks|Days|Hours|Minutes|Seconds|labels1|Year|Month|Week|Day|Hour|Minute|Second|dHMS|requestAnimationFrame|webkitRequestAnimationFrame|mozRequestAnimationFrame|oRequestAnimationFrame|msRequestAnimationFrame|setInterval||980||mozAnimationStartTime|hasCountdown|setDefaults|object|constructor|setUTCFullYear|setUTCMonth|setUTCHours|setUTCMinutes|abs|setUTCSeconds|setU!
 TCMilliseconds|31557600|2629800|_settingsCountdown|all|addClass|inArray|map|html|add|remove|Class|countdown_rtl|location|getTimezoneOffset|_destroyCountdown|removeClass|empty|removeData|_pauseCountdown|_lapCountdown|_resumeCountdown|_getTimesCountdown|toLowerCase|while|switch|number|countdown_section|br|countdown_show|countdown_descr|desc|sep|yl|yn|ynn|ynnn|y1|y10|y100|y1000|ol|on|onn|onnn|o1|o10|o100|o1000|wl|wn|wnn|wnnn|w1|w10|w100|w1000|dl|dn|dnn|dnnn|d1|d10|d100|d1000|hl|hn|hnn|hnnn|h1|h10|h100|h1000|ml|mn|mnn|mnnn|m1|m10|m100|m1000|sl|sn|snn|snnn|s1|s10|s100|s1000|yowdhms|charAt|0000000000|substr|max|setFullYear|setMonth|3482|fn|Array|slice|call|arguments|getTimes|settings|jQuery'.split('|'),0,{}))


More information about the LON-CAPA-cvs mailing list