1function rrdDropDownSelected(graphId, element)
2{
3	rangeId = jQuery(element).val();
4
5	rrdSwitchRange(graphId, rangeId);
6}
7
8function rrdDoSwitchRange(graphId, rangeId)
9{
10	var link = jQuery("a#__L" + graphId);
11	var image = jQuery("img#__I" + graphId);
12	var loader = jQuery("div#__LD" + graphId);
13	var allTabs = jQuery("ul#__T" + graphId + " li");
14	var currentTab = jQuery("li#__TI" + graphId + "X" + rangeId);
15	var select = jQuery("select#__T" + graphId);
16
17	image.addClass("rrdLoading");
18	loader.addClass("rrdLoaderActive");
19	image.load(function() {
20		jQuery(this).removeClass("rrdLoading");
21		loader.removeClass("rrdLoaderActive");
22	});
23
24	var removeQueryRegex = new RegExp("\\?.*$");
25
26	var imageUri = image.attr("src");
27	imageUri = imageUri.replace(removeQueryRegex, '') + "?range=" + rangeId;
28
29	image.attr("src", imageUri);
30	link.attr("href", imageUri + "&mode=fs");
31	allTabs.removeClass("rrdActiveTab");
32	currentTab.addClass("rrdActiveTab");
33	select.val(rangeId);
34}
35
36function rrdSwitchRange(graphId, rangeId)
37{
38	var gangedGraphs = jQuery("input:checked[name='rrdgraph_gang']");
39
40	if (gangedGraphs.filter("[value='"  + graphId + "']").length > 0)
41	{
42		gangedGraphs.each(function() {
43			rrdDoSwitchRange(jQuery(this).attr("value"), rangeId);
44		});
45	}
46	else
47	{
48		rrdDoSwitchRange(graphId, rangeId);
49	}
50}
51
52function rrdSwitchRangeRelative(jRrdContainer, offset)
53{
54	var graphId = jRrdContainer.attr("data-graphid");
55	var ranges = jRrdContainer.attr("data-ranges");
56	var range = jRrdContainer.find("li.rrdActiveTab").index();
57
58	range += offset;
59
60	if ((range >= 0) && (range < ranges)) rrdSwitchRange(graphId, range);
61}
62
63jQuery().ready(function() {
64	var rrdImages = jQuery("div.rrdImage img");
65	var downX = 0;
66	var downY = 0;
67	var clickAllowed = true;
68
69	rrdImages.bind("touchstart", function(e) {
70		if (e.originalEvent.changedTouches.length > 1) return true;
71
72		var me = jQuery(this);
73		downX = e.originalEvent.changedTouches[0].pageX;
74		downY = e.originalEvent.changedTouches[0].pageY;
75
76		clickAllowed = true;
77
78		return true;
79	});
80
81	rrdImages.bind("touchend", function(e) {
82		if (e.originalEvent.changedTouches.length > 1) return true;
83
84		var me = jQuery(this);
85		var upX = e.originalEvent.changedTouches[0].pageX;
86		var upY = e.originalEvent.changedTouches[0].pageY;
87
88		if ((Math.abs(downX - upX) > 100) && (Math.abs(downY - upY) < 50))
89		{
90			var event = jQuery.Event((upX > downX) ? "swiperight" : "swipeleft");
91			me.trigger(event);
92			clickAllowed = false;
93
94			return false;
95		}
96		else
97		{
98			return true;
99		}
100	});
101
102	rrdImages.bind("click", function(e) {
103		if (!clickAllowed)
104		{
105			e.preventDefault();
106			return false;
107		}
108	});
109
110	rrdImages.bind("swiperight", function() {
111		rrdSwitchRangeRelative(jQuery(this).closest("div.rrdImage"), -1);
112
113	});
114
115	rrdImages.bind("swipeleft", function() {
116		rrdSwitchRangeRelative(jQuery(this).closest("div.rrdImage"), +1);
117	});
118});
119