Dygraph.log = function(severity, message) {
var st;
if (typeof(printStackTrace) != 'undefined') {
- // Remove uninteresting bits: logging functions and paths.
- st = printStackTrace({guess:false});
- while (st[0].indexOf("stacktrace") != -1) {
- st.splice(0, 1);
- }
+ try {
+ // Remove uninteresting bits: logging functions and paths.
+ st = printStackTrace({guess:false});
+ while (st[0].indexOf("stacktrace") != -1) {
+ st.splice(0, 1);
+ }
- st.splice(0, 2);
- for (var i = 0; i < st.length; i++) {
- st[i] = st[i].replace(/\([^)]*\/(.*)\)/, '@$1')
- .replace(/\@.*\/([^\/]*)/, '@$1')
- .replace('[object Object].', '');
+ st.splice(0, 2);
+ for (var i = 0; i < st.length; i++) {
+ st[i] = st[i].replace(/\([^)]*\/(.*)\)/, '@$1')
+ .replace(/\@.*\/([^\/]*)/, '@$1')
+ .replace('[object Object].', '');
+ }
+ var top_msg = st.splice(0, 1)[0];
+ message += ' (' + top_msg.replace(/^.*@ ?/, '') + ')';
+ } catch(e) {
+ // Oh well, it was worth a shot!
}
- var top_msg = st.splice(0, 1)[0];
- message += ' (' + top_msg.replace(/^.*@ ?/, '') + ')';
}
if (typeof(console) != 'undefined') {
if (elem.removeEventListener) {
elem.removeEventListener(type, fn, false);
} else {
- elem.detachEvent('on'+type, elem[type+fn]);
+ try {
+ elem.detachEvent('on'+type, elem[type+fn]);
+ } catch(e) {
+ // We only detach event listeners on a "best effort" basis in IE. See:
+ // http://stackoverflow.com/questions/2553632/detachevent-not-working-with-named-inline-functions
+ }
elem[type+fn] = null;
}
};
length = length || array.length;
this.hasNext = true; // Use to identify if there's another element.
this.peek = null; // Use for look-ahead
+ this.start_ = start;
this.array_ = array;
this.predicate_ = predicate;
this.end_ = Math.min(array.length, start + length);
this.nextIdx_ = start - 1; // use -1 so initial advance works.
this.next(); // ignoring result.
-}
+};
Dygraph.Iterator.prototype.next = function() {
if (!this.hasNext) {
this.peek = null;
}
return obj;
-}
+};
/**
* @private
}
ctx.fill();
ctx.stroke();
-}
+};
Dygraph.shapeFunction_ = function(sides, rotationRadians, delta) {
return function(g, name, ctx, cx, cy, color, radius) {
Dygraph.DrawPolygon_ = function(sides, rotationRadians, ctx, cx, cy, color, radius, delta) {
new Dygraph.RegularShape_(sides, rotationRadians, delta).draw(ctx, cx, cy, radius);
-}
+};
Dygraph.Circles = {
DEFAULT : function(g, name, ctx, canvasx, canvasy, color, radius) {