Файловый менеджер - Редактировать - /home/wuectly/www/03cbe/com_icagenda.zip
Назад
PK fa!]�#o, , js/index.htmlnu &1i� <html><body bgcolor="#FFFFFF"></body></html>PK fa!]z�% % js/icmap.jsnu &1i� /* * jQuery UI addresspicker @VERSION * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Progressbar * * Depends: * jquery.ui.core.js * jquery.ui.widget.js * jquery.ui.autocomplete.js */ (function( $, undefined ) { $.widget( "ui.addresspicker", { options: { appendAddressString: "", draggableMarker: true, regionBias: null, updateCallback: null, reverseGeocode: false, mapOptions: { zoom: 13, center: new google.maps.LatLng(46, 2), scrollwheel: false, mapTypeId: google.maps.MapTypeId.ROADMAP }, elements: { map: false, lat: false, lng: false, street_number: false, route: false, locality: false, administrative_area_level_2: false, administrative_area_level_1: false, country: false, postal_code: false, type: false } }, marker: function() { return this.gmarker; }, map: function() { return this.gmap; }, updatePosition: function() { this._updatePosition(this.gmarker.getPosition()); }, reloadPosition: function() { this.gmarker.setVisible(true); this.gmarker.setPosition(new google.maps.LatLng(this.lat.val(), this.lng.val())); this.gmap.setCenter(this.gmarker.getPosition()); }, selected: function() { return this.selectedResult; }, _create: function() { this.geocoder = new google.maps.Geocoder(); this.element.autocomplete({ source: $.proxy(this._geocode, this), focus: $.proxy(this._focusAddress, this), select: $.proxy(this._selectAddress, this) }); this.lat = $(this.options.elements.lat); this.lng = $(this.options.elements.lng); this.street_number = $(this.options.elements.street_number); this.route = $(this.options.elements.route); this.locality = $(this.options.elements.locality); this.administrative_area_level_2 = $(this.options.elements.administrative_area_level_2); this.administrative_area_level_1 = $(this.options.elements.administrative_area_level_1); this.country = $(this.options.elements.country); this.postal_code = $(this.options.elements.postal_code); this.type = $(this.options.elements.type); if (this.options.elements.map) { this.mapElement = $(this.options.elements.map); this._initMap(); } }, _initMap: function() { if (this.lat && this.lat.val()) { this.options.mapOptions.center = new google.maps.LatLng(this.lat.val(), this.lng.val()); } this.gmap = new google.maps.Map(this.mapElement[0], this.options.mapOptions); this.gmarker = new google.maps.Marker({ position: this.options.mapOptions.center, map:this.gmap, draggable: this.options.draggableMarker}); google.maps.event.addListener(this.gmarker, 'dragend', $.proxy(this._markerMoved, this)); this.gmarker.setVisible(false); }, _updatePosition: function(location) { if (this.lat) { this.lat.val(location.lat()); } if (this.lng) { this.lng.val(location.lng()); } }, _addressParts: {street_number: null, route: null, locality: null, administrative_area_level_2: null, administrative_area_level_1: null, country: null, postal_code:null, type: null}, _updateAddressParts: function(geocodeResult){ parsedResult = this._parseGeocodeResult(geocodeResult); for (addressPart in this._addressParts){ if (this[addressPart]){ if (JSON.stringify(parsedResult[addressPart]) == 'false'){ this[addressPart].val(''); } else { this[addressPart].val(parsedResult[addressPart]); } } } }, _updateAddressPartsViaReverseGeocode: function(location){ var latLng = new google.maps.LatLng(location.lat(), location.lng()); this.geocoder.geocode({'latLng': latLng}, $.proxy(function(results, status){ if (status == google.maps.GeocoderStatus.OK) this._updateAddressParts(results[0]); this.element.val(results[0].formatted_address); this.selectedResult = results[0]; if (this.options.updateCallback) { this.options.updateCallback(this.selectedResult, this._parseGeocodeResult(this.selectedResult)); } }, this)); }, _parseGeocodeResult: function(geocodeResult){ var parsed = {lat: geocodeResult.geometry.location.lat(), lng: geocodeResult.geometry.location.lng()}; for (var addressPart in this._addressParts){ parsed[addressPart] = this._findInfo(geocodeResult, addressPart); } parsed.type = geocodeResult.types[0]; return parsed; }, _markerMoved: function() { this._updatePosition(this.gmarker.getPosition()); if (this.options.reverseGeocode){ this._updateAddressPartsViaReverseGeocode(this.gmarker.getPosition()); } }, // Autocomplete source method: fill its suggests with google geocoder results _geocode: function(request, response) { var address = request.term, self = this; this.geocoder.geocode({ 'address': address + this.options.appendAddressString, 'region': this.options.regionBias }, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { for (var i = 0; i < results.length; i++) { results[i].label = results[i].formatted_address; }; } response(results); }) }, _findInfo: function(result, type) { for (var i = 0; i < result.address_components.length; i++) { var component = result.address_components[i]; if (component.types.indexOf(type) !=-1) { return component.long_name; } } return false; }, _focusAddress: function(event, ui) { var address = ui.item; if (!address) { return; } if (this.gmarker) { this.gmarker.setPosition(address.geometry.location); this.gmarker.setVisible(true); this.gmap.fitBounds(address.geometry.viewport); } this._updatePosition(address.geometry.location); this._updateAddressParts(address); }, _selectAddress: function(event, ui) { this.selectedResult = ui.item; if (this.options.updateCallback) { this.options.updateCallback(this.selectedResult, this._parseGeocodeResult(this.selectedResult)); } } }); $.extend( $.ui.addresspicker, { version: "@VERSION" }); // make IE think it doesn't suck if(!Array.indexOf){ Array.prototype.indexOf = function(obj){ for(var i=0; i<this.length; i++){ if(this[i]==obj){ return i; } } return -1; } } })( jQuery ); PK fa!]p�䱵� �� js/timepicker.jsnu &1i� /* * jQuery timepicker addon * By: Trent Richardson [http://trentrichardson.com] * Version 1.0.3 * Last Modified: 09/15/2012 * * Copyright 2012 Trent Richardson * You may use this project under MIT or GPL licenses. * http://trentrichardson.com/Impromptu/GPL-LICENSE.txt * http://trentrichardson.com/Impromptu/MIT-LICENSE.txt * * HERES THE CSS: * .ui-timepicker-div .ui-widget-header { margin-bottom: 8px; } * .ui-timepicker-div dl { text-align: left; } * .ui-timepicker-div dl dt { height: 25px; margin-bottom: -25px; } * .ui-timepicker-div dl dd { margin: 0 10px 10px 65px; } * .ui-timepicker-div td { font-size: 90%; } * .ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; } */ /*jslint evil: true, white: false, undef: false, nomen: false */ (function($) { /* * Lets not redefine timepicker, Prevent "Uncaught RangeError: Maximum call stack size exceeded" */ $.ui.timepicker = $.ui.timepicker || {}; if ($.ui.timepicker.version) { return; } /* * Extend jQueryUI, get it started with our version number */ $.extend($.ui, { timepicker: { version: "1.0.3" } }); /* * Timepicker manager. * Use the singleton instance of this class, $.timepicker, to interact with the time picker. * Settings for (groups of) time pickers are maintained in an instance object, * allowing multiple different settings on the same page. */ function Timepicker() { this.regional = []; // Available regional settings, indexed by language code this.regional[''] = { // Default regional settings currentText: Joomla.JText._('COM_ICAGENDA_TP_CURRENT', 'Now'), closeText: Joomla.JText._('COM_ICAGENDA_TP_CLOSE', 'Done'), ampm: false, amNames: ['AM', 'A'], pmNames: ['PM', 'P'], timeFormat: 'hh:mm tt', timeSuffix: '', timeOnlyTitle: Joomla.JText._('COM_ICAGENDA_TP_TITLE', 'Choose Time'), timeText: Joomla.JText._('COM_ICAGENDA_TP_TIME', 'Time'), hourText: Joomla.JText._('COM_ICAGENDA_TP_HOUR', 'Hour'), minuteText: Joomla.JText._('COM_ICAGENDA_TP_MINUTE', 'Minute'), secondText: 'Second', millisecText: 'Millisecond', timezoneText: 'Time Zone' }; this._defaults = { // Global defaults for all the datetime picker instances showButtonPanel: true, timeOnly: false, showHour: true, showMinute: true, showSecond: false, showMillisec: false, showTimezone: false, showTime: true, stepHour: 1, stepMinute: 1, stepSecond: 1, stepMillisec: 1, hour: 0, minute: 0, second: 0, millisec: 0, timezone: null, useLocalTimezone: false, defaultTimezone: "+0000", hourMin: 0, minuteMin: 0, secondMin: 0, millisecMin: 0, hourMax: 23, minuteMax: 59, secondMax: 59, millisecMax: 999, minDateTime: null, maxDateTime: null, onSelect: null, hourGrid: 0, minuteGrid: 0, secondGrid: 0, millisecGrid: 0, alwaysSetTime: true, separator: ' ', altFieldTimeOnly: true, altSeparator: null, altTimeSuffix: null, showTimepicker: true, timezoneIso8601: false, timezoneList: null, addSliderAccess: false, sliderAccessArgs: null, defaultValue: null }; $.extend(this._defaults, this.regional['']); } $.extend(Timepicker.prototype, { $input: null, $altInput: null, $timeObj: null, inst: null, hour_slider: null, minute_slider: null, second_slider: null, millisec_slider: null, timezone_select: null, hour: 0, minute: 0, second: 0, millisec: 0, timezone: null, defaultTimezone: "+0000", hourMinOriginal: null, minuteMinOriginal: null, secondMinOriginal: null, millisecMinOriginal: null, hourMaxOriginal: null, minuteMaxOriginal: null, secondMaxOriginal: null, millisecMaxOriginal: null, ampm: '', formattedDate: '', formattedTime: '', formattedDateTime: '', timezoneList: null, units: ['hour','minute','second','millisec'], /* * Override the default settings for all instances of the time picker. * @param settings object - the new settings to use as defaults (anonymous object) * @return the manager object */ setDefaults: function(settings) { extendRemove(this._defaults, settings || {}); return this; }, /* * Create a new Timepicker instance */ _newInst: function($input, o) { var tp_inst = new Timepicker(), inlineSettings = {}; for (var attrName in this._defaults) { if(this._defaults.hasOwnProperty(attrName)){ var attrValue = $input.attr('time:' + attrName); if (attrValue) { try { inlineSettings[attrName] = eval(attrValue); } catch (err) { inlineSettings[attrName] = attrValue; } } } } tp_inst._defaults = $.extend({}, this._defaults, inlineSettings, o, { beforeShow: function(input, dp_inst) { if ($.isFunction(o.beforeShow)) { return o.beforeShow(input, dp_inst, tp_inst); } }, onChangeMonthYear: function(year, month, dp_inst) { // Update the time as well : this prevents the time from disappearing from the $input field. tp_inst._updateDateTime(dp_inst); if ($.isFunction(o.onChangeMonthYear)) { o.onChangeMonthYear.call($input[0], year, month, dp_inst, tp_inst); } }, onClose: function(dateText, dp_inst) { if (tp_inst.timeDefined === true && $input.val() !== '') { tp_inst._updateDateTime(dp_inst); } if ($.isFunction(o.onClose)) { o.onClose.call($input[0], dateText, dp_inst, tp_inst); } }, timepicker: tp_inst // add timepicker as a property of datepicker: $.datepicker._get(dp_inst, 'timepicker'); }); tp_inst.amNames = $.map(tp_inst._defaults.amNames, function(val) { return val.toUpperCase(); }); tp_inst.pmNames = $.map(tp_inst._defaults.pmNames, function(val) { return val.toUpperCase(); }); if (tp_inst._defaults.timezoneList === null) { var timezoneList = ['-1200', '-1100', '-1000', '-0930', '-0900', '-0800', '-0700', '-0600', '-0500', '-0430', '-0400', '-0330', '-0300', '-0200', '-0100', '+0000', '+0100', '+0200', '+0300', '+0330', '+0400', '+0430', '+0500', '+0530', '+0545', '+0600', '+0630', '+0700', '+0800', '+0845', '+0900', '+0930', '+1000', '+1030', '+1100', '+1130', '+1200', '+1245', '+1300', '+1400']; if (tp_inst._defaults.timezoneIso8601) { timezoneList = $.map(timezoneList, function(val) { return val == '+0000' ? 'Z' : (val.substring(0, 3) + ':' + val.substring(3)); }); } tp_inst._defaults.timezoneList = timezoneList; } tp_inst.timezone = tp_inst._defaults.timezone; tp_inst.hour = tp_inst._defaults.hour; tp_inst.minute = tp_inst._defaults.minute; tp_inst.second = tp_inst._defaults.second; tp_inst.millisec = tp_inst._defaults.millisec; tp_inst.ampm = ''; tp_inst.$input = $input; if (o.altField) { tp_inst.$altInput = $(o.altField).css({ cursor: 'pointer' }).focus(function() { $input.trigger("focus"); }); } if (tp_inst._defaults.minDate === 0 || tp_inst._defaults.minDateTime === 0) { tp_inst._defaults.minDate = new Date(); } if (tp_inst._defaults.maxDate === 0 || tp_inst._defaults.maxDateTime === 0) { tp_inst._defaults.maxDate = new Date(); } // datepicker needs minDate/maxDate, timepicker needs minDateTime/maxDateTime.. if (tp_inst._defaults.minDate !== undefined && tp_inst._defaults.minDate instanceof Date) { tp_inst._defaults.minDateTime = new Date(tp_inst._defaults.minDate.getTime()); } if (tp_inst._defaults.minDateTime !== undefined && tp_inst._defaults.minDateTime instanceof Date) { tp_inst._defaults.minDate = new Date(tp_inst._defaults.minDateTime.getTime()); } if (tp_inst._defaults.maxDate !== undefined && tp_inst._defaults.maxDate instanceof Date) { tp_inst._defaults.maxDateTime = new Date(tp_inst._defaults.maxDate.getTime()); } if (tp_inst._defaults.maxDateTime !== undefined && tp_inst._defaults.maxDateTime instanceof Date) { tp_inst._defaults.maxDate = new Date(tp_inst._defaults.maxDateTime.getTime()); } tp_inst.$input.bind('focus', function() { tp_inst._onFocus(); }); return tp_inst; }, /* * add our sliders to the calendar */ _addTimePicker: function(dp_inst) { var currDT = (this.$altInput && this._defaults.altFieldTimeOnly) ? this.$input.val() + ' ' + this.$altInput.val() : this.$input.val(); this.timeDefined = this._parseTime(currDT); this._limitMinMaxDateTime(dp_inst, false); this._injectTimePicker(); }, /* * parse the time string from input value or _setTime */ _parseTime: function(timeString, withDate) { if (!this.inst) { this.inst = $.datepicker._getInst(this.$input[0]); } if (withDate || !this._defaults.timeOnly) { var dp_dateFormat = $.datepicker._get(this.inst, 'dateFormat'); try { var parseRes = parseDateTimeInternal(dp_dateFormat, this._defaults.timeFormat, timeString, $.datepicker._getFormatConfig(this.inst), this._defaults); if (!parseRes.timeObj) { return false; } $.extend(this, parseRes.timeObj); } catch (err) { return false; } return true; } else { var timeObj = $.datepicker.parseTime(this._defaults.timeFormat, timeString, this._defaults); if (!timeObj) { return false; } $.extend(this, timeObj); return true; } }, /* * generate and inject html for timepicker into ui datepicker */ _injectTimePicker: function() { var $dp = this.inst.dpDiv, o = this.inst.settings, tp_inst = this, litem = '', uitem = '', max = {}, gridSize = {}, size = null; // Prevent displaying twice if ($dp.find("div.ui-timepicker-div").length === 0 && o.showTimepicker) { var noDisplay = ' style="display:none;"', html = '<div class="ui-timepicker-div"><dl>' + '<dt class="ui_tpicker_time_label"' + ((o.showTime) ? '' : noDisplay) + '>' + o.timeText + '</dt>' + '<dd class="ui_tpicker_time"' + ((o.showTime) ? '' : noDisplay) + '></dd>'; // Create the markup for(var i=0,l=this.units.length; i<l; i++){ litem = this.units[i]; uitem = litem.substr(0,1).toUpperCase() + litem.substr(1); // Added by Peter Medeiros: // - Figure out what the hour/minute/second max should be based on the step values. // - Example: if stepMinute is 15, then minMax is 45. max[litem] = parseInt((o[litem+'Max'] - ((o[litem+'Max'] - o[litem+'Min']) % o['step'+uitem])), 10); gridSize[litem] = 0; html += '<dt class="ui_tpicker_'+ litem +'_label"' + ((o['show'+uitem]) ? '' : noDisplay) + '>' + o[litem +'Text'] + '</dt>' + '<dd class="ui_tpicker_'+ litem +'"><div class="ui_tpicker_'+ litem +'_slider"' + ((o['show'+uitem]) ? '' : noDisplay) + '></div>'; if (o['show'+uitem] && o[litem+'Grid'] > 0) { html += '<div style="padding-left: 1px"><table class="ui-tpicker-grid-label"><tr>'; if(litem == 'hour'){ for (var h = o[litem+'Min']; h <= max[litem]; h += parseInt(o[litem+'Grid'], 10)) { gridSize[litem]++; var tmph = (o.ampm && h > 12) ? h - 12 : h; if (tmph < 10) { tmph = '0' + tmph; } if (o.ampm) { if (h === 0) { tmph = 12 + 'a'; } else { if (h < 12) { tmph += 'a'; } else { tmph += 'p'; } } } html += '<td data-for="'+litem+'">' + tmph + '</td>'; } } else{ for (var m = o[litem+'Min']; m <= max[litem]; m += parseInt(o[litem+'Grid'], 10)) { gridSize[litem]++; html += '<td data-for="'+litem+'">' + ((m < 10) ? '0' : '') + m + '</td>'; } } html += '</tr></table></div>'; } html += '</dd>'; } // Timezone html += '<dt class="ui_tpicker_timezone_label"' + ((o.showTimezone) ? '' : noDisplay) + '>' + o.timezoneText + '</dt>'; html += '<dd class="ui_tpicker_timezone" ' + ((o.showTimezone) ? '' : noDisplay) + '></dd>'; // Create the elements from string html += '</dl></div>'; var $tp = $(html); // if we only want time picker... if (o.timeOnly === true) { $tp.prepend('<div class="ui-widget-header ui-helper-clearfix ui-corner-all">' + '<div class="ui-datepicker-title">' + o.timeOnlyTitle + '</div>' + '</div>'); $dp.find('.ui-datepicker-header, .ui-datepicker-calendar').hide(); } // Updated by Peter Medeiros: // - Pass in Event and UI instance into slide function this.hour_slider = $tp.find('.ui_tpicker_hour_slider').prop('slide', null).slider({ orientation: "horizontal", value: this.hour, min: o.hourMin, max: max.hour, step: o.stepHour, slide: function(event, ui) { tp_inst.hour_slider.slider("option", "value", ui.value); tp_inst._onTimeChange(); }, stop: function(event, ui) { tp_inst._onSelectHandler(); } }); this.minute_slider = $tp.find('.ui_tpicker_minute_slider').prop('slide', null).slider({ orientation: "horizontal", value: this.minute, min: o.minuteMin, max: max.minute, step: o.stepMinute, slide: function(event, ui) { tp_inst.minute_slider.slider("option", "value", ui.value); tp_inst._onTimeChange(); }, stop: function(event, ui) { tp_inst._onSelectHandler(); } }); this.second_slider = $tp.find('.ui_tpicker_second_slider').prop('slide', null).slider({ orientation: "horizontal", value: this.second, min: o.secondMin, max: max.second, step: o.stepSecond, slide: function(event, ui) { tp_inst.second_slider.slider("option", "value", ui.value); tp_inst._onTimeChange(); }, stop: function(event, ui) { tp_inst._onSelectHandler(); } }); this.millisec_slider = $tp.find('.ui_tpicker_millisec_slider').prop('slide', null).slider({ orientation: "horizontal", value: this.millisec, min: o.millisecMin, max: max.millisec, step: o.stepMillisec, slide: function(event, ui) { tp_inst.millisec_slider.slider("option", "value", ui.value); tp_inst._onTimeChange(); }, stop: function(event, ui) { tp_inst._onSelectHandler(); } }); // add sliders, adjust grids, add events for(var i=0,l=tp_inst.units.length; i<l; i++){ litem = tp_inst.units[i]; uitem = litem.substr(0,1).toUpperCase() + litem.substr(1); /* Something fishy happens when assigning to tp_inst['hour_slider'] instead of tp_inst.hour_slider, I think it is because it is assigned as a prototype. Clicking the slider will always change to the previous value not the new one clicked. Ideally this works and reduces the 80+ lines of code above // add the slider tp_inst[litem+'_slider'] = $tp.find('.ui_tpicker_'+litem+'_slider').prop('slide', null).slider({ orientation: "horizontal", value: tp_inst[litem], min: o[litem+'Min'], max: max[litem], step: o['step'+uitem], slide: function(event, ui) { tp_inst[litem+'_slider'].slider("option", "value", ui.value); tp_inst._onTimeChange(); }, stop: function(event, ui) { //Emulate datepicker onSelect behavior. Call on slidestop. tp_inst._onSelectHandler(); } }); */ // adjust the grid and add click event if (o['show'+uitem] && o[litem+'Grid'] > 0) { size = 100 * gridSize[litem] * o[litem+'Grid'] / (max[litem] - o[litem+'Min']); $tp.find('.ui_tpicker_'+litem+' table').css({ width: size + "%", marginLeft: (size / (-2 * gridSize[litem])) + "%", borderCollapse: 'collapse' }).find("td").click(function(e){ var $t = $(this), h = $t.html() f = $t.data('for'); // loses scope, so we use data-for if (f == 'hour' && o.ampm) { var ap = h.substring(2).toLowerCase(), aph = parseInt(h.substring(0, 2), 10); if (ap == 'a') { if (aph == 12) { h = 0; } else { h = aph; } } else if (aph == 12) { h = 12; } else { h = aph + 12; } } tp_inst[f+'_slider'].slider("option", "value", parseInt(h,10)); tp_inst._onTimeChange(); tp_inst._onSelectHandler(); }) .css({ cursor: 'pointer', width: (100 / gridSize[litem]) + '%', textAlign: 'center', overflow: 'hidden' }); } // end if grid > 0 } // end for loop // Add timezone options this.timezone_select = $tp.find('.ui_tpicker_timezone').append('<select></select>').find("select"); $.fn.append.apply(this.timezone_select, $.map(o.timezoneList, function(val, idx) { return $("<option />").val(typeof val == "object" ? val.value : val).text(typeof val == "object" ? val.label : val); })); if (typeof(this.timezone) != "undefined" && this.timezone !== null && this.timezone !== "") { var local_date = new Date(this.inst.selectedYear, this.inst.selectedMonth, this.inst.selectedDay, 12); var local_timezone = $.timepicker.timeZoneOffsetString(local_date); if (local_timezone == this.timezone) { selectLocalTimeZone(tp_inst); } else { this.timezone_select.val(this.timezone); } } else { if (typeof(this.hour) != "undefined" && this.hour !== null && this.hour !== "") { this.timezone_select.val(o.defaultTimezone); } else { selectLocalTimeZone(tp_inst); } } this.timezone_select.change(function() { tp_inst._defaults.useLocalTimezone = false; tp_inst._onTimeChange(); }); // End timezone options // inject timepicker into datepicker var $buttonPanel = $dp.find('.ui-datepicker-buttonpane'); if ($buttonPanel.length) { $buttonPanel.before($tp); } else { $dp.append($tp); } this.$timeObj = $tp.find('.ui_tpicker_time'); if (this.inst !== null) { var timeDefined = this.timeDefined; this._onTimeChange(); this.timeDefined = timeDefined; } // slideAccess integration: http://trentrichardson.com/2011/11/11/jquery-ui-sliders-and-touch-accessibility/ if (this._defaults.addSliderAccess) { var sliderAccessArgs = this._defaults.sliderAccessArgs; setTimeout(function() { // fix for inline mode if ($tp.find('.ui-slider-access').length === 0) { $tp.find('.ui-slider:visible').sliderAccess(sliderAccessArgs); // fix any grids since sliders are shorter var sliderAccessWidth = $tp.find('.ui-slider-access:eq(0)').outerWidth(true); if (sliderAccessWidth) { $tp.find('table:visible').each(function() { var $g = $(this), oldWidth = $g.outerWidth(), oldMarginLeft = $g.css('marginLeft').toString().replace('%', ''), newWidth = oldWidth - sliderAccessWidth, newMarginLeft = ((oldMarginLeft * newWidth) / oldWidth) + '%'; $g.css({ width: newWidth, marginLeft: newMarginLeft }); }); } } }, 10); } // end slideAccess integration } }, /* * This function tries to limit the ability to go outside the * min/max date range */ _limitMinMaxDateTime: function(dp_inst, adjustSliders) { var o = this._defaults, dp_date = new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay); if (!this._defaults.showTimepicker) { return; } // No time so nothing to check here if ($.datepicker._get(dp_inst, 'minDateTime') !== null && $.datepicker._get(dp_inst, 'minDateTime') !== undefined && dp_date) { var minDateTime = $.datepicker._get(dp_inst, 'minDateTime'), minDateTimeDate = new Date(minDateTime.getFullYear(), minDateTime.getMonth(), minDateTime.getDate(), 0, 0, 0, 0); if (this.hourMinOriginal === null || this.minuteMinOriginal === null || this.secondMinOriginal === null || this.millisecMinOriginal === null) { this.hourMinOriginal = o.hourMin; this.minuteMinOriginal = o.minuteMin; this.secondMinOriginal = o.secondMin; this.millisecMinOriginal = o.millisecMin; } if (dp_inst.settings.timeOnly || minDateTimeDate.getTime() == dp_date.getTime()) { this._defaults.hourMin = minDateTime.getHours(); if (this.hour <= this._defaults.hourMin) { this.hour = this._defaults.hourMin; this._defaults.minuteMin = minDateTime.getMinutes(); if (this.minute <= this._defaults.minuteMin) { this.minute = this._defaults.minuteMin; this._defaults.secondMin = minDateTime.getSeconds(); if (this.second <= this._defaults.secondMin) { this.second = this._defaults.secondMin; this._defaults.millisecMin = minDateTime.getMilliseconds(); } else { if (this.millisec < this._defaults.millisecMin) { this.millisec = this._defaults.millisecMin; } this._defaults.millisecMin = this.millisecMinOriginal; } } else { this._defaults.secondMin = this.secondMinOriginal; this._defaults.millisecMin = this.millisecMinOriginal; } } else { this._defaults.minuteMin = this.minuteMinOriginal; this._defaults.secondMin = this.secondMinOriginal; this._defaults.millisecMin = this.millisecMinOriginal; } } else { this._defaults.hourMin = this.hourMinOriginal; this._defaults.minuteMin = this.minuteMinOriginal; this._defaults.secondMin = this.secondMinOriginal; this._defaults.millisecMin = this.millisecMinOriginal; } } if ($.datepicker._get(dp_inst, 'maxDateTime') !== null && $.datepicker._get(dp_inst, 'maxDateTime') !== undefined && dp_date) { var maxDateTime = $.datepicker._get(dp_inst, 'maxDateTime'), maxDateTimeDate = new Date(maxDateTime.getFullYear(), maxDateTime.getMonth(), maxDateTime.getDate(), 0, 0, 0, 0); if (this.hourMaxOriginal === null || this.minuteMaxOriginal === null || this.secondMaxOriginal === null) { this.hourMaxOriginal = o.hourMax; this.minuteMaxOriginal = o.minuteMax; this.secondMaxOriginal = o.secondMax; this.millisecMaxOriginal = o.millisecMax; } if (dp_inst.settings.timeOnly || maxDateTimeDate.getTime() == dp_date.getTime()) { this._defaults.hourMax = maxDateTime.getHours(); if (this.hour >= this._defaults.hourMax) { this.hour = this._defaults.hourMax; this._defaults.minuteMax = maxDateTime.getMinutes(); if (this.minute >= this._defaults.minuteMax) { this.minute = this._defaults.minuteMax; this._defaults.secondMax = maxDateTime.getSeconds(); } else if (this.second >= this._defaults.secondMax) { this.second = this._defaults.secondMax; this._defaults.millisecMax = maxDateTime.getMilliseconds(); } else { if (this.millisec > this._defaults.millisecMax) { this.millisec = this._defaults.millisecMax; } this._defaults.millisecMax = this.millisecMaxOriginal; } } else { this._defaults.minuteMax = this.minuteMaxOriginal; this._defaults.secondMax = this.secondMaxOriginal; this._defaults.millisecMax = this.millisecMaxOriginal; } } else { this._defaults.hourMax = this.hourMaxOriginal; this._defaults.minuteMax = this.minuteMaxOriginal; this._defaults.secondMax = this.secondMaxOriginal; this._defaults.millisecMax = this.millisecMaxOriginal; } } if (adjustSliders !== undefined && adjustSliders === true) { var hourMax = parseInt((this._defaults.hourMax - ((this._defaults.hourMax - this._defaults.hourMin) % this._defaults.stepHour)), 10), minMax = parseInt((this._defaults.minuteMax - ((this._defaults.minuteMax - this._defaults.minuteMin) % this._defaults.stepMinute)), 10), secMax = parseInt((this._defaults.secondMax - ((this._defaults.secondMax - this._defaults.secondMin) % this._defaults.stepSecond)), 10), millisecMax = parseInt((this._defaults.millisecMax - ((this._defaults.millisecMax - this._defaults.millisecMin) % this._defaults.stepMillisec)), 10); if (this.hour_slider) { this.hour_slider.slider("option", { min: this._defaults.hourMin, max: hourMax }).slider('value', this.hour); } if (this.minute_slider) { this.minute_slider.slider("option", { min: this._defaults.minuteMin, max: minMax }).slider('value', this.minute); } if (this.second_slider) { this.second_slider.slider("option", { min: this._defaults.secondMin, max: secMax }).slider('value', this.second); } if (this.millisec_slider) { this.millisec_slider.slider("option", { min: this._defaults.millisecMin, max: millisecMax }).slider('value', this.millisec); } } }, /* * when a slider moves, set the internal time... * on time change is also called when the time is updated in the text field */ _onTimeChange: function() { var hour = (this.hour_slider) ? this.hour_slider.slider('value') : false, minute = (this.minute_slider) ? this.minute_slider.slider('value') : false, second = (this.second_slider) ? this.second_slider.slider('value') : false, millisec = (this.millisec_slider) ? this.millisec_slider.slider('value') : false, timezone = (this.timezone_select) ? this.timezone_select.val() : false, o = this._defaults; if (typeof(hour) == 'object') { hour = false; } if (typeof(minute) == 'object') { minute = false; } if (typeof(second) == 'object') { second = false; } if (typeof(millisec) == 'object') { millisec = false; } if (typeof(timezone) == 'object') { timezone = false; } if (hour !== false) { hour = parseInt(hour, 10); } if (minute !== false) { minute = parseInt(minute, 10); } if (second !== false) { second = parseInt(second, 10); } if (millisec !== false) { millisec = parseInt(millisec, 10); } var ampm = o[hour < 12 ? 'amNames' : 'pmNames'][0]; // If the update was done in the input field, the input field should not be updated. // If the update was done using the sliders, update the input field. var hasChanged = (hour != this.hour || minute != this.minute || second != this.second || millisec != this.millisec || (this.ampm.length > 0 && (hour < 12) != ($.inArray(this.ampm.toUpperCase(), this.amNames) !== -1)) || ((this.timezone === null && timezone != this.defaultTimezone) || (this.timezone !== null && timezone != this.timezone))); if (hasChanged) { if (hour !== false) { this.hour = hour; } if (minute !== false) { this.minute = minute; } if (second !== false) { this.second = second; } if (millisec !== false) { this.millisec = millisec; } if (timezone !== false) { this.timezone = timezone; } if (!this.inst) { this.inst = $.datepicker._getInst(this.$input[0]); } this._limitMinMaxDateTime(this.inst, true); } if (o.ampm) { this.ampm = ampm; } //this._formatTime(); this.formattedTime = $.datepicker.formatTime(this._defaults.timeFormat, this, this._defaults); if (this.$timeObj) { this.$timeObj.text(this.formattedTime + o.timeSuffix); } this.timeDefined = true; if (hasChanged) { this._updateDateTime(); } }, /* * call custom onSelect. * bind to sliders slidestop, and grid click. */ _onSelectHandler: function() { var onSelect = this._defaults.onSelect || this.inst.settings.onSelect; var inputEl = this.$input ? this.$input[0] : null; if (onSelect && inputEl) { onSelect.apply(inputEl, [this.formattedDateTime, this]); } }, /* * left for any backwards compatibility */ _formatTime: function(time, format) { time = time || { hour: this.hour, minute: this.minute, second: this.second, millisec: this.millisec, ampm: this.ampm, timezone: this.timezone }; var tmptime = (format || this._defaults.timeFormat).toString(); tmptime = $.datepicker.formatTime(tmptime, time, this._defaults); if (arguments.length) { return tmptime; } else { this.formattedTime = tmptime; } }, /* * update our input with the new date time.. */ _updateDateTime: function(dp_inst) { dp_inst = this.inst || dp_inst; var dt = $.datepicker._daylightSavingAdjust(new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)), dateFmt = $.datepicker._get(dp_inst, 'dateFormat'), formatCfg = $.datepicker._getFormatConfig(dp_inst), timeAvailable = dt !== null && this.timeDefined; this.formattedDate = $.datepicker.formatDate(dateFmt, (dt === null ? new Date() : dt), formatCfg); var formattedDateTime = this.formattedDate; /* * remove following lines to force every changes in date picker to change the input value * Bug descriptions: when an input field has a default value, and click on the field to pop up the date picker. * If the user manually empty the value in the input field, the date picker will never change selected value. */ //if (dp_inst.lastVal !== undefined && (dp_inst.lastVal.length > 0 && this.$input.val().length === 0)) { // return; //} if (this._defaults.timeOnly === true) { formattedDateTime = this.formattedTime; } else if (this._defaults.timeOnly !== true && (this._defaults.alwaysSetTime || timeAvailable)) { formattedDateTime += this._defaults.separator + this.formattedTime + this._defaults.timeSuffix; } this.formattedDateTime = formattedDateTime; if (!this._defaults.showTimepicker) { this.$input.val(this.formattedDate); } else if (this.$altInput && this._defaults.altFieldTimeOnly === true) { this.$altInput.val(this.formattedTime); this.$input.val(this.formattedDate); } else if (this.$altInput) { this.$input.val(formattedDateTime); var altFormattedDateTime = '', altSeparator = this._defaults.altSeparator ? this._defaults.altSeparator : this._defaults.separator, altTimeSuffix = this._defaults.altTimeSuffix ? this._defaults.altTimeSuffix : this._defaults.timeSuffix; if (this._defaults.altFormat) altFormattedDateTime = $.datepicker.formatDate(this._defaults.altFormat, (dt === null ? new Date() : dt), formatCfg); else altFormattedDateTime = this.formattedDate; if (altFormattedDateTime) altFormattedDateTime += altSeparator; if (this._defaults.altTimeFormat) altFormattedDateTime += $.datepicker.formatTime(this._defaults.altTimeFormat, this, this._defaults) + altTimeSuffix; else altFormattedDateTime += this.formattedTime + altTimeSuffix; this.$altInput.val(altFormattedDateTime); } else { this.$input.val(formattedDateTime); } this.$input.trigger("change"); }, _onFocus: function() { if (!this.$input.val() && this._defaults.defaultValue) { this.$input.val(this._defaults.defaultValue); var inst = $.datepicker._getInst(this.$input.get(0)), tp_inst = $.datepicker._get(inst, 'timepicker'); if (tp_inst) { if (tp_inst._defaults.timeOnly && (inst.input.val() != inst.lastVal)) { try { $.datepicker._updateDatepicker(inst); } catch (err) { $.datepicker.log(err); } } } } } }); $.fn.extend({ /* * shorthand just to use timepicker.. */ timepicker: function(o) { o = o || {}; var tmp_args = Array.prototype.slice.call(arguments); if (typeof o == 'object') { tmp_args[0] = $.extend(o, { timeOnly: true }); } return $(this).each(function() { $.fn.datetimepicker.apply($(this), tmp_args); }); }, /* * extend timepicker to datepicker */ datetimepicker: function(o) { o = o || {}; var tmp_args = arguments; if (typeof(o) == 'string') { if (o == 'getDate') { return $.fn.datepicker.apply($(this[0]), tmp_args); } else { return this.each(function() { var $t = $(this); $t.datepicker.apply($t, tmp_args); }); } } else { return this.each(function() { var $t = $(this); $t.datepicker($.timepicker._newInst($t, o)._defaults); }); } } }); /* * Public Utility to parse date and time */ $.datepicker.parseDateTime = function(dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings) { var parseRes = parseDateTimeInternal(dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings); if (parseRes.timeObj) { var t = parseRes.timeObj; parseRes.date.setHours(t.hour, t.minute, t.second, t.millisec); } return parseRes.date; }; /* * Public utility to parse time */ $.datepicker.parseTime = function(timeFormat, timeString, options) { // pattern for standard and localized AM/PM markers var getPatternAmpm = function(amNames, pmNames) { var markers = []; if (amNames) { $.merge(markers, amNames); } if (pmNames) { $.merge(markers, pmNames); } markers = $.map(markers, function(val) { return val.replace(/[.*+?|()\[\]{}\\]/g, '\\$&'); }); return '(' + markers.join('|') + ')?'; }; // figure out position of time elements.. cause js cant do named captures var getFormatPositions = function(timeFormat) { var finds = timeFormat.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|t{1,2}|z)/g), orders = { h: -1, m: -1, s: -1, l: -1, t: -1, z: -1 }; if (finds) { for (var i = 0; i < finds.length; i++) { if (orders[finds[i].toString().charAt(0)] == -1) { orders[finds[i].toString().charAt(0)] = i + 1; } } } return orders; }; var o = extendRemove(extendRemove({}, $.timepicker._defaults), options || {}); var regstr = '^' + timeFormat.toString() .replace(/h{1,2}/ig, '(\\d?\\d)') .replace(/m{1,2}/ig, '(\\d?\\d)') .replace(/s{1,2}/ig, '(\\d?\\d)') .replace(/l{1}/ig, '(\\d?\\d?\\d)') .replace(/t{1,2}/ig, getPatternAmpm(o.amNames, o.pmNames)) .replace(/z{1}/ig, '(z|[-+]\\d\\d:?\\d\\d|\\S+)?') .replace(/\s/g, '\\s?') + o.timeSuffix + '$', order = getFormatPositions(timeFormat), ampm = '', treg; treg = timeString.match(new RegExp(regstr, 'i')); var resTime = { hour: 0, minute: 0, second: 0, millisec: 0 }; if (treg) { if (order.t !== -1) { if (treg[order.t] === undefined || treg[order.t].length === 0) { ampm = ''; resTime.ampm = ''; } else { ampm = $.inArray(treg[order.t].toUpperCase(), o.amNames) !== -1 ? 'AM' : 'PM'; resTime.ampm = o[ampm == 'AM' ? 'amNames' : 'pmNames'][0]; } } if (order.h !== -1) { if (ampm == 'AM' && treg[order.h] == '12') { resTime.hour = 0; // 12am = 0 hour } else { if (ampm == 'PM' && treg[order.h] != '12') { resTime.hour = parseInt(treg[order.h], 10) + 12; // 12pm = 12 hour, any other pm = hour + 12 } else { resTime.hour = Number(treg[order.h]); } } } if (order.m !== -1) { resTime.minute = Number(treg[order.m]); } if (order.s !== -1) { resTime.second = Number(treg[order.s]); } if (order.l !== -1) { resTime.millisec = Number(treg[order.l]); } if (order.z !== -1 && treg[order.z] !== undefined) { var tz = treg[order.z].toUpperCase(); switch (tz.length) { case 1: // Z tz = o.timezoneIso8601 ? 'Z' : '+0000'; break; case 5: // +hhmm if (o.timezoneIso8601) { tz = tz.substring(1) == '0000' ? 'Z' : tz.substring(0, 3) + ':' + tz.substring(3); } break; case 6: // +hh:mm if (!o.timezoneIso8601) { tz = tz == 'Z' || tz.substring(1) == '00:00' ? '+0000' : tz.replace(/:/, ''); } else { if (tz.substring(1) == '00:00') { tz = 'Z'; } } break; } resTime.timezone = tz; } return resTime; } return false; }; /* * Public utility to format the time * format = string format of the time * time = a {}, not a Date() for timezones * options = essentially the regional[].. amNames, pmNames, ampm */ $.datepicker.formatTime = function(format, time, options) { options = options || {}; options = $.extend({}, $.timepicker._defaults, options); time = $.extend({ hour: 0, minute: 0, second: 0, millisec: 0, timezone: '+0000' }, time); var tmptime = format; var ampmName = options.amNames[0]; var hour = parseInt(time.hour, 10); if (options.ampm) { if (hour > 11) { ampmName = options.pmNames[0]; if (hour > 12) { hour = hour % 12; } } if (hour === 0) { hour = 12; } } tmptime = tmptime.replace(/(?:hh?|mm?|ss?|[tT]{1,2}|[lz]|('.*?'|".*?"))/g, function(match) { switch (match.toLowerCase()) { case 'hh': return ('0' + hour).slice(-2); case 'h': return hour; case 'mm': return ('0' + time.minute).slice(-2); case 'm': return time.minute; case 'ss': return ('0' + time.second).slice(-2); case 's': return time.second; case 'l': return ('00' + time.millisec).slice(-3); case 'z': return time.timezone; case 't': case 'tt': if (options.ampm) { if (match.length == 1) { ampmName = ampmName.charAt(0); } return match.charAt(0) === 'T' ? ampmName.toUpperCase() : ampmName.toLowerCase(); } return ''; default: return match.replace(/\'/g, "") || "'"; } }); tmptime = $.trim(tmptime); return tmptime; }; /* * the bad hack :/ override datepicker so it doesnt close on select // inspired: http://stackoverflow.com/questions/1252512/jquery-datepicker-prevent-closing-picker-when-clicking-a-date/1762378#1762378 */ $.datepicker._base_selectDate = $.datepicker._selectDate; $.datepicker._selectDate = function(id, dateStr) { var inst = this._getInst($(id)[0]), tp_inst = this._get(inst, 'timepicker'); if (tp_inst) { tp_inst._limitMinMaxDateTime(inst, true); inst.inline = inst.stay_open = true; //This way the onSelect handler called from calendarpicker get the full dateTime this._base_selectDate(id, dateStr); inst.inline = inst.stay_open = false; this._notifyChange(inst); this._updateDatepicker(inst); } else { this._base_selectDate(id, dateStr); } }; /* * second bad hack :/ override datepicker so it triggers an event when changing the input field * and does not redraw the datepicker on every selectDate event */ $.datepicker._base_updateDatepicker = $.datepicker._updateDatepicker; $.datepicker._updateDatepicker = function(inst) { // don't popup the datepicker if there is another instance already opened var input = inst.input[0]; if ($.datepicker._curInst && $.datepicker._curInst != inst && $.datepicker._datepickerShowing && $.datepicker._lastInput != input) { return; } if (typeof(inst.stay_open) !== 'boolean' || inst.stay_open === false) { this._base_updateDatepicker(inst); // Reload the time control when changing something in the input text field. var tp_inst = this._get(inst, 'timepicker'); if (tp_inst) { tp_inst._addTimePicker(inst); if (tp_inst._defaults.useLocalTimezone) { //checks daylight saving with the new date. var date = new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay, 12); selectLocalTimeZone(tp_inst, date); tp_inst._onTimeChange(); } } } }; /* * third bad hack :/ override datepicker so it allows spaces and colon in the input field */ $.datepicker._base_doKeyPress = $.datepicker._doKeyPress; $.datepicker._doKeyPress = function(event) { var inst = $.datepicker._getInst(event.target), tp_inst = $.datepicker._get(inst, 'timepicker'); if (tp_inst) { if ($.datepicker._get(inst, 'constrainInput')) { var ampm = tp_inst._defaults.ampm, dateChars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')), datetimeChars = tp_inst._defaults.timeFormat.toString() .replace(/[hms]/g, '') .replace(/TT/g, ampm ? 'APM' : '') .replace(/Tt/g, ampm ? 'AaPpMm' : '') .replace(/tT/g, ampm ? 'AaPpMm' : '') .replace(/T/g, ampm ? 'AP' : '') .replace(/tt/g, ampm ? 'apm' : '') .replace(/t/g, ampm ? 'ap' : '') + " " + tp_inst._defaults.separator + tp_inst._defaults.timeSuffix + (tp_inst._defaults.showTimezone ? tp_inst._defaults.timezoneList.join('') : '') + (tp_inst._defaults.amNames.join('')) + (tp_inst._defaults.pmNames.join('')) + dateChars, chr = String.fromCharCode(event.charCode === undefined ? event.keyCode : event.charCode); return event.ctrlKey || (chr < ' ' || !dateChars || datetimeChars.indexOf(chr) > -1); } } return $.datepicker._base_doKeyPress(event); }; /* * Override key up event to sync manual input changes. */ $.datepicker._base_doKeyUp = $.datepicker._doKeyUp; $.datepicker._doKeyUp = function(event) { var inst = $.datepicker._getInst(event.target), tp_inst = $.datepicker._get(inst, 'timepicker'); if (tp_inst) { if (tp_inst._defaults.timeOnly && (inst.input.val() != inst.lastVal)) { try { $.datepicker._updateDatepicker(inst); } catch (err) { $.datepicker.log(err); } } } return $.datepicker._base_doKeyUp(event); }; /* * override "Today" button to also grab the time. */ $.datepicker._base_gotoToday = $.datepicker._gotoToday; $.datepicker._gotoToday = function(id) { var inst = this._getInst($(id)[0]), $dp = inst.dpDiv; this._base_gotoToday(id); var tp_inst = this._get(inst, 'timepicker'); selectLocalTimeZone(tp_inst); var now = new Date(); this._setTime(inst, now); $('.ui-datepicker-today', $dp).click(); }; /* * Disable & enable the Time in the datetimepicker */ $.datepicker._disableTimepickerDatepicker = function(target) { var inst = this._getInst(target); if (!inst) { return; } var tp_inst = this._get(inst, 'timepicker'); $(target).datepicker('getDate'); // Init selected[Year|Month|Day] if (tp_inst) { tp_inst._defaults.showTimepicker = false; tp_inst._updateDateTime(inst); } }; $.datepicker._enableTimepickerDatepicker = function(target) { var inst = this._getInst(target); if (!inst) { return; } var tp_inst = this._get(inst, 'timepicker'); $(target).datepicker('getDate'); // Init selected[Year|Month|Day] if (tp_inst) { tp_inst._defaults.showTimepicker = true; tp_inst._addTimePicker(inst); // Could be disabled on page load tp_inst._updateDateTime(inst); } }; /* * Create our own set time function */ $.datepicker._setTime = function(inst, date) { var tp_inst = this._get(inst, 'timepicker'); if (tp_inst) { var defaults = tp_inst._defaults, // calling _setTime with no date sets time to defaults hour = date ? date.getHours() : defaults.hour, minute = date ? date.getMinutes() : defaults.minute, second = date ? date.getSeconds() : defaults.second, millisec = date ? date.getMilliseconds() : defaults.millisec; //check if within min/max times.. // correct check if within min/max times. // Rewritten by Scott A. Woodward var hourEq = hour === defaults.hourMin, minuteEq = minute === defaults.minuteMin, secondEq = second === defaults.secondMin; var reset = false; if (hour < defaults.hourMin || hour > defaults.hourMax) reset = true; else if ((minute < defaults.minuteMin || minute > defaults.minuteMax) && hourEq) reset = true; else if ((second < defaults.secondMin || second > defaults.secondMax) && hourEq && minuteEq) reset = true; else if ((millisec < defaults.millisecMin || millisec > defaults.millisecMax) && hourEq && minuteEq && secondEq) reset = true; if (reset) { hour = defaults.hourMin; minute = defaults.minuteMin; second = defaults.secondMin; millisec = defaults.millisecMin; } tp_inst.hour = hour; tp_inst.minute = minute; tp_inst.second = second; tp_inst.millisec = millisec; if (tp_inst.hour_slider) tp_inst.hour_slider.slider('value', hour); if (tp_inst.minute_slider) tp_inst.minute_slider.slider('value', minute); if (tp_inst.second_slider) tp_inst.second_slider.slider('value', second); if (tp_inst.millisec_slider) tp_inst.millisec_slider.slider('value', millisec); tp_inst._onTimeChange(); tp_inst._updateDateTime(inst); } }; /* * Create new public method to set only time, callable as $().datepicker('setTime', date) */ $.datepicker._setTimeDatepicker = function(target, date, withDate) { var inst = this._getInst(target); if (!inst) { return; } var tp_inst = this._get(inst, 'timepicker'); if (tp_inst) { this._setDateFromField(inst); var tp_date; if (date) { if (typeof date == "string") { tp_inst._parseTime(date, withDate); tp_date = new Date(); tp_date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec); } else { tp_date = new Date(date.getTime()); } if (tp_date.toString() == 'Invalid Date') { tp_date = undefined; } this._setTime(inst, tp_date); } } }; /* * override setDate() to allow setting time too within Date object */ $.datepicker._base_setDateDatepicker = $.datepicker._setDateDatepicker; $.datepicker._setDateDatepicker = function(target, date) { var inst = this._getInst(target); if (!inst) { return; } var tp_date = (date instanceof Date) ? new Date(date.getTime()) : date; this._updateDatepicker(inst); this._base_setDateDatepicker.apply(this, arguments); this._setTimeDatepicker(target, tp_date, true); }; /* * override getDate() to allow getting time too within Date object */ $.datepicker._base_getDateDatepicker = $.datepicker._getDateDatepicker; $.datepicker._getDateDatepicker = function(target, noDefault) { var inst = this._getInst(target); if (!inst) { return; } var tp_inst = this._get(inst, 'timepicker'); if (tp_inst) { //this._setDateFromField(inst, noDefault); // This keeps setting to today when it shouldn't var date = this._getDate(inst); if (date && tp_inst._parseTime($(target).val(), tp_inst.timeOnly)) { date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec); } return date; } return this._base_getDateDatepicker(target, noDefault); }; /* * override parseDate() because UI 1.8.14 throws an error about "Extra characters" * An option in datapicker to ignore extra format characters would be nicer. */ $.datepicker._base_parseDate = $.datepicker.parseDate; $.datepicker.parseDate = function(format, value, settings) { var splitRes = splitDateTime(format, value, settings); return $.datepicker._base_parseDate(format, splitRes[0], settings); }; /* * override formatDate to set date with time to the input */ $.datepicker._base_formatDate = $.datepicker._formatDate; $.datepicker._formatDate = function(inst, day, month, year) { var tp_inst = this._get(inst, 'timepicker'); if (tp_inst) { tp_inst._updateDateTime(inst); return tp_inst.$input.val(); } return this._base_formatDate(inst); }; /* * override options setter to add time to maxDate(Time) and minDate(Time). MaxDate */ $.datepicker._base_optionDatepicker = $.datepicker._optionDatepicker; $.datepicker._optionDatepicker = function(target, name, value) { var inst = this._getInst(target); if (!inst) { return null; } var tp_inst = this._get(inst, 'timepicker'); if (tp_inst) { var min = null, max = null, onselect = null; if (typeof name == 'string') { // if min/max was set with the string if (name === 'minDate' || name === 'minDateTime') { min = value; } else { if (name === 'maxDate' || name === 'maxDateTime') { max = value; } else { if (name === 'onSelect') { onselect = value; } } } } else { if (typeof name == 'object') { //if min/max was set with the JSON if (name.minDate) { min = name.minDate; } else { if (name.minDateTime) { min = name.minDateTime; } else { if (name.maxDate) { max = name.maxDate; } else { if (name.maxDateTime) { max = name.maxDateTime; } } } } } } if (min) { //if min was set if (min === 0) { min = new Date(); } else { min = new Date(min); } tp_inst._defaults.minDate = min; tp_inst._defaults.minDateTime = min; } else if (max) { //if max was set if (max === 0) { max = new Date(); } else { max = new Date(max); } tp_inst._defaults.maxDate = max; tp_inst._defaults.maxDateTime = max; } else if (onselect) { tp_inst._defaults.onSelect = onselect; } } if (value === undefined) { return this._base_optionDatepicker(target, name); } return this._base_optionDatepicker(target, name, value); }; /* * jQuery extend now ignores nulls! */ function extendRemove(target, props) { $.extend(target, props); for (var name in props) { if (props[name] === null || props[name] === undefined) { target[name] = props[name]; } } return target; } /* * Splits datetime string into date ans time substrings. * Throws exception when date can't be parsed * Returns [dateString, timeString] */ var splitDateTime = function(dateFormat, dateTimeString, dateSettings, timeSettings) { try { // The idea is to get the number separator occurances in datetime and the time format requested (since time has // fewer unknowns, mostly numbers and am/pm). We will use the time pattern to split. var separator = timeSettings && timeSettings.separator ? timeSettings.separator : $.timepicker._defaults.separator, format = timeSettings && timeSettings.timeFormat ? timeSettings.timeFormat : $.timepicker._defaults.timeFormat, ampm = timeSettings && timeSettings.ampm ? timeSettings.ampm : $.timepicker._defaults.ampm, timeParts = format.split(separator), // how many occurances of separator may be in our format? timePartsLen = timeParts.length, allParts = dateTimeString.split(separator), allPartsLen = allParts.length; // because our default ampm=false, but our default format has tt, we need to filter this out if(!ampm){ timeParts = $.trim(format.replace(/t/gi,'')).split(separator); timePartsLen = timeParts.length; } if (allPartsLen > 0) { return [ allParts.splice(0,allPartsLen-timePartsLen).join(separator), allParts.splice(timePartsLen*-1).join(separator) ]; } } catch (err) { if (err.indexOf(":") >= 0) { // Hack! The error message ends with a colon, a space, and // the "extra" characters. We rely on that instead of // attempting to perfectly reproduce the parsing algorithm. var dateStringLength = dateTimeString.length - (err.length - err.indexOf(':') - 2), timeString = dateTimeString.substring(dateStringLength); return [$.trim(dateTimeString.substring(0, dateStringLength)), $.trim(dateTimeString.substring(dateStringLength))]; } else { throw err; } } return [dateTimeString, '']; }; /* * Internal function to parse datetime interval * Returns: {date: Date, timeObj: Object}, where * date - parsed date without time (type Date) * timeObj = {hour: , minute: , second: , millisec: } - parsed time. Optional */ var parseDateTimeInternal = function(dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings) { var date; var splitRes = splitDateTime(dateFormat, dateTimeString, dateSettings, timeSettings); date = $.datepicker._base_parseDate(dateFormat, splitRes[0], dateSettings); if (splitRes[1] !== '') { var timeString = splitRes[1], parsedTime = $.datepicker.parseTime(timeFormat, timeString, timeSettings); if (parsedTime === null) { throw 'Wrong time format'; } return { date: date, timeObj: parsedTime }; } else { return { date: date }; } }; /* * Internal function to set timezone_select to the local timezone */ var selectLocalTimeZone = function(tp_inst, date) { if (tp_inst && tp_inst.timezone_select) { tp_inst._defaults.useLocalTimezone = true; var now = typeof date !== 'undefined' ? date : new Date(); var tzoffset = $.timepicker.timeZoneOffsetString(now); if (tp_inst._defaults.timezoneIso8601) { tzoffset = tzoffset.substring(0, 3) + ':' + tzoffset.substring(3); } tp_inst.timezone_select.val(tzoffset); } }; /* * Create a Singleton Insance */ $.timepicker = new Timepicker(); /** * Get the timezone offset as string from a date object (eg '+0530' for UTC+5.5) * @param date * @return string */ $.timepicker.timeZoneOffsetString = function(date) { var off = date.getTimezoneOffset() * -1, minutes = off % 60, hours = (off - minutes) / 60; return (off >= 0 ? '+' : '-') + ('0' + (hours * 101).toString()).substr(-2) + ('0' + (minutes * 101).toString()).substr(-2); }; /** * Calls `timepicker()` on the `startTime` and `endTime` elements, and configures them to * enforce date range limits. * n.b. The input value must be correctly formatted (reformatting is not supported) * @param Element startTime * @param Element endTime * @param obj options Options for the timepicker() call * @return jQuery */ $.timepicker.timeRange = function(startTime, endTime, options) { return $.timepicker.handleRange('timepicker', startTime, endTime, options); }; /** * Calls `datetimepicker` on the `startTime` and `endTime` elements, and configures them to * enforce date range limits. * @param Element startTime * @param Element endTime * @param obj options Options for the `timepicker()` call. Also supports `reformat`, * a boolean value that can be used to reformat the input values to the `dateFormat`. * @param string method Can be used to specify the type of picker to be added * @return jQuery */ $.timepicker.dateTimeRange = function(startTime, endTime, options) { $.timepicker.dateRange(startTime, endTime, options, 'datetimepicker'); }; /** * Calls `method` on the `startTime` and `endTime` elements, and configures them to * enforce date range limits. * @param Element startTime * @param Element endTime * @param obj options Options for the `timepicker()` call. Also supports `reformat`, * a boolean value that can be used to reformat the input values to the `dateFormat`. * @param string method Can be used to specify the type of picker to be added * @return jQuery */ $.timepicker.dateRange = function(startTime, endTime, options, method) { method = method || 'datepicker'; $.timepicker.handleRange(method, startTime, endTime, options); }; /** * Calls `method` on the `startTime` and `endTime` elements, and configures them to * enforce date range limits. * @param string method Can be used to specify the type of picker to be added * @param Element startTime * @param Element endTime * @param obj options Options for the `timepicker()` call. Also supports `reformat`, * a boolean value that can be used to reformat the input values to the `dateFormat`. * @return jQuery */ $.timepicker.handleRange = function(method, startTime, endTime, options) { $.fn[method].call(startTime, $.extend({ onClose: function(dateText, inst) { checkDates(this, endTime, dateText); }, onSelect: function(selectedDateTime) { selected(this, endTime, 'minDate'); } }, options, options.start)); $.fn[method].call(endTime, $.extend({ onClose: function(dateText, inst) { checkDates(this, startTime, dateText); }, onSelect: function(selectedDateTime) { selected(this, startTime, 'maxDate'); } }, options, options.end)); // timepicker doesn't provide access to its 'timeFormat' option, // nor could I get datepicker.formatTime() to behave with times, so I // have disabled reformatting for timepicker if (method != 'timepicker' && options.reformat) { $([startTime, endTime]).each(function() { var format = $(this)[method].call($(this), 'option', 'dateFormat'), date = new Date($(this).val()); if ($(this).val() && date) { $(this).val($.datepicker.formatDate(format, date)); } }); } checkDates(startTime, endTime, startTime.val()); function checkDates(changed, other, dateText) { if (other.val() && (new Date(startTime.val()) > new Date(endTime.val()))) { other.val(dateText); } } selected(startTime, endTime, 'minDate'); selected(endTime, startTime, 'maxDate'); function selected(changed, other, option) { if (!$(changed).val()) { return; } var date = $(changed)[method].call($(changed), 'getDate'); // timepicker doesn't implement 'getDate' and returns a jQuery if (date.getTime) { $(other)[method].call($(other), 'option', option, date); } } return $([startTime.get(0), endTime.get(0)]); }; /* * Keep up with the version */ $.timepicker.version = "1.0.3"; })(jQuery); PK fa!]b�K�) ) js/jsevt.jsnu &1i� <p><div style="text-align: center; font-size: 10px; text-decoration: none">Powered by <a href="http://www.joomlic.com" target="_blank" style="text-decoration: none !important;"><b>iCagenda</b></a></div></p> PK fa!]�~�vA A js/template.jsnu &1i� /** * @package Joomla.Administrator * @subpackage Templates.isis * @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 3 or later; see LICENSE.txt * @since 3.0 */ (function($) { $(document).ready(function() { $('*[rel=tooltip]').tooltip() // Turn radios into btn-group $('.radio.btn-group label').addClass('btn'); $(".btn-group label:not(.active)").click(function() { var label = $(this); var input = $('#' + label.attr('for')); if (!input.prop('checked')) { label.closest('.btn-group').find("label").removeClass('active btn-success btn-danger btn-primary'); if (input.val() == '') { label.addClass('active btn-primary'); } else if (input.val() == 0) { label.addClass('active btn-danger'); } else { label.addClass('active btn-success'); } input.prop('checked', true); } }); $(".btn-group input[checked=checked]").each(function() { if ($(this).val() == '') { $("label[for=" + $(this).attr('id') + "]").addClass('active btn-primary'); } else if ($(this).val() == 0) { $("label[for=" + $(this).attr('id') + "]").addClass('active btn-danger'); } else { $("label[for=" + $(this).attr('id') + "]").addClass('active btn-success'); } }); }) })(jQuery); PK fa!]��ܹ� � js/icform.jsnu &1i� /** *------------------------------------------------------------------------------ * iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x *------------------------------------------------------------------------------ * @package com_icagenda * @copyright Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved * * @license GNU General Public License version 3 or later; see LICENSE.txt * @author Cyril Rezé (Lyr!C) * @link http://www.joomlic.com * * @version 3.5.0 2015-02-14 * @since 3.4.0 *------------------------------------------------------------------------------ */ /** * Function Text Counter */ function iCtextCounter( field, countfield, maxlimit ) { if ( field.value.length > maxlimit ) { field.value = field.value.substring( 0, maxlimit ); countfield.value = 0; jQuery(field).addClass("ic-counter-limit"); jQuery(countfield).addClass("ic-counter-limit"); return false; } else { countfield.value = maxlimit - field.value.length; jQuery(field).removeClass("ic-counter-limit"); jQuery(countfield).removeClass("ic-counter-limit"); } } /** * fieldname, warningname, remainingname, maxchars // DEV. */ function CheckFieldLength(fn,wn,rn,maxlimit) { var length = fn.value.length; if (length > maxlimit) { fn.value = fn.value.substring(0,maxlimit); length = maxlimit; return false; } document.getElementById(wn).innerHTML = length; document.getElementById(rn).innerHTML = maxlimit - length; } /** * Function in array */ function inArray(needle, haystack) { var length = haystack.length; for(var i = 0; i < length; i++) { if(haystack[i] == needle) return true; } return false; } PK fa!]Tq#� js/jquery.noconflict.jsnu &1i� jQuery.noConflict();PK fa!]��� � js/icmap-front.jsnu &1i� /** *------------------------------------------------------------------------------ * iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x *------------------------------------------------------------------------------ * @package com_icagenda * @copyright Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved * * @license GNU General Public License version 3 or later; see LICENSE.txt * @author Cyril Rezé (Lyr!C) * @link http://www.joomlic.com * * @version 3.4.0 2014-06-08 * @since 1.0 *------------------------------------------------------------------------------ */ var lat var lng var id function iCmapToolTip(marker, message, mapid) { var infowindow = new google.maps.InfoWindow({content: message}); google.maps.event.addListener(marker, 'click', function() { infowindow.open(mapid,marker); }); } function initialize(lat, lng, id){ var latlng = new google.maps.LatLng(lat, lng); var mapOptions = { zoom: 16, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var mapid = 'map'+id; var mapid = new google.maps.Map(document.getElementById('map_canvas'+id), mapOptions); var geocoder = new google.maps.Geocoder(); // Marker // Note: Marker shadows were removed in version 3.14 of the Google Maps JavaScript API. // Any shadows specified programmatically will be ignored. var icagendaimage = new google.maps.MarkerImage('http://www.google.com/mapfiles/marker.png', new google.maps.Size(40, 35), new google.maps.Point(0,0), new google.maps.Point(20, 35)); // var shadow = new google.maps.MarkerImage('http://www.google.com/mapfiles/shadow50.png', // new google.maps.Size(62, 35), // new google.maps.Point(0,0), // new google.maps.Point(20, 35)); var shape = { coord: [1, 1, 1, 40, 40, 40, 40, 1], type: 'poly' }; var marker = new google.maps.Marker({ map: mapid, // shadow: shadow, // icon: icagendaimage, // shape: shape, draggable: false, position: latlng }); // In Dev. : displays tooltip with info of the event // var title = 'title test'; // var desc = 'description test'; // marker.setTitle('title'.toString()); // iCmapToolTip(marker, '<div>'+title+'</div><div>'+desc+'</div>', mapid); } PK fa!]]7q� � js/icagenda.jsnu &1i� /** *------------------------------------------------------------------------------ * iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x *------------------------------------------------------------------------------ * @package com_icagenda * @copyright Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved * * @license GNU General Public License version 3 or later; see LICENSE.txt * @author Cyril Rezé (Lyr!C) * @link http://www.joomlic.com * * @version 3.4.0 2014-12-19 * @since 3.4.0 *------------------------------------------------------------------------------ */ (function($) { $(document).ready(function() { $('*[rel=tooltip]').tooltip() // Turn radios into btn-group $('.ic-radio.ic-btn-group label').addClass('ic-btn'); $(".ic-btn-group label:not(.active)").click(function() { var label = $(this); var input = $('#' + label.attr('for')); if (!input.prop('checked')) { label.closest('.ic-btn-group').find("label").removeClass('active ic-btn-success ic-btn-danger ic-btn-primary'); if (input.val() == '') { label.addClass('active ic-btn-primary'); } else if (input.val() == 0) { label.addClass('active ic-btn-danger'); } else { label.addClass('active ic-btn-success'); } input.prop('checked', true); } }); $(".ic-btn-group input[checked=checked]").each(function() { if ($(this).val() == '') { $("label[for=" + $(this).attr('id') + "]").addClass('active ic-btn-primary'); } else if ($(this).val() == 0) { $("label[for=" + $(this).attr('id') + "]").addClass('active ic-btn-danger'); } else { $("label[for=" + $(this).attr('id') + "]").addClass('active ic-btn-success'); } }); }) })(jQuery); PK fa!]���ݞ � js/jquery.tipTip.jsnu &1i� /* * TipTip * Copyright 2010 Drew Wilson * www.drewwilson.com * code.drewwilson.com/entry/tiptip-jquery-plugin * * Version 1.3 - Updated: Mar. 23, 2010 * * This Plug-In will create a custom tooltip to replace the default * browser tooltip. It is extremely lightweight and very smart in * that it detects the edges of the browser window and will make sure * the tooltip stays within the current window size. As a result the * tooltip will adjust itself to be displayed above, below, to the left * or to the right depending on what is necessary to stay within the * browser window. It is completely customizable as well via CSS. * * This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html * * Updated by Cyril Rezé (JoomliC) * @version 3.5.5 2015-04-27 */ (function($){ $.fn.tipTip = function(options) { var defaults = { activation: "hover", keepAlive: false, maxWidth: "200px", edgeOffset: 3, defaultPosition: "bottom", delay: 400, fadeIn: 200, fadeOut: 200, attribute: "title", content: false, // HTML or String to fill TipTIp with enter: function(){}, exit: function(){} }; var opts = $.extend(defaults, options); // Setup tip tip elements and render them to the DOM if($("#tiptip_holder").length <= 0){ var tiptip_holder = $('<div id="tiptip_holder" style="max-width:'+ opts.maxWidth +';"></div>'); var tiptip_content = $('<div id="tiptip_content"></div>'); var tiptip_arrow = $('<div id="tiptip_arrow"></div>'); $("body").append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('<div id="tiptip_arrow_inner"></div>'))); } else { var tiptip_holder = $("#tiptip_holder"); var tiptip_content = $("#tiptip_content"); var tiptip_arrow = $("#tiptip_arrow"); } return this.each(function(){ var org_elem = $(this); if(opts.content){ var org_title = opts.content; } else { var org_title = org_elem.attr(opts.attribute); } if(org_title != ""){ if(!opts.content){ org_elem.removeAttr(opts.attribute); //remove original Attribute } var timeout = false; if(opts.activation == "hover"){ org_elem.hover(function(){ active_tiptip(); }, function(){ if(!opts.keepAlive){ deactive_tiptip(); } }); if(opts.keepAlive){ tiptip_holder.hover(function(){}, function(){ deactive_tiptip(); }); } } else if(opts.activation == "focus"){ org_elem.focus(function(){ active_tiptip(); }).blur(function(){ deactive_tiptip(); }); } else if(opts.activation == "click"){ org_elem.click(function(){ active_tiptip(); return false; }).hover(function(){},function(){ if(!opts.keepAlive){ deactive_tiptip(); } }); if(opts.keepAlive){ tiptip_holder.hover(function(){}, function(){ deactive_tiptip(); }); } } function active_tiptip(){ opts.enter.call(this); tiptip_content.html(org_title); tiptip_holder.hide().removeAttr("class").css("margin","0"); tiptip_arrow.removeAttr("style"); // Add body offset control var body_offset = $('body').offset(), offset = org_elem.offset(), tip_top = offset.top, tip_left = offset.left, body_top = body_offset.top, body_left = body_offset.left, top = parseInt(tip_top - body_top), left = parseInt(tip_left - body_left); var org_width = parseInt(org_elem.outerWidth()), org_height = parseInt(org_elem.outerHeight()), tip_w = tiptip_holder.outerWidth(), tip_h = tiptip_holder.outerHeight(), w_compare = Math.round((org_width - tip_w) / 2), h_compare = Math.round((org_height - tip_h) / 2), marg_left = Math.round(left + w_compare), marg_top = Math.round(top + org_height + opts.edgeOffset), t_class = "", arrow_top = "", arrow_left = Math.round(tip_w - 12) / 2; if(opts.defaultPosition == "bottom"){ t_class = "_bottom"; } else if(opts.defaultPosition == "top"){ t_class = "_top"; } else if(opts.defaultPosition == "left"){ t_class = "_left"; } else if(opts.defaultPosition == "right"){ t_class = "_right"; } var right_compare = (w_compare + left) < parseInt($(window).scrollLeft()); var left_compare = (tip_w + left) > parseInt($(window).width()); if((right_compare && w_compare < 0) || (t_class == "_right" && !left_compare) || (t_class == "_left" && left < (tip_w + opts.edgeOffset + 5))){ t_class = "_right"; arrow_top = Math.round(tip_h - 13) / 2; arrow_left = -12; marg_left = Math.round(left + org_width + opts.edgeOffset); marg_top = Math.round(top + h_compare); } else if((left_compare && w_compare < 0) || (t_class == "_left" && !right_compare)){ t_class = "_left"; arrow_top = Math.round(tip_h - 13) / 2; arrow_left = Math.round(tip_w); marg_left = Math.round(left - (tip_w + opts.edgeOffset + 5)); marg_top = Math.round(top + h_compare); } var top_compare = (top + org_height + opts.edgeOffset + tip_h + 8) > parseInt($(window).height() + $(window).scrollTop()); var bottom_compare = ((top + org_height) - (opts.edgeOffset + tip_h + 8)) < 0; if(top_compare || (t_class == "_bottom" && top_compare) || (t_class == "_top" && !bottom_compare)){ if(t_class == "_top" || t_class == "_bottom"){ t_class = "_top"; } else { t_class = t_class+"_top"; } arrow_top = tip_h; marg_top = Math.round(top - (tip_h + 5 + opts.edgeOffset)); } else if(bottom_compare | (t_class == "_top" && bottom_compare) || (t_class == "_bottom" && !top_compare)){ if(t_class == "_top" || t_class == "_bottom"){ t_class = "_bottom"; } else { t_class = t_class+"_bottom"; } arrow_top = -12; marg_top = Math.round(top + org_height + opts.edgeOffset); } if(t_class == "_right_top" || t_class == "_left_top"){ marg_top = marg_top + 5; } else if(t_class == "_right_bottom" || t_class == "_left_bottom"){ marg_top = marg_top - 5; } if(t_class == "_left_top" || t_class == "_left_bottom"){ marg_left = marg_left + 5; } tiptip_arrow.css({"margin-left": arrow_left+"px", "margin-top": arrow_top+"px"}); tiptip_holder.css({"margin-left": marg_left+"px", "margin-top": marg_top+"px"}).attr("class","tip"+t_class); if (timeout){ clearTimeout(timeout); } timeout = setTimeout(function(){ tiptip_holder.stop(true,true).fadeIn(opts.fadeIn); }, opts.delay); } function deactive_tiptip(){ opts.exit.call(this); if (timeout){ clearTimeout(timeout); } tiptip_holder.fadeOut(opts.fadeOut); } } }); } })(jQuery); PK fa!]L0�5p p js/icdates.jsnu &1i� /* Language initialisation for the jQuery UI date picker plugin. */ /* Written by Keith Wood (kbwood{at}iinet.com.au) and Stéphane Nahmani (sholby@sholby.net). * Modified by Cyril Rezé (Lyr!C) for iCagenda, joomla! extension */ /** *------------------------------------------------------------------------------ * iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x *------------------------------------------------------------------------------ * @package com_icagenda * @copyright Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved * * @license GNU General Public License version 3 or later; see LICENSE.txt * @author Cyril Rezé (Lyr!C) * @link http://www.joomlic.com * * @version 3.5.10 2015-08-14 * @since 1.0 *------------------------------------------------------------------------------ */ jQuery(function($){ $.datepicker.regional[''] = { currentText: Joomla.JText._('COM_ICAGENDA_TP_CURRENT', 'Now'), closeText: Joomla.JText._('COM_ICAGENDA_TP_CLOSE', 'Done'), prevText: '<Prev', nextText: 'Next>', ampm: false, amNames: ['AM', 'A'], pmNames: ['PM', 'P'], timeFormat: 'hh:mm tt', timeSuffix: '', monthNames: [Joomla.JText._('JANUARY', 'January'), Joomla.JText._('FEBRUARY', 'February'), Joomla.JText._('MARCH', 'March'), Joomla.JText._('APRIL', 'April'), Joomla.JText._('MAY', 'May'), Joomla.JText._('JUNE', 'June'), Joomla.JText._('JULY', 'July'), Joomla.JText._('AUGUST', 'August'), Joomla.JText._('SEPTEMBER', 'September'), Joomla.JText._('OCTOBER', 'October'), Joomla.JText._('NOVEMBER', 'November'), Joomla.JText._('DECEMBER', 'December')], monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], dayNamesMin: [Joomla.JText._('SU', 'Su'), Joomla.JText._('MO', 'Mo'), Joomla.JText._('TU', 'Tu'), Joomla.JText._('WE', 'We'), Joomla.JText._('TH', 'Th'), Joomla.JText._('FR', 'Fr'), Joomla.JText._('SA', 'Sa')], weekHeader: 'Wk', isRTL: false, showMonthAfterYear: false, timeOnlyTitle: Joomla.JText._('COM_ICAGENDA_TP_TITLE', 'Choose Time'), timeText: [Joomla.JText._('COM_ICAGENDA_TP_TIME')], hourText: Joomla.JText._('COM_ICAGENDA_TP_HOUR', 'Hour'), minuteText: Joomla.JText._('COM_ICAGENDA_TP_MINUTE', 'Minute'), yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['']); $.timepicker.regional[''] = { currentText: Joomla.JText._('COM_ICAGENDA_TP_CURRENT', 'Now'), closeText: Joomla.JText._('COM_ICAGENDA_TP_CLOSE', 'Done'), prevText: '<Prev', nextText: 'Next>', ampm: false, amNames: ['AM', 'A'], pmNames: ['PM', 'P'], timeFormat: 'hh:mm tt', timeSuffix: '', monthNames: [Joomla.JText._('JANUARY', 'January'), Joomla.JText._('FEBRUARY', 'February'), Joomla.JText._('MARCH', 'March'), Joomla.JText._('APRIL', 'April'), Joomla.JText._('MAY', 'May'), Joomla.JText._('JUNE', 'June'), Joomla.JText._('JULY', 'July'), Joomla.JText._('AUGUST', 'August'), Joomla.JText._('SEPTEMBER', 'September'), Joomla.JText._('OCTOBER', 'October'), Joomla.JText._('NOVEMBER', 'November'), Joomla.JText._('DECEMBER', 'December')], monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], dayNamesMin: [Joomla.JText._('SU', 'Su'), Joomla.JText._('MO', 'Mo'), Joomla.JText._('TU', 'Tu'), Joomla.JText._('WE', 'We'), Joomla.JText._('TH', 'Th'), Joomla.JText._('FR', 'Fr'), Joomla.JText._('SA', 'Sa')], weekHeader: 'Wk', isRTL: false, showMonthAfterYear: false, timeOnlyTitle: Joomla.JText._('COM_ICAGENDA_TP_TITLE', 'Choose Time'), timeText: [Joomla.JText._('COM_ICAGENDA_TP_TIME')], hourText: Joomla.JText._('COM_ICAGENDA_TP_HOUR', 'Hour'), minuteText: Joomla.JText._('COM_ICAGENDA_TP_MINUTE', 'Minute'), yearSuffix: ''}; $.timepicker.setDefaults($.timepicker.regional['']); }); jQuery(function($){ var startDateTextBox = $('#startdate'), endDateTextBox = $('#enddate'), $add_counter = $('#dTable_jalali input').length; startDateTextBox.datetimepicker({ dateFormat: "yy-mm-dd", hourGrid: 4, minuteGrid: 10, onClose: function(dateText, inst) { if (endDateTextBox.val() != '') { var testStartDate = startDateTextBox.datetimepicker('getDate'); var testEndDate = endDateTextBox.datetimepicker('getDate'); if (testStartDate > testEndDate) { endDateTextBox.datetimepicker('setDate', startDateTextBox.val()); } } else { endDateTextBox.val(dateText); } }, // onSelect: function (selectedDateTime){ // endDateTextBox.datetimepicker('option', 'minDate', startDateTextBox.datetimepicker('getDate') ); // } }); endDateTextBox.datetimepicker({ dateFormat: "yy-mm-dd", hourGrid: 4, minuteGrid: 10, onClose: function(dateText, inst) { if (startDateTextBox.val() != '') { var testStartDate = startDateTextBox.datetimepicker('getDate'); var testEndDate = endDateTextBox.datetimepicker('getDate'); if (testStartDate > testEndDate) { startDateTextBox.datetimepicker('setDate', endDateTextBox.val()); } } else { startDateTextBox.val(dateText); } }, // onSelect: function (selectedDateTime){ // startDateTextBox.datetimepicker('option', 'maxDate', endDateTextBox.datetimepicker('getDate') ); // } }); $( ".ic-date-input" ).live('focus', function(){ $(this).datetimepicker({ dateFormat: 'yy-mm-dd', timeFormat: 'hh:mm', hourGrid: 4, minuteGrid: 10, addSliderAccess: true, sliderAccessArgs: { touchonly: true } }); }); $('#add').live('click', function(e){ e.preventDefault(); $delete = Joomla.JText._('COM_ICAGENDA_DELETE_DATE', 'Delete'); if ($("#dTable_jalali").length) { $add_counter = $add_counter+1; $('#dTable_jalali').append('<tr><td><div class="input-append"><input id="date_jalali'+$add_counter+'" class="ic-date-input_jalali" type="text" name="d" title=""></input><button id="date_jalali'+$add_counter+'_img" class="btn" type="button"><span class="icon-calendar"></span></button></div></td><td><a class="del btn btn-danger btn-mini" href="#">'+$delete+'</a></td></tr>'); // jQuery(document).ready(function($) { Calendar.setup({ // Id of the input field inputField: 'date_jalali'+$add_counter, // Format of the input field ifFormat: "%Y-%m-%d %H:%M", // Trigger for the calendar (button ID) button: 'date_jalali'+$add_counter+'_img', // Alignment (defaults to "Bl") align: "Tl", singleClick: true, firstDay: 6 }); // }); } else { $('#dTable').append('<tr><td><input class="ic-date-input" type="text" name="d"/></td><td><a class="del btn btn-danger btn-mini" href="#">'+$delete+'</a></td></tr>'); } }); // $( ".ui-state-default" ).live('click', function(){ if ($("#dTable_jalali").length) { $( "#dates" ).on('mouseleave', function() { $array = $('#dTable_jalali input').serialize(); $suffix = '_jalali'; $('input.date').attr('value', $array); document.getElementById('startdate'+$suffix).removeClass("ic-date-invalid"); document.getElementById('enddate'+$suffix).removeClass("ic-date-invalid"); document.getElementById('dTable'+$suffix).removeClass("ic-date-invalid"); }); } else { $( ".ui-state-default" ).live('mouseout', function() { $array = $('#dTable input').serialize(); $('input.date').attr('value', $array); document.getElementById('startdate').removeClass("ic-date-invalid"); document.getElementById('enddate').removeClass("ic-date-invalid"); document.getElementById('dTable').removeClass("ic-date-invalid"); }); } $('.del').live('click', function(e) { e.preventDefault(); $(this).parent().parent('tr').remove(); if ($("#dTable_jalali").length) { $add_counter = $add_counter-1; $array = $('#dTable_jalali input').serialize(); } else { $array = $('#dTable input').serialize(); } $('input.date').attr('value', $array); }); }); PK fa!]8��� � images/info.pngnu &1i� �PNG IHDR �[A� !PLTE �������������������������������Z�� tRNS ���HolB%H�� OIDAT�c`0Wq*f`�Zѵp�᪥Q���V�r�U ]�1x� �Z�H- QZ@ (���1�(a���Q@�fZ�� �{]�P� IEND�B`�PK fa!]��& images/all_events-16.pngnu &1i� �PNG IHDR �a pHYs �� 9iCCPPhotoshop ICC profile xڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��: ��8�'>_ ϛv�i�7��Ti`lw�,Q�:� ƀ�S �0�I��(�rJA�o@I���0{��1�A�+���K PKґ:�jY�,K��$���(�� ��q��4Qu��? ��vӑkU��[�q=_�~� ��c��Cu�݅��\�/��-LO�l� n6`��V�Pނ��³O� �'