Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
21627 kshitij.so 1
/*
2
 * FullCalendar v1.5.4 Google Calendar Plugin
3
 *
4
 * Copyright (c) 2011 Adam Shaw
5
 * Dual licensed under the MIT and GPL licenses, located in
6
 * MIT-LICENSE.txt and GPL-LICENSE.txt respectively.
7
 *
8
 * Date: Tue Sep 4 23:38:33 2012 -0700
9
 *
10
 */
11
 
12
(function($) {
13
 
14
 
15
var fc = $.fullCalendar;
16
var formatDate = fc.formatDate;
17
var parseISO8601 = fc.parseISO8601;
18
var addDays = fc.addDays;
19
var applyAll = fc.applyAll;
20
 
21
 
22
fc.sourceNormalizers.push(function(sourceOptions) {
23
	if (sourceOptions.dataType == 'gcal' ||
24
		sourceOptions.dataType === undefined &&
25
		(sourceOptions.url || '').match(/^(http|https):\/\/www.google.com\/calendar\/feeds\//)) {
26
			sourceOptions.dataType = 'gcal';
27
			if (sourceOptions.editable === undefined) {
28
				sourceOptions.editable = false;
29
			}
30
		}
31
});
32
 
33
 
34
fc.sourceFetchers.push(function(sourceOptions, start, end) {
35
	if (sourceOptions.dataType == 'gcal') {
36
		return transformOptions(sourceOptions, start, end);
37
	}
38
});
39
 
40
 
41
function transformOptions(sourceOptions, start, end) {
42
 
43
	var success = sourceOptions.success;
44
	var data = $.extend({}, sourceOptions.data || {}, {
45
		'start-min': formatDate(start, 'u'),
46
		'start-max': formatDate(end, 'u'),
47
		'singleevents': true,
48
		'max-results': 9999
49
	});
50
 
51
	var ctz = sourceOptions.currentTimezone;
52
	if (ctz) {
53
		data.ctz = ctz = ctz.replace(' ', '_');
54
	}
55
 
56
	return $.extend({}, sourceOptions, {
57
		url: sourceOptions.url.replace(/\/basic$/, '/full') + '?alt=json-in-script&callback=?',
58
		dataType: 'jsonp',
59
		data: data,
60
		startParam: false,
61
		endParam: false,
62
		success: function(data) {
63
			var events = [];
64
			if (data.feed.entry) {
65
				$.each(data.feed.entry, function(i, entry) {
66
					var startStr = entry['gd$when'][0]['startTime'];
67
					var start = parseISO8601(startStr, true);
68
					var end = parseISO8601(entry['gd$when'][0]['endTime'], true);
69
					var allDay = startStr.indexOf('T') == -1;
70
					var url;
71
					$.each(entry.link, function(i, link) {
72
						if (link.type == 'text/html') {
73
							url = link.href;
74
							if (ctz) {
75
								url += (url.indexOf('?') == -1 ? '?' : '&') + 'ctz=' + ctz;
76
							}
77
						}
78
					});
79
					if (allDay) {
80
						addDays(end, -1); // make inclusive
81
					}
82
					events.push({
83
						id: entry['gCal$uid']['value'],
84
						title: entry['title']['$t'],
85
						url: url,
86
						start: start,
87
						end: end,
88
						allDay: allDay,
89
						location: entry['gd$where'][0]['valueString'],
90
						description: entry['content']['$t']
91
					});
92
				});
93
			}
94
			var args = [events].concat(Array.prototype.slice.call(arguments, 1));
95
			var res = applyAll(success, this, args);
96
			if ($.isArray(res)) {
97
				return res;
98
			}
99
			return events;
100
		}
101
	});
102
 
103
}
104
 
105
 
106
// legacy
107
fc.gcalFeed = function(url, sourceOptions) {
108
	return $.extend({}, sourceOptions, { url: url, dataType: 'gcal' });
109
};
110
 
111
 
112
})(jQuery);