Changeset 20824


Ignore:
Timestamp:
02/18/13 22:18:40 (6 years ago)
Author:
rvelices
Message:

upgraded jquery ui from 1.9.0 to 1.10.1

Location:
trunk/themes/default/js/ui
Files:
1 added
92 edited

Legend:

Unmodified
Added
Removed
  • trunk/themes/default/js/ui/i18n/jquery-ui-i18n.js

    r18630 r20824  
    1 /*! jQuery UI - v1.9.0 - 2012-10-05 
     1/*! jQuery UI - v1.10.1 - 2013-02-15 
    22* http://jqueryui.com 
    3 * Includes: jquery.ui.datepicker-af.js, jquery.ui.datepicker-ar-DZ.js, jquery.ui.datepicker-ar.js, jquery.ui.datepicker-az.js, jquery.ui.datepicker-bg.js, jquery.ui.datepicker-bs.js, jquery.ui.datepicker-ca.js, jquery.ui.datepicker-cs.js, jquery.ui.datepicker-cy-GB.js, jquery.ui.datepicker-da.js, jquery.ui.datepicker-de.js, jquery.ui.datepicker-el.js, jquery.ui.datepicker-en-AU.js, jquery.ui.datepicker-en-GB.js, jquery.ui.datepicker-en-NZ.js, jquery.ui.datepicker-eo.js, jquery.ui.datepicker-es.js, jquery.ui.datepicker-et.js, jquery.ui.datepicker-eu.js, jquery.ui.datepicker-fa.js, jquery.ui.datepicker-fi.js, jquery.ui.datepicker-fo.js, jquery.ui.datepicker-fr-CH.js, jquery.ui.datepicker-fr.js, jquery.ui.datepicker-gl.js, jquery.ui.datepicker-he.js, jquery.ui.datepicker-hi.js, jquery.ui.datepicker-hr.js, jquery.ui.datepicker-hu.js, jquery.ui.datepicker-hy.js, jquery.ui.datepicker-id.js, jquery.ui.datepicker-is.js, jquery.ui.datepicker-it.js, jquery.ui.datepicker-ja.js, jquery.ui.datepicker-ka.js, jquery.ui.datepicker-kk.js, jquery.ui.datepicker-km.js, jquery.ui.datepicker-ko.js, jquery.ui.datepicker-lb.js, jquery.ui.datepicker-lt.js, jquery.ui.datepicker-lv.js, jquery.ui.datepicker-mk.js, jquery.ui.datepicker-ml.js, jquery.ui.datepicker-ms.js, jquery.ui.datepicker-nl-BE.js, jquery.ui.datepicker-nl.js, jquery.ui.datepicker-no.js, jquery.ui.datepicker-pl.js, jquery.ui.datepicker-pt-BR.js, jquery.ui.datepicker-pt.js, jquery.ui.datepicker-rm.js, jquery.ui.datepicker-ro.js, jquery.ui.datepicker-ru.js, jquery.ui.datepicker-sk.js, jquery.ui.datepicker-sl.js, jquery.ui.datepicker-sq.js, jquery.ui.datepicker-sr-SR.js, jquery.ui.datepicker-sr.js, jquery.ui.datepicker-sv.js, jquery.ui.datepicker-ta.js, jquery.ui.datepicker-th.js, jquery.ui.datepicker-tj.js, jquery.ui.datepicker-tr.js, jquery.ui.datepicker-uk.js, jquery.ui.datepicker-vi.js, jquery.ui.datepicker-zh-CN.js, jquery.ui.datepicker-zh-HK.js, jquery.ui.datepicker-zh-TW.js 
    4 * Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ 
     3* Includes: jquery.ui.datepicker-af.js, jquery.ui.datepicker-ar-DZ.js, jquery.ui.datepicker-ar.js, jquery.ui.datepicker-az.js, jquery.ui.datepicker-be.js, jquery.ui.datepicker-bg.js, jquery.ui.datepicker-bs.js, jquery.ui.datepicker-ca.js, jquery.ui.datepicker-cs.js, jquery.ui.datepicker-cy-GB.js, jquery.ui.datepicker-da.js, jquery.ui.datepicker-de.js, jquery.ui.datepicker-el.js, jquery.ui.datepicker-en-AU.js, jquery.ui.datepicker-en-GB.js, jquery.ui.datepicker-en-NZ.js, jquery.ui.datepicker-eo.js, jquery.ui.datepicker-es.js, jquery.ui.datepicker-et.js, jquery.ui.datepicker-eu.js, jquery.ui.datepicker-fa.js, jquery.ui.datepicker-fi.js, jquery.ui.datepicker-fo.js, jquery.ui.datepicker-fr-CA.js, jquery.ui.datepicker-fr-CH.js, jquery.ui.datepicker-fr.js, jquery.ui.datepicker-gl.js, jquery.ui.datepicker-he.js, jquery.ui.datepicker-hi.js, jquery.ui.datepicker-hr.js, jquery.ui.datepicker-hu.js, jquery.ui.datepicker-hy.js, jquery.ui.datepicker-id.js, jquery.ui.datepicker-is.js, jquery.ui.datepicker-it.js, jquery.ui.datepicker-ja.js, jquery.ui.datepicker-ka.js, jquery.ui.datepicker-kk.js, jquery.ui.datepicker-km.js, jquery.ui.datepicker-ko.js, jquery.ui.datepicker-ky.js, jquery.ui.datepicker-lb.js, jquery.ui.datepicker-lt.js, jquery.ui.datepicker-lv.js, jquery.ui.datepicker-mk.js, jquery.ui.datepicker-ml.js, jquery.ui.datepicker-ms.js, jquery.ui.datepicker-nb.js, jquery.ui.datepicker-nl-BE.js, jquery.ui.datepicker-nl.js, jquery.ui.datepicker-nn.js, jquery.ui.datepicker-no.js, jquery.ui.datepicker-pl.js, jquery.ui.datepicker-pt-BR.js, jquery.ui.datepicker-pt.js, jquery.ui.datepicker-rm.js, jquery.ui.datepicker-ro.js, jquery.ui.datepicker-ru.js, jquery.ui.datepicker-sk.js, jquery.ui.datepicker-sl.js, jquery.ui.datepicker-sq.js, jquery.ui.datepicker-sr-SR.js, jquery.ui.datepicker-sr.js, jquery.ui.datepicker-sv.js, jquery.ui.datepicker-ta.js, jquery.ui.datepicker-th.js, jquery.ui.datepicker-tj.js, jquery.ui.datepicker-tr.js, jquery.ui.datepicker-uk.js, jquery.ui.datepicker-vi.js, jquery.ui.datepicker-zh-CN.js, jquery.ui.datepicker-zh-HK.js, jquery.ui.datepicker-zh-TW.js 
     4* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ 
    55 
    66/* Afrikaans initialisation for the jQuery UI date picker plugin. */ 
     
    7575        $.datepicker.setDefaults($.datepicker.regional['ar']); 
    7676}); 
     77 
    7778/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */ 
    7879/* Written by Jamil Najafov (necefov33@gmail.com). */ 
     
    9899        $.datepicker.setDefaults($.datepicker.regional['az']); 
    99100}); 
     101 
     102/* Belarusian initialisation for the jQuery UI date picker plugin. */ 
     103/* Written by Pavel Selitskas <p.selitskas@gmail.com> */ 
     104jQuery(function($){ 
     105        $.datepicker.regional['be'] = { 
     106                closeText: 'Зачыніць', 
     107                prevText: '&larr;Папяр.', 
     108                nextText: 'Наст.&rarr;', 
     109                currentText: 'Сёньня', 
     110                monthNames: ['Студзень','Люты','Сакавік','Красавік','Травень','Чэрвень', 
     111                'Ліпень','Жнівень','Верасень','Кастрычнік','Лістапад','Сьнежань'], 
     112                monthNamesShort: ['Сту','Лют','Сак','Кра','Тра','Чэр', 
     113                'Ліп','Жні','Вер','Кас','Ліс','Сьн'], 
     114                dayNames: ['нядзеля','панядзелак','аўторак','серада','чацьвер','пятніца','субота'], 
     115                dayNamesShort: ['ндз','пнд','аўт','срд','чцв','птн','сбт'], 
     116                dayNamesMin: ['Нд','Пн','Аў','Ср','Чц','Пт','Сб'], 
     117                weekHeader: 'Тд', 
     118                dateFormat: 'dd.mm.yy', 
     119                firstDay: 1, 
     120                isRTL: false, 
     121                showMonthAfterYear: false, 
     122                yearSuffix: ''}; 
     123        $.datepicker.setDefaults($.datepicker.regional['be']); 
     124}); 
     125 
    100126/* Bulgarian initialisation for the jQuery UI date picker plugin. */ 
    101127/* Written by Stoyan Kyosev (http://svest.org). */ 
     
    127153jQuery(function($){ 
    128154        $.datepicker.regional['bs'] = { 
    129                 closeText: 'Zatvori',  
    130                 prevText: '&#x3C;',  
    131                 nextText: '&#x3E;',  
    132                 currentText: 'Danas',  
     155                closeText: 'Zatvori', 
     156                prevText: '&#x3C;', 
     157                nextText: '&#x3E;', 
     158                currentText: 'Danas', 
    133159                monthNames: ['Januar','Februar','Mart','April','Maj','Juni', 
    134160                'Juli','August','Septembar','Oktobar','Novembar','Decembar'], 
     
    146172        $.datepicker.setDefaults($.datepicker.regional['bs']); 
    147173}); 
     174 
    148175/* Inicialització en català per a l'extensió 'UI date picker' per jQuery. */ 
    149176/* Writers: (joan.leon@gmail.com). */ 
     
    217244        $.datepicker.setDefaults($.datepicker.regional['cy-GB']); 
    218245}); 
     246 
    219247/* Danish initialisation for the jQuery UI date picker plugin. */ 
    220248/* Written by Jan Christensen ( deletestuff@gmail.com). */ 
     
    288316        $.datepicker.setDefaults($.datepicker.regional['el']); 
    289317}); 
     318 
    290319/* English/Australia initialisation for the jQuery UI date picker plugin. */ 
    291320/* Based on the en-GB initialisation. */ 
     
    407436        $.datepicker.setDefaults($.datepicker.regional['es']); 
    408437}); 
     438 
    409439/* Estonian initialisation for the jQuery UI date picker plugin. */ 
    410440/* Written by Mart Sõmermaa (mrts.pydev at gmail com). */ 
     
    429459                yearSuffix: ''}; 
    430460        $.datepicker.setDefaults($.datepicker.regional['et']); 
    431 });  
     461}); 
     462 
    432463/* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */ 
    433464/* Karrikas-ek itzulia (karrikas@karrikas.com) */ 
     
    453484        $.datepicker.setDefaults($.datepicker.regional['eu']); 
    454485}); 
     486 
    455487/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */ 
    456488/* Javad Mowlanezhad -- jmowla@gmail.com */ 
     
    492524                        'چ', 
    493525                        'پ', 
    494                         'ج',  
     526                        'ج', 
    495527                        'ش' 
    496528                ], 
     
    501533                        'چ', 
    502534                        'پ', 
    503                         'ج',  
     535                        'ج', 
    504536                        'ش' 
    505537                ], 
     
    512544        $.datepicker.setDefaults($.datepicker.regional['fa']); 
    513545}); 
     546 
    514547/* Finnish initialisation for the jQuery UI date picker plugin. */ 
    515548/* Written by Harri Kilpiö (harrikilpio@gmail.com). */ 
     
    553586                weekHeader: 'Vk', 
    554587                dateFormat: 'dd-mm-yy', 
     588                firstDay: 1, 
     589                isRTL: false, 
     590                showMonthAfterYear: false, 
     591                yearSuffix: ''}; 
     592        $.datepicker.setDefaults($.datepicker.regional['fo']); 
     593}); 
     594 
     595/* Canadian-French initialisation for the jQuery UI date picker plugin. */ 
     596jQuery(function ($) { 
     597        $.datepicker.regional['fr-CA'] = { 
     598                closeText: 'Fermer', 
     599                prevText: 'Précédent', 
     600                nextText: 'Suivant', 
     601                currentText: 'Aujourd\'hui', 
     602                monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 
     603                        'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'], 
     604                monthNamesShort: ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin', 
     605                        'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'], 
     606                dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], 
     607                dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], 
     608                dayNamesMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], 
     609                weekHeader: 'Sem.', 
     610                dateFormat: 'yy-mm-dd', 
    555611                firstDay: 0, 
    556612                isRTL: false, 
    557613                showMonthAfterYear: false, 
    558                 yearSuffix: ''}; 
    559         $.datepicker.setDefaults($.datepicker.regional['fo']); 
     614                yearSuffix: '' 
     615        }; 
     616        $.datepicker.setDefaults($.datepicker.regional['fr-CA']); 
    560617}); 
    561618 
     
    583640        $.datepicker.setDefaults($.datepicker.regional['fr-CH']); 
    584641}); 
     642 
    585643/* French initialisation for the jQuery UI date picker plugin. */ 
    586644/* Written by Keith Wood (kbwood{at}iinet.com.au), 
     
    632690        $.datepicker.setDefaults($.datepicker.regional['gl']); 
    633691}); 
     692 
    634693/* Hebrew initialisation for the UI Datepicker extension. */ 
    635694/* Written by Amir Hardon (ahardon at gmail dot com). */ 
     
    703762        $.datepicker.setDefaults($.datepicker.regional['hr']); 
    704763}); 
     764 
    705765/* Hungarian initialisation for the jQuery UI date picker plugin. */ 
    706766/* Written by Istvan Karaszi (jquery@spam.raszi.hu). */ 
     
    750810        $.datepicker.setDefaults($.datepicker.regional['hy']); 
    751811}); 
     812 
    752813/* Indonesian initialisation for the jQuery UI date picker plugin. */ 
    753814/* Written by Deden Fathurahman (dedenf@gmail.com). */ 
     
    773834        $.datepicker.setDefaults($.datepicker.regional['id']); 
    774835}); 
     836 
    775837/* Icelandic initialisation for the jQuery UI date picker plugin. */ 
    776838/* Written by Haukur H. Thorsson (haukur@eskill.is). */ 
     
    796858        $.datepicker.setDefaults($.datepicker.regional['is']); 
    797859}); 
     860 
    798861/* Italian initialisation for the jQuery UI date picker plugin. */ 
    799862/* Written by Antonello Pasella (antonello.pasella@gmail.com). */ 
     
    843906        $.datepicker.setDefaults($.datepicker.regional['ja']); 
    844907}); 
     908 
    845909/* Georgian (UTF-8) initialisation for the jQuery UI date picker plugin. */ 
    846910/* Written by Lado Lomidze (lado.lomidze@gmail.com). */ 
     
    9361000        $.datepicker.setDefaults($.datepicker.regional['ko']); 
    9371001}); 
     1002 
     1003/* Kyrgyz (UTF-8) initialisation for the jQuery UI date picker plugin. */ 
     1004/* Written by Sergey Kartashov (ebishkek@yandex.ru). */ 
     1005jQuery(function($){ 
     1006        $.datepicker.regional['ky'] = { 
     1007                closeText: 'Жабуу', 
     1008                prevText: '&#x3c;Мур', 
     1009                nextText: 'Кий&#x3e;', 
     1010                currentText: 'Бүгүн', 
     1011                monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь', 
     1012                'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], 
     1013                monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', 
     1014                'Июл','Авг','Сен','Окт','Ноя','Дек'], 
     1015                dayNames: ['жекшемби', 'дүйшөмбү', 'шейшемби', 'шаршемби', 'бейшемби', 'жума', 'ишемби'], 
     1016                dayNamesShort: ['жек', 'дүй', 'шей', 'шар', 'бей', 'жум', 'ише'], 
     1017                dayNamesMin: ['Жк','Дш','Шш','Шр','Бш','Жм','Иш'], 
     1018                weekHeader: 'Жум', 
     1019                dateFormat: 'dd.mm.yy', 
     1020                firstDay: 1, 
     1021                isRTL: false, 
     1022                showMonthAfterYear: false, 
     1023                yearSuffix: '' 
     1024        }; 
     1025        $.datepicker.setDefaults($.datepicker.regional['ky']); 
     1026}); 
     1027 
    9381028/* Luxembourgish initialisation for the jQuery UI date picker plugin. */ 
    9391029/* Written by Michel Weimerskirch <michel@weimerskirch.net> */ 
     
    9831073        $.datepicker.setDefaults($.datepicker.regional['lt']); 
    9841074}); 
     1075 
    9851076/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */ 
    9861077/* @author Arturas Paleicikas <arturas.paleicikas@metasite.net> */ 
     
    10061097        $.datepicker.setDefaults($.datepicker.regional['lv']); 
    10071098}); 
     1099 
    10081100/* Macedonian i18n for the jQuery UI date picker plugin. */ 
    10091101/* Written by Stojce Slavkovski. */ 
     
    10351127        $.datepicker.regional['ml'] = { 
    10361128                closeText: 'ശരി', 
    1037                 prevText: 'മുന്നത്തെ',   
     1129                prevText: 'മുന്നത്തെ', 
    10381130                nextText: 'അടുത്തത് ', 
    10391131                currentText: 'ഇന്ന്', 
     
    10771169        $.datepicker.setDefaults($.datepicker.regional['ms']); 
    10781170}); 
     1171 
     1172/* Norwegian Bokmål initialisation for the jQuery UI date picker plugin. */ 
     1173/* Written by Bjørn Johansen (post@bjornjohansen.no). */ 
     1174jQuery(function($){ 
     1175        $.datepicker.regional['nb'] = { 
     1176                closeText: 'Lukk', 
     1177                prevText: '&#xAB;Forrige', 
     1178                nextText: 'Neste&#xBB;', 
     1179                currentText: 'I dag', 
     1180                monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'], 
     1181                monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'], 
     1182                dayNamesShort: ['søn','man','tir','ons','tor','fre','lør'], 
     1183                dayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'], 
     1184                dayNamesMin: ['sø','ma','ti','on','to','fr','lø'], 
     1185                weekHeader: 'Uke', 
     1186                dateFormat: 'dd.mm.yy', 
     1187                firstDay: 1, 
     1188                isRTL: false, 
     1189                showMonthAfterYear: false, 
     1190                yearSuffix: '' 
     1191        }; 
     1192        $.datepicker.setDefaults($.datepicker.regional['nb']); 
     1193}); 
     1194 
    10791195/* Dutch (Belgium) initialisation for the jQuery UI date picker plugin. */ 
    10801196/* David De Sloovere @DavidDeSloovere */ 
     
    11241240        $.datepicker.setDefaults($.datepicker.regional.nl); 
    11251241}); 
     1242 
     1243/* Norwegian Nynorsk initialisation for the jQuery UI date picker plugin. */ 
     1244/* Written by Bjørn Johansen (post@bjornjohansen.no). */ 
     1245jQuery(function($){ 
     1246        $.datepicker.regional['nn'] = { 
     1247                closeText: 'Lukk', 
     1248                prevText: '&#xAB;Førre', 
     1249                nextText: 'Neste&#xBB;', 
     1250                currentText: 'I dag', 
     1251                monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'], 
     1252                monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'], 
     1253                dayNamesShort: ['sun','mån','tys','ons','tor','fre','lau'], 
     1254                dayNames: ['sundag','måndag','tysdag','onsdag','torsdag','fredag','laurdag'], 
     1255                dayNamesMin: ['su','må','ty','on','to','fr','la'], 
     1256                weekHeader: 'Veke', 
     1257                dateFormat: 'dd.mm.yy', 
     1258                firstDay: 1, 
     1259                isRTL: false, 
     1260                showMonthAfterYear: false, 
     1261                yearSuffix: '' 
     1262        }; 
     1263        $.datepicker.setDefaults($.datepicker.regional['nn']); 
     1264}); 
     1265 
    11261266/* Norwegian initialisation for the jQuery UI date picker plugin. */ 
    11271267/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */ 
     
    11951335        $.datepicker.setDefaults($.datepicker.regional['pt-BR']); 
    11961336}); 
     1337 
    11971338/* Portuguese initialisation for the jQuery UI date picker plugin. */ 
    11981339jQuery(function($){ 
     
    12171358        $.datepicker.setDefaults($.datepicker.regional['pt']); 
    12181359}); 
     1360 
    12191361/* Romansh initialisation for the jQuery UI date picker plugin. */ 
    12201362/* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */ 
     
    12891431        $.datepicker.setDefaults($.datepicker.regional['ru']); 
    12901432}); 
     1433 
    12911434/* Slovak initialisation for the jQuery UI date picker plugin. */ 
    12921435/* Written by Vojtech Rinik (vojto@hmm.sk). */ 
     
    12971440                nextText: 'Nasledujúci&#x3E;', 
    12981441                currentText: 'Dnes', 
    1299                 monthNames: ['Január','Február','Marec','Apríl','Máj','Jún', 
    1300                 'Júl','August','September','Október','November','December'], 
     1442                monthNames: ['január','február','marec','apríl','máj','jún', 
     1443                'júl','august','september','október','november','december'], 
    13011444                monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún', 
    13021445                'Júl','Aug','Sep','Okt','Nov','Dec'], 
    1303                 dayNames: ['Nedeľa','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'], 
     1446                dayNames: ['nedeľa','pondelok','utorok','streda','štvrtok','piatok','sobota'], 
    13041447                dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'], 
    13051448                dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'], 
     
    14811624        $.datepicker.setDefaults($.datepicker.regional['th']); 
    14821625}); 
     1626 
    14831627/* Tajiki (UTF-8) initialisation for the jQuery UI date picker plugin. */ 
    14841628/* Written by Abdurahmon Saidov (saidovab@gmail.com). */ 
     
    15041648        $.datepicker.setDefaults($.datepicker.regional['tj']); 
    15051649}); 
     1650 
    15061651/* Turkish initialisation for the jQuery UI date picker plugin. */ 
    15071652/* Written by Izzet Emre Erkan (kara@karalamalar.net). */ 
     
    15271672        $.datepicker.setDefaults($.datepicker.regional['tr']); 
    15281673}); 
     1674 
    15291675/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */ 
    15301676/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */ 
     
    15511697        $.datepicker.setDefaults($.datepicker.regional['uk']); 
    15521698}); 
     1699 
    15531700/* Vietnamese initialisation for the jQuery UI date picker plugin. */ 
    15541701/* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */ 
  • trunk/themes/default/js/ui/i18n/jquery.ui.datepicker-bs.js

    r18630 r20824  
    33jQuery(function($){ 
    44        $.datepicker.regional['bs'] = { 
    5                 closeText: 'Zatvori',  
    6                 prevText: '&#x3C;',  
    7                 nextText: '&#x3E;',  
    8                 currentText: 'Danas',  
     5                closeText: 'Zatvori', 
     6                prevText: '&#x3C;', 
     7                nextText: '&#x3E;', 
     8                currentText: 'Danas', 
    99                monthNames: ['Januar','Februar','Mart','April','Maj','Juni', 
    1010                'Juli','August','Septembar','Oktobar','Novembar','Decembar'], 
  • trunk/themes/default/js/ui/i18n/jquery.ui.datepicker-et.js

    r18630 r20824  
    2121                yearSuffix: ''}; 
    2222        $.datepicker.setDefaults($.datepicker.regional['et']); 
    23 });  
     23}); 
  • trunk/themes/default/js/ui/i18n/jquery.ui.datepicker-fa.js

    r18630 r20824  
    3838                        'چ', 
    3939                        'پ', 
    40                         'ج',  
     40                        'ج', 
    4141                        'ش' 
    4242                ], 
     
    4747                        'چ', 
    4848                        'پ', 
    49                         'ج',  
     49                        'ج', 
    5050                        'ش' 
    5151                ], 
  • trunk/themes/default/js/ui/i18n/jquery.ui.datepicker-fo.js

    r18630 r20824  
    1616                weekHeader: 'Vk', 
    1717                dateFormat: 'dd-mm-yy', 
    18                 firstDay: 0, 
     18                firstDay: 1, 
    1919                isRTL: false, 
    2020                showMonthAfterYear: false, 
  • trunk/themes/default/js/ui/i18n/jquery.ui.datepicker-ml.js

    r12525 r20824  
    44        $.datepicker.regional['ml'] = { 
    55                closeText: 'ശരി', 
    6                 prevText: 'മുന്നത്തെ',   
     6                prevText: 'മുന്നത്തെ', 
    77                nextText: 'അടുത്തത് ', 
    88                currentText: 'ഇന്ന്', 
  • trunk/themes/default/js/ui/i18n/jquery.ui.datepicker-sk.js

    r18630 r20824  
    77                nextText: 'Nasledujúci&#x3E;', 
    88                currentText: 'Dnes', 
    9                 monthNames: ['Január','Február','Marec','Apríl','Máj','Jún', 
    10                 'Júl','August','September','Október','November','December'], 
     9                monthNames: ['január','február','marec','apríl','máj','jún', 
     10                'júl','august','september','október','november','december'], 
    1111                monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún', 
    1212                'Júl','Aug','Sep','Okt','Nov','Dec'], 
    13                 dayNames: ['Nedeľa','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'], 
     13                dayNames: ['nedeľa','pondelok','utorok','streda','štvrtok','piatok','sobota'], 
    1414                dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'], 
    1515                dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'], 
  • trunk/themes/default/js/ui/jquery.ui.accordion.js

    r18630 r20824  
    11/*! 
    2  * jQuery UI Accordion 1.9.0 
     2 * jQuery UI Accordion 1.10.1 
    33 * http://jqueryui.com 
    44 * 
    5  * Copyright 2012 jQuery Foundation and other contributors 
     5 * Copyright 2013 jQuery Foundation and other contributors 
    66 * Released under the MIT license. 
    77 * http://jquery.org/license 
     
    2525 
    2626$.widget( "ui.accordion", { 
    27         version: "1.9.0", 
     27        version: "1.10.1", 
    2828        options: { 
    2929                active: 0, 
     
    4444 
    4545        _create: function() { 
    46                 var accordionId = this.accordionId = "ui-accordion-" + 
    47                                 (this.element.attr( "id" ) || ++uid), 
    48                         options = this.options; 
    49  
     46                var options = this.options; 
    5047                this.prevShow = this.prevHide = $(); 
    51                 this.element.addClass( "ui-accordion ui-widget ui-helper-reset" ); 
    52  
    53                 this.headers = this.element.find( options.header ) 
    54                         .addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" ); 
    55                 this._hoverable( this.headers ); 
    56                 this._focusable( this.headers ); 
    57  
    58                 this.headers.next() 
    59                         .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ) 
    60                         .hide(); 
    61  
    62                 // don't allow collapsible: false and active: false 
    63                 if ( !options.collapsible && options.active === false ) { 
     48                this.element.addClass( "ui-accordion ui-widget ui-helper-reset" ) 
     49                        // ARIA 
     50                        .attr( "role", "tablist" ); 
     51 
     52                // don't allow collapsible: false and active: false / null 
     53                if ( !options.collapsible && (options.active === false || options.active == null) ) { 
    6454                        options.active = 0; 
    6555                } 
     56 
     57                this._processPanels(); 
    6658                // handle negative values 
    6759                if ( options.active < 0 ) { 
    6860                        options.active += this.headers.length; 
    6961                } 
     62                this._refresh(); 
     63        }, 
     64 
     65        _getCreateEventData: function() { 
     66                return { 
     67                        header: this.active, 
     68                        panel: !this.active.length ? $() : this.active.next(), 
     69                        content: !this.active.length ? $() : this.active.next() 
     70                }; 
     71        }, 
     72 
     73        _createIcons: function() { 
     74                var icons = this.options.icons; 
     75                if ( icons ) { 
     76                        $( "<span>" ) 
     77                                .addClass( "ui-accordion-header-icon ui-icon " + icons.header ) 
     78                                .prependTo( this.headers ); 
     79                        this.active.children( ".ui-accordion-header-icon" ) 
     80                                .removeClass( icons.header ) 
     81                                .addClass( icons.activeHeader ); 
     82                        this.headers.addClass( "ui-accordion-icons" ); 
     83                } 
     84        }, 
     85 
     86        _destroyIcons: function() { 
     87                this.headers 
     88                        .removeClass( "ui-accordion-icons" ) 
     89                        .children( ".ui-accordion-header-icon" ) 
     90                                .remove(); 
     91        }, 
     92 
     93        _destroy: function() { 
     94                var contents; 
     95 
     96                // clean up main element 
     97                this.element 
     98                        .removeClass( "ui-accordion ui-widget ui-helper-reset" ) 
     99                        .removeAttr( "role" ); 
     100 
     101                // clean up headers 
     102                this.headers 
     103                        .removeClass( "ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" ) 
     104                        .removeAttr( "role" ) 
     105                        .removeAttr( "aria-selected" ) 
     106                        .removeAttr( "aria-controls" ) 
     107                        .removeAttr( "tabIndex" ) 
     108                        .each(function() { 
     109                                if ( /^ui-accordion/.test( this.id ) ) { 
     110                                        this.removeAttribute( "id" ); 
     111                                } 
     112                        }); 
     113                this._destroyIcons(); 
     114 
     115                // clean up content panels 
     116                contents = this.headers.next() 
     117                        .css( "display", "" ) 
     118                        .removeAttr( "role" ) 
     119                        .removeAttr( "aria-expanded" ) 
     120                        .removeAttr( "aria-hidden" ) 
     121                        .removeAttr( "aria-labelledby" ) 
     122                        .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" ) 
     123                        .each(function() { 
     124                                if ( /^ui-accordion/.test( this.id ) ) { 
     125                                        this.removeAttribute( "id" ); 
     126                                } 
     127                        }); 
     128                if ( this.options.heightStyle !== "content" ) { 
     129                        contents.css( "height", "" ); 
     130                } 
     131        }, 
     132 
     133        _setOption: function( key, value ) { 
     134                if ( key === "active" ) { 
     135                        // _activate() will handle invalid values and update this.options 
     136                        this._activate( value ); 
     137                        return; 
     138                } 
     139 
     140                if ( key === "event" ) { 
     141                        if ( this.options.event ) { 
     142                                this._off( this.headers, this.options.event ); 
     143                        } 
     144                        this._setupEvents( value ); 
     145                } 
     146 
     147                this._super( key, value ); 
     148 
     149                // setting collapsible: false while collapsed; open first panel 
     150                if ( key === "collapsible" && !value && this.options.active === false ) { 
     151                        this._activate( 0 ); 
     152                } 
     153 
     154                if ( key === "icons" ) { 
     155                        this._destroyIcons(); 
     156                        if ( value ) { 
     157                                this._createIcons(); 
     158                        } 
     159                } 
     160 
     161                // #5332 - opacity doesn't cascade to positioned elements in IE 
     162                // so we need to add the disabled class to the headers and panels 
     163                if ( key === "disabled" ) { 
     164                        this.headers.add( this.headers.next() ) 
     165                                .toggleClass( "ui-state-disabled", !!value ); 
     166                } 
     167        }, 
     168 
     169        _keydown: function( event ) { 
     170                /*jshint maxcomplexity:15*/ 
     171                if ( event.altKey || event.ctrlKey ) { 
     172                        return; 
     173                } 
     174 
     175                var keyCode = $.ui.keyCode, 
     176                        length = this.headers.length, 
     177                        currentIndex = this.headers.index( event.target ), 
     178                        toFocus = false; 
     179 
     180                switch ( event.keyCode ) { 
     181                        case keyCode.RIGHT: 
     182                        case keyCode.DOWN: 
     183                                toFocus = this.headers[ ( currentIndex + 1 ) % length ]; 
     184                                break; 
     185                        case keyCode.LEFT: 
     186                        case keyCode.UP: 
     187                                toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; 
     188                                break; 
     189                        case keyCode.SPACE: 
     190                        case keyCode.ENTER: 
     191                                this._eventHandler( event ); 
     192                                break; 
     193                        case keyCode.HOME: 
     194                                toFocus = this.headers[ 0 ]; 
     195                                break; 
     196                        case keyCode.END: 
     197                                toFocus = this.headers[ length - 1 ]; 
     198                                break; 
     199                } 
     200 
     201                if ( toFocus ) { 
     202                        $( event.target ).attr( "tabIndex", -1 ); 
     203                        $( toFocus ).attr( "tabIndex", 0 ); 
     204                        toFocus.focus(); 
     205                        event.preventDefault(); 
     206                } 
     207        }, 
     208 
     209        _panelKeyDown : function( event ) { 
     210                if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { 
     211                        $( event.currentTarget ).prev().focus(); 
     212                } 
     213        }, 
     214 
     215        refresh: function() { 
     216                var options = this.options; 
     217                this._processPanels(); 
     218 
     219                // was collapsed or no panel 
     220                if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) { 
     221                        options.active = false; 
     222                        this.active = $(); 
     223                // active false only when collapsible is true 
     224                } if ( options.active === false ) { 
     225                        this._activate( 0 ); 
     226                // was active, but active panel is gone 
     227                } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { 
     228                        // all remaining panel are disabled 
     229                        if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) { 
     230                                options.active = false; 
     231                                this.active = $(); 
     232                        // activate previous panel 
     233                        } else { 
     234                                this._activate( Math.max( 0, options.active - 1 ) ); 
     235                        } 
     236                // was active, active panel still exists 
     237                } else { 
     238                        // make sure active index is correct 
     239                        options.active = this.headers.index( this.active ); 
     240                } 
     241 
     242                this._destroyIcons(); 
     243 
     244                this._refresh(); 
     245        }, 
     246 
     247        _processPanels: function() { 
     248                this.headers = this.element.find( this.options.header ) 
     249                        .addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" ); 
     250 
     251                this.headers.next() 
     252                        .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ) 
     253                        .filter(":not(.ui-accordion-content-active)") 
     254                        .hide(); 
     255        }, 
     256 
     257        _refresh: function() { 
     258                var maxHeight, 
     259                        options = this.options, 
     260                        heightStyle = options.heightStyle, 
     261                        parent = this.element.parent(), 
     262                        accordionId = this.accordionId = "ui-accordion-" + 
     263                                (this.element.attr( "id" ) || ++uid); 
     264 
    70265                this.active = this._findActive( options.active ) 
    71                         .addClass( "ui-accordion-header-active ui-state-active" ) 
    72                         .toggleClass( "ui-corner-all ui-corner-top" ); 
     266                        .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ) 
     267                        .removeClass( "ui-corner-all" ); 
    73268                this.active.next() 
    74269                        .addClass( "ui-accordion-content-active" ) 
    75270                        .show(); 
    76  
    77                 this._createIcons(); 
    78                 this.originalHeight = this.element[0].style.height; 
    79                 this.refresh(); 
    80  
    81                 // ARIA 
    82                 this.element.attr( "role", "tablist" ); 
    83271 
    84272                this.headers 
     
    131319                } 
    132320 
    133                 this._on( this.headers, { keydown: "_keydown" }); 
    134                 this._on( this.headers.next(), { keydown: "_panelKeyDown" }); 
     321                this._createIcons(); 
     322 
    135323                this._setupEvents( options.event ); 
    136         }, 
    137  
    138         _getCreateEventData: function() { 
    139                 return { 
    140                         header: this.active, 
    141                         content: !this.active.length ? $() : this.active.next() 
    142                 }; 
    143         }, 
    144  
    145         _createIcons: function() { 
    146                 var icons = this.options.icons; 
    147                 if ( icons ) { 
    148                         $( "<span>" ) 
    149                                 .addClass( "ui-accordion-header-icon ui-icon " + icons.header ) 
    150                                 .prependTo( this.headers ); 
    151                         this.active.children( ".ui-accordion-header-icon" ) 
    152                                 .removeClass( icons.header ) 
    153                                 .addClass( icons.activeHeader ); 
    154                         this.headers.addClass( "ui-accordion-icons" ); 
    155                 } 
    156         }, 
    157  
    158         _destroyIcons: function() { 
    159                 this.headers 
    160                         .removeClass( "ui-accordion-icons" ) 
    161                         .children( ".ui-accordion-header-icon" ) 
    162                                 .remove(); 
    163         }, 
    164  
    165         _destroy: function() { 
    166                 var contents; 
    167  
    168                 // clean up main element 
    169                 this.element 
    170                         .removeClass( "ui-accordion ui-widget ui-helper-reset" ) 
    171                         .removeAttr( "role" ); 
    172  
    173                 // clean up headers 
    174                 this.headers 
    175                         .removeClass( "ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" ) 
    176                         .removeAttr( "role" ) 
    177                         .removeAttr( "aria-selected" ) 
    178                         .removeAttr( "aria-controls" ) 
    179                         .removeAttr( "tabIndex" ) 
    180                         .each(function() { 
    181                                 if ( /^ui-accordion/.test( this.id ) ) { 
    182                                         this.removeAttribute( "id" ); 
    183                                 } 
    184                         }); 
    185                 this._destroyIcons(); 
    186  
    187                 // clean up content panels 
    188                 contents = this.headers.next() 
    189                         .css( "display", "" ) 
    190                         .removeAttr( "role" ) 
    191                         .removeAttr( "aria-expanded" ) 
    192                         .removeAttr( "aria-hidden" ) 
    193                         .removeAttr( "aria-labelledby" ) 
    194                         .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" ) 
    195                         .each(function() { 
    196                                 if ( /^ui-accordion/.test( this.id ) ) { 
    197                                         this.removeAttribute( "id" ); 
    198                                 } 
    199                         }); 
    200                 if ( this.options.heightStyle !== "content" ) { 
    201                         this.element.css( "height", this.originalHeight ); 
    202                         contents.css( "height", "" ); 
    203                 } 
    204         }, 
    205  
    206         _setOption: function( key, value ) { 
    207                 if ( key === "active" ) { 
    208                         // _activate() will handle invalid values and update this.options 
    209                         this._activate( value ); 
    210                         return; 
    211                 } 
    212  
    213                 if ( key === "event" ) { 
    214                         if ( this.options.event ) { 
    215                                 this._off( this.headers, this.options.event ); 
    216                         } 
    217                         this._setupEvents( value ); 
    218                 } 
    219  
    220                 this._super( key, value ); 
    221  
    222                 // setting collapsible: false while collapsed; open first panel 
    223                 if ( key === "collapsible" && !value && this.options.active === false ) { 
    224                         this._activate( 0 ); 
    225                 } 
    226  
    227                 if ( key === "icons" ) { 
    228                         this._destroyIcons(); 
    229                         if ( value ) { 
    230                                 this._createIcons(); 
    231                         } 
    232                 } 
    233  
    234                 // #5332 - opacity doesn't cascade to positioned elements in IE 
    235                 // so we need to add the disabled class to the headers and panels 
    236                 if ( key === "disabled" ) { 
    237                         this.headers.add( this.headers.next() ) 
    238                                 .toggleClass( "ui-state-disabled", !!value ); 
    239                 } 
    240         }, 
    241  
    242         _keydown: function( event ) { 
    243                 if ( event.altKey || event.ctrlKey ) { 
    244                         return; 
    245                 } 
    246  
    247                 var keyCode = $.ui.keyCode, 
    248                         length = this.headers.length, 
    249                         currentIndex = this.headers.index( event.target ), 
    250                         toFocus = false; 
    251  
    252                 switch ( event.keyCode ) { 
    253                         case keyCode.RIGHT: 
    254                         case keyCode.DOWN: 
    255                                 toFocus = this.headers[ ( currentIndex + 1 ) % length ]; 
    256                                 break; 
    257                         case keyCode.LEFT: 
    258                         case keyCode.UP: 
    259                                 toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; 
    260                                 break; 
    261                         case keyCode.SPACE: 
    262                         case keyCode.ENTER: 
    263                                 this._eventHandler( event ); 
    264                                 break; 
    265                         case keyCode.HOME: 
    266                                 toFocus = this.headers[ 0 ]; 
    267                                 break; 
    268                         case keyCode.END: 
    269                                 toFocus = this.headers[ length - 1 ]; 
    270                                 break; 
    271                 } 
    272  
    273                 if ( toFocus ) { 
    274                         $( event.target ).attr( "tabIndex", -1 ); 
    275                         $( toFocus ).attr( "tabIndex", 0 ); 
    276                         toFocus.focus(); 
    277                         event.preventDefault(); 
    278                 } 
    279         }, 
    280  
    281         _panelKeyDown : function( event ) { 
    282                 if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { 
    283                         $( event.currentTarget ).prev().focus(); 
    284                 } 
    285         }, 
    286  
    287         refresh: function() { 
    288                 var maxHeight, overflow, 
    289                         heightStyle = this.options.heightStyle, 
    290                         parent = this.element.parent(); 
    291  
    292                 this.element.css( "height", this.originalHeight ); 
    293324 
    294325                if ( heightStyle === "fill" ) { 
    295                         // IE 6 treats height like minHeight, so we need to turn off overflow 
    296                         // in order to get a reliable height 
    297                         // we use the minHeight support test because we assume that only 
    298                         // browsers that don't support minHeight will treat height as minHeight 
    299                         if ( !$.support.minHeight ) { 
    300                                 overflow = parent.css( "overflow" ); 
    301                                 parent.css( "overflow", "hidden"); 
    302                         } 
    303326                        maxHeight = parent.height(); 
    304327                        this.element.siblings( ":visible" ).each(function() { 
     
    311334                                maxHeight -= elem.outerHeight( true ); 
    312335                        }); 
    313                         if ( overflow ) { 
    314                                 parent.css( "overflow", overflow ); 
    315                         } 
    316336 
    317337                        this.headers.each(function() { 
     
    329349                        this.headers.next() 
    330350                                .each(function() { 
    331                                         maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() ); 
     351                                        maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); 
    332352                                }) 
    333353                                .height( maxHeight ); 
    334                 } 
    335  
    336                 if ( heightStyle !== "content" ) { 
    337                         this.element.height( this.element.height() ); 
    338354                } 
    339355        }, 
     
    362378 
    363379        _setupEvents: function( event ) { 
    364                 var events = {}; 
    365                 if ( !event ) { 
    366                         return; 
    367                 } 
    368                 $.each( event.split(" "), function( index, eventName ) { 
    369                         events[ eventName ] = "_eventHandler"; 
    370                 }); 
     380                var events = { 
     381                        keydown: "_keydown" 
     382                }; 
     383                if ( event ) { 
     384                        $.each( event.split(" "), function( index, eventName ) { 
     385                                events[ eventName ] = "_eventHandler"; 
     386                        }); 
     387                } 
     388 
     389                this._off( this.headers.add( this.headers.next() ) ); 
    371390                this._on( this.headers, events ); 
     391                this._on( this.headers.next(), { keydown: "_panelKeyDown" }); 
     392                this._hoverable( this.headers ); 
     393                this._focusable( this.headers ); 
    372394        }, 
    373395 
     
    548570}); 
    549571 
    550  
    551  
    552 // DEPRECATED 
    553 if ( $.uiBackCompat !== false ) { 
    554         // navigation options 
    555         (function( $, prototype ) { 
    556                 $.extend( prototype.options, { 
    557                         navigation: false, 
    558                         navigationFilter: function() { 
    559                                 return this.href.toLowerCase() === location.href.toLowerCase(); 
    560                         } 
    561                 }); 
    562  
    563                 var _create = prototype._create; 
    564                 prototype._create = function() { 
    565                         if ( this.options.navigation ) { 
    566                                 var that = this, 
    567                                         headers = this.element.find( this.options.header ), 
    568                                         content = headers.next(), 
    569                                         current = headers.add( content ) 
    570                                                 .find( "a" ) 
    571                                                 .filter( this.options.navigationFilter ) 
    572                                                 [ 0 ]; 
    573                                 if ( current ) { 
    574                                         headers.add( content ).each( function( index ) { 
    575                                                 if ( $.contains( this, current ) ) { 
    576                                                         that.options.active = Math.floor( index / 2 ); 
    577                                                         return false; 
    578                                                 } 
    579                                         }); 
    580                                 } 
    581                         } 
    582                         _create.call( this ); 
    583                 }; 
    584         }( jQuery, jQuery.ui.accordion.prototype ) ); 
    585  
    586         // height options 
    587         (function( $, prototype ) { 
    588                 $.extend( prototype.options, { 
    589                         heightStyle: null, // remove default so we fall back to old values 
    590                         autoHeight: true, // use heightStyle: "auto" 
    591                         clearStyle: false, // use heightStyle: "content" 
    592                         fillSpace: false // use heightStyle: "fill" 
    593                 }); 
    594  
    595                 var _create = prototype._create, 
    596                         _setOption = prototype._setOption; 
    597  
    598                 $.extend( prototype, { 
    599                         _create: function() { 
    600                                 this.options.heightStyle = this.options.heightStyle || 
    601                                         this._mergeHeightStyle(); 
    602  
    603                                 _create.call( this ); 
    604                         }, 
    605  
    606                         _setOption: function( key, value ) { 
    607                                 if ( key === "autoHeight" || key === "clearStyle" || key === "fillSpace" ) { 
    608                                         this.options.heightStyle = this._mergeHeightStyle(); 
    609                                 } 
    610                                 _setOption.apply( this, arguments ); 
    611                         }, 
    612  
    613                         _mergeHeightStyle: function() { 
    614                                 var options = this.options; 
    615  
    616                                 if ( options.fillSpace ) { 
    617                                         return "fill"; 
    618                                 } 
    619  
    620                                 if ( options.clearStyle ) { 
    621                                         return "content"; 
    622                                 } 
    623  
    624                                 if ( options.autoHeight ) { 
    625                                         return "auto"; 
    626                                 } 
    627                         } 
    628                 }); 
    629         }( jQuery, jQuery.ui.accordion.prototype ) ); 
    630  
    631         // icon options 
    632         (function( $, prototype ) { 
    633                 $.extend( prototype.options.icons, { 
    634                         activeHeader: null, // remove default so we fall back to old values 
    635                         headerSelected: "ui-icon-triangle-1-s" 
    636                 }); 
    637  
    638                 var _createIcons = prototype._createIcons; 
    639                 prototype._createIcons = function() { 
    640                         if ( this.options.icons ) { 
    641                                 this.options.icons.activeHeader = this.options.icons.activeHeader || 
    642                                         this.options.icons.headerSelected; 
    643                         } 
    644                         _createIcons.call( this ); 
    645                 }; 
    646         }( jQuery, jQuery.ui.accordion.prototype ) ); 
    647  
    648         // expanded active option, activate method 
    649         (function( $, prototype ) { 
    650                 prototype.activate = prototype._activate; 
    651  
    652                 var _findActive = prototype._findActive; 
    653                 prototype._findActive = function( index ) { 
    654                         if ( index === -1 ) { 
    655                                 index = false; 
    656                         } 
    657                         if ( index && typeof index !== "number" ) { 
    658                                 index = this.headers.index( this.headers.filter( index ) ); 
    659                                 if ( index === -1 ) { 
    660                                         index = false; 
    661                                 } 
    662                         } 
    663                         return _findActive.call( this, index ); 
    664                 }; 
    665         }( jQuery, jQuery.ui.accordion.prototype ) ); 
    666  
    667         // resize method 
    668         jQuery.ui.accordion.prototype.resize = jQuery.ui.accordion.prototype.refresh; 
    669  
    670         // change events 
    671         (function( $, prototype ) { 
    672                 $.extend( prototype.options, { 
    673                         change: null, 
    674                         changestart: null 
    675                 }); 
    676  
    677                 var _trigger = prototype._trigger; 
    678                 prototype._trigger = function( type, event, data ) { 
    679                         var ret = _trigger.apply( this, arguments ); 
    680                         if ( !ret ) { 
    681                                 return false; 
    682                         } 
    683  
    684                         if ( type === "beforeActivate" ) { 
    685                                 ret = _trigger.call( this, "changestart", event, { 
    686                                         oldHeader: data.oldHeader, 
    687                                         oldContent: data.oldPanel, 
    688                                         newHeader: data.newHeader, 
    689                                         newContent: data.newPanel 
    690                                 }); 
    691                         } else if ( type === "activate" ) { 
    692                                 ret = _trigger.call( this, "change", event, { 
    693                                         oldHeader: data.oldHeader, 
    694                                         oldContent: data.oldPanel, 
    695                                         newHeader: data.newHeader, 
    696                                         newContent: data.newPanel 
    697                                 }); 
    698                         } 
    699                         return ret; 
    700                 }; 
    701         }( jQuery, jQuery.ui.accordion.prototype ) ); 
    702  
    703         // animated option 
    704         // NOTE: this only provides support for "slide", "bounceslide", and easings 
    705         // not the full $.ui.accordion.animations API 
    706         (function( $, prototype ) { 
    707                 $.extend( prototype.options, { 
    708                         animate: null, 
    709                         animated: "slide" 
    710                 }); 
    711  
    712                 var _create = prototype._create; 
    713                 prototype._create = function() { 
    714                         var options = this.options; 
    715                         if ( options.animate === null ) { 
    716                                 if ( !options.animated ) { 
    717                                         options.animate = false; 
    718                                 } else if ( options.animated === "slide" ) { 
    719                                         options.animate = 300; 
    720                                 } else if ( options.animated === "bounceslide" ) { 
    721                                         options.animate = { 
    722                                                 duration: 200, 
    723                                                 down: { 
    724                                                         easing: "easeOutBounce", 
    725                                                         duration: 1000 
    726                                                 } 
    727                                         }; 
    728                                 } else { 
    729                                         options.animate = options.animated; 
    730                                 } 
    731                         } 
    732  
    733                         _create.call( this ); 
    734                 }; 
    735         }( jQuery, jQuery.ui.accordion.prototype ) ); 
    736 } 
    737  
    738572})( jQuery ); 
  • trunk/themes/default/js/ui/jquery.ui.autocomplete.js

    r18630 r20824  
    11/*! 
    2  * jQuery UI Autocomplete 1.9.0 
     2 * jQuery UI Autocomplete 1.10.1 
    33 * http://jqueryui.com 
    44 * 
    5  * Copyright 2012 jQuery Foundation and other contributors 
     5 * Copyright 2013 jQuery Foundation and other contributors 
    66 * Released under the MIT license. 
    77 * http://jquery.org/license 
     
    2121 
    2222$.widget( "ui.autocomplete", { 
    23         version: "1.9.0", 
     23        version: "1.10.1", 
    2424        defaultElement: "<input>", 
    2525        options: { 
    26                 appendTo: "body", 
     26                appendTo: null, 
    2727                autoFocus: false, 
    2828                delay: 300, 
     
    5555                // events when we know the keydown event was used to modify the 
    5656                // search term. #7799 
    57                 var suppressKeyPress, suppressKeyPressRepeat, suppressInput; 
    58  
    59                 this.isMultiLine = this._isMultiLine(); 
    60                 this.valueMethod = this.element[ this.element.is( "input,textarea" ) ? "val" : "text" ]; 
     57                var suppressKeyPress, suppressKeyPressRepeat, suppressInput, 
     58                        nodeName = this.element[0].nodeName.toLowerCase(), 
     59                        isTextarea = nodeName === "textarea", 
     60                        isInput = nodeName === "input"; 
     61 
     62                this.isMultiLine = 
     63                        // Textareas are always multi-line 
     64                        isTextarea ? true : 
     65                        // Inputs are always single-line, even if inside a contentEditable element 
     66                        // IE also treats inputs as contentEditable 
     67                        isInput ? false : 
     68                        // All other element types are determined by whether or not they're contentEditable 
     69                        this.element.prop( "isContentEditable" ); 
     70 
     71                this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ]; 
    6172                this.isNewMenu = true; 
    6273 
     
    6576                        .attr( "autocomplete", "off" ); 
    6677 
    67                 this._on({ 
     78                this._on( this.element, { 
    6879                        keydown: function( event ) { 
     80                                /*jshint maxcomplexity:15*/ 
    6981                                if ( this.element.prop( "readOnly" ) ) { 
    7082                                        suppressKeyPress = true; 
     
    181193                this._initSource(); 
    182194                this.menu = $( "<ul>" ) 
    183                         .addClass( "ui-autocomplete" ) 
    184                         .appendTo( this.document.find( this.options.appendTo || "body" )[ 0 ] ) 
     195                        .addClass( "ui-autocomplete ui-front" ) 
     196                        .appendTo( this._appendTo() ) 
    185197                        .menu({ 
    186198                                // custom key handling for now 
     
    189201                                role: null 
    190202                        }) 
    191                         .zIndex( this.element.zIndex() + 1 ) 
    192203                        .hide() 
    193                         .data( "menu" ); 
     204                        .data( "ui-menu" ); 
     205 
    194206                this._on( this.menu.element, { 
    195207                        mousedown: function( event ) { 
     
    237249                                } 
    238250 
    239                                 // back compat for _renderItem using item.autocomplete, via #7810 
    240                                 // TODO remove the fallback, see #8156 
    241                                 var item = ui.item.data( "ui-autocomplete-item" ) || ui.item.data( "item.autocomplete" ); 
     251                                var item = ui.item.data( "ui-autocomplete-item" ); 
    242252                                if ( false !== this._trigger( "focus", event, { item: item } ) ) { 
    243253                                        // use value to match what will end up in the input, if it was a key event 
     
    255265                        }, 
    256266                        menuselect: function( event, ui ) { 
    257                                 // back compat for _renderItem using item.autocomplete, via #7810 
    258                                 // TODO remove the fallback, see #8156 
    259                                 var item = ui.item.data( "ui-autocomplete-item" ) || ui.item.data( "item.autocomplete" ), 
     267                                var item = ui.item.data( "ui-autocomplete-item" ), 
    260268                                        previous = this.previous; 
    261269 
     
    292300                        .insertAfter( this.element ); 
    293301 
    294                 if ( $.fn.bgiframe ) { 
    295                          this.menu.element.bgiframe(); 
    296                 } 
    297  
    298302                // turning off autocomplete prevents the browser from remembering the 
    299303                // value when navigating through history, so we re-enable autocomplete 
     
    321325                } 
    322326                if ( key === "appendTo" ) { 
    323                         this.menu.element.appendTo( this.document.find( value || "body" )[0] ); 
     327                        this.menu.element.appendTo( this._appendTo() ); 
    324328                } 
    325329                if ( key === "disabled" && value && this.xhr ) { 
     
    328332        }, 
    329333 
    330         _isMultiLine: function() { 
    331                 // Textareas are always multi-line 
    332                 if ( this.element.is( "textarea" ) ) { 
    333                         return true; 
    334                 } 
    335                 // Inputs are always single-line, even if inside a contentEditable element 
    336                 // IE also treats inputs as contentEditable 
    337                 if ( this.element.is( "input" ) ) { 
    338                         return false; 
    339                 } 
    340                 // All other element types are determined by whether or not they're contentEditable 
    341                 return this.element.prop( "isContentEditable" ); 
     334        _appendTo: function() { 
     335                var element = this.options.appendTo; 
     336 
     337                if ( element ) { 
     338                        element = element.jquery || element.nodeType ? 
     339                                $( element ) : 
     340                                this.document.find( element ).eq( 0 ); 
     341                } 
     342 
     343                if ( !element ) { 
     344                        element = this.element.closest( ".ui-front" ); 
     345                } 
     346 
     347                if ( !element.length ) { 
     348                        element = this.document[0].body; 
     349                } 
     350 
     351                return element; 
    342352        }, 
    343353 
     
    360370                                        data: request, 
    361371                                        dataType: "json", 
    362                                         success: function( data, status ) { 
     372                                        success: function( data ) { 
    363373                                                response( data ); 
    364374                                        }, 
     
    479489 
    480490        _suggest: function( items ) { 
    481                 var ul = this.menu.element 
    482                         .empty() 
    483                         .zIndex( this.element.zIndex() + 1 ); 
     491                var ul = this.menu.element.empty(); 
    484492                this._renderMenu( ul, items ); 
    485493                this.menu.refresh(); 
     
    542550        }, 
    543551 
    544         _value: function( value ) { 
     552        _value: function() { 
    545553                return this.valueMethod.apply( this.element, arguments ); 
    546554        }, 
     
    598606}); 
    599607 
    600  
    601608}( jQuery )); 
  • trunk/themes/default/js/ui/jquery.ui.button.js

    r18630 r20824  
    11/*! 
    2  * jQuery UI Button 1.9.0 
     2 * jQuery UI Button 1.10.1 
    33 * http://jqueryui.com 
    44 * 
    5  * Copyright 2012 jQuery Foundation and other contributors 
     5 * Copyright 2013 jQuery Foundation and other contributors 
    66 * Released under the MIT license. 
    77 * http://jquery.org/license 
     
    3030                        radios = $( [] ); 
    3131                if ( name ) { 
     32                        name = name.replace( /'/g, "\\'" ); 
    3233                        if ( form ) { 
    3334                                radios = $( form ).find( "[name='" + name + "']" ); 
     
    4344 
    4445$.widget( "ui.button", { 
    45         version: "1.9.0", 
     46        version: "1.10.1", 
    4647        defaultElement: "<button>", 
    4748        options: { 
     
    7172                        options = this.options, 
    7273                        toggleButton = this.type === "checkbox" || this.type === "radio", 
    73                         hoverClass = "ui-state-hover" + ( !toggleButton ? " ui-state-active" : "" ), 
     74                        activeClass = !toggleButton ? "ui-state-active" : "", 
    7475                        focusClass = "ui-state-focus"; 
    7576 
     
    7778                        options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html()); 
    7879                } 
     80 
     81                this._hoverable( this.buttonElement ); 
    7982 
    8083                this.buttonElement 
     
    8588                                        return; 
    8689                                } 
    87                                 $( this ).addClass( "ui-state-hover" ); 
    8890                                if ( this === lastActive ) { 
    8991                                        $( this ).addClass( "ui-state-active" ); 
     
    9496                                        return; 
    9597                                } 
    96                                 $( this ).removeClass( hoverClass ); 
     98                                $( this ).removeClass( activeClass ); 
    9799                        }) 
    98100                        .bind( "click" + this.eventNamespace, function( event ) { 
     
    146148                                        return false; 
    147149                                } 
    148                                 $( this ).toggleClass( "ui-state-active" ); 
    149                                 that.buttonElement.attr( "aria-pressed", that.element[0].checked ); 
    150150                        }); 
    151151                } else if ( this.type === "radio" ) { 
     
    192192                                        } 
    193193                                }) 
    194                                 .bind( "keyup" + this.eventNamespace, function() { 
     194                                // see #8559, we bind to blur here in case the button element loses 
     195                                // focus between keydown and keyup, it would be left in an "active" state 
     196                                .bind( "keyup" + this.eventNamespace + " blur" + this.eventNamespace, function() { 
    195197                                        $( this ).removeClass( "ui-state-active" ); 
    196198                                }); 
     
    283285 
    284286        refresh: function() { 
    285                 var isDisabled = this.element.is( ":disabled" ); 
     287                //See #8237 & #8828 
     288                var isDisabled = this.element.is( "input, button" ) ? this.element.is( ":disabled" ) : this.element.hasClass( "ui-button-disabled" ); 
     289 
    286290                if ( isDisabled !== this.options.disabled ) { 
    287291                        this._setOption( "disabled", isDisabled ); 
     
    357361 
    358362$.widget( "ui.buttonset", { 
    359         version: "1.9.0", 
     363        version: "1.10.1", 
    360364        options: { 
    361                 items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)" 
     365                items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)" 
    362366        }, 
    363367 
  • trunk/themes/default/js/ui/jquery.ui.core.js

    r18630 r20824  
    11/*! 
    2  * jQuery UI Core 1.9.0 
     2 * jQuery UI Core 1.10.1 
    33 * http://jqueryui.com 
    44 * 
    5  * Copyright 2012 jQuery Foundation and other contributors 
     5 * Copyright 2013 jQuery Foundation and other contributors 
    66 * Released under the MIT license. 
    77 * http://jquery.org/license 
     
    2323 
    2424$.extend( $.ui, { 
    25         version: "1.9.0", 
     25        version: "1.10.1", 
    2626 
    2727        keyCode: { 
     
    7070        scrollParent: function() { 
    7171                var scrollParent; 
    72                 if (($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) { 
     72                if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) { 
    7373                        scrollParent = this.parents().filter(function() { 
    74                                 return (/(relative|absolute|fixed)/).test($.css(this,'position')) && (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x')); 
     74                                return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x")); 
    7575                        }).eq(0); 
    7676                } else { 
    7777                        scrollParent = this.parents().filter(function() { 
    78                                 return (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x')); 
     78                                return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x")); 
    7979                        }).eq(0); 
    8080                } 
    8181 
    82                 return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent; 
     82                return (/fixed/).test(this.css("position")) || !scrollParent.length ? $(document) : scrollParent; 
    8383        }, 
    8484 
     
    129129}); 
    130130 
     131// selectors 
     132function focusable( element, isTabIndexNotNaN ) { 
     133        var map, mapName, img, 
     134                nodeName = element.nodeName.toLowerCase(); 
     135        if ( "area" === nodeName ) { 
     136                map = element.parentNode; 
     137                mapName = map.name; 
     138                if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { 
     139                        return false; 
     140                } 
     141                img = $( "img[usemap=#" + mapName + "]" )[0]; 
     142                return !!img && visible( img ); 
     143        } 
     144        return ( /input|select|textarea|button|object/.test( nodeName ) ? 
     145                !element.disabled : 
     146                "a" === nodeName ? 
     147                        element.href || isTabIndexNotNaN : 
     148                        isTabIndexNotNaN) && 
     149                // the element and all of its ancestors must be visible 
     150                visible( element ); 
     151} 
     152 
     153function visible( element ) { 
     154        return $.expr.filters.visible( element ) && 
     155                !$( element ).parents().addBack().filter(function() { 
     156                        return $.css( this, "visibility" ) === "hidden"; 
     157                }).length; 
     158} 
     159 
     160$.extend( $.expr[ ":" ], { 
     161        data: $.expr.createPseudo ? 
     162                $.expr.createPseudo(function( dataName ) { 
     163                        return function( elem ) { 
     164                                return !!$.data( elem, dataName ); 
     165                        }; 
     166                }) : 
     167                // support: jQuery <1.8 
     168                function( elem, i, match ) { 
     169                        return !!$.data( elem, match[ 3 ] ); 
     170                }, 
     171 
     172        focusable: function( element ) { 
     173                return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) ); 
     174        }, 
     175 
     176        tabbable: function( element ) { 
     177                var tabIndex = $.attr( element, "tabindex" ), 
     178                        isTabIndexNaN = isNaN( tabIndex ); 
     179                return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN ); 
     180        } 
     181}); 
     182 
    131183// support: jQuery <1.8 
    132184if ( !$( "<a>" ).outerWidth( 1 ).jquery ) { 
     
    176228} 
    177229 
    178 // selectors 
    179 function focusable( element, isTabIndexNotNaN ) { 
    180         var map, mapName, img, 
    181                 nodeName = element.nodeName.toLowerCase(); 
    182         if ( "area" === nodeName ) { 
    183                 map = element.parentNode; 
    184                 mapName = map.name; 
    185                 if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { 
    186                         return false; 
    187                 } 
    188                 img = $( "img[usemap=#" + mapName + "]" )[0]; 
    189                 return !!img && visible( img ); 
    190         } 
    191         return ( /input|select|textarea|button|object/.test( nodeName ) ? 
    192                 !element.disabled : 
    193                 "a" === nodeName ? 
    194                         element.href || isTabIndexNotNaN : 
    195                         isTabIndexNotNaN) && 
    196                 // the element and all of its ancestors must be visible 
    197                 visible( element ); 
    198 } 
    199  
    200 function visible( element ) { 
    201         return !$( element ).parents().andSelf().filter(function() { 
    202                 return $.css( this, "visibility" ) === "hidden" || 
    203                         $.expr.filters.hidden( this ); 
    204         }).length; 
    205 } 
    206  
    207 $.extend( $.expr[ ":" ], { 
    208         data: $.expr.createPseudo ? 
    209                 $.expr.createPseudo(function( dataName ) { 
    210                         return function( elem ) { 
    211                                 return !!$.data( elem, dataName ); 
    212                         }; 
    213                 }) : 
    214                 // support: jQuery <1.8 
    215                 function( elem, i, match ) { 
    216                         return !!$.data( elem, match[ 3 ] ); 
    217                 }, 
    218  
    219         focusable: function( element ) { 
    220                 return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) ); 
    221         }, 
    222  
    223         tabbable: function( element ) { 
    224                 var tabIndex = $.attr( element, "tabindex" ), 
    225                         isTabIndexNaN = isNaN( tabIndex ); 
    226                 return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN ); 
    227         } 
    228 }); 
    229  
    230 // support 
    231 $(function() { 
    232         var body = document.body, 
    233                 div = body.appendChild( div = document.createElement( "div" ) ); 
    234  
    235         // access offsetHeight before setting the style to prevent a layout bug 
    236         // in IE 9 which causes the element to continue to take up space even 
    237         // after it is removed from the DOM (#8026) 
    238         div.offsetHeight; 
    239  
    240         $.extend( div.style, { 
    241                 minHeight: "100px", 
    242                 height: "auto", 
    243                 padding: 0, 
    244                 borderWidth: 0 
    245         }); 
    246  
    247         $.support.minHeight = div.offsetHeight === 100; 
    248         $.support.selectstart = "onselectstart" in div; 
    249  
    250         // set display to none to avoid a layout bug in IE 
    251         // http://dev.jquery.com/ticket/4014 
    252         body.removeChild( div ).style.display = "none"; 
    253 }); 
     230// support: jQuery <1.8 
     231if ( !$.fn.addBack ) { 
     232        $.fn.addBack = function( selector ) { 
     233                return this.add( selector == null ? 
     234                        this.prevObject : this.prevObject.filter( selector ) 
     235                ); 
     236        }; 
     237} 
     238 
     239// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413) 
     240if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) { 
     241        $.fn.removeData = (function( removeData ) { 
     242                return function( key ) { 
     243                        if ( arguments.length ) { 
     244                                return removeData.call( this, $.camelCase( key ) ); 
     245                        } else { 
     246                                return removeData.call( this ); 
     247                        } 
     248                }; 
     249        })( $.fn.removeData ); 
     250} 
    254251 
    255252 
     
    258255 
    259256// deprecated 
    260  
     257$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); 
     258 
     259$.support.selectstart = "onselectstart" in document.createElement( "div" ); 
    261260$.fn.extend({ 
    262261        disableSelection: function() { 
     
    298297        }, 
    299298 
    300         contains: $.contains, 
    301  
    302299        // only used by resizable 
    303300        hasScroll: function( el, a ) { 
     
    322319                el[ scroll ] = 0; 
    323320                return has; 
    324         }, 
    325  
    326         // these are odd functions, fix the API or move into individual plugins 
    327         isOverAxis: function( x, reference, size ) { 
    328                 //Determines when x coordinate is over "b" element axis 
    329                 return ( x > reference ) && ( x < ( reference + size ) ); 
    330         }, 
    331         isOver: function( y, x, top, left, height, width ) { 
    332                 //Determines when x, y coordinates is over "b" element 
    333                 return $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width ); 
    334321        } 
    335322}); 
  • trunk/themes/default/js/ui/jquery.ui.datepicker.js

    <
    r18630 r20824  
    11/*! 
    2  * jQuery UI Datepicker 1.9.0 
     2 * jQuery UI Datepicker 1.10.1 
    33 * http://jqueryui.com 
    44 * 
    5  * Copyright 2012 jQuery Foundation and other contributors 
     5 * Copyright 2013 jQuery Foundation and other contributors 
    66 * Released under the MIT license. 
    77 * http://jquery.org/license 
     
    1414(function( $, undefined ) { 
    1515 
    16 $.extend($.ui, { datepicker: { version: "1.9.0" } }); 
    17  
    18 var PROP_NAME = 'datepicker'; 
    19 var dpuuid = new Date().getTime(); 
    20 var instActive; 
     16$.extend($.ui, { datepicker: { version: "1.10.1" } }); 
     17 
     18var PROP_NAME = "datepicker", 
     19        dpuuid = new Date().getTime(), 
     20        instActive; 
    2121 
    2222/* Date picker manager. 
     
    2626 
    2727function Datepicker() { 
    28         this.debug = false; // Change this to true to start debugging 
    2928        this._curInst = null; // The current instance in use 
    3029        this._keyEvent = false; // If the last event was a key event 
     
    3231        this._datepickerShowing = false; // True if the popup picker is showing , false if not 
    3332        this._inDialog = false; // True if showing within a "dialog", false if not 
    34         this._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division 
    35         this._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class 
    36         this._appendClass = 'ui-datepicker-append'; // The name of the append marker class 
    37         this._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class 
    38         this._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class 
    39         this._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class 
    40         this._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class 
    41         this._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class 
    42         this._dayOverClass = 'ui-datepicker-days-cell-over'; // The name of the day hover marker class 
     33        this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division 
     34        this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class 
     35        this._appendClass = "ui-datepicker-append"; // The name of the append marker class 
     36        this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class 
     37        this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class 
     38        this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class 
     39        this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class 
     40        this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class 
     41        this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class 
    4342        this.regional = []; // Available regional settings, indexed by language code 
    44         this.regional[''] = { // Default regional settings 
    45                 closeText: 'Done', // Display text for close link 
    46                 prevText: 'Prev', // Display text for previous month link 
    47                 nextText: 'Next', // Display text for next month link 
    48                 currentText: 'Today', // Display text for current month link 
    49                 monthNames: ['January','February','March','April','May','June', 
    50                         'July','August','September','October','November','December'], // Names of months for drop-down and formatting 
    51                 monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting 
    52                 dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting 
    53                 dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting 
    54                 dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday 
    55                 weekHeader: 'Wk', // Column header for week of the year 
    56                 dateFormat: 'mm/dd/yy', // See format options on parseDate 
     43        this.regional[""] = { // Default regional settings 
     44                closeText: "Done", // Display text for close link 
     45                prevText: "Prev", // Display text for previous month link 
     46                nextText: "Next", // Display text for next month link 
     47                currentText: "Today", // Display text for current month link 
     48                monthNames: ["January","February","March","April","May","June", 
     49                        "July","August","September","October","November","December"], // Names of months for drop-down and formatting 
     50                monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], // For formatting 
     51                dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], // For formatting 
     52                dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], // For formatting 
     53                dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"], // Column headings for days starting at Sunday 
     54                weekHeader: "Wk", // Column header for week of the year 
     55                dateFormat: "mm/dd/yy", // See format options on parseDate 
    5756                firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ... 
    5857                isRTL: false, // True if right-to-left language, false if left-to-right 
    5958                showMonthAfterYear: false, // True if the year select precedes month, false for month then year 
    60                 yearSuffix: '' // Additional text to append to the year in the month headers 
     59                yearSuffix: "" // Additional text to append to the year in the month headers 
    6160        }; 
    6261        this._defaults = { // Global defaults for all the date picker instances 
    63                 showOn: 'focus', // 'focus' for popup on focus, 
    64                         // 'button' for trigger button, or 'both' for either 
    65                 showAnim: 'fadeIn', // Name of jQuery animation for popup 
     62                showOn: "focus", // "focus" for popup on focus, 
     63                        // "button" for trigger button, or "both" for either 
     64                showAnim: "fadeIn", // Name of jQuery animation for popup 
    6665                showOptions: {}, // Options for enhanced animations 
    6766                defaultDate: null, // Used when field is blank: actual date, 
    6867                        // +/-number for offset from today, null for today 
    69                 appendText: '', // Display text following the input box, e.g. showing the format 
    70                 buttonText: '...', // Text for trigger button 
    71                 buttonImage: '', // URL for trigger button image 
     68                appendText: "", // Display text following the input box, e.g. showing the format 
     69                buttonText: "...", // Text for trigger button 
     70                buttonImage: "", // URL for trigger button image 
    7271                buttonImageOnly: false, // True if the image appears alone, false if it appears on a button 
    7372                hideIfNoPrevNext: false, // True to hide next/previous month links 
     
    7776                changeMonth: false, // True if month can be selected directly, false if only prev/next 
    7877                changeYear: false, // True if year can be selected directly, false if only prev/next 
    79                 yearRange: 'c-10:c+10', // Range of years to display in drop-down, 
     78                yearRange: "c-10:c+10", // Range of years to display in drop-down, 
    8079                        // either relative to today's year (-nn:+nn), relative to currently displayed year 
    8180                        // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n) 
     
    8584                calculateWeek: this.iso8601Week, // How to calculate the week of the year, 
    8685                        // takes a Date and returns the number of the week for it 
    87                 shortYearCutoff: '+10', // Short year values < this are in the current century, 
     86                shortYearCutoff: "+10", // Short year values < this are in the current century, 
    8887                        // > this are in the previous century, 
    89                         // string value starting with '+' for current year + value 
     88                        // string value starting with "+" for current year + value 
    9089                minDate: null, // The earliest selectable date, or null for no limit 
    9190                maxDate: null, // The latest selectable date, or null for no limit 
    92                 duration: 'fast', // Duration of display/closure 
     91                duration: "fast", // Duration of display/closure 
    9392                beforeShowDay: null, // Function that takes a date and returns an array with 
    94                         // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '', 
     93                        // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "", 
    9594                        // [2] = cell title (optional), e.g. $.datepicker.noWeekends 
    9695                beforeShow: null, // Function that takes an input field and 
     
    103102                stepMonths: 1, // Number of months to step back/forward 
    104103                stepBigMonths: 12, // Number of months to step back/forward for the big links 
    105                 altField: '', // Selector for an alternate field to store selected dates into 
    106                 altFormat: '', // The date format to use for the alternate field 
     104                altField: "", // Selector for an alternate field to store selected dates into 
     105                altFormat: "", // The date format to use for the alternate field 
    107106                constrainInput: true, // The input is constrained by the current date format 
    108107                showButtonPanel: false, // True to show button panel, false to not show it 
     
    110109                disabled: false // The initial disabled state 
    111110        }; 
    112         $.extend(this._defaults, this.regional['']); 
    113         this.dpDiv = bindHover($('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')); 
     111        $.extend(this._defaults, this.regional[""]); 
     112        this.dpDiv = bindHover($("<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")); 
    114113} 
    115114 
    116115$.extend(Datepicker.prototype, { 
    117116        /* Class name added to elements to indicate already configured with a date picker. */ 
    118         markerClassName: 'hasDatepicker', 
    119          
     117        markerClassName: "hasDatepicker", 
     118 
    120119        //Keep track of the maximum number of rows displayed (see #7043) 
    121120        maxRows: 4, 
    122121 
    123         /* Debug logging (if enabled). */ 
    124         log: function () { 
    125                 if (this.debug) 
    126                         console.log.apply('', arguments); 
    127         }, 
    128          
    129122        // TODO rename to "widget" when switching to widget factory 
    130123        _widgetDatepicker: function() { 
     
    133126 
    134127        /* Override the default settings for all instances of the date picker. 
    135            @param  settings  object - the new settings to use as defaults (anonymous object) 
    136            @return the manager object */ 
     128         * @param  settings  object - the new settings to use as defaults (anonymous object) 
     129         * @return the manager object 
     130         */ 
    137131        setDefaults: function(settings) { 
    138132                extendRemove(this._defaults, settings || {}); 
     
    141135 
    142136        /* Attach the date picker to a jQuery selection. 
    143            @param  target    element - the target input field or division or span 
    144            @param  settings  object - the new settings to use for this date picker instance (anonymous) */ 
     137         * @param  target       element - the target input field or division or span 
     138         * @param  settings  object - the new settings to use for this date picker instance (anonymous) 
     139         */ 
    145140        _attachDatepicker: function(target, settings) { 
    146                 // check for settings on the control itself - in namespace 'date:' 
    147                 var inlineSettings = null; 
    148                 for (var attrName in this._defaults) { 
    149                         var attrValue = target.getAttribute('date:' + attrName); 
    150                         if (attrValue) { 
    151                                 inlineSettings = inlineSettings || {}; 
    152                                 try { 
    153                                         inlineSettings[attrName] = eval(attrValue); 
    154                                 } catch (err) { 
    155                                         inlineSettings[attrName] = attrValue; 
    156                                 } 
    157                         } 
    158                 } 
    159                 var nodeName = target.nodeName.toLowerCase(); 
    160                 var inline = (nodeName == 'div' || nodeName == 'span'); 
     141                var nodeName, inline, inst; 
     142                nodeName = target.nodeName.toLowerCase(); 
     143                inline = (nodeName === "div" || nodeName === "span"); 
    161144                if (!target.id) { 
    162145                        this.uuid += 1; 
    163                         target.id = 'dp' + this.uuid; 
    164                 } 
    165                 var inst = this._newInst($(target), inline); 
    166                 inst.settings = $.extend({}, settings || {}, inlineSettings || {}); 
    167                 if (nodeName == 'input') { 
     146                        target.id = "dp" + this.uuid; 
     147                } 
     148                inst = this._newInst($(target), inline); 
     149                inst.settings = $.extend({}, settings || {}); 
     150                if (nodeName === "input") { 
    168151                        this._connectDatepicker(target, inst); 
    169152                } else if (inline) { 
     
    174157        /* Create a new instance object. */ 
    175158        _newInst: function(target, inline) { 
    176                 var id = target[0].id.replace(/([^A-Za-z0-9_-])/g, '\\\\$1'); // escape jQuery meta chars 
     159                var id = target[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1"); // escape jQuery meta chars 
    177160                return {id: id, input: target, // associated target 
    178161                        selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection 
     
    180163                        inline: inline, // is datepicker inline or not 
    181164                        dpDiv: (!inline ? this.dpDiv : // presentation div 
    182                         bindHover($('<div class="' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')))}; 
     165                        bindHover($("<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")))}; 
    183166        }, 
    184167 
     
    188171                inst.append = $([]); 
    189172                inst.trigger = $([]); 
    190                 if (input.hasClass(this.markerClassName)) 
     173                if (input.hasClass(this.markerClassName)) { 
    191174                        return; 
     175                } 
    192176                this._attachments(input, inst); 
    193177                input.addClass(this.markerClassName).keydown(this._doKeyDown). 
    194                         keypress(this._doKeyPress).keyup(this._doKeyUp). 
    195                         bind("setData.datepicker", function(event, key, value) { 
    196                                 inst.settings[key] = value; 
    197                         }).bind("getData.datepicker", function(event, key) { 
    198                                 return this._get(inst, key); 
    199                         }); 
     178                        keypress(this._doKeyPress).keyup(this._doKeyUp); 
    200179                this._autoSize(inst); 
    201180                $.data(target, PROP_NAME, inst); 
     
    208187        /* Make attachments based on settings. */ 
    209188        _attachments: function(input, inst) { 
    210                 var appendText = this._get(inst, 'appendText'); 
    211                 var isRTL = this._get(inst, 'isRTL'); 
    212                 if (inst.append) 
     189                var showOn, buttonText, buttonImage, 
     190                        appendText = this._get(inst, "appendText"), 
     191                        isRTL = this._get(inst, "isRTL"); 
     192 
     193                if (inst.append) { 
    213194                        inst.append.remove(); 
     195                } 
    214196                if (appendText) { 
    215                         inst.append = $('<span class="' + this._appendClass + '">' + appendText + '</span>'); 
    216                         input[isRTL ? 'before' : 'after'](inst.append); 
    217                 } 
    218                 input.unbind('focus', this._showDatepicker); 
    219                 if (inst.trigger) 
     197                        inst.append = $("<span class='" + this._appendClass + "'>" + appendText + "</span>"); 
     198                        input[isRTL ? "before" : "after"](inst.append); 
     199                } 
     200 
     201                input.unbind("focus", this._showDatepicker); 
     202 
     203                if (inst.trigger) { 
    220204                        inst.trigger.remove(); 
    221                 var showOn = this._get(inst, 'showOn'); 
    222                 if (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field 
     205                } 
     206 
     207                showOn = this._get(inst, "showOn"); 
     208                if (showOn === "focus" || showOn === "both") { // pop-up date picker when in the marked field 
    223209                        input.focus(this._showDatepicker); 
    224                 if (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked 
    225                         var buttonText = this._get(inst, 'buttonText'); 
    226                         var buttonImage = this._get(inst, 'buttonImage'); 
    227                         inst.trigger = $(this._get(inst, 'buttonImageOnly') ? 
    228                                 $('<img/>').addClass(this._triggerClass). 
     210                } 
     211                if (showOn === "button" || showOn === "both") { // pop-up date picker when button clicked 
     212                        buttonText = this._get(inst, "buttonText"); 
     213                        buttonImage = this._get(inst, "buttonImage"); 
     214                        inst.trigger = $(this._get(inst, "buttonImageOnly") ? 
     215                                $("<img/>").addClass(this._triggerClass). 
    229216                                        attr({ src: buttonImage, alt: buttonText, title: buttonText }) : 
    230                                 $('<button type="button"></button>').addClass(this._triggerClass). 
    231                                         html(buttonImage == '' ? buttonText : $('<img/>').attr( 
     217                                $("<button type='button'></button>").addClass(this._triggerClass). 
     218                                        html(!buttonImage ? buttonText : $("<img/>").attr( 
    232219                                        { src:buttonImage, alt:buttonText, title:buttonText }))); 
    233                         input[isRTL ? 'before' : 'after'](inst.trigger); 
     220                        input[isRTL ? "before" : "after"](inst.trigger); 
    234221                        inst.trigger.click(function() { 
    235                                 if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0]) 
     222                                if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) { 
    236223                                        $.datepicker._hideDatepicker(); 
    237                                 else if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) { 
    238                                         $.datepicker._hideDatepicker();  
     224                                } else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) { 
     225                                        $.datepicker._hideDatepicker(); 
    239226                                        $.datepicker._showDatepicker(input[0]); 
    240                                 } else 
     227                                } else { 
    241228                                        $.datepicker._showDatepicker(input[0]); 
     229                                } 
    242230                                return false; 
    243231                        }); 
     
    247235        /* Apply the maximum length for the date format. */ 
    248236        _autoSize: function(inst) { 
    249                 if (this._get(inst, 'autoSize') && !inst.inline) { 
    250                         var date = new Date(2009, 12 - 1, 20); // Ensure double digits 
    251                         var dateFormat = this._get(inst, 'dateFormat'); 
     237                if (this._get(inst, "autoSize") && !inst.inline) { 
     238                        var findMax, max, maxI, i, 
     239                                date = new Date(2009, 12 - 1, 20), // Ensure double digits 
     240                                dateFormat = this._get(inst, "dateFormat"); 
     241 
    252242                        if (dateFormat.match(/[DM]/)) { 
    253                                 var findMax = function(names) { 
    254                                         var max = 0; 
    255                                         var maxI = 0; 
    256                                         for (var i = 0; i < names.length; i++) { 
     243                                findMax = function(names) { 
     244                                        max = 0; 
     245                                        maxI = 0; 
     246                                        for (i = 0; i < names.length; i++) { 
    257247                                                if (names[i].length > max) { 
    258248                                                        max = names[i].length; 
     
    263253                                }; 
    264254                                date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ? 
    265                                         'monthNames' : 'monthNamesShort')))); 
     255                                        "monthNames" : "monthNamesShort")))); 
    266256                                date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ? 
    267                                         'dayNames' : 'dayNamesShort'))) + 20 - date.getDay()); 
    268                         } 
    269                         inst.input.attr('size', this._formatDate(inst, date).length); 
     257                                        "dayNames" : "dayNamesShort"))) + 20 - date.getDay()); 
     258                        } 
     259                        inst.input.attr("size", this._formatDate(inst, date).length); 
    270260                } 
    271261        }, 
     
    274264        _inlineDatepicker: function(target, inst) { 
    275265                var divSpan = $(target); 
    276                 if (divSpan.hasClass(this.markerClassName)) 
     266                if (divSpan.hasClass(this.markerClassName)) { 
    277267                        return; 
    278                 divSpan.addClass(this.markerClassName).append(inst.dpDiv). 
    279                         bind("setData.datepicker", function(event, key, value){ 
    280                                 inst.settings[key] = value; 
    281                         }).bind("getData.datepicker", function(event, key){ 
    282                                 return this._get(inst, key); 
    283                         }); 
     268                } 
     269                divSpan.addClass(this.markerClassName).append(inst.dpDiv); 
    284270                $.data(target, PROP_NAME, inst); 
    285271                this._setDate(inst, this._getDefaultDate(inst), true); 
     
    296282 
    297283        /* Pop-up the date picker in a "dialog" box. 
    298            @param  input     element - ignored 
    299            @param  date      string or Date - the initial date to display 
    300            @param  onSelect  function - the function to call when a date is selected 
    301            @param  settings  object - update the dialog date picker instance's settings (anonymous object) 
    302            @param  pos       int[2] - coordinates for the dialog's position within the screen or 
    303                              event - with x/y coordinates or 
    304                              leave empty for default (screen centre) 
    305            @return the manager object */ 
     284         * @param  input element - ignored 
     285         * @param  date string or Date - the initial date to display 
     286         * @param  onSelect  function - the function to call when a date is selected 
     287         * @param  settings  object - update the dialog date picker instance's settings (anonymous object) 
     288         * @param  pos int[2] - coordinates for the dialog's position within the screen or 
     289         *                                      event - with x/y coordinates or 
     290         *                                      leave empty for default (screen centre) 
     291         * @return the manager object 
     292         */ 
    306293        _dialogDatepicker: function(input, date, onSelect, settings, pos) { 
    307                 var inst = this._dialogInst; // internal instance 
     294                var id, browserWidth, browserHeight, scrollX, scrollY, 
     295                        inst = this._dialogInst; // internal instance 
     296 
    308297                if (!inst) { 
    309298                        this.uuid += 1; 
    310                         var id = 'dp' + this.uuid; 
    311                         this._dialogInput = $('<input type="text" id="' + id + 
    312                                 '" style="position: absolute; top: -100px; width: 0px;"/>'); 
     299                        id = "dp" + this.uuid; 
     300                        this._dialogInput = $("<input type='text' id='" + id + 
     301                                "' style='position: absolute; top: -100px; width: 0px;'/>"); 
    313302                        this._dialogInput.keydown(this._doKeyDown); 
    314                         $('body').append(this._dialogInput); 
     303                        $("body").append(this._dialogInput); 
    315304                        inst = this._dialogInst = this._newInst(this._dialogInput, false); 
    316305                        inst.settings = {}; 
     
    318307                } 
    319308                extendRemove(inst.settings, settings || {}); 
    320                 date = (date && date.constructor == Date ? this._formatDate(inst, date) : date); 
     309                date = (date && date.constructor === Date ? this._formatDate(inst, date) : date); 
    321310                this._dialogInput.val(date); 
    322311 
    323312                this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null); 
    324313                if (!this._pos) { 
    325                         var browserWidth = document.documentElement.clientWidth; 
    326                         var browserHeight = document.documentElement.clientHeight; 
    327                         var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; 
    328                         var scrollY = document.documentElement.scrollTop || document.body.scrollTop; 
     314                        browserWidth = document.documentElement.clientWidth; 
     315                        browserHeight = document.documentElement.clientHeight; 
     316                        scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; 
     317                        scrollY = document.documentElement.scrollTop || document.body.scrollTop; 
    329318                        this._pos = // should use actual width/height below 
    330319                                [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY]; 
     
    332321 
    333322                // move input on screen for focus, but hidden behind dialog 
    334                 this._dialogInput.css('left', (this._pos[0] + 20) + 'px').css('top', this._pos[1] + 'px'); 
     323                this._dialogInput.css("left", (this._pos[0] + 20) + "px").css("top", this._pos[1] + "px"); 
    335324                inst.settings.onSelect = onSelect; 
    336325                this._inDialog = true; 
    337326                this.dpDiv.addClass(this._dialogClass); 
    338327                this._showDatepicker(this._dialogInput[0]); 
    339                 if ($.blockUI) 
     328                if ($.blockUI) { 
    340329                        $.blockUI(this.dpDiv); 
     330                } 
    341331                $.data(this._dialogInput[0], PROP_NAME, inst); 
    342332                return this; 
     
    344334 
    345335        /* Detach a datepicker from its control. 
    346            @param  target    element - the target input field or division or span */ 
     336         * @param  target       element - the target input field or division or span 
     337         */ 
    347338        _destroyDatepicker: function(target) { 
    348                 var $target = $(target); 
    349                 var inst = $.data(target, PROP_NAME); 
     339                var nodeName, 
     340                        $target = $(target), 
     341                        inst = $.data(target, PROP_NAME); 
     342 
    350343                if (!$target.hasClass(this.markerClassName)) { 
    351344                        return; 
    352345                } 
    353                 var nodeName = target.nodeName.toLowerCase(); 
     346 
     347                nodeName = target.nodeName.toLowerCase(); 
    354348                $.removeData(target, PROP_NAME); 
    355                 if (nodeName == 'input') { 
     349                if (nodeName === "input") { 
    356350                        inst.append.remove(); 
    357351                        inst.trigger.remove(); 
    358352                        $target.removeClass(this.markerClassName). 
    359                                 unbind('focus', this._showDatepicker). 
    360                                 unbind('keydown', this._doKeyDown). 
    361                                 unbind('keypress', this._doKeyPress). 
    362                                 unbind('keyup', this._doKeyUp); 
    363                 } else if (nodeName == 'div' || nodeName == 'span') 
     353                                unbind("focus", this._showDatepicker). 
     354                                unbind("keydown", this._doKeyDown). 
     355                                unbind("keypress", this._doKeyPress). 
     356                                unbind("keyup", this._doKeyUp); 
     357                } else if (nodeName === "div" || nodeName === "span") { 
    364358                        $target.removeClass(this.markerClassName).empty(); 
     359                } 
    365360        }, 
    366361 
    367362        /* Enable the date picker to a jQuery selection. 
    368            @param  target    element - the target input field or division or span */ 
     363         * @param  target       element - the target input field or division or span 
     364         */ 
    369365        _enableDatepicker: function(target) { 
    370                 var $target = $(target); 
    371                 var inst = $.data(target, PROP_NAME); 
     366                var nodeName, inline, 
     367                        $target = $(target), 
     368                        inst = $.data(target, PROP_NAME); 
     369 
    372370                if (!$target.hasClass(this.markerClassName)) { 
    373371                        return; 
    374372                } 
    375                 var nodeName = target.nodeName.toLowerCase(); 
    376                 if (nodeName == 'input') { 
     373 
     374                nodeName = target.nodeName.toLowerCase(); 
     375                if (nodeName === "input") { 
    377376                        target.disabled = false; 
    378                         inst.trigger.filter('button'). 
     377                        inst.trigger.filter("button"). 
    379378                                each(function() { this.disabled = false; }).end(). 
    380                                 filter('img').css({opacity: '1.0', cursor: ''}); 
    381                 } 
    382                 else if (nodeName == 'div' || nodeName == 'span') { 
    383                         var inline = $target.children('.' + this._inlineClass); 
    384                         inline.children().removeClass('ui-state-disabled'); 
     379                                filter("img").css({opacity: "1.0", cursor: ""}); 
     380                } else if (nodeName === "div" || nodeName === "span") { 
     381                        inline = $target.children("." + this._inlineClass); 
     382                        inline.children().removeClass("ui-state-disabled"); 
    385383                        inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). 
    386384                                prop("disabled", false); 
    387385                } 
    388386                this._disabledInputs = $.map(this._disabledInputs, 
    389                         function(value) { return (value == target ? null : value); }); // delete entry 
     387                        function(value) { return (value === target ? null : value); }); // delete entry 
    390388        }, 
    391389 
    392390        /* Disable the date picker to a jQuery selection. 
    393            @param  target    element - the target input field or division or span */ 
     391         * @param  target       element - the target input field or division or span 
     392         */ 
    394393        _disableDatepicker: function(target) { 
    395                 var $target = $(target); 
    396                 var inst = $.data(target, PROP_NAME); 
     394                var nodeName, inline, 
     395                        $target = $(target), 
     396                        inst = $.data(target, PROP_NAME); 
     397 
    397398                if (!$target.hasClass(this.markerClassName)) { 
    398399                        return; 
    399400                } 
    400                 var nodeName = target.nodeName.toLowerCase(); 
    401                 if (nodeName == 'input') { 
     401 
     402                nodeName = target.nodeName.toLowerCase(); 
     403                if (nodeName === "input") { 
    402404                        target.disabled = true; 
    403                         inst.trigger.filter('button'). 
     405                        inst.trigger.filter("button"). 
    404406                                each(function() { this.disabled = true; }).end(). 
    405                                 filter('img').css({opacity: '0.5', cursor: 'default'}); 
    406                 } 
    407                 else if (nodeName == 'div' || nodeName == 'span') { 
    408                         var inline = $target.children('.' + this._inlineClass); 
    409                         inline.children().addClass('ui-state-disabled'); 
     407                                filter("img").css({opacity: "0.5", cursor: "default"}); 
     408                } else if (nodeName === "div" || nodeName === "span") { 
     409                        inline = $target.children("." + this._inlineClass); 
     410                        inline.children().addClass("ui-state-disabled"); 
    410411                        inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). 
    411412                                prop("disabled", true); 
    412413                } 
    413414                this._disabledInputs = $.map(this._disabledInputs, 
    414                         function(value) { return (value == target ? null : value); }); // delete entry 
     415                        function(value) { return (value === target ? null : value); }); // delete entry 
    415416                this._disabledInputs[this._disabledInputs.length] = target; 
    416417        }, 
    417418 
    418419        /* Is the first field in a jQuery collection disabled as a datepicker? 
    419            @param  target    element - the target input field or division or span 
    420            @return boolean - true if disabled, false if enabled */ 
     420         * @param  target       element - the target input field or division or span 
     421         * @return boolean - true if disabled, false if enabled 
     422         */ 
    421423        _isDisabledDatepicker: function(target) { 
    422424                if (!target) { 
     
    424426                } 
    425427                for (var i = 0; i < this._disabledInputs.length; i++) { 
    426                         if (this._disabledInputs[i] == target) 
     428                        if (this._disabledInputs[i] === target) { 
    427429                                return true; 
     430                        } 
    428431                } 
    429432                return false; 
     
    431434 
    432435        /* Retrieve the instance data for the target control. 
    433            @param  target  element - the target input field or division or span 
    434            @return  object - the associated instance data 
    435            @throws  error if a jQuery problem getting data */ 
     436         * @param  target  element - the target input field or division or span 
     437         * @return  object - the associated instance data 
     438         * @throws  error if a jQuery problem getting data 
     439         */ 
    436440        _getInst: function(target) { 
    437441                try { 
     
    439443                } 
    440444                catch (err) { 
    441                         throw 'Missing instance data for this datepicker'; 
     445                        throw "Missing instance data for this datepicker"; 
    442446                } 
    443447        }, 
    444448 
    445449        /* Update or retrieve the settings for a date picker attached to an input field or division. 
    446            @param  target  element - the target input field or division or span 
    447            @param  name    object - the new settings to update or 
    448                            string - the name of the setting to change or retrieve, 
    449                            when retrieving also 'all' for all instance settings or 
    450                            'defaults' for all global defaults 
    451            @param  value   any - the new value for the setting 
    452                            (omit if above is an object or to retrieve a value) */ 
     450         * @param  target  element - the target input field or division or span 
     451         * @param  name object - the new settings to update or 
     452         *                              string - the name of the setting to change or retrieve, 
     453         *                              when retrieving also "all" for all instance settings or 
     454         *                              "defaults" for all global defaults 
     455         * @param  value   any - the new value for the setting 
     456         *                              (omit if above is an object or to retrieve a value) 
     457         */ 
    453458        _optionDatepicker: function(target, name, value) { 
    454                 var inst = this._getInst(target); 
    455                 if (arguments.length == 2 && typeof name == 'string') { 
    456                         return (name == 'defaults' ? $.extend({}, $.datepicker._defaults) : 
    457                                 (inst ? (name == 'all' ? $.extend({}, inst.settings) : 
     459                var settings, date, minDate, maxDate, 
     460                        inst = this._getInst(target); 
     461 
     462                if (arguments.length === 2 && typeof name === "string") { 
     463                        return (name === "defaults" ? $.extend({}, $.datepicker._defaults) : 
     464                                (inst ? (name === "all" ? $.extend({}, inst.settings) : 
    458465                                this._get(inst, name)) : null)); 
    459466                } 
    460                 var settings = name || {}; 
    461                 if (typeof name == 'string') { 
     467 
     468                settings = name || {}; 
     469                if (typeof name === "string") { 
    462470                        settings = {}; 
    463471                        settings[name] = value; 
    464472                } 
     473 
    465474                if (inst) { 
    466                         if (this._curInst == inst) { 
     475                        if (this._curInst === inst) { 
    467476                                this._hideDatepicker(); 
    468477                        } 
    469                         var date = this._getDateDatepicker(target, true); 
    470                         var minDate = this._getMinMaxDate(inst, 'min'); 
    471                         var maxDate = this._getMinMaxDate(inst, 'max'); 
     478 
     479                        date = this._getDateDatepicker(target, true); 
     480                        minDate = this._getMinMaxDate(inst, "min"); 
     481                        maxDate = this._getMinMaxDate(inst, "max"); 
    472482                        extendRemove(inst.settings, settings); 
    473483                        // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided 
    474                         if (minDate !== null && settings['dateFormat'] !== undefined && settings['minDate'] === undefined) 
     484                        if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) { 
    475485                                inst.settings.minDate = this._formatDate(inst, minDate); 
    476                         if (maxDate !== null && settings['dateFormat'] !== undefined && settings['maxDate'] === undefined) 
     486                        } 
     487                        if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) { 
    477488                                inst.settings.maxDate = this._formatDate(inst, maxDate); 
     489                        } 
     490                        if ( "disabled" in settings ) { 
     491                                if ( settings.disabled ) { 
     492                                        this._disableDatepicker(target); 
     493                                } else { 
     494                                        this._enableDatepicker(target); 
     495                                } 
     496                        } 
    478497                        this._attachments($(target), inst); 
    479498                        this._autoSize(inst); 
     
    490509 
    491510        /* Redraw the date picker attached to an input field or division. 
    492            @param  target  element - the target input field or division or span */ 
     511         * @param  target  element - the target input field or division or span 
     512         */ 
    493513        _refreshDatepicker: function(target) { 
    494514                var inst = this._getInst(target); 
     
    499519 
    500520        /* Set the dates for a jQuery selection. 
    501            @param  target   element - the target input field or division or span 
    502            @param  date     Date - the new date */ 
     521         * @param  target element - the target input field or division or span 
     522         * @param  date Date - the new date 
     523         */ 
    503524        _setDateDatepicker: function(target, date) { 
    504525                var inst = this._getInst(target); 
     
    511532 
    512533        /* Get the date(s) for the first entry in a jQuery selection. 
    513            @param  target     element - the target input field or division or span 
    514            @param  noDefault  boolean - true if no default date is to be used 
    515            @return Date - the current date */ 
     534         * @param  target element - the target input field or division or span 
     535         * @param  noDefault boolean - true if no default date is to be used 
     536         * @return Date - the current date 
     537         */ 
    516538        _getDateDatepicker: function(target, noDefault) { 
    517539                var inst = this._getInst(target); 
    518                 if (inst && !inst.inline) 
     540                if (inst && !inst.inline) { 
    519541                        this._setDateFromField(inst, noDefault); 
     542                } 
    520543                return (inst ? this._getDate(inst) : null); 
    521544        }, 
     
    523546        /* Handle keystrokes. */ 
    524547        _doKeyDown: function(event) { 
    525                 var inst = $.datepicker._getInst(event.target); 
    526                 var handled = true; 
    527                 var isRTL = inst.dpDiv.is('.ui-datepicker-rtl'); 
     548                var onSelect, dateStr, sel, 
     549                        inst = $.datepicker._getInst(event.target), 
     550                        handled = true, 
     551                        isRTL = inst.dpDiv.is(".ui-datepicker-rtl"); 
     552 
    528553                inst._keyEvent = true; 
    529                 if ($.datepicker._datepickerShowing) 
     554                if ($.datepicker._datepickerShowing) { 
    530555                        switch (event.keyCode) { 
    531556                                case 9: $.datepicker._hideDatepicker(); 
    532557                                                handled = false; 
    533558                                                break; // hide on tab out 
    534                                 case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +  
    535                                                                         $.datepicker._currentClass + ')', inst.dpDiv); 
    536                                                 if (sel[0]) 
     559                                case 13: sel = $("td." + $.datepicker._dayOverClass + ":not(." + 
     560                                                                        $.datepicker._currentClass + ")", inst.dpDiv); 
     561                                                if (sel[0]) { 
    537562                                                        $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]); 
    538                                                         var onSelect = $.datepicker._get(inst, 'onSelect'); 
    539                                                         if (onSelect) { 
    540                                                                 var dateStr = $.datepicker._formatDate(inst); 
    541  
    542                                                                 // trigger custom callback 
    543                                                                 onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); 
    544                                                         } 
    545                                                 else 
     563                                                } 
     564 
     565                                                onSelect = $.datepicker._get(inst, "onSelect"); 
     566                                                if (onSelect) { 
     567                                                        dateStr = $.datepicker._formatDate(inst); 
     568 
     569                                                        // trigger custom callback 
     570                                                        onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); 
     571                                                } else { 
    546572                                                        $.datepicker._hideDatepicker(); 
     573                                                } 
     574 
    547575                                                return false; // don't submit the form 
    548                                                 break; // select the value on enter 
    549576                                case 27: $.datepicker._hideDatepicker(); 
    550577                                                break; // hide on escape 
    551578                                case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ? 
    552                                                         -$.datepicker._get(inst, 'stepBigMonths') : 
    553                                                         -$.datepicker._get(inst, 'stepMonths')), 'M'); 
     579                                                        -$.datepicker._get(inst, "stepBigMonths") : 
     580                                                        -$.datepicker._get(inst, "stepMonths")), "M"); 
    554581                                                break; // previous month/year on page up/+ ctrl 
    555582                                case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ? 
    556                                                         +$.datepicker._get(inst, 'stepBigMonths') : 
    557                                                         +$.datepicker._get(inst, 'stepMonths')), 'M'); 
     583                                                        +$.datepicker._get(inst, "stepBigMonths") : 
     584                                                        +$.datepicker._get(inst, "stepMonths")), "M"); 
    558585                                                break; // next month/year on page down/+ ctrl 
    559                                 case 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target); 
     586                                case 35: if (event.ctrlKey || event.metaKey) { 
     587                                                        $.datepicker._clearDate(event.target); 
     588                                                } 
    560589                                                handled = event.ctrlKey || event.metaKey; 
    561590                                                break; // clear on ctrl or command +end 
    562                                 case 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target); 
     591                                case 36: if (event.ctrlKey || event.metaKey) { 
     592                                                        $.datepicker._gotoToday(event.target); 
     593                                                } 
    563594                                                handled = event.ctrlKey || event.metaKey; 
    564595                                                break; // current on ctrl or command +home 
    565                                 case 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D'); 
     596                                case 37: if (event.ctrlKey || event.metaKey) { 
     597                                                        $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), "D"); 
     598                                                } 
    566599                                                handled = event.ctrlKey || event.metaKey; 
    567600                                                // -1 day on ctrl or command +left 
    568                                                 if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ? 
    569                                                                         -$.datepicker._get(inst, 'stepBigMonths') : 
    570                                                                         -$.datepicker._get(inst, 'stepMonths')), 'M'); 
     601                                                if (event.originalEvent.altKey) { 
     602                                                        $.datepicker._adjustDate(event.target, (event.ctrlKey ? 
     603                                                                -$.datepicker._get(inst, "stepBigMonths") : 
     604                                                                -$.datepicker._get(inst, "stepMonths")), "M"); 
     605                                                } 
    571606                                                // next month/year on alt +left on Mac 
    572607                                                break; 
    573                                 case 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D'); 
     608                                case 38: if (event.ctrlKey || event.metaKey) { 
     609                                                        $.datepicker._adjustDate(event.target, -7, "D"); 
     610                                                } 
    574611                                                handled = event.ctrlKey || event.metaKey; 
    575612                                                break; // -1 week on ctrl or command +up 
    576                                 case 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D'); 
     613                                case 39: if (event.ctrlKey || event.metaKey) { 
     614                                                        $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), "D"); 
     615                                                } 
    577616                                                handled = event.ctrlKey || event.metaKey; 
    578617                                                // +1 day on ctrl or command +right 
    579                                                 if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ? 
    580                                                                         +$.datepicker._get(inst, 'stepBigMonths') : 
    581                                                                         +$.datepicker._get(inst, 'stepMonths')), 'M'); 
     618                                                if (event.originalEvent.altKey) { 
     619                                                        $.datepicker._adjustDate(event.target, (event.ctrlKey ? 
     620                                                                +$.datepicker._get(inst, "stepBigMonths") : 
     621                                                                +$.datepicker._get(inst, "stepMonths")), "M"); 
     622                                                } 
    582623                                                // next month/year on alt +right 
    583624                                                break; 
    584                                 case 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D'); 
     625                                case 40: if (event.ctrlKey || event.metaKey) { 
     626                                                        $.datepicker._adjustDate(event.target, +7, "D"); 
     627                                                } 
    585628                                                handled = event.ctrlKey || event.metaKey; 
    586629                                                break; // +1 week on ctrl or command +down 
    587630                                default: handled = false; 
    588631                        } 
    589                 else if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home 
     632                } else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home 
    590633                        $.datepicker._showDatepicker(this); 
    591                 else { 
     634                } else { 
    592635                        handled = false; 
    593636                } 
     637 
    594638                if (handled) { 
    595639                        event.preventDefault(); 
     
    600644        /* Filter entered characters - based on date format. */ 
    601645        _doKeyPress: function(event) { 
    602                 var inst = $.datepicker._getInst(event.target); 
    603                 if ($.datepicker._get(inst, 'constrainInput')) { 
    604                         var chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')); 
    605                         var chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode); 
    606                         return event.ctrlKey || event.metaKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1); 
     646                var chars, chr, 
     647                        inst = $.datepicker._getInst(event.target); 
     648 
     649                if ($.datepicker._get(inst, "constrainInput")) { 
     650                        chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat")); 
     651                        chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode); 
     652                        return event.ctrlKey || event.metaKey || (chr < " " || !chars || chars.indexOf(chr) > -1); 
    607653                } 
    608654        }, 
     
    610656        /* Synchronise manual entry and field/alternate field. */ 
    611657        _doKeyUp: function(event) { 
    612                 var inst = $.datepicker._getInst(event.target); 
    613                 if (inst.input.val() != inst.lastVal) { 
     658                var date, 
     659                        inst = $.datepicker._getInst(event.target); 
     660 
     661                if (inst.input.val() !== inst.lastVal) { 
    614662                        try { 
    615                                 var date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'), 
     663                                date = $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), 
    616664                                        (inst.input ? inst.input.val() : null), 
    617665                                        $.datepicker._getFormatConfig(inst)); 
     666 
    618667                                if (date) { // only if valid 
    619668                                        $.datepicker._setDateFromField(inst); 
     
    623672                        } 
    624673                        catch (err) { 
    625                                 $.datepicker.log(err); 
    626674                        } 
    627675                } 
     
    630678 
    631679        /* Pop-up the date picker for a given input field. 
    632            If false returned from beforeShow event handler do not show.  
    633            @param  input  element - the input field attached to the date picker or 
    634                           event - if triggered by focus */ 
     680         * If false returned from beforeShow event handler do not show. 
     681         * @param  input  element - the input field attached to the date picker or 
     682         *                                      event - if triggered by focus 
     683         */ 
    635684        _showDatepicker: function(input) { 
    636685                input = input.target || input; 
    637                 if (input.nodeName.toLowerCase() != 'input') // find from button/image trigger 
    638                         input = $('input', input.parentNode)[0]; 
    639                 if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here 
     686                if (input.nodeName.toLowerCase() !== "input") { // find from button/image trigger 
     687                        input = $("input", input.parentNode)[0]; 
     688                } 
     689 
     690                if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here 
    640691                        return; 
    641                 var inst = $.datepicker._getInst(input); 
    642                 if ($.datepicker._curInst && $.datepicker._curInst != inst) { 
     692                } 
     693 
     694                var inst, beforeShow, beforeShowSettings, isFixed, 
     695                        offset, showAnim, duration; 
     696 
     697                inst = $.datepicker._getInst(input); 
     698                if ($.datepicker._curInst && $.datepicker._curInst !== inst) { 
    643699                        $.datepicker._curInst.dpDiv.stop(true, true); 
    644700                        if ( inst && $.datepicker._datepickerShowing ) { 
     
    646702                        } 
    647703                } 
    648                 var beforeShow = $.datepicker._get(inst, 'beforeShow'); 
    649                 var beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {}; 
     704 
     705                beforeShow = $.datepicker._get(inst, "beforeShow"); 
     706                beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {}; 
    650707                if(beforeShowSettings === false){ 
    651                         //false 
    652708                        return; 
    653709                } 
    654710                extendRemove(inst.settings, beforeShowSettings); 
     711 
    655712                inst.lastVal = null; 
    656713                $.datepicker._lastInput = input; 
    657714                $.datepicker._setDateFromField(inst); 
    658                 if ($.datepicker._inDialog) // hide cursor 
    659                         input.value = ''; 
     715 
     716                if ($.datepicker._inDialog) { // hide cursor 
     717                        input.value = ""; 
     718                } 
    660719                if (!$.datepicker._pos) { // position below input 
    661720                        $.datepicker._pos = $.datepicker._findPos(input); 
    662721                        $.datepicker._pos[1] += input.offsetHeight; // add the height 
    663722                } 
    664                 var isFixed = false; 
     723 
     724                isFixed = false; 
    665725                $(input).parents().each(function() { 
    666                         isFixed |= $(this).css('position') == 'fixed'; 
     726                        isFixed |= $(this).css("position") === "fixed"; 
    667727                        return !isFixed; 
    668728                }); 
    669                 var offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]}; 
     729 
     730                offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]}; 
    670731                $.datepicker._pos = null; 
    671732                //to avoid flashes on Firefox 
    672733                inst.dpDiv.empty(); 
    673734                // determine sizing offscreen 
    674                 inst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'}); 
     735                inst.dpDiv.css({position: "absolute", display: "block", top: "-1000px"}); 
    675736                $.datepicker._updateDatepicker(inst); 
    676737                // fix width for dynamic number of date pickers 
     
    678739                offset = $.datepicker._checkOffset(inst, offset, isFixed); 
    679740                inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ? 
    680                         'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none', 
    681                         left: offset.left + 'px', top: offset.top + 'px'}); 
     741                        "static" : (isFixed ? "fixed" : "absolute")), display: "none", 
     742                        left: offset.left + "px", top: offset.top + "px"}); 
     743 
    682744                if (!inst.inline) { 
    683                         var showAnim = $.datepicker._get(inst, 'showAnim'); 
    684                         var duration = $.datepicker._get(inst, 'duration'); 
    685                         var postProcess = function() { 
    686                                 var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only 
    687                                 if( !! cover.length ){ 
    688                                         var borders = $.datepicker._getBorders(inst.dpDiv); 
    689                                         cover.css({left: -borders[0], top: -borders[1], 
    690                                                 width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()}); 
    691                                 } 
    692                         }; 
     745                        showAnim = $.datepicker._get(inst, "showAnim"); 
     746                        duration = $.datepicker._get(inst, "duration"); 
    693747                        inst.dpDiv.zIndex($(input).zIndex()+1); 
    694748                        $.datepicker._datepickerShowing = true; 
    695749 
    696                         // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed 
    697                         if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) 
    698                                 inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess); 
    699                         else 
    700                                 inst.dpDiv[showAnim || 'show']((showAnim ? duration : null), postProcess); 
    701                         if (!showAnim || !duration) 
    702                                 postProcess(); 
    703                         if (inst.input.is(':visible') && !inst.input.is(':disabled')) 
     750                        if ( $.effects && $.effects.effect[ showAnim ] ) { 
     751                                inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration); 
     752                        } else { 
     753                                inst.dpDiv[showAnim || "show"](showAnim ? duration : null); 
     754                        } 
     755 
     756                        if (inst.input.is(":visible") && !inst.input.is(":disabled")) { 
    704757                                inst.input.focus(); 
     758                        } 
    705759                        $.datepicker._curInst = inst; 
    706760                } 
     
    710764        _updateDatepicker: function(inst) { 
    711765                this.maxRows = 4; //Reset the max number of rows being displayed (see #7043) 
    712                 var borders = $.datepicker._getBorders(inst.dpDiv); 
    713766                instActive = inst; // for delegate hover events 
    714767                inst.dpDiv.empty().append(this._generateHTML(inst)); 
    715768                this._attachHandlers(inst); 
    716                 var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only 
    717                 if( !!cover.length ){ //avoid call to outerXXXX() when not in IE6 
    718                         cover.css({left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()}) 
    719                 } 
    720                 inst.dpDiv.find('.' + this._dayOverClass + ' a').mouseover(); 
    721                 var numMonths = this._getNumberOfMonths(inst); 
    722                 var cols = numMonths[1]; 
    723                 var width = 17; 
    724                 inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width(''); 
    725                 if (cols > 1) 
    726                         inst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em'); 
    727                 inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') + 
    728                         'Class']('ui-datepicker-multi'); 
    729                 inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') + 
    730                         'Class']('ui-datepicker-rtl'); 
    731                 if (inst == $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input && 
    732                                 // #6694 - don't focus the input if it's already focused 
    733                                 // this breaks the change event in IE 
    734                                 inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement) 
     769                inst.dpDiv.find("." + this._dayOverClass + " a").mouseover(); 
     770 
     771                var origyearshtml, 
     772                        numMonths = this._getNumberOfMonths(inst), 
     773                        cols = numMonths[1], 
     774                        width = 17; 
     775 
     776                inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""); 
     777                if (cols > 1) { 
     778                        inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", (width * cols) + "em"); 
     779                } 
     780                inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? "add" : "remove") + 
     781                        "Class"]("ui-datepicker-multi"); 
     782                inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") + 
     783                        "Class"]("ui-datepicker-rtl"); 
     784 
     785                // #6694 - don't focus the input if it's already focused 
     786                // this breaks the change event in IE 
     787                if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input && 
     788                        inst.input.is(":visible") && !inst.input.is(":disabled") && inst.input[0] !== document.activeElement) { 
    735789                        inst.input.focus(); 
    736                 // deffered render of the years select (to avoid flashes on Firefox)  
     790                } 
     791 
     792                // deffered render of the years select (to avoid flashes on Firefox) 
    737793                if( inst.yearshtml ){ 
    738                         var origyearshtml = inst.yearshtml; 
     794                        origyearshtml = inst.yearshtml; 
    739795                        setTimeout(function(){ 
    740796                                //assure that inst.yearshtml didn't change. 
    741797                                if( origyearshtml === inst.yearshtml && inst.yearshtml ){ 
    742                                         inst.dpDiv.find('select.ui-datepicker-year:first').replaceWith(inst.yearshtml); 
     798                                        inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml); 
    743799                                } 
    744800                                origyearshtml = inst.yearshtml = null; 
     
    748804 
    749805        /* Retrieve the size of left and top borders for an element. 
    750            @param  elem  (jQuery object) the element of interest 
    751            @return  (number[2]) the left and top borders */ 
     806         * @param  elem  (jQuery object) the element of interest 
     807         * @return  (number[2]) the left and top borders 
     808         */ 
    752809        _getBorders: function(elem) { 
    753810                var convert = function(value) { 
    754811                        return {thin: 1, medium: 2, thick: 3}[value] || value; 
    755812                }; 
    756                 return [parseFloat(convert(elem.css('border-left-width'))), 
    757                         parseFloat(convert(elem.css('border-top-width')))]; 
     813                return [parseFloat(convert(elem.css("border-left-width"))), 
     814                        parseFloat(convert(elem.css("border-top-width")))]; 
    758815        }, 
    759816 
    760817        /* Check positioning to remain on screen. */ 
    761818        _checkOffset: function(inst, offset, isFixed) { 
    762                 var dpWidth = inst.dpDiv.outerWidth(); 
    763                 var dpHeight = inst.dpDiv.outerHeight(); 
    764                 var inputWidth = inst.input ? inst.input.outerWidth() : 0; 
    765                 var inputHeight = inst.input ? inst.input.outerHeight() : 0; 
    766                 var viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()); 
    767                 var viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop()); 
    768  
    769                 offset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0); 
    770                 offset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0; 
    771                 offset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0; 
     819                var dpWidth = inst.dpDiv.outerWidth(), 
     820                        dpHeight = inst.dpDiv.outerHeight(), 
     821                        inputWidth = inst.input ? inst.input.outerWidth() : 0, 
     822                        inputHeight = inst.input ? inst.input.outerHeight() : 0, 
     823                        viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()), 
     824                        viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop()); 
     825 
     826                offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth) : 0); 
     827                offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0; 
     828                offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0; 
    772829 
    773830                // now check if datepicker is showing outside window viewport - move to a better place if so. 
     
    782839        /* Find an object's position on the screen. */ 
    783840        _findPos: function(obj) { 
    784                 var inst = this._getInst(obj); 
    785                 var isRTL = this._get(inst, 'isRTL'); 
    786                 while (obj && (obj.type == 'hidden' || obj.nodeType != 1 || $.expr.filters.hidden(obj))) { 
    787                         obj = obj[isRTL ? 'previousSibling' : 'nextSibling']; 
    788                 } 
    789                 var position = $(obj).offset(); 
     841                var position, 
     842                        inst = this._getInst(obj), 
     843                        isRTL = this._get(inst, "isRTL"); 
     844 
     845                while (obj && (obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) { 
     846                        obj = obj[isRTL ? "previousSibling" : "nextSibling"]; 
     847                } 
     848 
     849                position = $(obj).offset(); 
    790850                return [position.left, position.top]; 
    791851        }, 
    792852 
    793853        /* Hide the date picker from view. 
    794            @param  input  element - the input field attached to the date picker */ 
     854         * @param  input  element - the input field attached to the date picker 
     855         */ 
    795856        _hideDatepicker: function(input) { 
    796                 var inst = this._curInst; 
    797                 if (!inst || (input && inst != $.data(input, PROP_NAME))) 
     857                var showAnim, duration, postProcess, onClose, 
     858                        inst = this._curInst; 
     859 
     860                if (!inst || (input && inst !== $.data(input, PROP_NAME))) { 
    798861                        return; 
     862                } 
     863 
    799864                if (this._datepickerShowing) { 
    800                         var showAnim = this._get(inst, 'showAnim'); 
    801                         var duration = this._get(inst, 'duration'); 
    802                         var postProcess = function() { 
     865                        showAnim = this._get(inst, "showAnim"); 
     866                        duration = this._get(inst, "duration"); 
     867                        postProcess = function() { 
    803868                                $.datepicker._tidyDialog(inst); 
    804869                        }; 
    805870 
    806871                        // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed 
    807                         if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) 
    808                                 inst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess); 
    809                         else 
    810                                 inst.dpDiv[(showAnim == 'slideDown' ? 'slideUp' : 
    811                                         (showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess); 
    812                         if (!showAnim) 
     872                        if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) { 
     873                                inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess); 
     874                        } else { 
     875                                inst.dpDiv[(showAnim === "slideDown" ? "slideUp" : 
     876                                        (showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess); 
     877                        } 
     878 
     879                        if (!showAnim) { 
    813880                                postProcess(); 
     881                        } 
    814882                        this._datepickerShowing = false; 
    815                         var onClose = this._get(inst, 'onClose'); 
    816                         if (onClose) 
    817                                 onClose.apply((inst.input ? inst.input[0] : null), 
    818                                         [(inst.input ? inst.input.val() : ''), inst]); 
     883 
     884                        onClose = this._get(inst, "onClose"); 
     885                        if (onClose) { 
     886                                onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]); 
     887                        } 
     888 
    819889                        this._lastInput = null; 
    820890                        if (this._inDialog) { 
    821                                 this._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' }); 
     891                                this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" }); 
    822892                                if ($.blockUI) { 
    823893                                        $.unblockUI(); 
    824                                         $('body').append(this.dpDiv); 
     894                                        $("body").append(this.dpDiv); 
    825895                                } 
    826896                        } 
     
    831901        /* Tidy up after a dialog display. */ 
    832902        _tidyDialog: function(inst) { 
    833                 inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar'); 
     903                inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar"); 
    834904        }, 
    835905 
    836906        /* Close date picker if clicked elsewhere. */ 
    837907        _checkExternalClick: function(event) { 
    838                 if (!$.datepicker._curInst) 
     908                if (!$.datepicker._curInst) { 
    839909                        return; 
     910                } 
    840911 
    841912                var $target = $(event.target), 
    842913                        inst = $.datepicker._getInst($target[0]); 
    843914 
    844                 if ( ( ( $target[0].id != $.datepicker._mainDivId && 
    845                                 $target.parents('#' + $.datepicker._mainDivId).length == 0 && 
     915                if ( ( ( $target[0].id !== $.datepicker._mainDivId && 
     916                                $target.parents("#" + $.datepicker._mainDivId).length === 0 && 
    846917                                !$target.hasClass($.datepicker.markerClassName) && 
    847918                                !$target.closest("." + $.datepicker._triggerClass).length && 
    848919                                $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) || 
    849                         ( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst != inst ) ) 
    850                         $.datepicker._hideDatepicker(); 
     920                        ( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) { 
     921                                $.datepicker._hideDatepicker(); 
     922                } 
    851923        }, 
    852924 
    853925        /* Adjust one of the date sub-fields. */ 
    854926        _adjustDate: function(id, offset, period) { 
    855                 var target = $(id); 
    856                 var inst = this._getInst(target[0]); 
     927                var target = $(id), 
     928                        inst = this._getInst(target[0]); 
     929 
    857930                if (this._isDisabledDatepicker(target[0])) { 
    858931                        return; 
    859932                } 
    860933                this._adjustInstDate(inst, offset + 
    861                         (period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), // undo positioning 
     934                        (period === "M" ? this._get(inst, "showCurrentAtPos") : 0), // undo positioning 
    862935                        period); 
    863936                this._updateDatepicker(inst); 
     
    866939        /* Action for current link. */ 
    867940        _gotoToday: function(id) { 
    868                 var target = $(id); 
    869                 var inst = this._getInst(target[0]); 
    870                 if (this._get(inst, 'gotoCurrent') && inst.currentDay) { 
     941                var date, 
     942                        target = $(id), 
     943                        inst = this._getInst(target[0]); 
     944 
     945                if (this._get(inst, "gotoCurrent") && inst.currentDay) { 
    871946                        inst.selectedDay = inst.currentDay; 
    872947                        inst.drawMonth = inst.selectedMonth = inst.currentMonth; 
    873948                        inst.drawYear = inst.selectedYear = inst.currentYear; 
    874                 } 
    875                 else { 
    876                         var date = new Date(); 
     949                } else { 
     950                        date = new Date(); 
    877951                        inst.selectedDay = date.getDate(); 
    878952                        inst.drawMonth = inst.selectedMonth = date.getMonth(); 
     
    885959        /* Action for selecting a new month/year. */ 
    886960        _selectMonthYear: function(id, select, period) { 
    887                 var target = $(id); 
    888                 var inst = this._getInst(target[0]); 
    889                 inst['selected' + (period == 'M' ? 'Month' : 'Year')] = 
    890                 inst['draw' + (period == 'M' ? 'Month' : 'Year')] = 
     961                var target = $(id), 
     962                        inst = this._getInst(target[0]); 
     963 
     964                inst["selected" + (period === "M" ? "Month" : "Year")] = 
     965                inst["draw" + (period === "M" ? "Month" : "Year")] = 
    891966                        parseInt(select.options[select.selectedIndex].value,10); 
     967 
    892968                this._notifyChange(inst); 
    893969                this._adjustDate(target); 
     
    896972        /* Action for selecting a day. */ 
    897973        _selectDay: function(id, month, year, td) { 
    898                 var target = $(id); 
     974                var inst, 
     975                        target = $(id); 
     976 
    899977                if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) { 
    900978                        return; 
    901979                } 
    902                 var inst = this._getInst(target[0]); 
    903                 inst.selectedDay = inst.currentDay = $('a', td).html(); 
     980 
     981                inst = this._getInst(target[0]); 
     982                inst.selectedDay = inst.currentDay = $("a", td).html(); 
    904983                inst.selectedMonth = inst.currentMonth = month; 
    905984                inst.selectedYear = inst.currentYear = year; 
     
    911990        _clearDate: function(id) { 
    912991                var target = $(id); 
    913                 var inst = this._getInst(target[0]); 
    914                 this._selectDate(target, ''); 
     992                this._selectDate(target, ""); 
    915993        }, 
    916994 
    917995        /* Update the input field with the selected date. */ 
    918996        _selectDate: function(id, dateStr) { 
    919                 var target = $(id); 
    920                 var inst = this._getInst(target[0]); 
     997                var onSelect, 
     998                        target = $(id), 
     999                        inst = this._getInst(target[0]); 
     1000 
    9211001                dateStr = (dateStr != null ? dateStr : this._formatDate(inst)); 
    922                 if (inst.input) 
     1002                if (inst.input) { 
    9231003                        inst.input.val(dateStr); 
     1004                } 
    9241005                this._updateAlternate(inst); 
    925                 var onSelect = this._get(inst, 'onSelect'); 
    926                 if (onSelect) 
     1006 
     1007                onSelect = this._get(inst, "onSelect"); 
     1008                if (onSelect) { 
    9271009                        onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback 
    928                 else if (inst.input) 
    929                         inst.input.trigger('change'); // fire the change event 
    930                 if (inst.inline) 
     1010                } else if (inst.input) { 
     1011                        inst.input.trigger("change"); // fire the change event 
     1012                } 
     1013 
     1014                if (inst.inline){ 
    9311015                        this._updateDatepicker(inst); 
    932                 else { 
     1016                } else { 
    9331017                        this._hideDatepicker(); 
    9341018                        this._lastInput = inst.input[0]; 
    935                         if (typeof(inst.input[0]) != 'object') 
     1019                        if (typeof(inst.input[0]) !== "object") { 
    9361020                                inst.input.focus(); // restore focus 
     1021                        } 
    9371022                        this._lastInput = null; 
    9381023                } 
     
    9411026        /* Update any alternate field to synchronise with the main field. */ 
    9421027        _updateAlternate: function(inst) { 
    943                 var altField = this._get(inst, 'altField'); 
     1028                var altFormat, date, dateStr, 
     1029                        altField = this._get(inst, "altField"); 
     1030 
    9441031                if (altField) { // update alternate field too 
    945                         var altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat'); 
    946                         var date = this._getDate(inst); 
    947                         var dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst)); 
     1032                        altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat"); 
     1033                        date = this._getDate(inst); 
     1034                        dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst)); 
    9481035                        $(altField).each(function() { $(this).val(dateStr); }); 
    9491036                } 
     
    9511038 
    9521039        /* Set as beforeShowDay function to prevent selection of weekends. 
    953            @param  date  Date - the date to customise 
    954            @return [boolean, string] - is this date selectable?, what is its CSS class? */ 
     1040         * @param  date  Date - the date to customise 
     1041         * @return [boolean, string] - is this date selectable?, what is its CSS class? 
     1042         */ 
    9551043        noWeekends: function(date) { 
    9561044                var day = date.getDay(); 
    957                 return [(day > 0 && day < 6), '']; 
     1045                return [(day > 0 && day < 6), ""]; 
    9581046        }, 
    9591047 
    9601048        /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition. 
    961            @param  date  Date - the date to get the week for 
    962            @return  number - the number of the week within the year that contains this date */ 
     1049         * @param  date  Date - the date to get the week for 
     1050         * @return  number - the number of the week within the year that contains this date 
     1051         */ 
    9631052        iso8601Week: function(date) { 
    964                 var checkDate = new Date(date.getTime()); 
     1053                var time, 
     1054                        checkDate = new Date(date.getTime()); 
     1055 
    9651056                // Find Thursday of this week starting on Monday 
    9661057                checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); 
    967                 var time = checkDate.getTime(); 
     1058 
     1059                time = checkDate.getTime(); 
    9681060                checkDate.setMonth(0); // Compare with Jan 1 
    9691061                checkDate.setDate(1); 
     
    9721064 
    9731065        /* Parse a string value into a date object. 
    974            See formatDate below for the possible formats. 
    975  
    976            @param  format    string - the expected format of the date 
    977            @param  value     string - the date in the above format 
    978            @param  settings  Object - attributes include: 
    979                              shortYearCutoff  number - the cutoff year for determining the century (optional) 
    980                              dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional) 
    981                              dayNames         string[7] - names of the days from Sunday (optional) 
    982                              monthNamesShort  string[12] - abbreviated names of the months (optional) 
    983                              monthNames       string[12] - names of the months (optional) 
    984            @return  Date - the extracted date value or null if value is blank */ 
     1066         * See formatDate below for the possible formats. 
     1067         * 
     1068         * @param  format string - the expected format of the date 
     1069         * @param  value string - the date in the above format 
     1070         * @param  settings Object - attributes include: 
     1071         *                                      shortYearCutoff  number - the cutoff year for determining the century (optional) 
     1072         *                                      dayNamesShort   string[7] - abbreviated names of the days from Sunday (optional) 
     1073         *                                      dayNames                string[7] - names of the days from Sunday (optional) 
     1074         *                                      monthNamesShort string[12] - abbreviated names of the months (optional) 
     1075         *                                      monthNames              string[12] - names of the months (optional) 
     1076         * @return  Date - the extracted date value or null if value is blank 
     1077         */ 
    9851078        parseDate: function (format, value, settings) { 
    986                 if (format == null || value == null) 
    987                         throw 'Invalid arguments'; 
    988                 value = (typeof value == 'object' ? value.toString() : value + ''); 
    989                 if (value == '') 
     1079                if (format == null || value == null) { 
     1080                        throw "Invalid arguments"; 
     1081                } 
     1082 
     1083                value = (typeof value === "object" ? value.toString() : value + ""); 
     1084                if (value === "") { 
    9901085                        return null; 
    991                 var shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff; 
    992                 shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : 
    993                                 new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); 
    994                 var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort; 
    995                 var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames; 
    996                 var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort; 
    997                 var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames; 
    998                 var year = -1; 
    999                 var month = -1; 
    1000                 var day = -1; 
    1001                 var doy = -1; 
    1002                 var literal = false; 
    1003                 // Check whether a format character is doubled 
    1004                 var lookAhead = function(match) { 
    1005                         var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); 
    1006                         if (matches) 
    1007                                 iFormat++; 
    1008                         return matches; 
    1009                 }; 
    1010                 // Extract a number from the string value 
    1011                 var getNumber = function(match) { 
    1012                         var isDoubled = lookAhead(match); 
    1013                         var size = (match == '@' ? 14 : (match == '!' ? 20 : 
    1014                                 (match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2)))); 
    1015                         var digits = new RegExp('^\\d{1,' + size + '}'); 
    1016                         var num = value.substring(iValue).match(digits); 
    1017                         if (!num) 
    1018                                 throw 'Missing number at position ' + iValue; 
    1019                         iValue += num[0].length; 
    1020                         return parseInt(num[0], 10); 
    1021                 }; 
    1022                 // Extract a name from the string value and convert to an index 
    1023                 var getName = function(match, shortNames, longNames) { 
    1024                         var names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) { 
    1025                                 return [ [k, v] ]; 
    1026                         }).sort(function (a, b) { 
    1027                                 return -(a[1].length - b[1].length); 
    1028                         }); 
    1029                         var index = -1; 
    1030                         $.each(names, function (i, pair) { 
    1031                                 var name = pair[1]; 
    1032                                 if (value.substr(iValue, name.length).toLowerCase() == name.toLowerCase()) { 
    1033                                         index = pair[0]; 
    1034                                         iValue += name.length; 
    1035                                         return false; 
    1036                                 } 
    1037                         }); 
    1038                         if (index != -1) 
    1039                                 return index + 1; 
    1040                         else 
    1041                                 throw 'Unknown name at position ' + iValue; 
    1042                 }; 
    1043                 // Confirm that a literal character matches the string value 
    1044                 var checkLiteral = function() { 
    1045                         if (value.charAt(iValue) != format.charAt(iFormat)) 
    1046                                 throw 'Unexpected literal at position ' + iValue; 
    1047                         iValue++; 
    1048                 }; 
    1049                 var iValue = 0; 
    1050                 for (var iFormat = 0; iFormat < format.length; iFormat++) { 
    1051                         if (literal) 
    1052                                 if (format.charAt(iFormat) == "'" && !lookAhead("'")) 
     1086                } 
     1087 
     1088                var iFormat, dim, extra, 
     1089                        iValue = 0, 
     1090                        shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff, 
     1091                        shortYearCutoff = (typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp : 
     1092                                new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)), 
     1093                        dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, 
     1094                        dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, 
     1095                        monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, 
     1096                        monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, 
     1097                        year = -1, 
     1098                        month = -1, 
     1099                        day = -1, 
     1100                        doy = -1, 
     1101                        literal = false, 
     1102                        date, 
     1103                        // Check whether a format character is doubled 
     1104                        lookAhead = function(match) { 
     1105                                var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); 
     1106                                if (matches) { 
     1107                                        iFormat++; 
     1108                                } 
     1109                                return matches; 
     1110                        }, 
     1111                        // Extract a number from the string value 
     1112                        getNumber = function(match) { 
     1113                                var isDoubled = lookAhead(match), 
     1114                                        size = (match === "@" ? 14 : (match === "!" ? 20 : 
     1115                                        (match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))), 
     1116                                        digits = new RegExp("^\\d{1," + size + "}"), 
     1117                                        num = value.substring(iValue).match(digits); 
     1118                                if (!num) { 
     1119                                        throw "Missing number at position " + iValue; 
     1120                                } 
     1121                                iValue += num[0].length; 
     1122                                return parseInt(num[0], 10); 
     1123                        }, 
     1124                        // Extract a name from the string value and convert to an index 
     1125                        getName = function(match, shortNames, longNames) { 
     1126                                var index = -1, 
     1127                                        names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) { 
     1128                                                return [ [k, v] ]; 
     1129                                        }).sort(function (a, b) { 
     1130                                                return -(a[1].length - b[1].length); 
     1131                                        }); 
     1132 
     1133                                $.each(names, function (i, pair) { 
     1134                                        var name = pair[1]; 
     1135                                        if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) { 
     1136                                                index = pair[0]; 
     1137                                                iValue += name.length; 
     1138                                                return false; 
     1139                                        } 
     1140                                }); 
     1141                                if (index !== -1) { 
     1142                                        return index + 1; 
     1143                                } else { 
     1144                                        throw "Unknown name at position " + iValue; 
     1145                                } 
     1146                        }, 
     1147                        // Confirm that a literal character matches the string value 
     1148                        checkLiteral = function() { 
     1149                                if (value.charAt(iValue) !== format.charAt(iFormat)) { 
     1150                                        throw "Unexpected literal at position " + iValue; 
     1151                                } 
     1152                                iValue++; 
     1153                        }; 
     1154 
     1155                for (iFormat = 0; iFormat < format.length; iFormat++) { 
     1156                        if (literal) { 
     1157                                if (format.charAt(iFormat) === "'" && !lookAhead("'")) { 
    10531158                                        literal = false; 
    1054                                 else 
     1159                                } else { 
    10551160                                        checkLiteral(); 
    1056                         else 
     1161                                } 
     1162                        } else { 
    10571163                                switch (format.charAt(iFormat)) { 
    1058                                         case 'd': 
    1059                                                 day = getNumber('d'); 
     1164                                        case "d": 
     1165                                                day = getNumber("d"); 
    10601166                                                break; 
    1061                                         case 'D': 
    1062                                                 getName('D', dayNamesShort, dayNames); 
     1167                                        case "D": 
     1168                                                getName("D", dayNamesShort, dayNames); 
    10631169                                                break; 
    1064                                         case 'o': 
    1065                                                 doy = getNumber('o'); 
     1170                                        case "o": 
     1171                                                doy = getNumber("o"); 
    10661172                                                break; 
    1067                                         case 'm': 
    1068                                                 month = getNumber('m'); 
     1173                                        case "m": 
     1174                                                month = getNumber("m"); 
    10691175                                                break; 
    1070                                         case 'M': 
    1071                                                 month = getName('M', monthNamesShort, monthNames); 
     1176                                        case "M": 
     1177                                                month = getName("M", monthNamesShort, monthNames); 
    10721178                                                break; 
    1073                                         case 'y': 
    1074                                                 year = getNumber('y'); 
     1179                                        case "y": 
     1180                                                year = getNumber("y"); 
    10751181                                                break; 
    1076                                         case '@': 
    1077                                                 var date = new Date(getNumber('@')); 
     1182                                        case "@": 
     1183                                                date = new Date(getNumber("@")); 
    10781184                                                year = date.getFullYear(); 
    10791185                                                month = date.getMonth() + 1; 
    10801186                                                day = date.getDate(); 
    10811187                                                break; 
    1082                                         case '!': 
    1083                                                 var date = new Date((getNumber('!') - this._ticksTo1970) / 10000); 
     1188                                        case "!": 
     1189                                                date = new Date((getNumber("!") - this._ticksTo1970) / 10000); 
    10841190                                                year = date.getFullYear(); 
    10851191                                                month = date.getMonth() + 1; 
     
    10871193                                                break; 
    10881194                                        case "'": 
    1089                                                 if (lookAhead("'")) 
     1195                                                if (lookAhead("'")){ 
    10901196                                                        checkLiteral(); 
    1091                                                 else 
     1197                                                } else { 
    10921198                                                        literal = true; 
     1199                                                } 
    10931200                                                break; 
    10941201                                        default: 
    10951202                                                checkLiteral(); 
    10961203                                } 
    1097                 } 
     1204                        } 
     1205                } 
     1206 
    10981207                if (iValue < value.length){ 
    1099                         var extra = value.substr(iValue); 
     1208                        extra = value.substr(iValue); 
    11001209                        if (!/^\s+/.test(extra)) { 
    11011210                                throw "Extra/unparsed characters found in date: " + extra; 
    11021211                        } 
    11031212                } 
    1104                 if (year == -1) 
     1213 
     1214                if (year === -1) { 
    11051215                        year = new Date().getFullYear(); 
    1106                 else if (year < 100) 
     1216                } else if (year < 100) { 
    11071217                        year += new Date().getFullYear() - new Date().getFullYear() % 100 + 
    11081218                                (year <= shortYearCutoff ? 0 : -100); 
     1219                } 
     1220 
    11091221                if (doy > -1) { 
    11101222                        month = 1; 
    11111223                        day = doy; 
    11121224                        do { 
    1113                                 var dim = this._getDaysInMonth(year, month - 1); 
    1114                                 if (day <= dim) 
     1225                                dim = this._getDaysInMonth(year, month - 1); 
     1226                                if (day <= dim) { 
    11151227                                        break; 
     1228                                } 
    11161229                                month++; 
    11171230                                day -= dim; 
    11181231                        } while (true); 
    11191232                } 
    1120                 var date = this._daylightSavingAdjust(new Date(year, month - 1, day)); 
    1121                 if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day) 
    1122                         throw 'Invalid date'; // E.g. 31/02/00 
     1233 
     1234                date = this._daylightSavingAdjust(new Date(year, month - 1, day)); 
     1235                if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) { 
     1236                        throw "Invalid date"; // E.g. 31/02/00 
     1237                } 
    11231238                return date; 
    11241239        }, 
    11251240 
    11261241        /* Standard date formats. */ 
    1127         ATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601) 
    1128         COOKIE: 'D, dd M yy', 
    1129         ISO_8601: 'yy-mm-dd', 
    1130         RFC_822: 'D, d M y', 
    1131         RFC_850: 'DD, dd-M-y', 
    1132         RFC_1036: 'D, d M y', 
    1133         RFC_1123: 'D, d M yy', 
    1134         RFC_2822: 'D, d M yy', 
    1135         RSS: 'D, d M y', // RFC 822 
    1136         TICKS: '!', 
    1137         TIMESTAMP: '@', 
    1138         W3C: 'yy-mm-dd', // ISO 8601 
     1242        ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601) 
     1243        COOKIE: "D, dd M yy", 
     1244        ISO_8601: "yy-mm-dd", 
     1245        RFC_822: "D, d M y", 
     1246        RFC_850: "DD, dd-M-y", 
     1247        RFC_1036: "D, d M y", 
     1248        RFC_1123: "D, d M yy", 
     1249        RFC_2822: "D, d M yy", 
     1250        RSS: "D, d M y", // RFC 822 
     1251        TICKS: "!", 
     1252        TIMESTAMP: "@", 
     1253        W3C: "yy-mm-dd", // ISO 8601 
    11391254 
    11401255        _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + 
     
    11421257 
    11431258        /* Format a date object into a string value. 
    1144            The format can be combinations of the following: 
    1145            d  - day of month (no leading zero) 
    1146            dd - day of month (two digit) 
    1147            o  - day of year (no leading zeros) 
    1148            oo - day of year (three digit) 
    1149            D  - day name short 
    1150            DD - day name long 
    1151            m  - month of year (no leading zero) 
    1152            mm - month of year (two digit) 
    1153            M  - month name short 
    1154            MM - month name long 
    1155            y  - year (two digit) 
    1156            yy - year (four digit) 
    1157            @ - Unix timestamp (ms since 01/01/1970) 
    1158            ! - Windows ticks (100ns since 01/01/0001) 
    1159            '...' - literal text 
    1160            '' - single quote 
    1161  
    1162            @param  format    string - the desired format of the date 
    1163            @param  date      Date - the date value to format 
    1164            @param  settings  Object - attributes include: 
    1165                              dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional) 
    1166                              dayNames         string[7] - names of the days from Sunday (optional) 
    1167                              monthNamesShort  string[12] - abbreviated names of the months (optional) 
    1168                              monthNames       string[12] - names of the months (optional) 
    1169            @return  string - the date in the above format */ 
     1259         * The format can be combinations of the following: 
     1260         * d  - day of month (no leading zero) 
     1261         * dd - day of month (two digit) 
     1262         * o  - day of year (no leading zeros) 
     1263         * oo - day of year (three digit) 
     1264         * D  - day name short 
     1265         * DD - day name long 
     1266         * m  - month of year (no leading zero) 
     1267         * mm - month of year (two digit) 
     1268         * M  - month name short 
     1269         * MM - month name long 
     1270         * y  - year (two digit) 
     1271         * yy - year (four digit) 
     1272         * @ - Unix timestamp (ms since 01/01/1970) 
     1273         * ! - Windows ticks (100ns since 01/01/0001) 
     1274         * "..." - literal text 
     1275         * '' - single quote 
     1276         * 
     1277         * @param  format string - the desired format of the date 
     1278         * @param  date Date - the date value to format 
     1279         * @param  settings Object - attributes include: 
     1280         *                                      dayNamesShort   string[7] - abbreviated names of the days from Sunday (optional) 
     1281         *                                      dayNames                string[7] - names of the days from Sunday (optional) 
     1282         *                                      monthNamesShort string[12] - abbreviated names of the months (optional) 
     1283         *                                      monthNames              string[12] - names of the months (optional) 
     1284         * @return  string - the date in the above format 
     1285         */ 
    11701286        formatDate: function (format, date, settings) { 
    1171                 if (!date) 
    1172                         return ''; 
    1173                 var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort; 
    1174                 var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames; 
    1175                 var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort; 
    1176                 var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames; 
    1177                 // Check whether a format character is doubled 
    1178                 var lookAhead = function(match) { 
    1179                         var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); 
    1180                         if (matches) 
    1181                                 iFormat++; 
    1182                         return matches; 
    1183                 }; 
    1184                 // Format a number, with leading zero if necessary 
    1185                 var formatNumber = function(match, value, len) { 
    1186                         var num = '' + value; 
    1187                         if (lookAhead(match)) 
    1188                                 while (num.length < len) 
    1189                                         num = '0' + num; 
    1190                         return num; 
    1191                 }; 
    1192                 // Format a name, short or long as requested 
    1193                 var formatName = function(match, value, shortNames, longNames) { 
    1194                         return (lookAhead(match) ? longNames[value] : shortNames[value]); 
    1195                 }; 
    1196                 var output = ''; 
    1197                 var literal = false; 
    1198                 if (date) 
    1199                         for (var iFormat = 0; iFormat < format.length; iFormat++) { 
    1200                                 if (literal) 
    1201                                         if (format.charAt(iFormat) == "'" && !lookAhead("'")) 
     1287                if (!date) { 
     1288                        return ""; 
     1289                } 
     1290 
     1291                var iFormat, 
     1292                        dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, 
     1293                        dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, 
     1294                        monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, 
     1295                        monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, 
     1296                        // Check whether a format character is doubled 
     1297                        lookAhead = function(match) { 
     1298                                var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); 
     1299                                if (matches) { 
     1300                                        iFormat++; 
     1301                                } 
     1302                                return matches; 
     1303                        }, 
     1304                        // Format a number, with leading zero if necessary 
     1305                        formatNumber = function(match, value, len) { 
     1306                                var num = "" + value; 
     1307                                if (lookAhead(match)) { 
     1308                                        while (num.length < len) { 
     1309                                                num = "0" + num; 
     1310                                        } 
     1311                                } 
     1312                                return num; 
     1313                        }, 
     1314                        // Format a name, short or long as requested 
     1315                        formatName = function(match, value, shortNames, longNames) { 
     1316                                return (lookAhead(match) ? longNames[value] : shortNames[value]); 
     1317                        }, 
     1318                        output = "", 
     1319                        literal = false; 
     1320 
     1321                if (date) { 
     1322                        for (iFormat = 0; iFormat < format.length; iFormat++) { 
     1323                                if (literal) { 
     1324                                        if (format.charAt(iFormat) === "'" && !lookAhead("'")) { 
    12021325                                                literal = false; 
    1203                                         else 
     1326                                        } else { 
    12041327                                                output += format.charAt(iFormat); 
    1205                                 else 
     1328                                        } 
     1329                                } else { 
    12061330                                        switch (format.charAt(iFormat)) { 
    1207                                                 case 'd': 
    1208                                                         output += formatNumber('d', date.getDate(), 2); 
     1331                                                case "d": 
     1332                                                        output += formatNumber("d", date.getDate(), 2); 
    12091333                                                        break; 
    1210                                                 case 'D': 
    1211                                                         output += formatName('D', date.getDay(), dayNamesShort, dayNames); 
     1334                                                case "D": 
     1335                                                        output += formatName("D", date.getDay(), dayNamesShort, dayNames); 
    12121336                                                        break; 
    1213                                                 case 'o': 
    1214                                                         output += formatNumber('o', 
     1337                                                case "o": 
     1338                                                        output += formatNumber("o", 
    12151339                                                                Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3); 
    12161340                                                        break; 
    1217                                                 case 'm': 
    1218                                                         output += formatNumber('m', date.getMonth() + 1, 2); 
     1341                                                case "m": 
     1342                                                        output += formatNumber("m", date.getMonth() + 1, 2); 
    12191343                                                        break; 
    1220                                                 case 'M': 
    1221                                                         output += formatName('M', date.getMonth(), monthNamesShort, monthNames); 
     1344                                                case "M": 
     1345                                                        output += formatName("M", date.getMonth(), monthNamesShort, monthNames); 
    12221346                                                        break; 
    1223                                                 case 'y': 
    1224                                                         output += (lookAhead('y') ? date.getFullYear() : 
    1225                                                                 (date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100); 
     1347                                                case "y": 
     1348                                                        output += (lookAhead("y") ? date.getFullYear() : 
     1349                                                                (date.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 100); 
    12261350                                                        break; 
    1227                                                 case '@': 
     1351                                                case "@": 
    12281352                                                        output += date.getTime(); 
    12291353                                                        break; 
    1230                                                 case '!': 
     1354                                                case "!": 
    12311355                                                        output += date.getTime() * 10000 + this._ticksTo1970; 
    12321356                                                        break; 
    12331357                                                case "'": 
    1234                                                         if (lookAhead("'")) 
     1358                                                        if (lookAhead("'")) { 
    12351359                                                                output += "'"; 
    1236                                                         else 
     1360                                                        } else { 
    12371361                                                                literal = true; 
     1362                                                        } 
    12381363                                                        break; 
    12391364                                                default: 
    12401365                                                        output += format.charAt(iFormat); 
    12411366                                        } 
    1242                         } 
     1367                                } 
     1368                        } 
     1369                } 
    12431370                return output; 
    12441371        }, 
     
    12461373        /* Extract all possible characters from the date format. */ 
    12471374        _possibleChars: function (format) { 
    1248                 var chars = ''; 
    1249                 var literal = false; 
    1250                 // Check whether a format character is doubled 
    1251                 var lookAhead = function(match) { 
    1252                         var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); 
    1253                         if (matches) 
    1254                                 iFormat++; 
    1255                         return matches; 
    1256                 }; 
    1257                 for (var iFormat = 0; iFormat < format.length; iFormat++) 
    1258                         if (literal) 
    1259                                 if (format.charAt(iFormat) == "'" && !lookAhead("'")) 
     1375                var iFormat, 
     1376                        chars = "", 
     1377                        literal = false, 
     1378                        // Check whether a format character is doubled 
     1379                        lookAhead = function(match) { 
     1380                                var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); 
     1381                                if (matches) { 
     1382                                        iFormat++; 
     1383                                } 
     1384                                return matches; 
     1385                        }; 
     1386 
     1387                for (iFormat = 0; iFormat < format.length; iFormat++) { 
     1388                        if (literal) { 
     1389                                if (format.charAt(iFormat) === "'" && !lookAhead("'")) { 
    12601390                                        literal = false; 
    1261                                 else 
     1391                                } else { 
    12621392                                        chars += format.charAt(iFormat); 
    1263                         else 
     1393                                } 
     1394                        } else { 
    12641395                                switch (format.charAt(iFormat)) { 
    1265                                         case 'd': case 'm': case 'y': case '@': 
    1266                                                 chars += '0123456789'; 
     1396                                        case "d": case "m": case "y": case "@": 
     1397                                                chars += "0123456789"; 
    12671398                                                break; 
    1268                                         case 'D': case 'M': 
     1399                                        case "D": case "M": 
    12691400                                                return null; // Accept anything 
    12701401                                        case "'": 
    1271                                                 if (lookAhead("'")) 
     1402                                                if (lookAhead("'")) { 
    12721403                                                        chars += "'"; 
    1273                                                 else 
     1404                                                } else { 
    12741405                                                        literal = true; 
     1406                                                } 
    12751407                                                break; 
    12761408                                        default: 
    12771409                                                chars += format.charAt(iFormat); 
    12781410                                } 
     1411                        } 
     1412                } 
    12791413                return chars; 
    12801414        }, 
     
    12881422        /* Parse existing date and initialise date picker. */ 
    12891423        _setDateFromField: function(inst, noDefault) { 
    1290                 if (inst.input.val() == inst.lastVal) { 
     1424                if (inst.input.val() === inst.lastVal) { 
    12911425                        return; 
    12921426                } 
    1293                 var dateFormat = this._get(inst, 'dateFormat'); 
    1294                 var dates = inst.lastVal = inst.input ? inst.input.val() : null; 
    1295                 var date, defaultDate; 
    1296                 date = defaultDate = this._getDefaultDate(inst); 
    1297                 var settings = this._getFormatConfig(inst); 
     1427 
     1428                var dateFormat = this._get(inst, "dateFormat"), 
     1429                        dates = inst.lastVal = inst.input ? inst.input.val() : null, 
     1430                        defaultDate = this._getDefaultDate(inst), 
     1431                        date = defaultDate, 
     1432                        settings = this._getFormatConfig(inst); 
     1433 
    12981434                try { 
    12991435                        date = this.parseDate(dateFormat, dates, settings) || defaultDate; 
    13001436                } catch (event) { 
    1301                         this.log(event); 
    1302                         dates = (noDefault ? '' : dates); 
     1437                        dates = (noDefault ? "" : dates); 
    13031438                } 
    13041439                inst.selectedDay = date.getDate(); 
     
    13141449        _getDefaultDate: function(inst) { 
    13151450                return this._restrictMinMax(inst, 
    1316                         this._determineDate(inst, this._get(inst, 'defaultDate'), new Date())); 
     1451                        this._determineDate(inst, this._get(inst, "defaultDate"), new Date())); 
    13171452        }, 
    13181453 
     
    13201455        _determineDate: function(inst, date, defaultDate) { 
    13211456                var offsetNumeric = function(offset) { 
    1322                         var date = new Date(); 
    1323                         date.setDate(date.getDate() + offset); 
    1324                         return date; 
    1325                 }; 
    1326                 var offsetString = function(offset) { 
    1327                         try { 
    1328                                 return $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'), 
    1329                                         offset, $.datepicker._getFormatConfig(inst)); 
    1330                         } 
    1331                         catch (e) { 
    1332                                 // Ignore 
    1333                         } 
    1334                         var date = (offset.toLowerCase().match(/^c/) ? 
    1335                                 $.datepicker._getDate(inst) : null) || new Date(); 
    1336                         var year = date.getFullYear(); 
    1337                         var month = date.getMonth(); 
    1338                         var day = date.getDate(); 
    1339                         var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g; 
    1340                         var matches = pattern.exec(offset); 
    1341                         while (matches) { 
    1342                                 switch (matches[2] || 'd') { 
    1343                                         case 'd' : case 'D' : 
    1344                                                 day += parseInt(matches[1],10); break; 
    1345                                         case 'w' : case 'W' : 
    1346                                                 day += parseInt(matches[1],10) * 7; break; 
    1347                                         case 'm' : case 'M' : 
    1348                                                 month += parseInt(matches[1],10); 
    1349                                                 day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); 
    1350                                                 break; 
    1351                                         case 'y': case 'Y' : 
    1352                                                 year += parseInt(matches[1],10); 
    1353                                                 day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); 
    1354                                                 break; 
    1355                                 } 
    1356                                 matches = pattern.exec(offset); 
    1357                         } 
    1358                         return new Date(year, month, day); 
    1359                 }; 
    1360                 var newDate = (date == null || date === '' ? defaultDate : (typeof date == 'string' ? offsetString(date) : 
    1361                         (typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime())))); 
    1362                 newDate = (newDate && newDate.toString() == 'Invalid Date' ? defaultDate : newDate); 
     1457                                var date = new Date(); 
     1458                                date.setDate(date.getDate() + offset); 
     1459                                return date; 
     1460                        }, 
     1461                        offsetString = function(offset) { 
     1462                                try { 
     1463                                        return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), 
     1464                                                offset, $.datepicker._getFormatConfig(inst)); 
     1465                                } 
     1466                                catch (e) { 
     1467                                        // Ignore 
     1468                                } 
     1469 
     1470                                var date = (offset.toLowerCase().match(/^c/) ? 
     1471                                        $.datepicker._getDate(inst) : null) || new Date(), 
     1472                                        year = date.getFullYear(), 
     1473                                        month = date.getMonth(), 
     1474                                        day = date.getDate(), 
     1475                                        pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g, 
     1476                                        matches = pattern.exec(offset); 
     1477 
     1478                                while (matches) { 
     1479                                        switch (matches[2] || "d") { 
     1480                                                case "d" : case "D" : 
     1481                                                        day += parseInt(matches[1],10); break; 
     1482                                                case "w" : case "W" : 
     1483                                                        day += parseInt(matches[1],10) * 7; break; 
     1484                                                case "m" : case "M" : 
     1485                                                        month += parseInt(matches[1],10); 
     1486                                                        day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); 
     1487                                                        break; 
     1488                                                case "y": case "Y" : 
     1489                                                        year += parseInt(matches[1],10); 
     1490                                                        day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); 
     1491                                                        break; 
     1492                                        } 
     1493                                        matches = pattern.exec(offset); 
     1494                                } 
     1495                                return new Date(year, month, day); 
     1496                        }, 
     1497                        newDate = (date == null || date === "" ? defaultDate : (typeof date === "string" ? offsetString(date) : 
     1498                                (typeof date === "number" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime())))); 
     1499 
     1500                newDate = (newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate); 
    13631501                if (newDate) { 
    13641502                        newDate.setHours(0); 
     
    13711509 
    13721510        /* Handle switch to/from daylight saving. 
    1373            Hours may be non-zero on daylight saving cut-over: 
    1374            > 12 when midnight changeover, but then cannot generate 
    1375            midnight datetime, so jump to 1AM, otherwise reset. 
    1376            @param  date  (Date) the date to check 
    1377            @return  (Date) the corrected date */ 
     1511         * Hours may be non-zero on daylight saving cut-over: 
     1512         * > 12 when midnight changeover, but then cannot generate 
     1513         * midnight datetime, so jump to 1AM, otherwise reset. 
     1514         * @param  date  (Date) the date to check 
     1515         * @return  (Date) the corrected date 
     1516         */ 
    13781517        _daylightSavingAdjust: function(date) { 
    1379                 if (!date) return null; 
     1518                if (!date) { 
     1519                        return null; 
     1520                } 
    13801521                date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); 
    13811522                return date; 
     
    13841525        /* Set the date(s) directly. */ 
    13851526        _setDate: function(inst, date, noChange) { 
    1386                 var clear = !date; 
    1387                 var origMonth = inst.selectedMonth; 
    1388                 var origYear = inst.selectedYear; 
    1389                 var newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date())); 
     1527                var clear = !date, 
     1528                        origMonth = inst.selectedMonth, 
     1529                        origYear = inst.selectedYear, 
     1530                        newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date())); 
     1531 
    13901532                inst.selectedDay = inst.currentDay = newDate.getDate(); 
    13911533                inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth(); 
    13921534                inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear(); 
    1393                 if ((origMonth != inst.selectedMonth || origYear != inst.selectedYear) && !noChange) 
     1535                if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) { 
    13941536                        this._notifyChange(inst); 
     1537                } 
    13951538                this._adjustInstDate(inst); 
    13961539                if (inst.input) { 
    1397                         inst.input.val(clear ? '' : this._formatDate(inst)); 
     1540                        inst.input.val(clear ? "" : this._formatDate(inst)); 
    13981541                } 
    13991542        }, 
     
    14011544        /* Retrieve the date(s) directly. */ 
    14021545        _getDate: function(inst) { 
    1403                 var startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null : 
     1546                var startDate = (!inst.currentYear || (inst.input && inst.input.val() === "") ? null : 
    14041547                        this._daylightSavingAdjust(new Date( 
    14051548                        inst.currentYear, inst.currentMonth, inst.currentDay))); 
     
    14111554         */ 
    14121555        _attachHandlers: function(inst) { 
    1413                 var stepMonths = this._get(inst, 'stepMonths'); 
    1414                 var id = '#' + inst.id.replace( /\\\\/g, "\\" ); 
    1415                 inst.dpDiv.find('[data-handler]').map(function () { 
     1556                var stepMonths = this._get(inst, "stepMonths"), 
     1557                        id = "#" + inst.id.replace( /\\\\/g, "\\" ); 
     1558                inst.dpDiv.find("[data-handler]").map(function () { 
    14161559                        var handler = { 
    14171560                                prev: function () { 
    1418                                         window['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, -stepMonths, 'M'); 
     1561                                        window["DP_jQuery_" + dpuuid].datepicker._adjustDate(id, -stepMonths, "M"); 
    14191562                                }, 
    14201563                                next: function () { 
    1421                                         window['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, +stepMonths, 'M'); 
     1564                                        window["DP_jQuery_" + dpuuid].datepicker._adjustDate(id, +stepMonths, "M"); 
    14221565                                }, 
    14231566                                hide: function () { 
    1424                                         window['DP_jQuery_' + dpuuid].datepicker._hideDatepicker(); 
     1567                                        window["DP_jQuery_" + dpuuid].datepicker._hideDatepicker(); 
    14251568                                }, 
    14261569                                today: function () { 
    1427                                         window['DP_jQuery_' + dpuuid].datepicker._gotoToday(id); 
     1570                                        window["DP_jQuery_" + dpuuid].datepicker._gotoToday(id); 
    14281571                                }, 
    14291572                                selectDay: function () { 
    1430                                         window['DP_jQuery_' + dpuuid].datepicker._selectDay(id, +this.getAttribute('data-month'), +this.getAttribute('data-year'), this); 
     1573                                        window["DP_jQuery_" + dpuuid].datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this); 
    14311574                                        return false; 
    14321575                                }, 
    14331576                                selectMonth: function () { 
    1434                                         window['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'M'); 
     1577                                        window["DP_jQuery_" + dpuuid].datepicker._selectMonthYear(id, this, "M"); 
    14351578                                        return false; 
    14361579                                }, 
    14371580                                selectYear: function () { 
    1438                                         window['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'Y'); 
     1581                                        window["DP_jQuery_" + dpuuid].datepicker._selectMonthYear(id, this, "Y"); 
    14391582                                        return false; 
    14401583                                } 
    14411584                        }; 
    1442                         $(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]); 
     1585                        $(this).bind(this.getAttribute("data-event"), handler[this.getAttribute("data-handler")]); 
    14431586                }); 
    14441587        }, 
    1445          
     1588 
    14461589        /* Generate the HTML for the current state of the date picker. */ 
    14471590        _generateHTML: function(inst) { 
    1448                 var today = new Date(); 
    1449                 today = this._daylightSavingAdjust( 
    1450                         new Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time 
    1451                 var isRTL = this._get(inst, 'isRTL'); 
    1452                 var showButtonPanel = this._get(inst, 'showButtonPanel'); 
    1453                 var hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext'); 
    1454                 var navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat'); 
    1455                 var numMonths = this._getNumberOfMonths(inst); 
    1456                 var showCurrentAtPos = this._get(inst, 'showCurrentAtPos'); 
    1457                 var stepMonths = this._get(inst, 'stepMonths'); 
    1458                 var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1); 
    1459                 var currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) : 
    1460                         new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); 
    1461                 var minDate = this._getMinMaxDate(inst, 'min'); 
    1462                 var maxDate = this._getMinMaxDate(inst, 'max'); 
    1463                 var drawMonth = inst.drawMonth - showCurrentAtPos; 
    1464                 var drawYear = inst.drawYear; 
     1591                var maxDraw, prevText, prev, nextText, next, currentText, gotoDate, 
     1592                        controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin, 
     1593                        monthNames, monthNamesShort, beforeShowDay, showOtherMonths, 
     1594                        selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate, 
     1595                        cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows, 
     1596                        printDate, dRow, tbody, daySettings, otherMonth, unselectable, 
     1597                        tempDate = new Date(), 
     1598                        today = this._daylightSavingAdjust( 
     1599                                new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time 
     1600                        isRTL = this._get(inst, "isRTL"), 
     1601                        showButtonPanel = this._get(inst, "showButtonPanel"), 
     1602                        hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext"), 
     1603                        navigationAsDateFormat = this._get(inst, "navigationAsDateFormat"), 
     1604                        numMonths = this._getNumberOfMonths(inst), 
     1605                        showCurrentAtPos = this._get(inst, "showCurrentAtPos"), 
     1606                        stepMonths = this._get(inst, "stepMonths"), 
     1607                        isMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1), 
     1608                        currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) : 
     1609                                new Date(inst.currentYear, inst.currentMonth, inst.currentDay))), 
     1610                        minDate = this._getMinMaxDate(inst, "min"), 
     1611                        maxDate = this._getMinMaxDate(inst, "max"), 
     1612                        drawMonth = inst.drawMonth - showCurrentAtPos, 
     1613                        drawYear = inst.drawYear; 
     1614 
    14651615                if (drawMonth < 0) { 
    14661616                        drawMonth += 12; 
     
    14681618                } 
    14691619                if (maxDate) { 
    1470                         var maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), 
     1620                        maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), 
    14711621                                maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate())); 
    14721622                        maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw); 
     
    14811631                inst.drawMonth = drawMonth; 
    14821632                inst.drawYear = drawYear; 
    1483                 var prevText = this._get(inst, 'prevText'); 
     1633 
     1634                prevText = this._get(inst, "prevText"); 
    14841635                prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText, 
    14851636                        this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)), 
    14861637                        this._getFormatConfig(inst))); 
    1487                 var prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? 
    1488                         '<a class="ui-datepicker-prev ui-corner-all" data-handler="prev" data-event="click"' + 
    1489                         ' title="' + prevText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>' : 
    1490                         (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+ prevText +'"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>')); 
    1491                 var nextText = this._get(inst, 'nextText'); 
     1638 
     1639                prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? 
     1640                        "<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" + 
     1641                        " title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>" : 
     1642                        (hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+ prevText +"'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>")); 
     1643 
     1644                nextText = this._get(inst, "nextText"); 
    14921645                nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText, 
    14931646                        this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)), 
    14941647                        this._getFormatConfig(inst))); 
    1495                 var next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? 
    1496                         '<a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click"' + 
    1497                         ' title="' + nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>' : 
    1498                         (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+ nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>')); 
    1499                 var currentText = this._get(inst, 'currentText'); 
    1500                 var gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today); 
     1648 
     1649                next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? 
     1650                        "<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" + 
     1651                        " title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>" : 
     1652                        (hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+ nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>")); 
     1653 
     1654                currentText = this._get(inst, "currentText"); 
     1655                gotoDate = (this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today); 
    15011656                currentText = (!navigationAsDateFormat ? currentText : 
    15021657                        this.formatDate(currentText, gotoDate, this._getFormatConfig(inst))); 
    1503                 var controls = (!inst.inline ? '<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" data-handler="hide" data-event="click">' + 
    1504                         this._get(inst, 'closeText') + '</button>' : ''); 
    1505                 var buttonPanel = (showButtonPanel) ? '<div class="ui-datepicker-buttonpane ui-widget-content">' + (isRTL ? controls : '') + 
    1506                         (this._isInRange(inst, gotoDate) ? '<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" data-handler="today" data-event="click"' + 
    1507                         '>' + currentText + '</button>' : '') + (isRTL ? '' : controls) + '</div>' : ''; 
    1508                 var firstDay = parseInt(this._get(inst, 'firstDay'),10); 
     1658 
     1659                controls = (!inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" + 
     1660                        this._get(inst, "closeText") + "</button>" : ""); 
     1661 
     1662                buttonPanel = (showButtonPanel) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + (isRTL ? controls : "") + 
     1663                        (this._isInRange(inst, gotoDate) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" + 
     1664                        ">" + currentText + "</button>" : "") + (isRTL ? "" : controls) + "</div>" : ""; 
     1665 
     1666                firstDay = parseInt(this._get(inst, "firstDay"),10); 
    15091667                firstDay = (isNaN(firstDay) ? 0 : firstDay); 
    1510                 var showWeek = this._get(inst, 'showWeek'); 
    1511                 var dayNames = this._get(inst, 'dayNames'); 
    1512                 var dayNamesShort = this._get(inst, 'dayNamesShort'); 
    1513                 var dayNamesMin = this._get(inst, 'dayNamesMin'); 
    1514                 var monthNames = this._get(inst, 'monthNames'); 
    1515                 var monthNamesShort = this._get(inst, 'monthNamesShort'); 
    1516                 var beforeShowDay = this._get(inst, 'beforeShowDay'); 
    1517                 var showOtherMonths = this._get(inst, 'showOtherMonths'); 
    1518                 var selectOtherMonths = this._get(inst, 'selectOtherMonths'); 
    1519                 var calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week; 
    1520                 var defaultDate = this._getDefaultDate(inst); 
    1521                 var html = ''; 
    1522                 for (var row = 0; row < numMonths[0]; row++) { 
    1523                         var group = ''; 
     1668 
     1669                showWeek = this._get(inst, "showWeek"); 
     1670                dayNames = this._get(inst, "dayNames"); 
     1671                dayNamesMin = this._get(inst, "dayNamesMin"); 
     1672                monthNames = this._get(inst, "monthNames"); 
     1673                monthNamesShort = this._get(inst, "monthNamesShort"); 
     1674                beforeShowDay = this._get(inst, "beforeShowDay"); 
     1675                showOtherMonths = this._get(inst, "showOtherMonths"); 
     1676                selectOtherMonths = this._get(inst, "selectOtherMonths"); 
     1677                defaultDate = this._getDefaultDate(inst); 
     1678                html = ""; 
     1679                dow; 
     1680                for (row = 0; row < numMonths[0]; row++) { 
     1681                        group = ""; 
    15241682                        this.maxRows = 4; 
    1525                         for (var col = 0; col < numMonths[1]; col++) { 
    1526                                 var selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)); 
    1527                                 var cornerClass = ' ui-corner-all'; 
    1528                                 var calender = ''; 
     1683                        for (col = 0; col < numMonths[1]; col++) { 
     1684                                selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)); 
     1685                                cornerClass = " ui-corner-all"; 
     1686                                calender = ""; 
    15291687                                if (isMultiMonth) { 
    1530                                         calender += '<div class="ui-datepicker-group'; 
    1531                                         if (numMonths[1] > 1) 
     1688                                        calender += "<div class='ui-datepicker-group"; 
     1689                                        if (numMonths[1] > 1) { 
    15321690                                                switch (col) { 
    1533                                                         case 0: calender += ' ui-datepicker-group-first'; 
    1534                                                                 cornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); break; 
    1535                                                         case numMonths[1]-1: calender += ' ui-datepicker-group-last'; 
    1536                                                                 cornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); break; 
    1537                                                         default: calender += ' ui-datepicker-group-middle'; cornerClass = ''; break; 
     1691                                                        case 0: calender += " ui-datepicker-group-first"; 
     1692                                                                cornerClass = " ui-corner-" + (isRTL ? "right" : "left"); break; 
     1693                                                        case numMonths[1]-1: calender += " ui-datepicker-group-last"; 
     1694                                                                cornerClass = " ui-corner-" + (isRTL ? "left" : "right"); break; 
     1695                                                        default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break; 
    15381696                                                } 
    1539                                         calender += '">'; 
    1540                                 } 
    1541                                 calender += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '">' + 
    1542                                         (/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') + 
    1543                                         (/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') + 
     1697                                        } 
     1698                                        calender += "'>"; 
     1699                                } 
     1700                                calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" + 
     1701                                        (/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") + 
     1702                                        (/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") + 
    15441703                                        this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate, 
    15451704                                        row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers 
    1546                                         '</div><table class="ui-datepicker-calendar"><thead>' + 
    1547                                         '<tr>'; 
    1548                                 var thead = (showWeek ? '<th class="ui-datepicker-week-col">' + this._get(inst, 'weekHeader') + '</th>' : ''); 
    1549                                 for (var dow = 0; dow < 7; dow++) { // days of the week 
    1550                                         var day = (dow + firstDay) % 7; 
    1551                                         thead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end"' : '') + '>' + 
    1552                                                 '<span title="' + dayNames[day] + '">' + dayNamesMin[day] + '</span></th>'; 
    1553                                 } 
    1554                                 calender += thead + '</tr></thead><tbody>'; 
    1555                                 var daysInMonth = this._getDaysInMonth(drawYear, drawMonth); 
    1556                                 if (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth) 
     1705                                        "</div><table class='ui-datepicker-calendar'><thead>" + 
     1706                                        "<tr>"; 
     1707                                thead = (showWeek ? "<th class='ui-datepicker-week-col'>" + this._get(inst, "weekHeader") + "</th>" : ""); 
     1708                                for (dow = 0; dow < 7; dow++) { // days of the week 
     1709                                        day = (dow + firstDay) % 7; 
     1710                                        thead += "<th" + ((dow + firstDay + 6) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "") + ">" + 
     1711                                                "<span title='" + dayNames[day] + "'>" + dayNamesMin[day] + "</span></th>"; 
     1712                                } 
     1713                                calender += thead + "</tr></thead><tbody>"; 
     1714                                daysInMonth = this._getDaysInMonth(drawYear, drawMonth); 
     1715                                if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) { 
    15571716                                        inst.selectedDay = Math.min(inst.selectedDay, daysInMonth); 
    1558                                 var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; 
    1559                                 var curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate 
    1560                                 var numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043) 
     1717                                } 
     1718                                leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; 
     1719                                curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate 
     1720                                numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043) 
    15611721                                this.maxRows = numRows; 
    1562                                 var printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); 
    1563                                 for (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows 
    1564                                         calender += '<tr>'; 
    1565                                         var tbody = (!showWeek ? '' : '<td class="ui-datepicker-week-col">' + 
    1566                                                 this._get(inst, 'calculateWeek')(printDate) + '</td>'); 
    1567                                         for (var dow = 0; dow < 7; dow++) { // create date picker days 
    1568                                                 var daySettings = (beforeShowDay ? 
    1569                                                         beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']); 
    1570                                                 var otherMonth = (printDate.getMonth() != drawMonth); 
    1571                                                 var unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] || 
     1722                                printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); 
     1723                                for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows 
     1724                                        calender += "<tr>"; 
     1725                                        tbody = (!showWeek ? "" : "<td class='ui-datepicker-week-col'>" + 
     1726                                                this._get(inst, "calculateWeek")(printDate) + "</td>"); 
     1727                                        for (dow = 0; dow < 7; dow++) { // create date picker days 
     1728                                                daySettings = (beforeShowDay ? 
     1729                                                        beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, ""]); 
     1730                                                otherMonth = (printDate.getMonth() !== drawMonth); 
     1731                                                unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] || 
    15721732                                                        (minDate && printDate < minDate) || (maxDate && printDate > maxDate); 
    1573                                                 tbody += '<td class="' + 
    1574                                                         ((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + // highlight weekends 
    1575                                                         (otherMonth ? ' ui-datepicker-other-month' : '') + // highlight days from other months 
    1576                                                         ((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || // user pressed key 
    1577                                                         (defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ? 
     1733                                                tbody += "<td class='" + 
     1734                                                        ((dow + firstDay + 6) % 7 >= 5 ? " ui-datepicker-week-end" : "") + // highlight weekends 
     1735                                                        (otherMonth ? " ui-datepicker-other-month" : "") + // highlight days from other months 
     1736                                                        ((printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent) || // user pressed key 
     1737                                                        (defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime()) ? 
    15781738                                                        // or defaultDate is current printedDate and defaultDate is selectedDate 
    1579                                                         ' ' + this._dayOverClass : '') + // highlight selected day 
    1580                                                         (unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled': '') +  // highlight unselectable days 
    1581                                                         (otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + // highlight custom dates 
    1582                                                         (printDate.getTime() == currentDate.getTime() ? ' ' + this._currentClass : '') + // highlight selected day 
    1583                                                         (printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '"' + // highlight today (if different) 
    1584                                                         ((!otherMonth || showOtherMonths) && daySettings[2] ? ' title="' + daySettings[2] + '"' : '') + // cell title 
    1585                                                         (unselectable ? '' : ' data-handler="selectDay" data-event="click" data-month="' + printDate.getMonth() + '" data-year="' + printDate.getFullYear() + '"') + '>' + // actions 
    1586                                                         (otherMonth && !showOtherMonths ? '&#xa0;' : // display for other months 
    1587                                                         (unselectable ? '<span class="ui-state-default">' + printDate.getDate() + '</span>' : '<a class="ui-state-default' + 
    1588                                                         (printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') + 
    1589                                                         (printDate.getTime() == currentDate.getTime() ? ' ui-state-active' : '') + // highlight selected day 
    1590                                                         (otherMonth ? ' ui-priority-secondary' : '') + // distinguish dates from other months 
    1591                                                         '" href="#">' + printDate.getDate() + '</a>')) + '</td>'; // display selectable date 
     1739                                                        " " + this._dayOverClass : "") + // highlight selected day 
     1740                                                        (unselectable ? " " + this._unselectableClass + " ui-state-disabled": "") +  // highlight unselectable days 
     1741                                                        (otherMonth && !showOtherMonths ? "" : " " + daySettings[1] + // highlight custom dates 
     1742                                                        (printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "") + // highlight selected day 
     1743                                                        (printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "")) + "'" + // highlight today (if different) 
     1744                                                        ((!otherMonth || showOtherMonths) && daySettings[2] ? " title='" + daySettings[2].replace(/'/g, "&#39;") + "'" : "") + // cell title 
     1745                                                        (unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" + // actions 
     1746                                                        (otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months 
     1747                                                        (unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" + 
     1748                                                        (printDate.getTime() === today.getTime() ? " ui-state-highlight" : "") + 
     1749                                                        (printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "") + // highlight selected day 
     1750                                                        (otherMonth ? " ui-priority-secondary" : "") + // distinguish dates from other months 
     1751                                                        "' href='#'>" + printDate.getDate() + "</a>")) + "</td>"; // display selectable date 
    15921752                                                printDate.setDate(printDate.getDate() + 1); 
    15931753                                                printDate = this._daylightSavingAdjust(printDate); 
    15941754                                        } 
    1595                                         calender += tbody + '</tr>'; 
     1755                                        calender += tbody + "</tr>"; 
    15961756                                } 
    15971757                                drawMonth++; 
     
    16001760                                        drawYear++; 
    16011761                                } 
    1602                                 calender += '</tbody></table>' + (isMultiMonth ? '</div>' +  
    1603                                                         ((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : ''); 
     1762                                calender += "</tbody></table>" + (isMultiMonth ? "</div>" + 
     1763                                                        ((numMonths[0] > 0 && col === numMonths[1]-1) ? "<div class='ui-datepicker-row-break'></div>" : "") : ""); 
    16041764                                group += calender; 
    16051765                        } 
    16061766                        html += group; 
    16071767                } 
    1608                 html += buttonPanel + ($.browser.msie && parseInt($.browser.version,10) < 7 && !inst.inline ? 
    1609                         '<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>' : ''); 
     1768                html += buttonPanel; 
    16101769                inst._keyEvent = false; 
    16111770                return html; 
     
    16151774        _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,