/* * Date picker plugin for jQuery * http://kelvinluck.com/assets/jquery/datePicker * * Copyright (c) 2006 Kelvin Luck (kelvinluck.com) * Licensed under the MIT License: * http://www.opensource.org/licenses/mit-license.php * * $LastChangedDate: 2007-04-12 10:01:01 +0100 (Thu, 12 Apr 2007) $ * $Rev: 1672 $ */ jQuery.datePicker = function() { // so that firebug console.log statements don't break IE if (window.console == undefined) { window.console = {log:function(){}}; } var months = ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre']; var days = ['Domenica', 'Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato']; var navLinks = {p:'', n:'', c:'Chiudi', b:''}; var dateFormat = 'dmy'; var dateSeparator = "/"; var _drawingMonth = false; var _firstDayOfWeek; var _firstDate; var _lastDate; var _selectedDate; var _openCal; var listeners=['luca']; var _zeroPad = function(num) { var s = '0'+num; return s.substring(s.length-2) //return ('0'+num).substring(-2); // doesn't work on IE :( }; var _strToDate = function(dIn) { console.log('_strToDate '+dIn); switch (dateFormat) { case 'ymd': dParts = dIn.split(dateSeparator); return new Date(dParts[0], Number(dParts[1])-1, dParts[2]); case 'dmy': dParts = dIn.split(dateSeparator); return new Date(dParts[2], Number(dParts[1])-1, Number(dParts[0])); case 'dmmy': dParts = dIn.split(dateSeparator); for (var m=0; m<12; m++) { if (dParts[1].toLowerCase() == months[m].substr(0,3).toLowerCase()) { return new Date(Number(dParts[2]), m, Number(dParts[0])); } } return undefined; case 'mdy': default: var parts = parts ? parts : [2, 1, 0]; dParts = dIn.split(dateSeparator); return new Date(dParts[2], Number(dParts[0])-1, Number(dParts[1])); } }; var _dateToStr = function(d) { var dY = d.getFullYear(); var dM = _zeroPad(d.getMonth()+1); var dD = _zeroPad(d.getDate()); switch (dateFormat) { case 'ymd': return dY + dateSeparator + dM + dateSeparator + dD; case 'dmy': return dD + dateSeparator + dM + dateSeparator + dY; case 'dmmy': return dD + dateSeparator + months[d.getMonth()].substr(0,3) + dateSeparator + dY; case 'mdy': default: return dM + dateSeparator + dD + dateSeparator + dY; } }; var _getCalendarDiv = function(dIn) { var today = new Date(); if (dIn == undefined) { // start from this month. d = new Date(today.getFullYear(), today.getMonth(), 1); } else { // start from the passed in date d = dIn; d.setDate(1); } // check that date is within allowed limits: if ((d.getMonth() < _firstDate.getMonth() && d.getFullYear() == _firstDate.getFullYear()) || d.getFullYear() < _firstDate.getFullYear()) { d = new Date(_firstDate.getFullYear(), _firstDate.getMonth(), 1);; } else if ((d.getMonth() > _lastDate.getMonth() && d.getFullYear() == _lastDate.getFullYear()) || d.getFullYear() > _lastDate.getFullYear()) { d = new Date(_lastDate.getFullYear(), _lastDate.getMonth(), 1);; } var jCalDiv = jQuery("
").attr('class','popup-calendar'); var firstMonth = true; var firstDate = _firstDate.getDate(); // create prev and next links var prevLinkDiv = ''; if (!(d.getMonth() == _firstDate.getMonth() && d.getFullYear() == _firstDate.getFullYear())) { // not in first display month so show a previous link firstMonth = false; var lastMonth = d.getMonth() == 0 ? new Date(d.getFullYear()-1, 11, 1) : new Date(d.getFullYear(), d.getMonth()-1, 1); var prevLink = jQuery("").attr('href', 'javascript:;').html(navLinks.p).click(function() { jQuery.datePicker.changeMonth(lastMonth, this); return false; }); prevLinkDiv = jQuery("
").attr('class','link-prev').html('').append(prevLink); } var finalMonth = true; var lastDate = _lastDate.getDate(); nextLinkDiv = ''; if (!(d.getMonth() == _lastDate.getMonth() && d.getFullYear() == _lastDate.getFullYear())) { // in the last month - no next link finalMonth = false; var nextMonth = new Date(d.getFullYear(), d.getMonth()+1, 1); var nextLink = jQuery("").attr('href', 'javascript:;').html(navLinks.n).click(function() { jQuery.datePicker.changeMonth(nextMonth, this); return false; }); nextLinkDiv = jQuery("
").attr('class','link-next').html('').prepend(nextLink); } // 'javascript:jQuery.datePicker.closeCalendar();') // fix per baco Vergori 29/4/2011 var closeLink = jQuery("").attr('href','javascript:jQuery.datePicker.closeCalendar();').html(navLinks.c).click(function() { jQuery.datePicker.closeCalendar(); }); jCalDiv.append( jQuery("
").attr('class', 'link-close').append(closeLink), jQuery("

").html(months[d.getMonth()] + ' ' + d.getFullYear()) ); var headRow = jQuery(""); for (var i=_firstDayOfWeek; i<_firstDayOfWeek+7; i++) { var weekday = i%7; var day = days[weekday]; headRow.append( jQuery("").attr({'scope':'col', 'abbr':day, 'title':day, 'class':(weekday == 0 || weekday == 6 ? 'weekend' : 'weekday')}).html(day.substr(0, 1)) ); } var tBody = jQuery(""); var lastDay = (new Date(d.getFullYear(), d.getMonth()+1, 0)).getDate(); var curDay = _firstDayOfWeek - d.getDay(); if (curDay > 0) curDay -= 7; var todayDate = (new Date()).getDate(); var thisMonth = d.getMonth() == today.getMonth() && d.getFullYear() == today.getFullYear(); var w = 0; while (w++<6) { var thisRow = jQuery(""); for (var i=0; i<7; i++) { var weekday = (_firstDayOfWeek + i) % 7; var atts = {'class':(weekday == 0 || weekday == 6 ? 'weekend ' : 'weekday ')}; if (curDay < 0 || curDay >= lastDay) { dayStr = ' '; } else if (firstMonth && curDay < firstDate-1) { dayStr = curDay+1; atts['class'] += 'inactive'; } else if (finalMonth && curDay > lastDate-1) { dayStr = curDay+1; atts['class'] += 'inactive'; } else { d.setDate(curDay+1); var dStr = _dateToStr(d); dayStr = jQuery("").attr({'href':'javascript:;', 'rel':dStr}).html(curDay+1).click(function(e) { jQuery.datePicker.selectDate(jQuery.attr(this, 'rel'), this); return false; })[0]; if (_selectedDate && _selectedDate==dStr) { jQuery(dayStr).attr('class','selected'); } } if (thisMonth && curDay+1 == todayDate) { atts['class'] += 'today'; } thisRow.append(jQuery("").attr(atts).append(dayStr)); curDay++; } tBody.append(thisRow); } jCalDiv.append( jQuery("
").attr('cellspacing',2).append("") .find("thead").append(headRow).parent().append(tBody.children()) ).append(prevLinkDiv).append(nextLinkDiv); if (jQuery.browser.msie) { // we put a styled iframe behind the calendar so HTML SELECT elements don't show through $('.elogo').css('z-index', '-1'); var iframe = [ '