-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathclimate-widget-graph.js
1 lines (1 loc) · 376 KB
/
climate-widget-graph.js
1
!function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n||e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var $;($=jQuery).ajaxthrottle=function(options){var timeout,settings=$.extend({numRequestsPerTimePeriod:0,timePeriod:0,maxConcurrent:1},options),time=function(){return(new Date).getTime()},outstanding_reqs=[],initiated_reqs=[],waiting_reqs=[],process_waiting=function(){var delay,req,now=time();if(!(waiting_reqs.length<=0)){if(delay=function(now){if(0<=settings.timePeriod){for(;0<initiated_reqs.length&&initiated_reqs[0].time+settings.timePeriod-now<=0;)initiated_reqs.shift();if(0<initiated_reqs.length)return initiated_reqs[0].time+settings.timePeriod-now}return 0}(now),0<settings.numRequestsPerTimePeriod&&0<settings.timePeriod&&0<delay&&initiated_reqs.length>=settings.numRequestsPerTimePeriod)return void 0!==timeout&&clearTimeout(timeout),void(timeout=setTimeout(function(){timeout=void 0,process_waiting()},delay));0<settings.maxConcurrent&&outstanding_reqs.length>=settings.maxConcurrent||((req=waiting_reqs.shift()).time=time(),initiated_reqs.push(req),outstanding_reqs.push(req),$.ajax.apply($,req.arguments).done(function(){req.deferred.resolve.apply(req.deferred,arguments)}).fail(function(){req.deferred.reject.apply(req.deferred,arguments)}).always(function(){var obj;obj=req,$.each(outstanding_reqs,function(i){return outstanding_reqs[i]!==obj||(outstanding_reqs.splice(i,1),!1)}),process_waiting()}))}};return{ajax:function(){var deferred=$.Deferred();return waiting_reqs.push({arguments:arguments,deferred:deferred}),process_waiting(),deferred.promise()}}}},{}],2:[function(require,module,exports){!function($){"use strict";var methods={on:function(on){return void 0===on?$(this).data("busy_spinner").on:this.each(function(){return on?($(this).data("busy_spinner").on=!0,$(this).data("busy_spinner").level=1,$(this).show()):($(this).data("busy_spinner").on=!1,$(this).data("busy_spinner").level=0,$(this).hide()),this})},level:function(delta){return void 0===delta?$(this).data("busy_spinner").level:this.each(function(){return 0<=$(this).data("busy_spinner").level+delta&&($(this).data("busy_spinner").level=$(this).data("busy_spinner").level+delta,1===$(this).data("busy_spinner").level?$(this).busy_spinner("on",!0):0===$(this).data("busy_spinner").level&&$(this).busy_spinner("on",!1)),this})},init:function(options){return this.each(function(){var $this=$(this),data=$this.data("busy_spinner"),settings=$.extend({on:!1},options);return data||($this.data("busy_spinner",{on:settings.on,level:0}),settings.on?$(this).show():$(this).hide(),$(this).css({width:32,height:32}).append($('<img src="data:image/gif;base64,R0lGODlhIAAgAPMAAP///wAAAMbGxoSEhLa2tpqamjY2NlZWVtjY2OTk5Ly8vB4eHgQEBAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY/CZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB+A4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6+Ho7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq+B6QDtuetcaBPnW6+O7wDHpIiK9SaVK5GgV543tzjgGcghAgAh+QQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK++G+w48edZPK+M6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE+G+cD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm+FNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk+aV+oJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0/VNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc+XiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30/iI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE/jiuL04RGEBgwWhShRgQExHBAAh+QQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR+ipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY+Yip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd+MFCN6HAAIKgNggY0KtEBAAh+QQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1+vsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d+jYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg+ygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0+bm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h+Kr0SJ8MFihpNbx+4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX+BP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA==" width="32" height="32" alt="ajax loading">'))),this})}};$.fn.busy_spinner=function(method){return methods[method]?methods[method].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof method&&method?($.error("Method "+method+" does not exist on jQuery.busy_spinner"),null):methods.init.apply(this,arguments)}}(jQuery)},{}],3:[function(require,module,exports){!function($){"use strict";var methods={init:function(options){return this.each(function(){var $this=$(this),data=$this.data("errorDisplay"),settings=$.extend({fontColor:"#ff0000",backgroundColor:"#ffffff",displayTime:1e3,indicatorColor:"#ff0000"},options);if(!data){$this.append('<div class="errorDisplay"><span class="errorDisplayOptions"><button class="errorDisplayDetailsButton">See Details</button><a href="" class="errorDisplayXButton">✖</a></span><span class="errorDisplayShortMessage"></span></div><span class="errorDisplayRetriever"></span>'),$this.find(".errorDisplay").width($this.width()-6);var detailDisplay=$('<div class="errorDisplayDetails"><span class="errorDisplayOptions"><a href="" class="errorDisplayXButton">✖</a></span><span class="errorDisplayFullMessageArea"></span></div>').appendTo($("body")),detailDisplayList=$('<ul class="errorDisplayFullMessageList"></ul>');$(detailDisplay).find(".errorDisplayXButton").click(function(event){event.preventDefault(),$(detailDisplay).find(".errorDisplayOptions").hide(),$(detailDisplay).hide(),$this.find(".errorDisplayRetriever").css("background-color",settings.indicatorColor).show()}),$this.data("errorDisplay",{detailDisplay:detailDisplay,detailDisplayList:detailDisplayList,fontColor:settings.fontColor,backgroundColor:settings.backgroundColor,displayTime:settings.displayTime,indicatorColor:settings.indicatorColor}),$this.find(".errorDisplayXButton").click(function(event){event.preventDefault(),$this.find(".errorDisplayOptions").hide(),$this.find(".errorDisplay").slideUp(settings.displayTime,function(){$this.find(".errorDisplayRetriever").show()})}),$this.find(".errorDisplayDetailsButton").click(function(event){event.preventDefault(),$this.find(".errorDisplay").off(),$this.find(".errorDisplay").hide(),$this.find(".errorDisplayRetriever").hide(),$(detailDisplay).find(".errorDisplayFullMessageArea").empty().append($(detailDisplayList)),$(detailDisplay).find(".errorDisplayOptions").show(),$(detailDisplay).show()})}return this})},displayError:function(fullMessage,shortMessage,options){return this.each(function(){var $this=$(this),data=$this.data("errorDisplay"),settings=$.extend({fontColor:data.fontColor,backgroundColor:data.backgroundColor,displayTime:data.displayTime,indicatorColor:data.indicatorColor},options);$this.find(".errorDisplayRetriever").hide(),$this.find(".errorDisplayOptions").hide(),$this.find(".errorDisplayShortMessage").css("color",settings.fontColor),$this.find(".errorDisplay").css("background-color",settings.backgroundColor),$this.find(".errorDisplayOptions").css("background-color",settings.backgroundColor),$this.find(".errorDisplayShortMessage").text(shortMessage),$this.find(".errorDisplay").show(),$this.find(".errorDisplayRetriever").css("background-color",settings.indicatorColor),-1!=settings.displayTime?$this.find(".errorDisplay").slideUp(settings.displayTime,function(){$this.find(".errorDisplayRetriever").show()}):($this.find(".errorDisplayOptions").show(),$this.find(".errorDisplay").show()),$(data.detailDisplayList).append($("<li>"+fullMessage+"</li>").css("color",settings.fontColor)),$this.find(".errorDisplayRetriever").hover(function(event){event.preventDefault(),$this.find(".errorDisplayOptions").hide(),$this.find(".errorDisplayShortMessage").text(shortMessage).css("color",settings.fontColor),$this.find(".errorDisplay").slideDown(function(){$this.find(".errorDisplayOptions").show(),$this.find(".errorDisplay").mouseleave(function(event){event.preventDefault(),$this.find(".errorDisplayOptions").hide(),$this.find(".errorDisplay").slideUp(settings.displayTime,function(){$this.find(".errorDisplayRetriever").show()})})}),$this.find(".errorDisplayRetriever").hide()})})}};$.fn.errorDisplay=function(method){return methods[method]?methods[method].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof method&&method?($.error("Method "+method+" does not exist on jQuery.errorDisplay"),null):methods.init.apply(this,arguments)}}(jQuery),jQuery("head").append(jQuery("<style type=\"text/css\">.errorDisplay { font-family: Helvetica, sans-serif; color: #32446B; background-color: white; text-align: left; font-size: 12px; line-height: 12px; height: 45px; position: absolute; bottom: 0px; left: 0px; width: inherit; width: expression(this.parentNode.currentStyle['width']); border: solid; border-color: #A9BADE; border-style: ridge; display: none; } .errorDisplayRetriever{ height: 8px; background-color: #ff0000; border-top-right-radius: 10px; width: 8px; position: absolute; bottom: 0px; left: 0px; display: none; } .errorDisplayShortMessage{ overflow-x: hidden; overflow-y: hidden; white-space: nowrap; position: absolute; bottom: 0px; left: 0px; width: 95%; margin-top: 20px; margin-left: 10px; margin-bottom: 5px; } .errorDisplayXButton { text-decoration: none; font-size: 15px; margin-top: 2px; position: absolute; right: 3px; top: 0px; color: #4D68A3; } .errorDisplayDetailsButton { margin-left: 10px; margin-right: 10px; position: relative; } .errorDisplayDetails{ position: fixed; top: 25%; height: 100px; width: 75%; text-align: left; border: solid; border-color: #A9BADE; border-style: ridge; background-color: white; display: none; } .errorDisplayFullMessageArea { font-family: Helvetica, sans-serif; font-size: .833em; color: #32446B; height: 80px; width: inherit; width: expression(this.parentNode.currentStyle['width']); position: fixed; margin-top: 15px; } .errorDisplayFullMessageList { overflow: auto; white-space: nowrap; height: 80px; margin-top: 5px; } .errorDisplayOptions{ background-color: #FFFFFF; display: inline; } </style>"))},{}],4:[function(require,module,exports){"use strict";var Attr=function(name){var defaultValueOrFunction,i,addValidator,validator,AttrList=require("./attr_list.js"),Validator=require("./validator.js"),validators=[],that=this,errorMessage="invalid setter call for "+name,immutable=!1,listeners={};if(void 0===name||"string"!=typeof name)throw new Error("Attr: constructor requires a name parameter which must be a string");for(validator=function(thingBeingValidated){for(i=0;i<validators.length;++i)validators[i](thingBeingValidated);return!0},this.validatesWith=function(v){if("function"==typeof v)return validators.push(new Validator(v)),this;throw new Error("Attr: validator must be a function")},this.defaultsTo=function(value){return defaultValueOrFunction=value,this},this.isReadOnly=function(){return immutable=!0,this},this.isWritable=function(){return immutable=!1,this},this.on=function(event,listener){if("set"!==event&&"get"!==event)throw new Error("Attr: first argument to the 'on' method should be 'set' or 'get'");if("function"!=typeof listener)throw new Error("Attr: second argument to the 'on' method should be a function");listeners[event]=listener},this.name=function(){return name},this.validator=function(){return validator},((this.and=this).which=this).isImmutable=this.isReadOnly,this.isMutable=this.isWritable,this.clone=function(){var result,i;for(result=this instanceof AttrList?new AttrList(name):new Attr(name),i=0;i<validators.length;++i)result.validatesWith(validators[i]);return result.defaultsTo(defaultValueOrFunction),immutable&&result.isImmutable(),result},this.addTo=function(obj){var attribute,defaultValue;if(!obj||"object"!=typeof obj)throw new Error("Attr: addAttr method requires an object parameter");if(obj[name]=function(newValue){var preValue;if(void 0!==newValue){if(immutable&&void 0!==attribute)throw new Error("cannot set the immutable property "+name+" after it has been set");if(!validator(newValue))throw new Error(errorMessage);return preValue=attribute,attribute=newValue,void 0!==listeners.set&&listeners.set.call(obj,newValue,preValue),obj}return void 0!==listeners.get&&listeners.get.call(obj,attribute),attribute},void 0!==(defaultValue="function"==typeof defaultValueOrFunction?defaultValueOrFunction():defaultValueOrFunction)&&validator(defaultValue))obj[name](defaultValue);else if(void 0!==defaultValue&&!validator(defaultValue))throw new Error("Attr: Default value of "+defaultValue+" does not pass validation for "+name)},addValidator=function(name){that[name]=function(param){return validators.push(Validator.getValidator(name)(param)),that}},i=0;i<Validator.validators().length;++i)addValidator(Validator.validators()[i])};module.exports=Attr},{"./attr_list.js":5,"./validator.js":8}],5:[function(require,module,exports){"use strict";var Attr=require("./attr.js"),AttrList=function(name){var that=this,listeners={};Attr.call(this,name);this.validateWith=this.validatesWith,this.defaultsTo=function(){},this.isImmutable=function(){},this.isMutable=function(){},(this.eachOfWhich=this).on=function(event,listener){if("add"!==event)throw new Error("AttrList: 'on' only responds to 'add' event");if("function"!=typeof listener)throw new Error("AttrList: 'on' requires a listener function as the second parameter");listeners[event]=listener},this.addTo=function(obj){var arr=[],actualList={};if(!obj||"object"!=typeof obj)throw new Error("AttrList: addTo method requires an object parameter");actualList.pop=function(obj,func){return function(){return obj[func].apply(obj,arguments)}}(arr,"pop"),actualList.add=function(item){if(that.validator()(item))return arr.push(item),void 0!==listeners.add&&listeners.add.call(obj,item,actualList.size()),this;throw new Error(that.errorMessage())},actualList.replace=function(index,obj){if("number"!=typeof index||parseInt(index,10)!==index)throw new Error("AttrList: replace method requires index parameter to be an integer");if(index<0||index>=this.size())throw new Error("AttrList: replace method index parameter out of bounds");if(!that.validator()(obj))throw new Error(that.errorMessage());return arr[index]=obj,this},actualList.at=function(index){if(index<0||index>=this.size())throw new Error("AttrList: Index out of bounds");return arr[index]},actualList.get=actualList.at,actualList.size=function(){return arr.length},actualList.toJSON=function(JSONreps){var i,result=[];if(void 0!==JSONreps)for(i=0;i<JSONreps.length;++i)JSONreps[i].object===this&&(result=JSONreps[i].JSONrep);for(i=0;i<arr.length;++i)arr[i].toJSON?result.push(arr[i].toJSON(JSONreps)):result.push(arr[i]);return result},obj[name]=function(){return actualList}}};AttrList.prototype=new Attr("???"),module.exports=AttrList},{"./attr.js":4}],6:[function(require,module,exports){"use strict";module.exports=function(name,method){if(!name||"string"!=typeof name)throw new Error("Method: constructor requires a name parameter which must be a string");if(!method||"function"!=typeof method)throw new Error("Method: second parameter must be a function");this.addTo=function(obj){if(!obj||"object"!=typeof obj)throw new Error("Method: addTo method requires an object parameter");obj[name]=method}}},{}],7:[function(require,module,exports){"use strict";require("../util/index_of.js");var models={},Model=function(specification){var pattern,modelName,property,listProperties,updateConstructor,isImmutable,methods={},attributes={},modified=!0,requiredConstructorArgs=[],optionalConstructorArgs=[],parents=[],Method=require("./method.js"),Attr=require("./attr.js"),AttrList=require("./attr_list.js"),EventEmitter=require("../util/event_emitter.js"),initializer=function(){},constructor=function(){},model=function(){return modified&&(model.validate(),updateConstructor()),constructor.apply(this,arguments)};if(1===arguments.length&&"string"==typeof specification&&(modelName=specification,specification=void 0),1<arguments.length&&(modelName=specification,specification=arguments[arguments.length-1]),specification&&"function"==typeof specification)return model=new Model(modelName),specification.call(model),model;if(specification)throw new Error("Model: specification parameter must be a function");if(void 0!==modelName&&"string"==typeof modelName)models[modelName]=model;else if(void 0!==modelName)throw new Error("Model: model name must be a string");var hasAProperty=function(type,name){var methodName,attribute;if(methodName="Attr"===type?"hasA":"hasMany",modified=!0,"string"==typeof name)return attribute=new("Attr"===type?Attr:AttrList)(name),attributes[name]=attribute;throw new Error("Model: "+methodName+" parameter must be a string")};return property=function(type,name){var result;if("string"!=typeof name)throw new Error("Model: expected string argument to "+type+" method, but recieved "+name);if(void 0===(result="attribute"===type?attributes[name]:methods[name]))throw new Error("Model: "+type+" "+name+" does not exist!");return result},listProperties=function(type){var i,list=[],properties="attributes"===type?attributes:methods;for(i in properties)properties.hasOwnProperty(i)&&list.push(i);return list},updateConstructor=function(){constructor=function(){var i,j,err,attribute,attr,changeHandler,attributeList=model.attributes(),methodList=model.methods(),emitter=new EventEmitter,attrChangeListeners={},that=this;if(!(this instanceof model))return 0<arguments.length?new model(arguments):new model;for(this.emitter=function(){return emitter},this.emitter().removeJermaineChangeListener=function(attrName,obj){if("string"!=typeof attrName)throw new Error("attrName must be a string");if("object"!=typeof obj||void 0===obj.toJSON||void 0===obj.emitter)throw new Error("obj must be a jermaine object");obj.emitter().removeListener("change",attrChangeListeners[attrName])},this.emitter().addJermaineChangeListener=function(attrName,obj){if("string"!=typeof attrName)throw new Error("attrName must be a string");if("object"!=typeof obj||void 0===obj.toJSON||void 0===obj.emitter)throw new Error("obj must be a jermaine object");void 0===attrChangeListeners[attrName]&&(attrChangeListeners[attrName]=function(data){var newData=[],emit=!0;for(i=0;i<data.length&&!0===emit;++i)newData.push(data[i]),data[i].origin===that&&(emit=!1);emit&&(newData.push({key:attrName,origin:that}),that.emit("change",newData))}),obj.emitter().on("change",attrChangeListeners[attrName])},this.on=this.emitter().on,this.emit=this.emitter().emit,this.toJSON=function(JSONreps){var attributeValue,i,j,attributeJSONrep,thisJSONrep={};if(void 0===JSONreps)(JSONreps=[]).push({object:this,JSONrep:thisJSONrep});else{if("object"!=typeof JSONreps)throw new Error("Instance: toJSON should not take a parameter (unless called recursively)");for(i=0;i<JSONreps.length;++i)JSONreps[i].object===this&&(thisJSONrep=JSONreps[i].JSONrep)}for(i=0;i<attributeList.length;++i){for(attributeJSONrep=null,attributeValue=this[attributeList[i]](),j=0;j<JSONreps.length;++j)JSONreps[j].object===attributeValue&&(attributeJSONrep=JSONreps[j].JSONrep);null!=attributeValue&&void 0!==attributeValue.toJSON&&null===attributeJSONrep&&(attributeJSONrep=attributes[attributeList[i]]instanceof AttrList?[]:{},JSONreps.push({object:attributeValue,JSONrep:attributeJSONrep}),JSONreps[JSONreps.length-1].JSONrep=attributeValue.toJSON(JSONreps)),thisJSONrep[attributeList[i]]=null===attributeJSONrep?attributeValue:attributeJSONrep}return thisJSONrep},this.toString=void 0!==pattern?pattern:function(){return"Jermaine Model Instance"},changeHandler=function(attr){attr instanceof AttrList?attr.on("add",function(newValue,newSize){this.emit("change",[{action:"add",key:attr.name(),value:newValue,origin:this}])}):attr.on("set",function(newValue,preValue){if(null!=preValue&&void 0!==preValue.on&&void 0!==preValue.toJSON&&void 0!==preValue.emitter){if(preValue.emitter().listeners("change").length<1)throw new Error("preValue should always have a listener defined if it is a model");this.emitter().removeJermaineChangeListener(attr.name(),preValue)}null!=newValue&&void 0!==newValue.on&&void 0!==newValue.toJSON&&void 0!==newValue.emitter&&this.emitter().addJermaineChangeListener(attr.name(),newValue),this.emit("change",[{key:attr.name(),value:newValue,origin:this}])})},i=0;i<attributeList.length;++i)attr=model.attribute(attributeList[i]),changeHandler.call(this,attr);for(i=0;i<attributeList.length+methodList.length;++i)i<attributeList.length?(isImmutable&&model.attribute(attributeList[i]).isImmutable(),model.attribute(attributeList[i]).addTo(this)):model.method(methodList[i-attributeList.length]).addTo(this);if(0<arguments.length){if(arguments.length<requiredConstructorArgs.length){for(err="Constructor requires ",i=0;i<requiredConstructorArgs.length;++i)err+=requiredConstructorArgs[i],err+=i===requiredConstructorArgs.length-1?"":", ";throw err+=" to be specified",new Error(err)}if(arguments.length>requiredConstructorArgs.length+optionalConstructorArgs.length)throw new Error("Too many arguments to constructor. Expected "+requiredConstructorArgs.length+" required arguments and "+optionalConstructorArgs.length+" optional arguments");for(i=0;i<arguments.length;++i)if(attribute=i<requiredConstructorArgs.length?requiredConstructorArgs[i]:optionalConstructorArgs[i-requiredConstructorArgs.length],model.attribute(attribute)instanceof AttrList){if("[object Array]"!==Object.prototype.toString.call(arguments[i]))throw new Error("Model: Constructor requires 'names' attribute to be set with an Array");for(j=0;j<arguments[i].length;++j)this[attribute]().add(arguments[i][j])}else this[attribute](arguments[i])}initializer.call(this)}},model.hasA=function(attr){return hasAProperty("Attr",attr)},model.hasAn=model.hasA,model.hasSome=model.hasA,model.hasMany=function(attrs){return hasAProperty("AttrList",attrs)},model.isA=function(parent){var i,parentAttributes,parentMethods;if(modified=!0,"function"!=typeof parent||!function(potentialModel){var i,M=new Model;for(i in M)if(M.hasOwnProperty(i)&&typeof potentialModel[i]!=typeof M[i])return!1;return!0}(parent))throw new Error("Model: parameter sent to isA function must be a Model");if(0!==parents.length)throw new Error("Model: Model only supports single inheritance at this time");for(parents.push(parent),parentAttributes=parents[0].attributes(),i=0;i<parentAttributes.length;++i)void 0===attributes[parentAttributes[i]]&&(attributes[parentAttributes[i]]=parents[0].attribute(parentAttributes[i]).clone(),attributes[parentAttributes[i]].isMutable());for(parentMethods=parents[0].methods(),i=0;i<parentMethods.length;++i)void 0===methods[parentMethods[i]]&&(methods[parentMethods[i]]=parents[0].method(parentMethods[i]));for(i=0;i<parents.length;i++)model.prototype=new parents[i]},model.isAn=model.isA,model.parent=function(){return parents[0].apply(this,arguments)},model.attribute=function(attr){return property("attribute",attr)},model.attributes=function(){return listProperties("attributes")},model.method=function(m){return property("method",m)},model.methods=function(){return listProperties("methods")},model.isBuiltWith=function(){var i,optionalParamFlag=!1;for(modified=!0,requiredConstructorArgs=[],optionalConstructorArgs=[],i=0;i<arguments.length;++i)if("string"==typeof arguments[i]&&"%"!==arguments[i].charAt(0)){if(optionalParamFlag)throw new Error("Model: isBuiltWith requires parameters preceded with a % to be the final parameters before the optional function");requiredConstructorArgs.push(arguments[i])}else if("string"==typeof arguments[i]&&"%"===arguments[i].charAt(0))optionalParamFlag=!0,optionalConstructorArgs.push(arguments[i].slice(1));else{if("function"!=typeof arguments[i]||i!==arguments.length-1)throw new Error("Model: isBuiltWith parameters must be strings except for a function as the optional final parameter");initializer=arguments[i]}},model.isImmutable=function(){isImmutable=!0},model.looksLike=function(p){modified=!0,pattern=p},model.respondsTo=function(methodName,methodBody){var m=new Method(methodName,methodBody);modified=!0,methods[methodName]=m},model.validate=function(){var i,attributes=this.attributes(),methods=this.methods();for(i=0;i<requiredConstructorArgs.length;++i)try{this.attribute(requiredConstructorArgs[i])}catch(e){throw new Error(requiredConstructorArgs[i]+", specified in the isBuiltWith method, is not an attribute")}for(i=0;i<optionalConstructorArgs.length;++i)try{this.attribute(optionalConstructorArgs[i])}catch(e){throw new Error(optionalConstructorArgs[i]+", specified in the isBuiltWith method, is not an attribute")}for(i=0;i<attributes.length;i++)if(-1<methods.indexOf(attributes[i]))throw new Error("Model: invalid model specification to "+attributes[i]+" being both an attribute and method");if(isImmutable)for(i=0;i<attributes.length;i++)if(requiredConstructorArgs.indexOf(attributes[i])<0)throw new Error("immutable objects must have all attributes required in a call to isBuiltWith");modified=!1},model};Model.getModel=function(name){if("string"!=typeof name)throw new Error("Jermaine: argument to getModel must be a string");if(void 0===models[name])throw new Error("No model by the name of "+name+" found");return models[name]},Model.getModels=function(name){var model,result=[];for(model in models)result.push(model);return result},module.exports=Model},{"../util/event_emitter.js":10,"../util/index_of.js":11,"./attr.js":4,"./attr_list.js":5,"./method.js":6}],8:[function(require,module,exports){"use strict";require("../util/index_of.js");var Model=require("./model.js"),validators={},Validator=function(spec){return function(arg){var result,resultObject={};if(!(result=spec.call(resultObject,arg)))throw new Error(resultObject.message||"validator failed with parameter "+arg);return result}};Validator.addValidator=function(name,v,argValidator){if(void 0===name||"string"!=typeof name)throw new Error("addValidator requires a name to be specified as the first parameter");if(void 0===v||"function"!=typeof v)throw new Error("addValidator requires a function as the second parameter");if(void 0!==argValidator&&"function"!=typeof argValidator)throw new Error("addValidator third optional argument must be a function");if(void 0!==validators[name])throw new Error("Validator '"+name+"' already defined");validators[name]=function(expected){if(void 0!==argValidator&&!argValidator(expected))throw new Error("Validator: Invalid argument for "+name+" validator");return new Validator(function(val){var resultObject={actual:val,param:val},result=v.call(resultObject,expected);return this.message=resultObject.message,result})}},Validator.getValidator=function(name){var result;if(void 0===name)throw new Error("Validator: getValidator method requires a string parameter");if("string"!=typeof name)throw new Error("Validator: parameter to getValidator method must be a string");if(void 0===(result=validators[name]))throw new Error("Validator: '"+name+"' does not exist");return result},Validator.validators=function(){var prop,result=[];for(prop in validators)validators.hasOwnProperty(prop)&&result.push(prop);return result},Validator.addValidator("isGreaterThan",function(val){return this.message=this.param+" should be greater than "+val,this.param>val}),Validator.addValidator("isLessThan",function(val){return this.message=this.param+" should be less than "+val,this.param<val}),Validator.addValidator("isOneOf",function(val){return this.message=this.param+" should be one of the set: "+val,-1<val.indexOf(this.param)}),Validator.addValidator("isA",function(val){var models=Model.getModels();return"string"==typeof val&&-1<["string","number","boolean","function","object"].indexOf(val)?(this.message=this.param+" should be a "+val,typeof this.param===val):"string"==typeof val&&-1<models.indexOf(val)?(this.message="parameter should be an instance of "+val,this.param instanceof Model.getModel(val)):"integer"===val?(void 0!==this.param.toString?this.message=this.param.toString()+" should be an integer":this.message="parameter should be an integer","number"==typeof this.param&&parseInt(this.param,10)===this.param):void 0},function(val){return 0<=["string","number","boolean","function","object","integer"].concat(Model.getModels()).indexOf(val)}),validators.isAn=validators.isA,module.exports=Validator},{"../util/index_of.js":11,"./model.js":7}],9:[function(require,module,exports){require("./util/index_of.js");var Model=require("./core/model.js");module.exports={Attr:require("./core/attr.js"),AttrList:require("./core/attr_list.js"),Model:Model,getModel:Model.getModel,getModels:Model.getModels,Validator:require("./core/validator.js"),Method:require("./core/method.js"),util:{EventEmitter:require("./util/event_emitter.js"),namespace:require("./util/namespace.js")}}},{"./core/attr.js":4,"./core/attr_list.js":5,"./core/method.js":6,"./core/model.js":7,"./core/validator.js":8,"./util/event_emitter.js":10,"./util/index_of.js":11,"./util/namespace.js":12}],10:[function(require,module,exports){"use strict";require("./index_of.js");module.exports=function(){var that=this,listeners={};return this.on=function(event,listener){if("string"!=typeof event)throw new Error("EventEmitter: first argument to 'on' should be a string");if("function"!=typeof listener)throw new Error("EventEmitter: second argument to 'on' should be a function");return listeners[event]||(listeners[event]=[]),listeners[event].push(listener),that},this.addListener=this.on,this.once=function(event,listener){var f=function(){listener(arguments),that.removeListener(event,f)};return that.on(event,f),that},this.removeListener=function(event,listener){var index;if("string"!=typeof event)throw new Error("EventEmitter: first parameter to removeListener method must be a string representing an event");if("function"!=typeof listener)throw new Error("EventEmitter: second parameter must be a function to remove as an event listener");if(void 0===listeners[event]||0===listeners[event].length)throw new Error("EventEmitter: there are no listeners registered for the '"+event+"' event");return-1!==(index=listeners[event].indexOf(listener))&&listeners[event].splice(index,1),that},this.removeAllListeners=function(event){if("string"!=typeof event)throw new Error("EventEmitter: parameter to removeAllListeners should be a string representing an event");return void 0!==listeners[event]&&(listeners[event]=[]),that},this.setMaxListeners=function(number){return that},this.listeners=function(event){if("string"!=typeof event)throw new Error("EventEmitter: listeners method must be called with the name of an event");return void 0===listeners[event]?[]:listeners[event]},this.emit=function(event,data){var i,params;for(1<arguments.length&&(params=[]),i=1;i<arguments.length;++i)params.push(arguments[i]);if(void 0!==listeners[event])for(i=0;i<listeners[event].length;i+=1)listeners[event][i].apply(this,params)},that}},{"./index_of.js":11}],11:[function(require,module,exports){Array.prototype.indexOf||(Array.prototype.indexOf=function(searchElement){"use strict";if(null===this)throw new TypeError;var t=Object(this),len=t.length>>>0;if(0===len)return-1;var n=0;if(0<arguments.length&&((n=Number(arguments[1]))!=n?n=0:0!==n&&n!==1/0&&n!==-1/0&&(n=(0<n||-1)*Math.floor(Math.abs(n)))),len<=n)return-1;for(var k=0<=n?n:Math.max(len-Math.abs(n),0);k<len;k++)if(k in t&&t[k]===searchElement)return k;return-1}),module.exports=void 0},{}],12:[function(require,module,exports){module.exports=function namespace(ns,aliases,func){var nsArray,currentNS,i;if(null===ns.match(/^([a-zA-Z]+)(\.[a-zA-Z]*)*$/)||"window"===ns)throw new Error("namespace: "+ns+" is a malformed namespace string");if(void 0!==aliases&&void 0===func)if("function"==typeof aliases)func=aliases,aliases=void 0;else{if("object"==typeof aliases)throw new Error("namespace: if second argument exists, final function argument must exist");if("object"!=typeof aliases)throw new Error("namespace: second argument must be an object of aliased local namespaces")}else if("object"!=typeof aliases&&"function"==typeof func)throw new Error("namespace: second argument must be an object of aliased local namespaces");if(currentNS="window"===(nsArray=ns.split("."))[0]?window:void 0===window[nsArray[0]]?window[nsArray[0]]={}:window[nsArray[0]],void 0!==func&&"function"!=typeof func)throw new Error("namespace: last parameter must be a function that accepts a namespace parameter");for(i=1;i<nsArray.length;i+=1)void 0===currentNS[nsArray[i]]&&(currentNS[nsArray[i]]={}),currentNS=currentNS[nsArray[i]];if(void 0===aliases&&func)func(currentNS);else if(func){for(i in aliases)aliases.hasOwnProperty(i)&&(aliases[i]=namespace(aliases[i]));func.call(aliases,currentNS)}return currentNS}},{}],13:[function(require,module,exports){!function($){var types=["DOMMouseScroll","mousewheel"];if($.event.fixHooks)for(var i=types.length;i;)$.event.fixHooks[types[--i]]=$.event.mouseHooks;function handler(event){var orgEvent=event||window.event,args=[].slice.call(arguments,1),delta=0,deltaX=0,deltaY=0;return(event=$.event.fix(orgEvent)).type="mousewheel",orgEvent.wheelDelta&&(delta=orgEvent.wheelDelta/120),orgEvent.detail&&(delta=-orgEvent.detail/3),deltaY=delta,void 0!==orgEvent.axis&&orgEvent.axis===orgEvent.HORIZONTAL_AXIS&&(deltaY=0,deltaX=-1*delta),void 0!==orgEvent.wheelDeltaY&&(deltaY=orgEvent.wheelDeltaY/120),void 0!==orgEvent.wheelDeltaX&&(deltaX=-1*orgEvent.wheelDeltaX/120),args.unshift(event,delta,deltaX,deltaY),($.event.dispatch||$.event.handle).apply(this,args)}$.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var i=types.length;i;)this.addEventListener(types[--i],handler,!1);else this.onmousewheel=handler},teardown:function(){if(this.removeEventListener)for(var i=types.length;i;)this.removeEventListener(types[--i],handler,!1);else this.onmousewheel=null}},$.fn.extend({mousewheel:function(fn){return fn?this.bind("mousewheel",fn):this.trigger("mousewheel")},unmousewheel:function(fn){return this.unbind("mousewheel",fn)}})}(jQuery)},{}],14:[function(require,module,exports){!function($){var defaults={fullscreen:!1,scale:!1,defaultEventHandling:!0,preopen:function(){},postopen:function(){},preclose:function(){},postclose:function(){},preresize:function(){},postresize:function(){}},methods={open:function(){var w,h,clone=this.clone(!0),data=this.data("lightbox");data.contents=clone,data.preopen.call(this);var cloneData=(clone=data.contents).data("lightbox");if(data.overlay=$("<div/>").css({position:"fixed",left:"0px",top:"0px",height:"100%","min-height":"100%",width:"100%","z-index":"9999","background-color":"black",opacity:"0.5"}).appendTo("body"),data.box=$("<div/>").css({position:"fixed","z-index":"9999"}).appendTo("body"),data.box.append(clone),!0===data.fullscreen)w=window.innerWidth,h=window.innerHeight;else if(w=clone.width(),h=clone.height(),!0===data.scale){var r=computeRatio(w,h);w=parseInt(w*r,10),h=parseInt(h*r,10)}return scaleElement(data.box,w,h),positionElement(data.box,w,h),scaleElement(clone,w,h),positionElement(clone,w,h),clone.css("position","fixed").css("z-index",9999),data.box.append($('<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkY4OUE4QUE2MDEyMTFFMkFBMEM4Q0Y2RTlFNkI4QzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkY4OUE4QUI2MDEyMTFFMkFBMEM4Q0Y2RTlFNkI4QzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2Rjg5QThBODYwMTIxMUUyQUEwQzhDRjZFOUU2QjhDMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2Rjg5QThBOTYwMTIxMUUyQUEwQzhDRjZFOUU2QjhDMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvXC/ukAAAcjSURBVHjaxFlpTFVXEJ7HDrIIUkCRzYitQJQK/kBTxAop2EQhaqkEqjZqK9FGa+2Cf2pabdIlEbE0FEkTArFaF6CAKCCStG5BokXAglpUIkKqgn0KyNb5jve+PB9vfyyTfIF7373nzJkzZ76ZuYqRkRGyUKwYoYwQxqsMD4aj9FsPo4Nxg1HP6LR0Mhsz37NlxDNSGLHt7e2e9+/fpwcPHtDTp0/p+fPn4iFHR0eaOnUqTZ8+nQICAsjV1bWJb5cwChiN5kysMNHCsNwHjE+uXr3qe+nSJWpsbCSlUmnUyzNmzKDw8HCKiooiX1/fGr61l1E9XgonMjLPnDnjX1NTI6xpiURGRtLSpUspJCSklC8/YvwzVgo7M7Lr6+vTzp49S9evX6exlISEBEpOTsYWfcgotFRhX0ZFeXl52JEjR2i8JDg4mJYtWwZXyeTLjxnD5ig8m1F17NixgJKSEhpvsbGxoZSUFIqNjf2VL1MZQ6Yo7M34o7CwcPapU6doImXdunUUFxf3E/+bbqzCCFm1x48fjzpx4gRNhmzYsAGWxkHM0hb0NeWrioqKKFaYsJjJwOnTp6HH94zXDSkczth59OjRSVMWYCKi3NxcO9blZ4a1PqbL5AdtwFa6ZM6cOWRvb09WVlakUChU95uamlQMpynu7u4gCvEOIEtnZyd1dHRofaeqqopmzZoVydHjfb7M1aZwDLNWdGVlpV7/6u3tpSVLlgjKtbW1Vd338vKSt/IlsbOzE8w2c+ZMcnNzU73z5MkTOnToEOkLq0xSCHdf8L+/MAY1Fd6JCYeHh/Uq3NbWRq2trbR8+XJhOdlisCDyiWvXrr30/Pz588VvgYGB5OnpSdbWL3Y4MzOT9O0k5NatW3ThwoUgXnASX/6m7sNeSGYuXrxolI9hu27fvi1cYsqUKeTs7CyUx+n28PBQPRcUFERz584VOYSPjw+SH/FsbW0tMXMaNde5c+eg33uahy6JrWszMDAgLGwM8vPz6d69e9Tf3y8GgOW8vb1py5Yt4ncoFhERIRQFkLlhgTdv3hSuYOw8V65cwfBvMVzUFY5paGgwehDg0aNHxCwo/g4ODr4I4OyfsOiKFSsE/Pz8hHVhWbgO/H///v0mzQMjstJw/DfUFV7U3Nxscvipq6sjJEQ4QLLvI4KsWrVKWBd+CxcB7UI4AtHdu3dNnufGDeT/FCUfOieGX1dXF5lTfRQXFwtLQkH4s+zXcuiTla2urhan3hzBIllekxUO5BsKQ9FBlzx79owKCgrI399fuAQUhT/L0QACIsjLyyNzyzEp9w6SXcIVk5riV5qAQkg/u7u7aWhoaFTcRgh7/Pix2eNL4c9VtrCdHB0sEQz68OFDcnFxIScnJ9V9BwcHsQhLxpcikb1s4X5spSUWBiEsXLhQe8LNPr1t2zaxCHPHl9ixV1a4B4fE3EQFPsv5K02bNk0A16PKFmY65LnmzoFdYvlPdok2PuVwPGtzti0mJkZECeQKYDv1w6ZKsNlCWBQSJLCkqYJYztIqW7gPSoOlTF15aGioinrhFnJic/LkSVH+I3vDc3ALMN369euRgZk8DwzC8rc6cZznctskv0J2tnjx4lHU29LSIths3759In729fW9yAE4JuOd9PR0k304LCwMQ/yprnD1ggULTBoEPQX4JqyLyCBT765du8TvUDY7O1tQN6KQXGjCMBs3bjR6HrgYk1K/psLFCQkJ/RjQmC2CssjEoCz8VmazrKwsEdrk5y5fviyYsKenRxWfcSgTExPF7hgzF56T2lu96gp3Q2kcDEMrRsWBrg2UxRbLUYHrQCoqKhr1PFgQOTLISfZnhLitW7eK7M7QfPHxaOFRvraa7rukpCSD4YWrWeGzaPBhYiiANHPPnj0630M6CRfRTEW3b9+udz704djCaBqWayuR6vjElyUnJ799+PBhreEFHUhUG6BgHC45hCEh1xcSkezn5OTQvHnzVIuEIIpgx6RsbJTAgKji1TtBmn2JYMZfK1eudNBVHE6UrF27lnbs2IFy403GiK4yH8H5y7S0tEkt87ETrKxSau2OGGpof7t69eoYpVIZj1M/0YLqBAWA1M1sMabzgxW9y6zUsGnTpgm1LCIOiIVD7F5drVd93UsfRiUn3mEHDx4cd8siTIK616xZ8wM6/Ob2h90ZRRw1oqG0oT6CuRIdHU0HDhyAIp/DJS3twMPPv2Z8mpGRoSgrKxszRUHnaAts3ry5C01L9Xg7Ft84FjF+ZEYLRzkk9QvMbl7jYO3evRvxNY+Rwfh3PL4i4ZC+w/iMc9vw0tJStJJEc8SQ4ECBuZA/p6amDkitp28YJn00UVjwYTFCau3HcYEZCqXv3LkjEh18BkNuDFYDBaM/wSyK5OU843cGqLRrIr7T6ZJXpK+hwdKXUDcwLwPBv11KvpulYsEiGSuFJ0z+F2AAyCap34M2ukUAAAAASUVORK5CYII=" alt="close"/>').css({position:"absolute",right:"-9px",top:"-8px",width:"44px",height:"44px","z-index":"10000"}).click(function(){clone.lightbox("close")})),cloneData.contentWidth=w,cloneData.contentHeight=h,cloneData.opened=!0,cloneData.resizeHandler=function(){clone.lightbox("resize")},$(window).on("resize",cloneData.resizeHandler),$(window).on("orientationchange",cloneData.resizeHandler),data.postopen.call(this),this},close:function(){var data=this.data("lightbox");return data.preclose.call(this),$(window).off("resize",data.resizeHandler),$(window).off("orientationchange",data.resizeHandler),data.opened=!1,data.overlay.remove(),data.overlay=void 0,data.postclose.call(this),data.box.remove(),this},resize:function(){var w,h,data=this.data("lightbox");if(data.preresize.call(this),!0===data.fullscreen)w=window.innerWidth,h=window.innerHeight;else if(w=data.contentWidth,h=data.contentHeight,!0===data.scale){var r=computeRatio(w,h);w=parseInt(w*r,10),h=parseInt(h*r,10)}return scaleElement(data.box,w,h),positionElement(data.box,w,h),scaleElement(data.contents,w,h),positionElement(data.contents,w,h),data.contentWidth=w,data.contentHeight=h,data.postresize.call(this),this},toggle:function(){return!0===this.data("lightbox").opened?this.lightbox("close"):this.lightbox("open"),this},init:function(options){return this.each(function(){var $this=$(this);if(!$this.data("lightbox")){var settings=$.extend(defaults,options,{opened:!1});$this.data("lightbox",settings)}return!0===$this.data("lightbox").defaultEventHandling&&$this.on("touchstart",function(e){var t2=e.timeStamp,dt=t2-($this.data("lightbox").lastTouch||t2),fingers=e.originalEvent.touches.length;$this.data("lightbox").lastTouch=t2,!dt||500<dt||1<fingers||(e.preventDefault(),$this.lightbox("toggle"))}),this})}};$.fn.lightbox=function(method){return methods[method]?methods[method].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof method&&method?($.error("Method "+method+" does not exist on jQuery.lightbox"),null):methods.init.apply(this,arguments)};var computeRatio=function(originalWidth,originalHeight){var wr=0<originalWidth?window.innerWidth/originalWidth:1,hr=0<originalHeight?window.innerHeight/originalHeight:1;return Math.min(wr,hr)},scaleElement=function(elem,width,height){elem.css("width",width+"px").css("height",height+"px")},positionElement=function(elem,width,height){var left=(window.innerWidth-width)/2,top=(window.innerHeight-height)/2;left<0&&(left=0),top<0&&(top=0),elem.css("left",left+"px").css("top",top+"px")}}(jQuery)},{}],15:[function(require,module,exports){!function(){"use strict";for(var lastTime=0,vendors=["ms","moz","webkit","o"],x=0;x<vendors.length&&!window.requestAnimationFrame;++x)window.requestAnimationFrame=window[vendors[x]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[vendors[x]+"CancelAnimationFrame"]||window[vendors[x]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(callback,element){var currTime=(new Date).getTime(),timeToCall=Math.max(0,16-(currTime-lastTime)),id=window.setTimeout(function(){callback(currTime+timeToCall)},timeToCall);return lastTime=currTime+timeToCall,id}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(id){clearTimeout(id)})}()},{}],16:[function(require,module,exports){var sprintf=function(){function get_type(variable){return Object.prototype.toString.call(variable).slice(8,-1).toLowerCase()}function str_repeat(input,multiplier){for(var output=[];0<multiplier;output[--multiplier]=input);return output.join("")}var str_format=function(){return str_format.cache.hasOwnProperty(arguments[0])||(str_format.cache[arguments[0]]=str_format.parse(arguments[0])),str_format.format.call(null,str_format.cache[arguments[0]],arguments)};return str_format.object_stringify=function(obj,depth,maxdepth,seen){var str="";if(null!=obj)switch(typeof obj){case"function":return"[Function"+(obj.name?": "+obj.name:"")+"]";case"object":if(obj instanceof Error)return"["+obj.toString()+"]";if(maxdepth<=depth)return"[Object]";if(seen&&(seen=seen.slice(0)).push(obj),null!=obj.length){str+="[";var arr=[];for(var i in obj)seen&&0<=seen.indexOf(obj[i])?arr.push("[Circular]"):arr.push(str_format.object_stringify(obj[i],depth+1,maxdepth,seen));str+=arr.join(", ")+"]"}else{if("getMonth"in obj)return"Date("+obj+")";str+="{";arr=[];for(var k in obj)obj.hasOwnProperty(k)&&(seen&&0<=seen.indexOf(obj[k])?arr.push(k+": [Circular]"):arr.push(k+": "+str_format.object_stringify(obj[k],depth+1,maxdepth,seen)));str+=arr.join(", ")+"}"}return str;case"string":return'"'+obj+'"'}return""+obj},str_format.format=function(parse_tree,argv){var arg,i,k,match,pad,pad_character,pad_length,cursor=1,tree_length=parse_tree.length,node_type="",output=[];for(i=0;i<tree_length;i++)if("string"===(node_type=get_type(parse_tree[i])))output.push(parse_tree[i]);else if("array"===node_type){if((match=parse_tree[i])[2])for(arg=argv[cursor],k=0;k<match[2].length;k++){if(!arg.hasOwnProperty(match[2][k]))throw new Error(sprintf('[sprintf] property "%s" does not exist',match[2][k]));arg=arg[match[2][k]]}else arg=match[1]?argv[match[1]]:argv[cursor++];if(/[^sO]/.test(match[8])&&"number"!=get_type(arg))throw new Error(sprintf('[sprintf] expecting number but found %s "'+arg+'"',get_type(arg)));switch(match[8]){case"b":arg=arg.toString(2);break;case"c":arg=String.fromCharCode(arg);break;case"d":arg=parseInt(arg,10);break;case"e":arg=match[7]?arg.toExponential(match[7]):arg.toExponential();break;case"f":arg=match[7]?parseFloat(arg).toFixed(match[7]):parseFloat(arg);break;case"O":arg=str_format.object_stringify(arg,0,parseInt(match[7])||5);break;case"o":arg=arg.toString(8);break;case"s":arg=(arg=String(arg))&&match[7]?arg.substring(0,match[7]):arg;break;case"u":arg=Math.abs(arg);break;case"x":arg=arg.toString(16);break;case"X":arg=arg.toString(16).toUpperCase()}arg=/[def]/.test(match[8])&&match[3]&&0<=arg?"+"+arg:arg,pad_character=match[4]?"0"==match[4]?"0":match[4].charAt(1):" ",pad_length=match[6]-String(arg).length,pad=match[6]?str_repeat(pad_character,pad_length):"",output.push(match[5]?arg+pad:pad+arg)}return output.join("")},str_format.cache={},str_format.parse=function(fmt){for(var _fmt=fmt,match=[],parse_tree=[],arg_names=0;_fmt;){if(null!==(match=/^[^\x25]+/.exec(_fmt)))parse_tree.push(match[0]);else if(null!==(match=/^\x25{2}/.exec(_fmt)))parse_tree.push("%");else{if(null===(match=/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosOuxX])/.exec(_fmt)))throw new Error("[sprintf] "+_fmt);if(match[2]){arg_names|=1;var field_list=[],replacement_field=match[2],field_match=[];if(null===(field_match=/^([a-z_][a-z_\d]*)/i.exec(replacement_field)))throw new Error("[sprintf] "+replacement_field);for(field_list.push(field_match[1]);""!==(replacement_field=replacement_field.substring(field_match[0].length));)if(null!==(field_match=/^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)))field_list.push(field_match[1]);else{if(null===(field_match=/^\[(\d+)\]/.exec(replacement_field)))throw new Error("[sprintf] "+replacement_field);field_list.push(field_match[1])}match[2]=field_list}else arg_names|=2;if(3===arg_names)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");parse_tree.push(match)}_fmt=_fmt.substring(match[0].length)}return parse_tree},str_format}();((module.exports=sprintf).sprintf=sprintf).vsprintf=function(fmt,argv){var argvClone=argv.slice();return argvClone.unshift(fmt),sprintf.apply(null,argvClone)}},{}],17:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),Data=require("./data.js"),DataValue=require("./data_value.js"),ArrayData=new jermaine.Model(function(){var ArrayData=this;this.isA(Data),this.hasAn("array"),this.hasA("stringArray"),this.isBuiltWith("columns","stringArray",function(){this.init(),this.addListener("listenerAdded",function(event){if("dataReady"===event.targetType){var data=this.array();event.listener(data[0][0],data[data.length-1][0])}})}),this.respondsTo("getIterator",function(columnIds,min,max,buffer){return ArrayData.getArrayDataIterator(this,columnIds,min,max,buffer)}),this.respondsTo("getBounds",function(columnNumber){var i,data=this.array(),min=data[0][columnNumber],max=min;for(i=1;i<data.length;i++)data[i][columnNumber]<min&&(min=data[i][columnNumber]),data[i][columnNumber]>max&&(max=data[i][columnNumber]);return[min,max]}),ArrayData.getArrayDataIterator=function(arrayData,columnIds,min,max,buffer){var i,j,firstIndex,lastIndex,currentIndex,columnIndices,array=arrayData.array();if(buffer=buffer||0,"[object Array]"!==Object.prototype.toString.apply(columnIds))throw new Error("ArrayData: getIterator method requires that the first parameter be an array of strings");for(i=0;i<columnIds.length;++i)if("string"!=typeof columnIds[i])throw new Error("ArrayData: getIterator method requires that the first parameter be an array of strings");if(!DataValue.isInstance(min)||!DataValue.isInstance(max))throw new Error("ArrayData: getIterator method requires the second and third argument to be number values");if("number"!=typeof buffer)throw new Error("ArrayData: getIterator method requires last argument to be an integer");if(0===array.length)return{next:function(){},hasNext:function(){return!1}};for(firstIndex=0;firstIndex<array.length&&!array[firstIndex][0].ge(min);++firstIndex);if((firstIndex-=buffer)<0&&(firstIndex=0),firstIndex===array.length-1)lastIndex=firstIndex;else for(lastIndex=firstIndex;lastIndex<array.length-1&&!array[lastIndex+1][0].gt(max);++lastIndex);for((lastIndex+=buffer)>array.length-1&&(lastIndex=array.length-1),columnIndices=[],j=0;j<columnIds.length;++j){var k=arrayData.columnIdToColumnNumber(columnIds[j]);columnIndices.push(k)}return currentIndex=firstIndex,{next:function(){var i,projection=[];if(lastIndex<currentIndex)return null;for(i=0;i<columnIndices.length;++i)projection.push(array[currentIndex][columnIndices[i]]);return++currentIndex,projection},hasNext:function(){return currentIndex<=lastIndex}}},ArrayData.textToDataValuesArray=function(dataVariableArray,text){var i,dataValues=[],lines=text.split("\n");for(i=0;i<lines.length;++i)if(/\d/.test(lines[i])){var j,stringValuesThisRow=lines[i].split(/\s*,\s*/),dataValuesThisRow=[];if(stringValuesThisRow.length===dataVariableArray.length){for(j=0;j<stringValuesThisRow.length;++j)dataValuesThisRow.push(DataValue.parse(dataVariableArray[j].type(),stringValuesThisRow[j]));dataValues.push(dataValuesThisRow)}}return dataValues},ArrayData.textToStringArray=function(dataVariables,text){var stringValuesThisRow,numColumns,i,stringValues=[],lines=text.split("\n");for(i=0;i<lines.length;++i)lines[i]=lines[i].replace(/^\s+/,"").replace(/\s+$/,"").replace(/\s*,\s*/g,",").replace(/\s+/g,",");for(i=0;i<lines.length;++i)if(/\d/.test(lines[i])){numColumns=lines[i].split(/,/).length;break}for(i=0;i<lines.length;++i)if(/\d/.test(lines[i])){if((stringValuesThisRow=lines[i].split(/,/)).length!==numColumns)throw new Error("Data Parsing Error: The line '"+lines[i]+"' has "+stringValuesThisRow.length+" data columns when it requires "+numColumns+" columns");stringValues.push(stringValuesThisRow)}return stringValues},ArrayData.stringArrayToDataValuesArray=function(dataVariableArray,stringArray){var dataValuesThisRow,i,j,dataValues=[];for(i=0;i<stringArray.length;++i){for(dataValuesThisRow=[],j=0;j<stringArray[i].length;++j)dataValuesThisRow.push(DataValue.parse(dataVariableArray[j].type(),stringArray[i][j]));dataValues.push(dataValuesThisRow)}return dataValues}});module.exports=ArrayData},{"../../lib/jermaine/src/jermaine.js":9,"./data.js":26,"./data_value.js":30}],18:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.horizontalaxis),Displacement=require("../math/displacement.js"),Point=require("../math/point.js"),DataMeasure=require("../core/data_measure.js"),RGBColor=require("../math/rgb_color.js"),Enum=require("../math/enum.js"),EventEmitter=require("./event_emitter.js"),Text=require("../core/text.js"),AxisBinding=require("./axis_binding.js"),AxisTitle=require("./axis_title.js"),DataValue=require("./data_value.js"),Grid=require("./grid.js"),Labeler=require("./labeler.js"),Pan=require("./pan.js"),Zoom=require("./zoom.js"),Util=require("../math/util.js"),Orientation=new Enum("AxisOrientation"),Axis=new jermaine.Model("Axis",function(){this.isA(EventEmitter),this.hasA("title").which.validatesWith(function(title){return title instanceof AxisTitle}),this.hasMany("labelers").eachOfWhich.validateWith(function(labelers){return labelers instanceof Labeler}),this.hasA("grid").which.validatesWith(function(grid){return grid instanceof Grid}),this.hasA("pan").which.validatesWith(function(pan){return pan instanceof Pan}),this.hasA("zoom").which.validatesWith(function(zoom){return zoom instanceof Zoom}),this.hasA("binding").which.validatesWith(function(binding){return null===binding||binding instanceof AxisBinding}),this.hasAn("id").which.isA("string"),this.hasA("type").which.isOneOf(DataValue.types()),this.hasA("length").which.validatesWith(function(length){return length instanceof Displacement}),this.hasA("position").which.validatesWith(function(position){return position instanceof Point}),this.hasA("pregap").which.isA("number"),this.hasA("postgap").which.isA("number"),this.hasAn("anchor").which.isA("number"),this.hasA("base").which.validatesWith(function(base){return base instanceof Point}),this.hasA("visible").which.isA("boolean").and.which.defaultsTo(!0),this.hasA("min").which.isA("string"),this.hasA("dataMin").which.validatesWith(DataValue.isInstance),this.respondsTo("hasDataMin",function(){return void 0!==this.dataMin()}),this.hasA("minoffset").which.isA("number"),this.hasA("minposition").which.validatesWith(function(minposition){return minposition instanceof Displacement}),this.hasA("max").which.isA("string"),this.hasA("dataMax").which.validatesWith(DataValue.isInstance),this.respondsTo("hasDataMax",function(){return void 0!==this.dataMax()}),this.hasA("maxoffset").which.isA("number"),this.hasA("maxposition").which.validatesWith(function(maxposition){return maxposition instanceof Displacement}),this.hasA("positionbase").which.isA("string"),this.hasA("color").which.validatesWith(function(color){return color instanceof RGBColor}),this.hasA("tickcolor").which.validatesWith(function(color){return null===color||color instanceof RGBColor}),this.hasA("tickwidth").which.isA("integer"),this.hasA("tickmin").which.isA("integer"),this.hasA("tickmax").which.isA("integer"),this.hasA("highlightstyle").which.validatesWith(function(highlightstyle){return"string"==typeof highlightstyle}),this.hasA("linewidth").which.isA("integer"),this.hasA("orientation").which.validatesWith(Orientation.isInstance),this.isBuiltWith("orientation",function(){this.grid(new Grid),this.zoom(new Zoom),this.pan(new Pan)}),this.hasA("pixelLength").which.isA("number"),this.hasA("parallelOffset").which.isA("number"),this.hasA("perpOffset").which.isA("number"),this.hasA("axisToDataRatio").which.isA("number"),this.respondsTo("initializeGeometry",function(graph,graphicsContext){var pixelLength,i,plotBox=graph.plotBox(),position=this.position(),base=this.base();for(this.orientation()===Axis.HORIZONTAL?(pixelLength=this.length().calculateLength(plotBox.width()),this.pixelLength(pixelLength),this.parallelOffset(position.x()+(base.x()+1)*plotBox.width()/2-(this.anchor()+1)*pixelLength/2),this.perpOffset(position.y()+(base.y()+1)*plotBox.height()/2)):(pixelLength=this.length().calculateLength(plotBox.height()),this.pixelLength(pixelLength),this.parallelOffset(position.y()+(base.y()+1)*plotBox.height()/2-(this.anchor()+1)*pixelLength/2),this.perpOffset(position.x()+(base.x()+1)*plotBox.width()/2)),this.minoffset(this.minposition().calculateCoordinate(pixelLength)),this.maxoffset(pixelLength-this.maxposition().calculateCoordinate(pixelLength)),this.hasDataMin()&&this.hasDataMax()&&this.computeAxisToDataRatio(),i=0;i<this.labelers().size();++i)this.labelers().at(i).initializeGeometry(graph);this.title()&&this.title().initializeGeometry(graph,graphicsContext)}),this.respondsTo("computeAxisToDataRatio",function(){this.hasDataMin()&&this.hasDataMax()&&this.axisToDataRatio((this.pixelLength()-this.maxoffset()-this.minoffset())/(this.dataMax().getRealValue()-this.dataMin().getRealValue()))}),this.respondsTo("dataValueToAxisValue",function(v){return this.axisToDataRatio()*(v.getRealValue()-this.dataMin().getRealValue())+this.minoffset()+this.parallelOffset()}),this.respondsTo("axisValueToDataValue",function(a){return DataValue.create(this.type(),this.dataMin().getRealValue()+(a-this.minoffset()-this.parallelOffset())/this.axisToDataRatio())}),this.hasA("currentLabeler").which.validatesWith(function(labeler){return null===labeler||labeler instanceof Labeler}),this.hasA("currentLabelDensity").which.isA("number"),this.hasA("currentLabelerIndex").which.isA("number"),this.respondsTo("destroy",function(){this.binding()&&this.binding().removeAxis(this)}),this.respondsTo("prepareRender",function(graphicsContext){if(this.hasDataMin()&&this.hasDataMax()){var currentLabeler,storedIndex,currentLabelDensity=0,storedDensity=0,labelers=this.labelers(),nlabelers=labelers.size(),index=this.currentLabelerIndex();if(nlabelers<=0)currentLabeler=null;else{var flag=!0,lastLabelerIndex=labelers.size()-1;for(void 0===index&&(index=0),storedIndex=index,.8<(currentLabelDensity=labelers.at(index).getLabelDensity(graphicsContext))?0===index?flag=!1:(storedDensity=currentLabelDensity,index--):currentLabelDensity<.8?(storedDensity=currentLabelDensity,index===lastLabelerIndex?flag=!1:index++):.8===currentLabelDensity&&(flag=!1);flag;)if(.8<(currentLabelDensity=labelers.at(index).getLabelDensity(graphicsContext))){if(0===index)break;if(!(index<storedIndex)){index=storedIndex,currentLabelDensity=storedDensity;break}storedIndex=index,storedDensity=currentLabelDensity,index--}else if(currentLabelDensity<.8){if(index<storedIndex)break;if(index===lastLabelerIndex)break;storedIndex=index,storedDensity=currentLabelDensity,index++}else if(.8===currentLabelDensity)break}currentLabeler=labelers.at(index),this.currentLabeler(currentLabeler),this.currentLabelerIndex(index),this.currentLabelDensity(currentLabelDensity)}}),this.respondsTo("toRealValue",function(value){if("number"==typeof value)return value;if(DataValue.isInstance(value))return value.getRealValue();throw new Error("unknown value type for axis value "+value)}),this.respondsTo("toDataValue",function(value){if("number"==typeof value)return DataValue.create(this.type(),value);if(DataValue.isInstance(value))return value;throw new Error("unknown value type for axis value "+value)}),this.respondsTo("setDataRangeNoBind",function(min,max,dispatch){var dataValueMin=this.toDataValue(min),dataValueMax=this.toDataValue(max);this.dataMin(dataValueMin),this.dataMax(dataValueMax),void 0===dispatch&&(dispatch=!0),this.emit({type:"dataRangeSet",min:dataValueMin,max:dataValueMax})}),this.respondsTo("setDataRange",function(min,max,dispatch){this.binding()?this.binding().setDataRange(this,min,max,dispatch):this.setDataRangeNoBind(min,max,dispatch)}),this.respondsTo("doPan",function(pixelBase,pixelDisplacement){var offset,newRealMin,newRealMax,pan=this.pan(),panMin=pan.min(),panMax=pan.max();pan.allowed()&&(offset=pixelDisplacement/this.axisToDataRatio(),newRealMin=this.dataMin().getRealValue()-offset,newRealMax=this.dataMax().getRealValue()-offset,panMin&&newRealMin<panMin.getRealValue()&&(newRealMax+=panMin.getRealValue()-newRealMin,newRealMin=panMin.getRealValue()),panMax&&newRealMax>panMax.getRealValue()&&(newRealMin-=newRealMax-panMax.getRealValue(),newRealMax=panMax.getRealValue()),this.setDataRange(DataValue.create(this.type(),newRealMin),DataValue.create(this.type(),newRealMax)))}),this.respondsTo("doZoom",function(pixelBase,pixelDisplacement){var baseRealValue,factor,newMin,newMax,d,zoom=this.zoom(),pan=this.pan(),type=this.type(),dataMin=this.dataMin(),dataMax=this.dataMax(),panMin=pan.min(),panMax=pan.max(),zoomMin=zoom.min(),zoomMax=zoom.max();zoom.allowed()&&(baseRealValue=this.axisValueToDataValue(pixelBase).getRealValue(),DataValue.isInstance(zoom.anchor())&&(baseRealValue=zoom.anchor().getRealValue()),factor=10*Math.abs(pixelDisplacement/(this.pixelLength()-this.maxoffset()-this.minoffset())),pixelDisplacement<=0?(newMin=DataValue.create(type,(dataMin.getRealValue()-baseRealValue)*(1+factor)+baseRealValue),newMax=DataValue.create(type,(dataMax.getRealValue()-baseRealValue)*(1+factor)+baseRealValue)):(newMin=DataValue.create(type,(dataMin.getRealValue()-baseRealValue)*(1-factor)+baseRealValue),newMax=DataValue.create(type,(dataMax.getRealValue()-baseRealValue)*(1-factor)+baseRealValue)),panMin&&newMin.lt(panMin)&&(newMin=panMin),panMax&&newMax.gt(panMax)&&(newMax=panMax),(dataMin.le(dataMax)&&newMin.lt(newMax)||dataMin.ge(dataMax)&&newMin.gt(newMax))&&(zoomMax&&newMax.gt(newMin.add(zoomMax))?(d=(newMax.getRealValue()-newMin.getRealValue()-zoomMax.getRealValue())/2,newMax=newMax.addRealValue(-d),newMin=newMin.addRealValue(d)):zoomMin&&newMax.lt(newMin.add(zoomMin))&&(d=(zoomMin.getRealValue()-(newMax.getRealValue()-newMin.getRealValue()))/2,newMax=newMax.addRealValue(d),newMin=newMin.addRealValue(-d)),this.setDataRange(newMin,newMax)))}),this.respondsTo("distanceToPoint",function(x,y){var perpCoord=this.orientation()===Axis.HORIZONTAL?y:x,parallelCoord=this.orientation()===Axis.HORIZONTAL?x:y,parallelOffset=this.parallelOffset(),perpOffset=this.perpOffset(),pixelLength=this.pixelLength(),l2dist=Util.l2dist;return parallelCoord<parallelOffset?l2dist(parallelCoord,perpCoord,parallelOffset,perpOffset):parallelOffset+pixelLength<parallelCoord?l2dist(parallelCoord,perpCoord,parallelOffset+pixelLength,perpOffset):Math.abs(perpCoord-perpOffset)}),this.respondsTo("normalize",function(graph){var i,label;if(this.title()&&void 0===this.title().content()&&this.title().content(new Text(this.id())),0===this.labelers().size()){var defaultValues=utilityFunctions.getDefaultValuesFromXSD().horizontalaxis.labels,defaultSpacings=this.type()===DataValue.NUMBER?defaultValues.defaultNumberSpacing:defaultValues.defaultDatetimeSpacing;for(i=0;i<defaultSpacings.length;i++)(label=new Labeler(this)).spacing(DataMeasure.parse(this.type(),defaultSpacings[i])),this.labelers().add(label)}for(i=0;i<this.labelers().size();i++)this.labelers().at(i).normalize()}),utilityFunctions.insertDefaults(this,defaultValues.horizontalaxis,attributes)});Axis.HORIZONTAL=new Orientation("horizontal"),Axis.VERTICAL=new Orientation("vertical"),Axis.Orientation=Orientation,module.exports=Axis},{"../../lib/jermaine/src/jermaine.js":9,"../core/data_measure.js":28,"../core/text.js":64,"../math/displacement.js":101,"../math/enum.js":102,"../math/point.js":104,"../math/rgb_color.js":105,"../math/util.js":106,"../util/utilityFunctions.js":157,"./axis_binding.js":19,"./axis_title.js":20,"./data_value.js":30,"./event_emitter.js":38,"./grid.js":42,"./labeler.js":45,"./pan.js":52,"./zoom.js":71}],19:[function(require,module,exports){var AxisBinding=new(require("../../lib/jermaine/src/jermaine.js").Model)("AxisBinding",function(){var AxisBinding=this;AxisBinding.instances={},this.hasA("id").which.isA("string"),this.hasA("axes"),this.isBuiltWith("id",function(){(AxisBinding.instances[this.id()]=this).axes([])}),this.respondsTo("addAxis",function(axis,min,max,multigraph){axis.binding()&&axis.binding().removeAxis(axis),axis.binding(this),min=axis.toRealValue(min),max=axis.toRealValue(max),this.axes().push({axis:axis,multigraph:multigraph,factor:1/(max-min),offset:-min/(max-min),min:min,max:max})}),this.respondsTo("removeAxis",function(axis){var i,axes=this.axes();for(i=0;i<axes.length;++i)if(axes[i].axis===axis){axes.splice(i,1);break}}),this.respondsTo("sync",function(){var i,axis,axes=this.axes();for(i=0;i<axes.length;++i)if((axis=axes[i].axis).hasDataMin()&&axis.hasDataMax())return axis.setDataRange(axis.dataMin(),axis.dataMax()),!0;return!1}),this.respondsTo("setDataRange",function(initiatingAxis,min,max,dispatch){var initiatingAxisIndex,i,j,axis,redrawn,axes=this.axes(),minRealValue=initiatingAxis.toRealValue(min),maxRealValue=initiatingAxis.toRealValue(max),redrawn_multigraphs=[];for(void 0===dispatch&&(dispatch=!0),i=0;i<axes.length;++i)if(axes[i].axis===initiatingAxis){redrawn_multigraphs=[axes[initiatingAxisIndex=i].multigraph];break}for(i=0;i<axes.length;++i)if(axis=axes[i],i===initiatingAxisIndex)axis.axis.setDataRangeNoBind(minRealValue,maxRealValue,dispatch);else if(axis.axis.setDataRangeNoBind((minRealValue*axes[initiatingAxisIndex].factor+axes[initiatingAxisIndex].offset-axis.offset)/axis.factor,(maxRealValue*axes[initiatingAxisIndex].factor+axes[initiatingAxisIndex].offset-axis.offset)/axis.factor,dispatch),void 0!==axis.multigraph){for(redrawn=!1,j=0;j<redrawn_multigraphs.length;++j)if(axis.multigraph===redrawn_multigraphs[j]){redrawn=!0;break}redrawn||(axis.multigraph.redraw(),redrawn_multigraphs.push(axis.multigraph))}}),AxisBinding.getInstanceById=function(id){return AxisBinding.instances[id]},AxisBinding.findByIdOrCreateNew=function(id){var binding=AxisBinding.getInstanceById(id);return binding||(binding=new AxisBinding(id)),binding},AxisBinding.syncAllBindings=function(){var id;for(id in AxisBinding.instances)AxisBinding.instances[id].sync()},AxisBinding.forgetAllBindings=function(){var id,j,binding;for(id in AxisBinding.instances)for(binding=AxisBinding.instances[id],j=0;j<binding.axes().length;++j)binding.axes()[j].axis.binding(null);AxisBinding.instances={}}});module.exports=AxisBinding},{"../../lib/jermaine/src/jermaine.js":9}],20:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.horizontalaxis.title),Point=require("../math/point.js"),AxisTitle=new jermaine.Model("AxisTitle",function(){this.hasA("axis").which.validatesWith(function(axis){return axis instanceof require("./axis.js")}),this.hasA("content").which.validatesWith(function(content){return content instanceof require("./text.js")}),this.hasA("anchor").which.validatesWith(function(anchor){return anchor instanceof Point}),this.hasA("base").which.isA("number"),this.hasA("position").which.validatesWith(function(position){return position instanceof Point}),this.hasA("angle").which.isA("number"),this.hasA("font").which.isA("string").and.which.defaultsTo(""),this.isBuiltWith("axis"),this.respondsTo("initializeGeometry",function(graph,graphicsContext){var Axis=require("./axis.js"),titleDefaults=defaultValues.horizontalaxis.title,axis=this.axis(),position=this.position,anchor=this.anchor,plotBox=graph.plotBox(),axisPerpOffset=axis.perpOffset(),axisIsHorizontal=axis.orientation()===Axis.HORIZONTAL,getValue=function(valueOrFunction){return"function"==typeof valueOrFunction?valueOrFunction():valueOrFunction};return void 0===position()&&(axisIsHorizontal?axisPerpOffset>plotBox.height()/2?position(getValue(titleDefaults["position-horizontal-top"])):position(getValue(titleDefaults["position-horizontal-bottom"])):axisPerpOffset>plotBox.width()/2?position(getValue(titleDefaults["position-vertical-right"])):position(getValue(titleDefaults["position-vertical-left"]))),void 0===anchor()&&(axisIsHorizontal?axisPerpOffset>plotBox.height()/2?anchor(getValue(titleDefaults["anchor-horizontal-top"])):anchor(getValue(titleDefaults["anchor-horizontal-bottom"])):axisPerpOffset>plotBox.width()/2?anchor(getValue(titleDefaults["anchor-vertical-right"])):anchor(getValue(titleDefaults["anchor-vertical-left"]))),graphicsContext.angle=this.angle(),this.content().initializeGeometry(graphicsContext),this}),this.respondsTo("render",function(){}),utilityFunctions.insertDefaults(this,defaultValues.horizontalaxis.title,attributes)});module.exports=AxisTitle},{"../../lib/jermaine/src/jermaine.js":9,"../math/point.js":104,"../util/utilityFunctions.js":157,"./axis.js":18,"./text.js":64}],21:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),RGBColor=(utilityFunctions.getKeys(defaultValues.background),require("../math/rgb_color.js")),Img=require("./img.js"),Background=new jermaine.Model("Background",function(){this.hasA("color").which.validatesWith(function(color){return color instanceof RGBColor}).defaultsTo(RGBColor.parse(defaultValues.background.color)),this.hasA("img").which.validatesWith(function(img){return img instanceof Img})});module.exports=Background},{"../../lib/jermaine/src/jermaine.js":9,"../math/rgb_color.js":105,"../util/utilityFunctions.js":157,"./img.js":44}],22:[function(require,module,exports){require("../../lib/jermaine/src/jermaine.js");var vF=require("../util/validationFunctions.js"),CategoryFormatter=function(formatValues){if("array"!==vF.typeOf(formatValues))throw new Error("formatValues must be an array");this.formatValues=formatValues,this.length=Math.max.apply(this,this.formatValues.map(function(s){return s.length}))};CategoryFormatter.prototype.format=function(value){var i=Math.round(value.getRealValue()),k=this.formatValues.length;return this.formatValues[(i%k+k)%k]},CategoryFormatter.prototype.getMaxLength=function(){return this.length},CategoryFormatter.prototype.getFormatString=function(){return this.formatValues},module.exports=CategoryFormatter},{"../../lib/jermaine/src/jermaine.js":9,"../util/validationFunctions.js":158}],23:[function(require,module,exports){var ConsecutiveDistanceFilter=function(options){this.options=options,this.prevPx=void 0,this.prevPy=void 0,this.havePrev=!1,this.distance="distance"in options?options.distance:5};ConsecutiveDistanceFilter.prototype.reset=function(){this.havePrev=!1},ConsecutiveDistanceFilter.prototype.filter=function(datap,pixelp){var filterOut=!1;this.havePrev?(filterOut=Math.abs(pixelp[0]-this.prevPx)+Math.abs(pixelp[1]-this.prevPy)<this.distance)||(this.prevPx=pixelp[0],this.prevPy=pixelp[1]):(this.prevPx=pixelp[0],this.prevPy=pixelp[1]);return this.havePrev=!0,filterOut},module.exports=ConsecutiveDistanceFilter},{}],24:[function(require,module,exports){var ConstantPlot=new(require("../../lib/jermaine/src/jermaine.js").Model)("ConstantPlot",function(){var utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.plot),Plot=require("./plot.js"),DataValue=require("./data_value.js");this.isA(Plot),this.hasA("constantValue").which.validatesWith(DataValue.isInstance),this.isBuiltWith("constantValue"),utilityFunctions.insertDefaults(this,defaultValues.plot,attributes),this.respondsTo("render",function(graph,graphicsContext){if(this.visible()){var haxis=this.horizontalaxis(),renderer=this.renderer(),constantValue=this.constantValue();haxis.hasDataMin()&&haxis.hasDataMax()&&(renderer.setUpMissing(),renderer.begin(graphicsContext),renderer.dataPoint([haxis.dataMin(),constantValue]),renderer.dataPoint([haxis.dataMax(),constantValue]),renderer.end())}})});module.exports=ConstantPlot},{"../../lib/jermaine/src/jermaine.js":9,"../util/utilityFunctions.js":157,"./data_value.js":30,"./plot.js":54}],25:[function(require,module,exports){var CSVData;module.exports=function($){if(void 0!==CSVData)return CSVData;var jermaine=require("../../lib/jermaine/src/jermaine.js"),ArrayData=require("./array_data.js");return CSVData=new jermaine.Model(function(){this.isA(ArrayData),this.hasA("filename").which.isA("string"),this.hasA("messageHandler"),this.hasA("ajaxthrottle"),this.hasA("dataIsReady").which.isA("boolean").and.defaultsTo(!1),this.respondsTo("getIterator",function(columnIds,min,max,buffer){return this.dataIsReady()?ArrayData.getArrayDataIterator(this,columnIds,min,max,buffer):{next:function(){},hasNext:function(){return!1}}}),this.respondsTo("_displayError",function(e){if(!this.messageHandler())throw e;this.messageHandler().error(e)}),this.isBuiltWith("columns","filename","%messageHandler","%ajaxthrottle",function(){var that=this,ajaxthrottle=this.ajaxthrottle();void 0===ajaxthrottle&&(ajaxthrottle=$),this.adapter(ArrayData),this.init(),void 0!==that.filename()&&(that.emit({type:"ajaxEvent",action:"start"}),ajaxthrottle.ajax({url:that.filename(),success:function(data){var dataValues=that.adapter().textToStringArray(that.getColumns(),data);that.stringArray(dataValues),that.ajaxNormalize(),that.dataIsReady(!0),that.emit({type:"dataReady"})},error:function(jqXHR,textStatus,errorThrown){var message=errorThrown;404===jqXHR.statusCode().status?message="File not found: '"+that.filename()+'"':textStatus&&(message=textStatus+": "+message),that._displayError(new Error(message))},complete:function(jqXHR,textStatus){that.emit({type:"ajaxEvent",action:"complete"})}}))})})}},{"../../lib/jermaine/src/jermaine.js":9,"./array_data.js":17}],26:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),EventEmitter=require("./event_emitter.js"),DataValue=require("../core/data_value.js"),DataVariable=require("./data_variable.js"),Data=new jermaine.Model(function(){this.isA(EventEmitter),this.hasAn("id").which.isA("string");var find=function(attrName,attrValue,columns){var i,result=-1;for(i=0;i<columns.size();++i)if(columns.at(i)[attrName]()===attrValue){result=i;break}return result};this.respondsTo("initializeColumns",function(){var i;for(i=0;i<this.columns().size();++i)this.columns().at(i).data(this)}),this.hasMany("columns").eachOfWhich.validateWith(function(column){return this.message="Data: constructor parameter should be an array of DataVariable objects",column instanceof DataVariable}),this.hasA("defaultMissingvalue").which.isA("string"),this.hasA("defaultMissingop").which.isA("string").and.defaultsTo("eq"),this.hasAn("adapter"),this.respondsTo("init",function(){this.initializeColumns()}),this.isBuiltWith("columns",function(){this.init()}),this.respondsTo("columnIdToColumnNumber",function(id){if("string"!=typeof id)throw new Error("Data: columnIdToColumnNumber expects parameter to be a string");var columnIndex=find("id",id,this.columns()),column=void 0;if(0<=columnIndex&&(column=this.columns().at(columnIndex)),void 0===column)throw new Error("Data: no column with the label "+id);return column.column()}),this.respondsTo("columnIdToDataVariable",function(id){if("string"!=typeof id)throw new Error("Data: columnIdToDataVariable requires a string parameter");var columns=this.columns(),dv=-1!==find("id",id,columns)?columns.at(find("id",id,columns)):void 0;if(void 0===dv)throw new Error("Data: no column with the label "+id);return dv}),this.respondsTo("getColumnId",function(column){if("number"!=typeof column)throw new Error("Data: getColumnId method expects an integer");var result=find("column",column,this.columns());if(-1===result)throw new Error("Data: column "+column+" does not exist");return this.columns().at(result).id()}),this.respondsTo("getColumns",function(){var i,result=[],columns=this.columns();for(i=0;i<columns.size();++i)result.push(columns.at(i));return result}),this.respondsTo("getBounds",function(columnNumber){}),this.respondsTo("getIterator",function(){}),this.respondsTo("pause",function(){}),this.respondsTo("resume",function(){}),this.respondsTo("isMissing",function(value,i){var column;if(i<0||i>=this.columns().size())throw new Error("metadata.isMissing(): index out of range");return!(!(column=this.columns().at(i)).missingvalue()||!column.missingop())&&value[column.missingop()](column.missingvalue())});var sortVariables=function(data,sortedVariables,unsortedVariables){var column,i,columns=data.columns();for(i=0;i<columns.size();i++)void 0!==(column=columns.at(i)).column()?sortedVariables[column.column()]=column:unsortedVariables.push(column)},createPlaceholderVariables=function(data,unsortedVariables){var i,numMissingVariables=data.stringArray()[0].length-data.columns().size();if(0<numMissingVariables)for(i=0;i<numMissingVariables;i++)unsortedVariables.push(null)},insertUnsortedVariables=function(sortedVariables,unsortedVariables){var index,i;for(index=i=0;i<unsortedVariables.length;i++){for(;void 0!==sortedVariables[index];)index++;sortedVariables[index]=unsortedVariables[i]}},checkColumnIndicies=function(data,sortedVariables){var i,length=data.stringArray()[0].length;if(sortedVariables.length>length)for(i=0;i<sortedVariables.length;i++)if(sortedVariables[i]instanceof DataVariable&&sortedVariables[i].column()>length)throw new Error("Data Variable Error: Attempting to specify column '"+sortedVariables[i].column()+"' for a variable, while there are only "+length+" data columns available")},handleMissingAttributes=function(sortedVariables,defaultMissingop,defaultMissingvalue){var defaultid,i;for(defaultMissingop=DataValue.parseComparator(defaultMissingop),i=0;i<sortedVariables.length;i++)sortedVariables[i]?(void 0===sortedVariables[i].column()&&sortedVariables[i].column(i),void 0===sortedVariables[i].type()&&sortedVariables[i].type(DataValue.NUMBER)):(defaultid=0===i?"x":1===i?"y":"y"+(i-1),sortedVariables[i]=new DataVariable(defaultid,i,DataValue.NUMBER)),void 0!==defaultMissingvalue&&void 0===sortedVariables[i].missingvalue()&&sortedVariables[i].missingvalue(DataValue.parse(sortedVariables[i].type(),defaultMissingvalue)),void 0===sortedVariables[i].missingop()&&sortedVariables[i].missingop(defaultMissingop)},insertNormalizedVariables=function(data,sortedVariables){for(var i,columns=data.columns();0<columns.size();)columns.pop();for(i=0;i<sortedVariables.length;i++)columns.add(sortedVariables[i]);data.initializeColumns()},createDataValueArray=function(data,sortedVariables){var ArrayData=require("./array_data.js"),stringArray=data.stringArray();if(0<stringArray.length&&stringArray[0].length<sortedVariables.length)throw new Error("data contains only "+stringArray[0].length+" column(s), but should contain "+sortedVariables.length);var dataValues=ArrayData.stringArrayToDataValuesArray(sortedVariables,stringArray);data.array(dataValues),data.stringArray([])};this.prototype.normalize=function(){var ArrayData=require("./array_data.js"),sortedVariables=[],unsortedVariables=[],isWebServiceData="function"==typeof this.serviceaddress,isCSVData="function"==typeof this.filename,isCsvOrWebService=isWebServiceData||isCSVData;if(isCsvOrWebService&&0===this.columns().size())throw new Error("Data Normalization: Data gotten from csv and web service sources require variables to be specified in the mugl.");sortVariables(this,sortedVariables,unsortedVariables),this instanceof ArrayData!=!0||isCsvOrWebService||createPlaceholderVariables(this,unsortedVariables),insertUnsortedVariables(sortedVariables,unsortedVariables),this instanceof ArrayData!=!0||isCsvOrWebService||checkColumnIndicies(this,sortedVariables),handleMissingAttributes(sortedVariables,this.defaultMissingop(),this.defaultMissingvalue()),insertNormalizedVariables(this,sortedVariables),this instanceof ArrayData!=!0||isCsvOrWebService||createDataValueArray(this,sortedVariables)},this.prototype.ajaxNormalize=function(){var sortedVariables=[],unsortedVariables=[];sortVariables(this,sortedVariables,unsortedVariables),createPlaceholderVariables(this,unsortedVariables),insertUnsortedVariables(sortedVariables,unsortedVariables),checkColumnIndicies(this,sortedVariables),handleMissingAttributes(sortedVariables,this.defaultMissingop(),this.defaultMissingvalue()),insertNormalizedVariables(this,sortedVariables),createDataValueArray(this,sortedVariables)}});module.exports=Data},{"../../lib/jermaine/src/jermaine.js":9,"../core/data_value.js":30,"./array_data.js":17,"./data_variable.js":31,"./event_emitter.js":38}],27:[function(require,module,exports){require("../../lib/jermaine/src/jermaine.js");var DataValue=require("./data_value.js"),NumberFormatter=require("./number_formatter.js"),DatetimeFormatter=require("./datetime_formatter.js"),DataFormatter={isInstance:function(obj){return obj&&"function"==typeof obj.format&&"function"==typeof obj.getMaxLength},create:function(type,format){if(type===DataValue.NUMBER)return new NumberFormatter(format);if(type===DataValue.DATETIME)return new DatetimeFormatter(format);throw new Error("attempt to create an unknown DataFormatter type")}};module.exports=DataFormatter},{"../../lib/jermaine/src/jermaine.js":9,"./data_value.js":30,"./datetime_formatter.js":34,"./number_formatter.js":49}],28:[function(require,module,exports){require("../../lib/jermaine/src/jermaine.js");var DataValue=require("./data_value.js"),NumberMeasure=require("./number_measure.js"),DatetimeMeasure=require("./datetime_measure.js"),DataMeasure={isInstance:function(obj){return obj&&"function"==typeof obj.getRealValue&&!obj.compareTo},parse:function(type,string){if(type===DataValue.NUMBER)return NumberMeasure.parse(string);if(type===DataValue.DATETIME)return DatetimeMeasure.parse(string);throw new Error("attempt to parse an unknown DataMeasure type")}};module.exports=DataMeasure},{"../../lib/jermaine/src/jermaine.js":9,"./data_value.js":30,"./datetime_measure.js":35,"./number_measure.js":50}],29:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),Plot=require("./plot.js"),DataVariable=require("./data_variable.js"),Filter=require("./filter.js"),Datatips=require("./datatips.js"),Data=require("./data.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.plot),DataPlot=new jermaine.Model("DataPlot",function(){this.isA(Plot),this.hasMany("variable").eachOfWhich.validateWith(function(variable){return variable instanceof DataVariable||null===variable}),this.hasA("filter").which.validatesWith(function(filter){return filter instanceof Filter}),this.hasA("datatips").which.validatesWith(function(datatips){return datatips instanceof Datatips}),this.hasA("data").which.validatesWith(function(data){return data instanceof Data}),utilityFunctions.insertDefaults(this,defaultValues.plot,attributes),this.respondsTo("render",function(graph,graphicsContext){if(this.visible()){var data=this.data();if(data){var haxis=this.horizontalaxis();this.verticalaxis();if(haxis.hasDataMin()&&haxis.hasDataMax()){var i,variables=this.variable(),variableIds=[];for(i=0;i<variables.size();++i)variableIds.push(variables.at(i).id());var iter=data.getIterator(variableIds,haxis.dataMin(),haxis.dataMax(),1),renderer=this.renderer();for(renderer.setUpMissing(),renderer.begin(graphicsContext);iter.hasNext();){var datap=iter.next();renderer.dataPoint(datap)}renderer.end()}}}}),this.respondsTo("getDatatipsData",function(loc,graphWidth,graphHeight,graph,testElem){var datatips=this.datatips();if(datatips){var data=this.data();if(data){var haxis=this.horizontalaxis(),vaxis=this.verticalaxis();if(haxis.hasDataMin()&&haxis.hasDataMax()){var i,variables=this.variable(),variableIds=[];for(i=0;i<variables.size();i++)variableIds.push(variables.at(i).id());for(var curDist,datap,iter=data.getIterator(variableIds,haxis.dataMin(),haxis.dataMax(),1),renderer=this.renderer(),points=[],x=loc.x(),y=loc.y();iter.hasNext();)datap=renderer.transformPoint(iter.next()),(curDist=window.multigraph.math.util.l2dist(x,y,datap[0],datap[1]))<20&&points.push({datap:datap,dist:curDist});if(0!==points.length){var minIndex=0,minDist=points[0].dist;for(i=1;i<points.length;i++)points[i].dist<minDist&&(minDist=points[minIndex=i].dist);var point=points[minIndex],axisValues=[];for(datap=point.datap,point.pixelp=function(graphCoords,graph,height){return[graphCoords[0]+graph.x0(),height-(graphCoords[1]+graph.y0())]}(datap,graph,graphHeight),axisValues[0]=haxis.axisValueToDataValue(datap[0]),i=1;i<datap.length;i++)axisValues[i]=vaxis.axisValueToDataValue(datap[i]);var content=datatips.format(axisValues),dimensions=datatips.computeDimensions(content,testElem);return point.content=content,point.dimensions=dimensions,point.type=datatips.computeOrientation(point,graphWidth,graphHeight)[0],point}}}}}),this.respondsTo("createDatatip",function(data){var $=window.multigraph.jQuery,content=data.content,type=data.type,dimensions=data.dimensions,pixelp=data.pixelp,w=dimensions.width,h=dimensions.height,x=pixelp[0],y=pixelp[1],arrowLength=data.arrow,offset=determineOffsets(type,x,y,w,h,arrowLength),datatips=this.datatips(),bordercolor=datatips.bordercolor().getHexString("#"),box=$("<div>"+content+"</div>"),arrow=$("<div> </div>"),datatip=$("<div></div>");switch(type){case Datatips.DOWN:arrow.css({left:w/2-5+"px","border-bottom":arrowLength+"px solid "+bordercolor,"border-left":"5px solid transparent","border-right":"5px solid transparent","border-top":"0px"}),datatip.append(arrow),datatip.append(box);break;case Datatips.RIGHT:arrow.css({top:h/2-5+"px","border-bottom":"5px solid transparent","border-top":"5px solid transparent","border-right":arrowLength+"px solid "+bordercolor,"border-left":"0px",float:"left"}),box.css("float","left"),datatip.append(arrow),datatip.append(box);break;case Datatips.UP:arrow.css({left:w/2-5+"px","border-top":arrowLength+"px solid "+bordercolor,"border-left":"5px solid transparent","border-right":"5px solid transparent","border-bottom":"0px"}),datatip.append(box),datatip.append(arrow);break;case Datatips.LEFT:arrow.css({top:h/2-5+"px","border-bottom":"5px solid transparent","border-top":"5px solid transparent","border-left":arrowLength+"px solid "+bordercolor,"border-right":"0px",float:"left"}),box.css("float","left"),datatip.append(box),datatip.append(arrow)}return datatip.css({"text-align":"left",position:"absolute",clear:"both",left:offset[0]+"px",top:offset[1]+"px",margin:"0px",padding:"0px"}),box.css({display:"inline-block",position:"relative","background-color":datatips.bgcolor().toRGBA(datatips.bgalpha()),"text-align":"left",margin:"0px","padding-left":"5px","padding-right":"5px","padding-top":"1px","padding-bottom":"1px",border:datatips.border()+"px solid "+bordercolor,"border-radius":"5px"}),arrow.css({height:"0px",width:"0px",position:"relative","text-align":"left",margin:"0px",padding:"0px"}),datatip});var determineOffsets=function(type,x,y,w,h,arrowLength){switch(type){case Datatips.DOWN:return[x-w/2,y];case Datatips.RIGHT:return[x,y-h/2];case Datatips.UP:return[x-w/2,y-h-arrowLength];case Datatips.LEFT:return[x-w-arrowLength,y-h/2]}}});module.exports=DataPlot},{"../../lib/jermaine/src/jermaine.js":9,"../util/utilityFunctions.js":157,"./data.js":26,"./data_variable.js":31,"./datatips.js":32,"./filter.js":39,"./plot.js":54}],30:[function(require,module,exports){require("../../lib/jermaine/src/jermaine.js");var DataValue={NUMBER:"number",DATETIME:"datetime",UNKNOWN:"unknown",types:function(){return[DataValue.NUMBER,DataValue.DATETIME,DataValue.UNKNOWN]},parseType:function(string){if(string.toLowerCase()===DataValue.NUMBER)return DataValue.NUMBER;if(string.toLowerCase()===DataValue.DATETIME)return DataValue.DATETIME;throw new Error("unknown DataValue type: "+string)},serializeType:function(type){return type},isInstance:function(obj){return obj&&"function"==typeof obj.getRealValue&&"function"==typeof obj.compareTo},isInstanceOrNull:function(obj){return null===obj||DataValue.isInstance(obj)},create:function(type,realValue){var NumberValue=require("./number_value.js"),DatetimeValue=require("./datetime_value.js");if(type===DataValue.NUMBER)return new NumberValue(realValue);if(type===DataValue.DATETIME)return new DatetimeValue(realValue);throw new Error("attempt to parse an unknown DataValue type")},parse:function(type,string){var NumberValue=require("./number_value.js"),DatetimeValue=require("./datetime_value.js");if(type===DataValue.NUMBER)return NumberValue.parse(string);if(type===DataValue.DATETIME)return DatetimeValue.parse(string);throw new Error("attempt to parse an unknown DataValue type")},LT:"lt",LE:"le",EQ:"eq",GE:"ge",GT:"gt",NE:"ne"},comparatorFuncs={};comparatorFuncs[DataValue.LT]=function(x){return this.compareTo(x)<0},comparatorFuncs[DataValue.LE]=function(x){return this.compareTo(x)<=0},comparatorFuncs[DataValue.EQ]=function(x){return 0===this.compareTo(x)},comparatorFuncs[DataValue.GE]=function(x){return 0<=this.compareTo(x)},comparatorFuncs[DataValue.GT]=function(x){return 0<this.compareTo(x)},comparatorFuncs[DataValue.NE]=function(x){return 0!==this.compareTo(x)},DataValue.mixinComparators=function(obj){obj[DataValue.LT]=comparatorFuncs[DataValue.LT],obj[DataValue.LE]=comparatorFuncs[DataValue.LE],obj[DataValue.EQ]=comparatorFuncs[DataValue.EQ],obj[DataValue.GE]=comparatorFuncs[DataValue.GE],obj[DataValue.GT]=comparatorFuncs[DataValue.GT],obj[DataValue.NE]=comparatorFuncs[DataValue.NE]},DataValue.comparators=function(){return[DataValue.LT,DataValue.LE,DataValue.EQ,DataValue.GE,DataValue.GT,DataValue.NE]},DataValue.parseComparator=function(string){if("string"==typeof string)switch(string.toLowerCase()){case"lt":return DataValue.LT;case"le":return DataValue.LE;case"eq":return DataValue.EQ;case"ge":return DataValue.GE;case"gt":return DataValue.GT;case"ne":return DataValue.NE}throw new Error(string+" should be one of 'lt', 'le', 'eq', 'ge', 'gt', 'ne'.")},module.exports=DataValue},{"../../lib/jermaine/src/jermaine.js":9,"./datetime_value.js":37,"./number_value.js":51}],31:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),DataValue=require("./data_value.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.data.variables.variable),DataVariable=new jermaine.Model("DataVariable",function(){this.hasA("id").which.isA("string"),this.hasA("column").which.isA("integer"),this.hasA("type").which.isOneOf(DataValue.types()).and.defaultsTo(DataValue.NUMBER),this.hasA("data").which.validatesWith(function(data){return data instanceof require("./data.js")}),this.hasA("missingvalue").which.validatesWith(DataValue.isInstance),this.hasA("missingop").which.isOneOf(DataValue.comparators()),this.isBuiltWith("id","%column","%type"),utilityFunctions.insertDefaults(this,defaultValues.data.variables.variable,attributes)});module.exports=DataVariable},{"../../lib/jermaine/src/jermaine.js":9,"../util/utilityFunctions.js":157,"./data.js":26,"./data_value.js":30}],32:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),DatatipsVariable=require("./datatips_variable.js"),utilityFunctions=require("../util/utilityFunctions.js"),DataValue=require("./data_value.js"),DataFormatter=require("./data_formatter.js"),RGBColor=require("../math/rgb_color.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.plot.datatips),Datatips=new jermaine.Model("Datatips",function(){this.hasMany("variables").eachOfWhich.validateWith(function(variable){return variable instanceof DatatipsVariable}),this.hasA("formatString").which.isA("string"),this.hasA("bgcolor").which.validatesWith(function(bgcolor){return bgcolor instanceof RGBColor}),this.hasA("bgalpha").which.isA("number"),this.hasA("border").which.isA("integer"),this.hasA("bordercolor").which.validatesWith(function(bordercolor){return bordercolor instanceof RGBColor}),this.hasA("pad").which.isA("integer"),this.respondsTo("format",function(data){var i,formattedData=[],replacementPatterns=[],output=this.formatString(),l=data.length;for(i=0;i<l;i++)formattedData.push(this.variables().at(i).formatter().format(data[i])),replacementPatterns.push(new RegExp("\\{"+i+"\\}","g"));for(i=0;i<l;i++)output=output.replace(replacementPatterns[i],formattedData[i]);return output=output.replace(/[\n|\r]/g,"<br/>")}),this.respondsTo("computeDimensions",function(content,elem){var paddingWidth=parseInt(elem.css("padding-left"),10)+parseInt(elem.css("padding-right"),10),paddingHeight=parseInt(elem.css("padding-top"),10)+parseInt(elem.css("padding-bottom"),10),border=2*this.border();return elem.html(content),{width:elem.width()+border+paddingWidth,height:elem.height()+border+paddingHeight}}),this.respondsTo("computeOrientation",function(data,graphWidth,graphHeight){var dimensions=data.dimensions,pixelp=data.pixelp,datatipWidth=dimensions.width,datatipHeight=dimensions.height,baseX=pixelp[0],baseY=pixelp[1],offsetWidth=datatipWidth+20,offsetHeight=datatipHeight+20;if(baseY=graphHeight-baseY,0<=baseX-offsetWidth&&offsetWidth<=graphWidth-baseX&&0<=baseY-offsetHeight&&offsetHeight<=graphHeight-baseY)return[Datatips.UP,Datatips.DOWN,Datatips.RIGHT,Datatips.LEFT];if(0<=baseX-offsetWidth&&offsetWidth<=graphWidth-baseX&&graphHeight-offsetHeight<=baseY&&baseY<=graphHeight)return[Datatips.DOWN,Datatips.RIGHT,Datatips.LEFT,Datatips.UP];if(0<=baseX-offsetWidth&&offsetWidth<=graphWidth-baseX&&baseY<=offsetHeight&&0<=baseY)return[Datatips.UP,Datatips.RIGHT,Datatips.LEFT,Datatips.DOWN];if(0<=baseX&&baseX<=offsetWidth&&0<=baseY-offsetHeight&&offsetHeight<=graphHeight-baseY)return[Datatips.RIGHT,Datatips.UP,Datatips.DOWN,Datatips.LEFT];if(baseX<=graphWidth&&graphWidth-baseX<=offsetWidth&&0<=baseY-offsetHeight&&offsetHeight<=graphHeight-baseY)return[Datatips.LEFT,Datatips.UP,Datatips.DOWN,Datatips.RIGHT];var preferences=[];return baseX<graphWidth/2?graphHeight/2<baseY?(baseX-datatipWidth/2<graphHeight-baseY-datatipHeight/2?(preferences.push(Datatips.RIGHT),preferences.push(Datatips.DOWN)):(preferences.push(Datatips.DOWN),preferences.push(Datatips.RIGHT)),baseX-offsetWidth<graphHeight-baseY-offsetHeight?(preferences.push(Datatips.UP),preferences.push(Datatips.LEFT)):(preferences.push(Datatips.LEFT),preferences.push(Datatips.UP))):(baseX-datatipWidth/2<baseY-datatipHeight/2?(preferences.push(Datatips.RIGHT),preferences.push(Datatips.UP)):(preferences.push(Datatips.UP),preferences.push(Datatips.RIGHT)),baseX-offsetWidth<baseY-offsetHeight?(preferences.push(Datatips.DOWN),preferences.push(Datatips.LEFT)):(preferences.push(Datatips.LEFT),preferences.push(Datatips.DOWN))):graphHeight/2<baseY?(graphWidth-baseX-datatipWidth/2<graphHeight-baseY-datatipHeight/2?(preferences.push(Datatips.LEFT),preferences.push(Datatips.DOWN)):(preferences.push(Datatips.DOWN),preferences.push(Datatips.LEFT)),graphWidth-baseX-offsetWidth<graphHeight-baseY-offsetHeight?(preferences.push(Datatips.UP),preferences.push(Datatips.RIGHT)):(preferences.push(Datatips.RIGHT),preferences.push(Datatips.UP))):(graphWidth-baseX-datatipWidth/2<baseY-datatipHeight/2?(preferences.push(Datatips.LEFT),preferences.push(Datatips.UP)):(preferences.push(Datatips.UP),preferences.push(Datatips.LEFT)),graphWidth-baseX-offsetWidth<baseY-offsetWidth?(preferences.push(Datatips.DOWN),preferences.push(Datatips.RIGHT)):(preferences.push(Datatips.RIGHT),preferences.push(Datatips.DOWN))),preferences}),this.respondsTo("normalize",function(plot){var variable,type,i,datatipsVariables=this.variables(),plotVariables=plot.variable();if(datatipsVariables.size()<plotVariables.size())for(i=datatipsVariables.size();i<plotVariables.size();i++)datatipsVariables.add(new DatatipsVariable);for(i=0;i<datatipsVariables.size();i++)variable=datatipsVariables.at(i),type=plotVariables.at(i).type(),void 0===variable.formatString()&&(type===DataValue.NUMBER?variable.formatString(defaultValues["formatString-number"]):variable.formatString(defaultValues["formatString-datetime"])),variable.formatter(DataFormatter.create(type,variable.formatString()))}),utilityFunctions.insertDefaults(this,defaultValues.plot.datatips,attributes)});Datatips.UP="u",Datatips.DOWN="d",Datatips.LEFT="l",Datatips.RIGHT="r",module.exports=Datatips},{"../../lib/jermaine/src/jermaine.js":9,"../math/rgb_color.js":105,"../util/utilityFunctions.js":157,"./data_formatter.js":27,"./data_value.js":30,"./datatips_variable.js":33}],33:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.plot.datatips.variable),DataFormatter=require("./data_formatter.js"),DatatipsVariable=new jermaine.Model("DatatipsVariable",function(){this.hasA("formatString").which.isA("string"),this.hasA("formatter").which.validatesWith(DataFormatter.isInstance),utilityFunctions.insertDefaults(this,defaultValues.plot.datatips.variable,attributes)});module.exports=DatatipsVariable},{"../../lib/jermaine/src/jermaine.js":9,"../util/utilityFunctions.js":157,"./data_formatter.js":27}],34:[function(require,module,exports){require("../../lib/jermaine/src/jermaine.js");var sprintf=require("sprintf"),DatetimeFormatter=function(format){var testString;if("string"!=typeof format)throw new Error("format must be a string");this.formatString=format,testString=DatetimeFormatter.formatInternally(format,new Date(0)),this.length=testString.length};DatetimeFormatter.prototype.format=function(value){return DatetimeFormatter.formatInternally(this.formatString,value.value)},DatetimeFormatter.prototype.getMaxLength=function(){return this.length},DatetimeFormatter.prototype.getFormatString=function(){return this.formatString},DatetimeFormatter.formatInternally=function(formatString,date){var c,i,t,dayNames_shortNames=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNames_longNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames_shortNames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],monthNames_longNames=["January","February","March","April","May","June","July","August","September","October","November","December"],state=0,output="";for(i=0;i<formatString.length;i++)switch(c=formatString.charAt(i),state){case 0:"%"===c?state=1:output+=c;break;case 1:switch(c){case"Y":output+=date.getUTCFullYear().toString();break;case"y":output+=date.getUTCFullYear().toString().substr(2,2);break;case"M":output+=sprintf("%02s",(date.getUTCMonth()+1).toString());break;case"m":output+=(date.getUTCMonth()+1).toString();break;case"N":output+=monthNames_longNames[date.getUTCMonth()];break;case"n":output+=monthNames_shortNames[date.getUTCMonth()];break;case"D":output+=sprintf("%02s",date.getUTCDate().toString());break;case"d":output+=date.getUTCDate().toString();break;case"W":output+=dayNames_longNames[date.getUTCDay()];break;case"w":output+=dayNames_shortNames[date.getUTCDay()];break;case"H":output+=sprintf("%02s",date.getUTCHours().toString());break;case"h":output+=0===(t=date.getUTCHours()%12)?"12":t.toString();break;case"i":output+=sprintf("%02s",date.getUTCMinutes().toString());break;case"s":output+=sprintf("%02s",date.getUTCSeconds().toString());break;case"v":output+=sprintf("%03s",date.getUTCMilliseconds().toString()).substr(0,1);break;case"V":output+=sprintf("%03s",date.getUTCMilliseconds().toString()).substr(0,2);break;case"q":output+=sprintf("%03s",date.getUTCMilliseconds().toString());break;case"P":output+=(t=date.getUTCHours())<12?"AM":"PM";break;case"p":output+=(t=date.getUTCHours())<12?"am":"pm";break;case"L":output+="\n";break;case"%":output+="%";break;default:throw new Error("Invalid character code for datetime formatting string")}state=0}return output},module.exports=DatetimeFormatter},{"../../lib/jermaine/src/jermaine.js":9,sprintf:16}],35:[function(require,module,exports){require("../../lib/jermaine/src/jermaine.js");var DatetimeValue=require("./datetime_value.js"),DatetimeUnit=(require("../math/enum.js"),require("./datetime_unit.js")),DatetimeMeasure=function(measure,unit){if("number"!=typeof measure||!0!==DatetimeMeasure.isUnit(unit))throw new Error("Improper input for Datetime Measure's constructor");if(2!==arguments.length)throw new Error("Datetime Measure's contructor requires exactly two arguments");this.measure=measure,this.unit=unit};DatetimeMeasure.isUnit=function(unit){return DatetimeUnit.isInstance(unit)},DatetimeMeasure.prototype.negative=function(){return new DatetimeMeasure(-this.measure,this.unit)},DatetimeMeasure.prototype.getRealValue=function(){var factor;switch(this.unit){case DatetimeUnit.MILLISECOND:factor=1;break;case DatetimeUnit.SECOND:factor=1e3;break;case DatetimeUnit.MINUTE:factor=6e4;break;case DatetimeUnit.HOUR:factor=36e5;break;case DatetimeUnit.DAY:factor=864e5;break;case DatetimeUnit.WEEK:factor=6048e5;break;case DatetimeUnit.MONTH:factor=2592e6;break;case DatetimeUnit.YEAR:factor=31536e6}return this.measure*factor},DatetimeMeasure.parse=function(s){var re,measure,unit;if("string"!=typeof s||null===s.match(/\s*-?(([0-9]+\.?[0-9]*)|([0-9]*\.?[0-9]+))\s*(ms|s|m|H|D|W|M|Y){1}\s*$/))throw new Error("Improper input for Datetime Measure's parse method");return re=/ms|s|m|H|D|W|M|Y/,measure=parseFloat(s.replace(re,"")),unit=s.match(re),unit=DatetimeUnit.parse(unit[0]),new DatetimeMeasure(measure,unit)},DatetimeMeasure.findTickmarkWithMillisecondSpacing=function(value,alignment,spacing){var offset=value-alignment,d=Math.floor(offset/spacing);return offset%spacing!=0&&++d,new DatetimeValue(alignment+d*spacing)},DatetimeMeasure.findTickmarkWithMonthSpacing=function(value,alignment,monthSpacing){var valueD=value.value,alignD=alignment.value,monthOffset=12*(valueD.getUTCFullYear()-alignD.getUTCFullYear())+(valueD.getUTCMonth()-alignD.getUTCMonth()),d=Math.floor(monthOffset/monthSpacing);return monthOffset%monthSpacing!=0?++d:valueD.getUTCDate()>alignD.getUTCDate()?++d:valueD.getUTCDate()===alignD.getUTCDate()&&valueD.getUTCHours()>alignD.getUTCHours()?++d:valueD.getUTCDate()===alignD.getUTCDate()&&valueD.getUTCHours()===alignD.getUTCHours()&&valueD.getUTCMinutes()>alignD.getUTCMinutes()?++d:valueD.getUTCDate()===alignD.getUTCDate()&&valueD.getUTCHours()===alignD.getUTCHours()&&valueD.getUTCMinutes()===alignD.getUTCMinutes()&&valueD.getUTCSeconds()>alignD.getUTCSeconds()?++d:valueD.getUTCDate()===alignD.getUTCDate()&&valueD.getUTCHours()===alignD.getUTCHours()&&valueD.getUTCMinutes()===alignD.getUTCMinutes()&&valueD.getUTCSeconds()===alignD.getUTCSeconds()&&valueD.getUTCMilliseconds()>alignD.getUTCMilliseconds()&&++d,alignment.add(DatetimeMeasure.parse(d*monthSpacing+"M"))},DatetimeMeasure.prototype.firstSpacingLocationAtOrAfter=function(value,alignment){switch(this.unit){case DatetimeUnit.MONTH:return DatetimeMeasure.findTickmarkWithMonthSpacing(value,alignment,this.measure);case DatetimeUnit.YEAR:return DatetimeMeasure.findTickmarkWithMonthSpacing(value,alignment,12*this.measure);default:return DatetimeMeasure.findTickmarkWithMillisecondSpacing(value.getRealValue(),alignment.getRealValue(),this.getRealValue())}},DatetimeMeasure.prototype.lastSpacingLocationAtOrBefore=function(value,alignment){var x=this.firstSpacingLocationAtOrAfter(value,alignment);return x.eq(value)?x:x.add(this.negative())},DatetimeMeasure.prototype.toString=function(){return this.measure.toString()+this.unit.toString()},module.exports=DatetimeMeasure},{"../../lib/jermaine/src/jermaine.js":9,"../math/enum.js":102,"./datetime_unit.js":36,"./datetime_value.js":37}],36:[function(require,module,exports){var DatetimeUnit=new(require("../math/enum.js"))("DatetimeUnit");DatetimeUnit.MILLISECOND=new DatetimeUnit("ms"),DatetimeUnit.SECOND=new DatetimeUnit("s"),DatetimeUnit.MINUTE=new DatetimeUnit("m"),DatetimeUnit.HOUR=new DatetimeUnit("H"),DatetimeUnit.DAY=new DatetimeUnit("D"),DatetimeUnit.WEEK=new DatetimeUnit("W"),DatetimeUnit.MONTH=new DatetimeUnit("M"),DatetimeUnit.YEAR=new DatetimeUnit("Y"),module.exports=DatetimeUnit},{"../math/enum.js":102}],37:[function(require,module,exports){require("../../lib/jermaine/src/jermaine.js");var DataValue=require("./data_value.js"),DatetimeUnit=require("./datetime_unit.js"),sprintf=require("sprintf"),DatetimeValue=function(value){if("number"!=typeof value)throw new Error("DatetimeValue requires its parameter to be a number");this.value=new Date(value)};DatetimeValue.prototype.getRealValue=function(){return this.value.getTime()},DatetimeValue.prototype.type=DataValue.DATETIME,DatetimeValue.prototype.clone=function(){return new DatetimeValue(this.getRealValue())},DatetimeValue.parse=function(string){var Y=0,M=0,D=1,H=0,m=0,s=0,ms=0;if("string"!=typeof string)throw new Error("Datetime Value's parse method requires its parameter to be a string");if(4===(string=string.replace(/[\.\-\:\s]/g,"")).length)Y=parseInt(string,10);else if(6===string.length)Y=parseInt(string.substring(0,4),10),M=parseInt(string.substring(4,6),10)-1;else if(8===string.length)Y=parseInt(string.substring(0,4),10),M=parseInt(string.substring(4,6),10)-1,D=parseInt(string.substring(6,8),10);else if(10===string.length)Y=parseInt(string.substring(0,4),10),M=parseInt(string.substring(4,6),10)-1,D=parseInt(string.substring(6,8),10),H=parseInt(string.substring(8,10),10);else if(12===string.length)Y=parseInt(string.substring(0,4),10),M=parseInt(string.substring(4,6),10)-1,D=parseInt(string.substring(6,8),10),H=parseInt(string.substring(8,10),10),m=parseInt(string.substring(10,12),10);else if(14===string.length)Y=parseInt(string.substring(0,4),10),M=parseInt(string.substring(4,6),10)-1,D=parseInt(string.substring(6,8),10),H=parseInt(string.substring(8,10),10),m=parseInt(string.substring(10,12),10),s=parseInt(string.substring(12,14),10);else if(15===string.length||16===string.length||17===string.length)Y=parseInt(string.substring(0,4),10),M=parseInt(string.substring(4,6),10)-1,D=parseInt(string.substring(6,8),10),H=parseInt(string.substring(8,10),10),m=parseInt(string.substring(10,12),10),s=parseInt(string.substring(12,14),10),ms=parseInt(string.substring(14,17),10);else{if("0"!==string)throw new Error("Incorrect input format for Datetime Value's parse method:"+string);Y=1970}return new DatetimeValue(Date.UTC(Y,M,D,H,m,s,ms))},DatetimeValue.prototype.toString=function(){var Y,M,D,H,m,s,ms;return Y=sprintf("%04s",this.value.getUTCFullYear().toString()),M=sprintf("%02s",(this.value.getUTCMonth()+1).toString()),D=sprintf("%02s",this.value.getUTCDate().toString()),H=sprintf("%02s",this.value.getUTCHours().toString()),m=sprintf("%02s",this.value.getUTCMinutes().toString()),s=sprintf("%02s",this.value.getUTCSeconds().toString()),".000"===(ms="."+sprintf("%03s",this.value.getUTCMilliseconds().toString()))&&(ms=""),Y+M+D+H+m+s+ms},DatetimeValue.prototype.compareTo=function(x){return this.getRealValue()<x.getRealValue()?-1:this.getRealValue()>x.getRealValue()?1:0},DatetimeValue.prototype.addRealValue=function(realValueIncr){return new DatetimeValue(this.value.getTime()+realValueIncr)},DatetimeValue.prototype.add=function(measure){var date=new DatetimeValue(this.getRealValue());switch(measure.unit){case DatetimeUnit.MILLISECOND:date.value.setUTCMilliseconds(date.value.getUTCMilliseconds()+measure.measure);break;case DatetimeUnit.SECOND:date.value.setUTCSeconds(date.value.getUTCSeconds()+measure.measure);break;case DatetimeUnit.MINUTE:date.value.setUTCMinutes(date.value.getUTCMinutes()+measure.measure);break;case DatetimeUnit.HOUR:date.value.setUTCHours(date.value.getUTCHours()+measure.measure);break;case DatetimeUnit.DAY:date.value.setUTCDate(date.value.getUTCDate()+measure.measure);break;case DatetimeUnit.WEEK:date.value.setUTCDate(date.value.getUTCDate()+7*measure.measure);break;case DatetimeUnit.MONTH:date.value.setUTCMonth(date.value.getUTCMonth()+measure.measure);break;case DatetimeUnit.YEAR:date.value.setUTCFullYear(date.value.getUTCFullYear()+measure.measure)}return date},DataValue.mixinComparators(DatetimeValue.prototype),module.exports=DatetimeValue},{"../../lib/jermaine/src/jermaine.js":9,"./data_value.js":30,"./datetime_unit.js":36,sprintf:16}],38:[function(require,module,exports){var EventEmitter=new(require("../../lib/jermaine/src/jermaine.js").Model)(function(){this.hasA("listeners").which.defaultsTo(function(){return{}}),this.respondsTo("addListener",function(eventType,listener){var i,listeners=this.listeners();for(void 0===listeners[eventType]&&(listeners[eventType]=[]),i=0;i<listeners[eventType].length;++i)if(listeners[eventType][i]===listener)return!1;return listeners[eventType].push(listener),this.emit({type:"listenerAdded",targetType:eventType,listener:listener}),!0}),this.respondsTo("removeListener",function(eventType,listener){var i,listeners=this.listeners();if(void 0!==listeners[eventType])for(i=0;i<listeners[eventType].length;++i)if(listeners[eventType][i]===listener)return listeners[eventType][i]=null,this.emit({type:"listenerRemoved",targetType:eventType,listener:listener}),!0;return!1}),this.respondsTo("emit",function(event){var listeners,i,nulls=[];if("string"==typeof event&&(event={type:event}),event.target||(event.target=this),!event.type)throw new Error("Event object missing 'type' property");if(listeners=this.listeners()[event.type]){for(i=0;i<listeners.length;i++)null!==listeners[i]?listeners[i].call(this,event):nulls.push(i);if(0<nulls.length)for(i=nulls.length-1;0<=i;--i)listeners.splice(nulls[i],1)}})});module.exports=EventEmitter},{"../../lib/jermaine/src/jermaine.js":9}],39:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),FilterOption=require("./filter_option.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.plot.filter),Filter=new jermaine.Model("Filter",function(){this.hasMany("options").eachOfWhich.validatesWith(function(option){return option instanceof FilterOption}),this.hasA("type").which.validatesWith(function(type){return"string"==typeof type}),utilityFunctions.insertDefaults(this,defaultValues.plot.filter,attributes)});module.exports=Filter},{"../../lib/jermaine/src/jermaine.js":9,"../util/utilityFunctions.js":157,"./filter_option.js":40}],40:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.plot.filter.option),FilterOption=new jermaine.Model("FilterOption",function(){this.hasA("name").which.validatesWith(function(name){return"string"==typeof name}),this.hasA("value").which.validatesWith(function(value){return"string"==typeof value}),utilityFunctions.insertDefaults(this,defaultValues.plot.filter.option,attributes)});module.exports=FilterOption},{"../../lib/jermaine/src/jermaine.js":9,"../util/utilityFunctions.js":157}],41:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),Axis=require("./axis.js"),Background=require("./background.js"),Data=require("./data.js"),Legend=require("./legend.js"),Plot=require("./plot.js"),Plotarea=require("./plotarea.js"),Title=require("./title.js"),Window=require("./window.js"),Box=require("../math/box.js"),DataPlot=require("../core/data_plot.js"),AxisBinding=require("../core/axis_binding.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues),Graph=new jermaine.Model("Graph",function(){this.hasA("window").which.validatesWith(function(w){return w instanceof Window}),this.hasA("plotarea").which.validatesWith(function(plotarea){return plotarea instanceof Plotarea}),this.hasA("legend").which.validatesWith(function(legend){return legend instanceof Legend}),this.hasA("background").which.validatesWith(function(background){return background instanceof Background}),this.hasA("title").which.validatesWith(function(title){return title instanceof Title}),this.hasMany("axes").eachOfWhich.validateWith(function(axis){return axis instanceof Axis}),this.hasMany("plots").eachOfWhich.validateWith(function(plot){return plot instanceof Plot}),this.hasMany("data").eachOfWhich.validateWith(function(data){return data instanceof Data}),this.hasA("windowBox").which.validatesWith(function(val){return val instanceof Box}),this.hasA("paddingBox").which.validatesWith(function(val){return val instanceof Box}),this.hasA("plotBox").which.validatesWith(function(val){return val instanceof Box}),this.hasA("multigraph").which.validatesWith(function(val){return"function"==typeof val.busySpinnerLevel}),this.hasA("x0").which.isA("number"),this.hasA("y0").which.isA("number"),this.hasA("filter").which.validatesWith(function(filter){return void 0===filter||"function"==typeof filter.reset&&"function"==typeof filter.filter}),this.isBuiltWith(function(){this.window(new Window),this.plotarea(new Plotarea),this.background(new Background)}),this.respondsTo("postParse",function(){var i,that=this,handleAjaxEvent=function(event){"start"===event.action?that.multigraph()&&that.multigraph().busySpinnerLevel(1):"complete"===event.action&&that.multigraph()&&that.multigraph().busySpinnerLevel(-1)};for(i=0;i<this.data().size();++i)this.data().at(i).addListener("ajaxEvent",handleAjaxEvent)}),this.respondsTo("initializeGeometry",function(width,height,graphicsContext){var i,w=this.window(),windowBorder=w.border(),windowMargin=w.margin(),windowPadding=w.padding(),plotarea=this.plotarea(),plotareaBorder=plotarea.border(),plotareaMargin=plotarea.margin();for(this.windowBox(new Box(width,height)),this.paddingBox(new Box(width-(windowMargin.left()+windowBorder+windowPadding.left())-(windowMargin.right()+windowBorder+windowPadding.right()),height-(windowMargin.top()+windowBorder+windowPadding.top())-(windowMargin.bottom()+windowBorder+windowPadding.bottom()))),this.plotBox(new Box(this.paddingBox().width()-(plotareaMargin.left()+plotareaMargin.right()+2*plotareaBorder),this.paddingBox().height()-(plotareaMargin.top()+plotareaMargin.bottom()+2*plotareaBorder))),i=0;i<this.axes().size();++i)this.axes().at(i).initializeGeometry(this,graphicsContext);this.legend()&&this.legend().initializeGeometry(this,graphicsContext),this.title()&&this.title().initializeGeometry(graphicsContext),this.x0(windowMargin.left()+windowBorder+windowPadding.left()+plotareaMargin.left()+plotareaBorder),this.y0(windowMargin.bottom()+windowBorder+windowPadding.bottom()+plotareaMargin.bottom()+plotareaBorder)}),this.respondsTo("registerCommonDataCallback",function(callback){var i;for(i=0;i<this.data().size();++i)this.data().at(i).addListener("dataReady",callback)}),this.respondsTo("pauseAllData",function(){var i;for(i=0;i<this.data().size();++i)this.data().at(i).pause()}),this.respondsTo("resumeAllData",function(){var i;for(i=0;i<this.data().size();++i)this.data().at(i).resume()}),this.respondsTo("findNearestAxis",function(x,y,orientation){var axis,i,d,foundAxis=null,mindist=9999,axes=this.axes(),naxes=this.axes().size();for(i=0;i<naxes;++i)(axis=axes.at(i)).visible()&&(null!=orientation&&axis.orientation()!==orientation||(d=axis.distanceToPoint(x,y),(null===foundAxis||d<mindist)&&(foundAxis=axis,mindist=d)));return foundAxis}),this.respondsTo("axisById",function(id){var i,axes=this.axes();for(i=0;i<axes.size();++i)if(axes.at(i).id()===id)return axes.at(i)}),this.respondsTo("dataById",function(id){var data,datas=this.data();for(i=0;i<datas.size();++i)if((data=datas.at(i)).id()===id)return data}),this.respondsTo("variableById",function(id){var datas,data_id,var_id,columns,i,j,m=id.match(/^([^\.]+)\.(.+)$/);if(m)return data_id=m[1],var_id=m[2],this.dataById(data_id).columnIdToDataVariable(var_id);for(datas=this.data(),i=0;i<datas.size();++i)for(columns=datas.at(i).columns(),j=0;j<columns.size();++j)if(columns.at(j).id()===id)return columns.at(j)}),this.respondsTo("destroy",function(){var i;for(i=0;i<this.axes().size();++i)this.axes().at(i).destroy()}),this.respondsTo("normalize",function(){var i,j,axis,axisid,plot,HORIZONTAL=Axis.HORIZONTAL,VERTICAL=Axis.VERTICAL,axes=this.axes(),plots=this.plots(),haxisCount=0,vaxisCount=0;for(i=0;i<this.data().size();i++)this.data().at(i).normalize();for(i=0;i<axes.size();i++)axes.at(i).orientation()===HORIZONTAL?haxisCount++:axes.at(i).orientation()===VERTICAL&&vaxisCount++;for(0===haxisCount&&axes.add(new Axis(HORIZONTAL)),0===vaxisCount&&axes.add(new Axis(VERTICAL)),i=vaxisCount=haxisCount=0;i<axes.size();i++)(axis=axes.at(i)).orientation()===HORIZONTAL?(axisid="x",0<haxisCount&&(axisid+=haxisCount),haxisCount++):axis.orientation()===VERTICAL&&(axisid="y",0<vaxisCount&&(axisid+=vaxisCount),vaxisCount++),void 0===axis.id()&&axis.id(axisid);for(i=0;i<axes.size();i++)axes.at(i).normalize(this);for(0===plots.size()&&plots.add(new DataPlot),i=0;i<plots.size();i++)plots.at(i).normalize(this);for(this.legend()&&this.legend().normalize(this),AxisBinding.syncAllBindings(),i=0;i<axes.size();i++)if(!(axis=axes.at(i)).hasDataMin()||!axis.hasDataMax())for(j=0;j<plots.size();++j)if((plot=plots.at(j))instanceof DataPlot&&(plot.horizontalaxis()===axis||plot.verticalaxis()===axis)){!function(axis,data,isHorizontal){var axisBoundsSetter=function(event){var columnNumber=isHorizontal?0:1,bounds=data.getBounds(columnNumber),min=axis.dataMin(),max=axis.dataMax();axis.hasDataMin()||(min=bounds[0]),axis.hasDataMax()||(max=bounds[1]),axis.hasDataMin()&&axis.hasDataMax()||axis.setDataRange(min,max),data.removeListener("dataReady",axisBoundsSetter)};data.addListener("dataReady",axisBoundsSetter)}(axis,plot.data(),plot.horizontalaxis()===axis);break}}),utilityFunctions.insertDefaults(this,defaultValues,attributes)});module.exports=Graph},{"../../lib/jermaine/src/jermaine.js":9,"../core/axis_binding.js":19,"../core/data_plot.js":29,"../math/box.js":100,"../util/utilityFunctions.js":157,"./axis.js":18,"./background.js":21,"./data.js":26,"./legend.js":46,"./plot.js":54,"./plotarea.js":56,"./title.js":65,"./window.js":70}],42:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),RGBColor=require("../math/rgb_color.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.horizontalaxis.grid),Grid=new jermaine.Model("Grid",function(){this.hasA("color").which.validatesWith(function(color){return color instanceof RGBColor}),this.hasA("visible").which.isA("boolean"),utilityFunctions.insertDefaults(this,defaultValues.horizontalaxis.grid,attributes)});module.exports=Grid},{"../../lib/jermaine/src/jermaine.js":9,"../math/rgb_color.js":105,"../util/utilityFunctions.js":157}],43:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.legend.icon),Icon=new jermaine.Model("Icon",function(){this.hasA("height").which.isA("integer"),this.hasA("width").which.isA("integer"),this.hasA("border").which.isA("integer"),utilityFunctions.insertDefaults(this,defaultValues.legend.icon,attributes)});module.exports=Icon},{"../../lib/jermaine/src/jermaine.js":9,"../util/utilityFunctions.js":157}],44:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),Point=require("../math/point.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.background.img),Img=new jermaine.Model("Img",function(){this.hasA("src").which.isA("string"),this.hasA("anchor").which.validatesWith(function(anchor){return anchor instanceof Point}),this.hasA("base").which.validatesWith(function(base){return base instanceof Point}),this.hasA("position").which.validatesWith(function(position){return position instanceof Point}),this.hasA("frame").which.validatesWith(function(frame){return frame===Img.PADDING||frame===Img.PLOT}),this.isBuiltWith("src"),utilityFunctions.insertDefaults(this,defaultValues.background.img,attributes)});Img.PADDING="padding",Img.PLOT="plot",module.exports=Img},{"../../lib/jermaine/src/jermaine.js":9,"../math/point.js":104,"../util/utilityFunctions.js":157}],45:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),DataValue=require("./data_value.js"),DataFormatter=require("./data_formatter.js"),DataMeasure=require("./data_measure.js"),Point=require("../math/point.js"),RGBColor=require("../math/rgb_color.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.horizontalaxis.labels.label),Labeler=new jermaine.Model("Labeler",function(){var getValue=function(valueOrFunction){return"function"==typeof valueOrFunction?valueOrFunction():valueOrFunction};this.hasA("axis").which.validatesWith(function(axis){return axis instanceof require("./axis.js")}),this.hasA("formatter").which.validatesWith(DataFormatter.isInstance),this.hasA("font").which.isA("string").and.which.defaultsTo(""),this.hasA("start").which.validatesWith(DataValue.isInstance),this.hasA("angle").which.isA("number"),this.hasA("position").which.validatesWith(function(position){return position instanceof Point}),this.hasA("anchor").which.validatesWith(function(anchor){return anchor instanceof Point}),this.hasA("spacing").which.validatesWith(DataMeasure.isInstance),this.hasA("densityfactor").which.isA("number").and.which.defaultsTo(1),this.hasA("color").which.validatesWith(function(color){return color instanceof RGBColor}),this.hasA("visible").which.isA("boolean").and.which.defaultsTo(!0),this.isBuiltWith("axis",function(){var labelsDefaults=defaultValues.horizontalaxis.labels;this.axis().type()===DataValue.DATETIME?this.start(getValue(labelsDefaults["start-datetime"])):this.start(getValue(labelsDefaults["start-number"]))}),this.respondsTo("initializeGeometry",function(graph){var axis=this.axis(),plotBox=graph.plotBox(),labelDefaults=defaultValues.horizontalaxis.labels.label,Axis=require("./axis.js");void 0===this.position()&&(axis.orientation()===Axis.HORIZONTAL?axis.perpOffset()>plotBox.height()/2?this.position(getValue(labelDefaults["position-horizontal-top"])):this.position(getValue(labelDefaults["position-horizontal-bottom"])):axis.perpOffset()>plotBox.width()/2?this.position(getValue(labelDefaults["position-vertical-right"])):this.position(getValue(labelDefaults["position-vertical-left"]))),void 0===this.anchor()&&(axis.orientation()===Axis.HORIZONTAL?axis.perpOffset()>plotBox.height()/2?this.anchor(getValue(labelDefaults["anchor-horizontal-top"])):this.anchor(getValue(labelDefaults["anchor-horizontal-bottom"])):axis.perpOffset()>plotBox.width()/2?this.anchor(getValue(labelDefaults["anchor-vertical-right"])):this.anchor(getValue(labelDefaults["anchor-vertical-left"])))}),this.respondsTo("isEqualExceptForSpacing",function(labeler){return this.axis()===labeler.axis()&&this.formatter().getFormatString()===labeler.formatter().getFormatString()&&this.start().eq(labeler.start())&&this.angle()===labeler.angle()&&this.position().eq(labeler.position())&&this.anchor().eq(labeler.anchor())&&this.densityfactor()===labeler.densityfactor()}),this.hasA("iteratorNextValue").which.validatesWith(DataValue.isInstanceOrNull).and.which.defaultsTo(null),this.hasA("iteratorMinValue").which.validatesWith(DataValue.isInstance),this.hasA("iteratorMaxValue").which.validatesWith(DataValue.isInstance),this.respondsTo("prepare",function(minDataValue,maxDataValue){this.iteratorMinValue(minDataValue),this.iteratorMaxValue(maxDataValue),this.iteratorNextValue(this.spacing().firstSpacingLocationAtOrAfter(minDataValue,this.start()))}),this.respondsTo("hasNext",function(){var value=this.iteratorNextValue();return null!=value&&value.le(this.iteratorMaxValue())}),this.respondsTo("peekNext",function(){var value=this.iteratorNextValue(),maxValue=this.iteratorMaxValue();if(null!=value&&(void 0===maxValue||!value.gt(maxValue)))return value}),this.respondsTo("next",function(){var value=this.iteratorNextValue(),maxValue=this.iteratorMaxValue();if(null!=value&&(void 0===maxValue||!value.gt(maxValue)))return this.iteratorNextValue(value.add(this.spacing())),value}),this.respondsTo("getLabelDensity",function(graphicsContext){var axis=this.axis(),pixelSpacing=this.spacing().getRealValue()*axis.axisToDataRatio(),minRealValue=axis.dataMin().getRealValue(),representativeRealValue=minRealValue+.51234567*(axis.dataMax().getRealValue()-minRealValue),representativeValue=DataValue.create(axis.type(),representativeRealValue),representativeValueString=this.formatter().format(representativeValue),Axis=require("./axis.js");return(axis.orientation()===Axis.HORIZONTAL?this.measureStringWidth(graphicsContext,representativeValueString):this.measureStringHeight(graphicsContext,representativeValueString))/(pixelSpacing*this.densityfactor())}),this.respondsTo("measureStringWidth",function(graphicsContext,string){return 30*string.length}),this.respondsTo("measureStringHeight",function(graphicsContext,string){return 30*string.length}),this.respondsTo("renderLabel",function(graphicsContext,value){}),this.respondsTo("normalize",function(){var labelerFormat,type=this.axis().type();labelerFormat=type===DataValue.DATETIME?"%Y-%M-%D %H:%i":"%.1f",void 0===this.formatter()&&this.formatter(DataFormatter.create(type,labelerFormat))}),utilityFunctions.insertDefaults(this,defaultValues.horizontalaxis.labels.label,attributes)});module.exports=Labeler},{"../../lib/jermaine/src/jermaine.js":9,"../math/point.js":104,"../math/rgb_color.js":105,"../util/utilityFunctions.js":157,"./axis.js":18,"./data_formatter.js":27,"./data_measure.js":28,"./data_value.js":30}],46:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),Point=require("../math/point.js"),RGBColor=require("../math/rgb_color.js"),Icon=require("./icon.js"),Plot=require("./plot.js"),utilityFunctions=require("../util/utilityFunctions.js"),validationFunctions=require("../util/validationFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.legend),Legend=new jermaine.Model("Legend",function(){this.hasA("visible").which.validatesWith(function(visible){return"boolean"==typeof visible||null===visible}),this.hasA("base").which.validatesWith(function(base){return base instanceof Point}),this.hasAn("anchor").which.validatesWith(function(anchor){return anchor instanceof Point}),this.hasA("position").which.validatesWith(function(position){return position instanceof Point}),this.hasA("frame").which.validatesWith(function(frame){return"plot"===frame||"padding"===frame}),this.hasA("color").which.validatesWith(function(color){return color instanceof RGBColor}),this.hasA("bordercolor").which.validatesWith(function(bordercolor){return bordercolor instanceof RGBColor}),this.hasA("opacity").which.validatesWith(function(opacity){return validationFunctions.validateNumberRange(opacity,0,1)}),this.hasA("border").which.isA("integer"),this.hasA("rows").which.isA("integer").and.isGreaterThan(0),this.hasA("columns").which.isA("integer").and.isGreaterThan(0),this.hasA("cornerradius").which.isA("integer"),this.hasA("padding").which.isA("integer"),this.hasAn("icon").which.validatesWith(function(icon){return icon instanceof Icon}),this.isBuiltWith(function(){this.icon(new Icon)}),this.hasMany("plots").eachOfWhich.validateWith(function(plot){return plot instanceof Plot}),this.hasA("iconOffset").which.isAn("integer").and.defaultsTo(5),this.hasA("labelOffset").which.isAn("integer").and.defaultsTo(5),this.hasA("labelEnding").which.isAn("integer").defaultsTo(15),this.hasA("width").which.isA("number"),this.hasA("height").which.isA("number"),this.hasA("x").which.isA("number"),this.hasA("y").which.isA("number"),this.hasA("blockWidth").which.isA("number"),this.hasA("blockHeight").which.isA("number"),this.hasA("maxLabelWidth").which.isA("number"),this.hasA("maxLabelHeight").which.isA("number"),this.respondsTo("determineVisibility",function(){switch(this.visible()){case!0:return!0;case!1:return!1;case null:return 1<this.plots().size()}}),this.respondsTo("initializeGeometry",function(graph,graphicsContext){var label,i,anchor=this.anchor(),base=this.base(),position=this.position(),iconOffset=this.iconOffset(),widths=[],heights=[];if(!1===this.determineVisibility())return this;for(i=0;i<this.plots().size();i++)void 0!==(label=this.plots().at(i).legend().label())&&(label.initializeGeometry(graphicsContext),widths.push(label.origWidth()),heights.push(label.origHeight()));return widths.sort(function(a,b){return b-a}),heights.sort(function(a,b){return b-a}),this.maxLabelWidth(widths[0]),this.maxLabelHeight(Math.max(heights[0],this.icon().height())),this.blockWidth(iconOffset+this.icon().width()+this.labelOffset()+this.maxLabelWidth()+this.labelEnding()),this.blockHeight(iconOffset+this.maxLabelHeight()),this.width(2*this.border()+this.columns()*this.blockWidth()),this.height(2*this.border()+this.rows()*this.blockHeight()+iconOffset),"padding"===this.frame()?(this.x((base.x()+1)*graph.paddingBox().width()/2-(anchor.x()+1)*this.width()/2+position.x()),this.y((base.y()+1)*graph.paddingBox().height()/2-(anchor.y()+1)*this.height()/2+position.y())):(this.x((base.x()+1)*graph.plotBox().width()/2-(anchor.x()+1)*this.width()/2+position.x()),this.y((base.y()+1)*graph.plotBox().height()/2-(anchor.y()+1)*this.height()/2+position.y())),this}),this.respondsTo("render",function(graphicsContext){var iconx,icony,labelx,labely,r,c,plots=this.plots(),icon=this.icon(),plotCount=0;if(!1===this.determineVisibility())return this;for(this.begin(graphicsContext),this.renderLegend(graphicsContext),r=0;r<this.rows()&&!(plotCount>=plots.size());r++)for(labely=icony=this.border()+(this.rows()-r-1)*this.blockHeight()+this.iconOffset(),c=0;c<this.columns()&&!(plotCount>=plots.size());c++)labelx=(iconx=this.border()+c*this.blockWidth()+this.iconOffset())+icon.width()+this.labelOffset(),plots.at(plotCount).renderer().renderLegendIcon(graphicsContext,iconx,icony,icon,this.opacity()),0<icon.border()&&icon.renderBorder(graphicsContext,iconx,icony,this.opacity()),this.renderLabel(plots.at(plotCount).legend().label(),graphicsContext,labelx,labely),plotCount++;return this.end(graphicsContext),this}),this.respondsTo("normalize",function(graph){var i,j,flag,legendPlots=this.plots(),graphPlots=graph.plots(),columns=this.columns,rows=this.rows;for(i=0;i<graphPlots.size();i++)if(graphPlots.at(i).legend()&&!0===graphPlots.at(i).legend().visible()){for(flag=!1,j=0;j<legendPlots.size();j++)if(graphPlots.at(i)===legendPlots.at(j)){flag=!0;break}!0!==flag&&legendPlots.add(graphPlots.at(i))}return 0===legendPlots.size()&&(void 0===columns()&&columns(1),void 0===rows()&&rows(1)),void 0===rows()&&void 0===columns()&&columns(1),void 0===columns()?columns(parseInt(legendPlots.size()/rows()+(0<legendPlots.size()%rows()?1:0),10)):void 0===rows()&&rows(parseInt(legendPlots.size()/columns()+(0<legendPlots.size()%columns()?1:0),10)),this}),utilityFunctions.insertDefaults(this,defaultValues.legend,attributes)});module.exports=Legend},{"../../lib/jermaine/src/jermaine.js":9,"../math/point.js":104,"../math/rgb_color.js":105,"../util/utilityFunctions.js":157,"../util/validationFunctions.js":158,"./icon.js":43,"./plot.js":54}],47:[function(require,module,exports){var Mixin=new(require("../../lib/jermaine/src/jermaine.js").Model)("Mixin",function(){this.hasMany("mixinfuncs"),this.hasA("applied").which.isA("boolean").defaultsTo(!1),this.respondsTo("add",function(mixinfunc){this.mixinfuncs().add(mixinfunc)}),this.respondsTo("apply",function(){var i;if(!this.applied())for(i=0;i<this.mixinfuncs().size();++i)this.mixinfuncs().at(i).apply(this,arguments);this.applied(!0)}),this.respondsTo("reapply",function(){this.applied(!1),this.apply.apply(this,arguments)})});module.exports=Mixin},{"../../lib/jermaine/src/jermaine.js":9}],48:[function(require,module,exports){var Multigraph;module.exports=function($){if(void 0!==Multigraph)return Multigraph;var jermaine=require("../../lib/jermaine/src/jermaine.js");return(Multigraph=new jermaine.Model("Multigraph",function(){this.hasMany("graphs").eachOfWhich.validateWith(function(graph){return graph instanceof require("./graph.js")}),this.hasA("div"),this.hasA("mugl"),this.hasA("ajaxthrottles"),this.isBuiltWith(function(){this.ajaxthrottles([])}),this.respondsTo("addAjaxThrottle",function(pattern,requests,period,concurrent){this.ajaxthrottles().push({regex:pattern?new RegExp(pattern):void 0,ajaxthrottle:$.ajaxthrottle({numRequestsPerTimePeriod:parseInt(requests,10),timePeriod:parseInt(period,10),maxConcurrent:parseInt(concurrent,10)})})}),this.respondsTo("getAjaxThrottle",function(url){var throttle=void 0;return $.each(this.ajaxthrottles(),function(){return!(!this.regex||this.regex.test(url))||(throttle=this.ajaxthrottle,!1)}),throttle}),this.respondsTo("rebaseUrl",function(url){var baseurl=this.mugl();return baseurl?/^\//.test(url)?url:/:\/\//.test(url)?url:(/^\//.test(baseurl)||/:\/\//.test(baseurl)||/^\.\//.test(baseurl)||(baseurl="./"+baseurl),(baseurl=(baseurl=baseurl.replace(/\?.*$/,"")).replace(/\/[^\/]*$/,"/"))+url):url}),this.hasA("busySpinner"),this.respondsTo("busySpinnerLevel",function(delta){this.busySpinner()&&$(this.busySpinner()).busy_spinner("level",delta)}),this.respondsTo("initializeGeometry",function(width,height,graphicsContext){var i;for(i=0;i<this.graphs().size();++i)this.graphs().at(i).initializeGeometry(width,height,graphicsContext)}),this.respondsTo("registerCommonDataCallback",function(callback){var i;for(i=0;i<this.graphs().size();++i)this.graphs().at(i).registerCommonDataCallback(callback)}),this.respondsTo("normalize",function(){var i;for(i=0;i<this.graphs().size();++i)this.graphs().at(i).normalize()}),this.respondsTo("destroy",function(){var i;for(i=0;i<this.graphs().size();++i)this.graphs().at(i).destroy()})})).browserHasCanvasSupport=function(){return!!(window.HTMLCanvasElement&&window.CanvasRenderingContext2D&&((elem=document.createElement("canvas")).getContext&&elem.getContext("2d")));var elem},Multigraph.browserHasSVGSupport=function(){return!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect},Multigraph.createGraph=function(options){var messageHandler,defaultMessageHandler,div=options.div;return options.driver="canvas","string"==typeof div&&(div=$("#"+div)[0]),void 0!==options.width&&0<options.width&&$(div).width(options.width),void 0!==options.height&&0<options.height&&$(div).height(options.height),messageHandler={},"function"==typeof options.error&&(messageHandler.error=options.error),"function"==typeof options.warning&&(messageHandler.warning=options.warning),messageHandler.error&&messageHandler.warning||(defaultMessageHandler=Multigraph.createDefaultMessageHandlers(div),messageHandler.error||(messageHandler.error=defaultMessageHandler.error),messageHandler.warning||(messageHandler.warning=defaultMessageHandler.warning)),options.messageHandler=messageHandler,void 0!==options.muglString?"canvas"===options.driver?Multigraph.createCanvasGraphFromString(options):"raphael"===options.driver?Multigraph.createRaphaelGraphFromString(options):void options.messageHanlder.error(new Error("invalid graphic driver '"+options.driver+"' specified to Multigraph.createGraph")):"canvas"===options.driver?Multigraph.createCanvasGraph(options):"raphael"===options.driver?Multigraph.createRaphaelGraph(options):void options.messageHanlder.error(new Error("invalid graphic driver '"+options.driver+"' specified to Multigraph.createGraph"))},Multigraph.create=Multigraph.createGraph,Multigraph.createDefaultMessageHandlers=function(div){return $(div).css("position","relative"),$(div).errorDisplay({}),{error:function(e){var stackTrace=e.stack&&"string"==typeof e.stack?e.stack.replace(/\n/g,"</li><li>"):e.message;$(div).errorDisplay("displayError",stackTrace,e.message,{fontColor:"#000000",backgroundColor:"#ff0000",indicatorColor:"#ff0000"})},warning:function(w){var message="Warning: "+("string"==typeof w?w:w.message),stackTrace="string"!=typeof w&&w.stack&&"string"==typeof w.stack?w.stack.replace(/\n/g,"</li><li>"):message;$(div).errorDisplay("displayError",stackTrace,message,{fontColor:"#000000",backgroundColor:"#e06a1b",indicatorColor:"#e06a1b"})}}},Multigraph._dataAdapters={},Multigraph.installDataAdapter=function(name,adapter){Multigraph._dataAdapters[name]=adapter},Multigraph.getDataAdapter=function(name){return Multigraph._dataAdapters[name]},Multigraph.sprintf=require("sprintf"),Multigraph}},{"../../lib/jermaine/src/jermaine.js":9,"./graph.js":41,sprintf:16}],49:[function(require,module,exports){require("../../lib/jermaine/src/jermaine.js");var sprintf=require("sprintf"),NumberFormatter=function(format){var testString;if("string"!=typeof format)throw new Error("format must be a string");this.formatString=format,testString=sprintf(format,0),this.length=testString.length};NumberFormatter.prototype.format=function(value){return sprintf(this.formatString,value.getRealValue())},NumberFormatter.prototype.getMaxLength=function(){return this.length},NumberFormatter.prototype.getFormatString=function(){return this.formatString},module.exports=NumberFormatter},{"../../lib/jermaine/src/jermaine.js":9,sprintf:16}],50:[function(require,module,exports){require("../../lib/jermaine/src/jermaine.js");NumberValue=require("./number_value.js");var epsilon=1e-12,NumberMeasure=function(measure){this.measure=measure};NumberMeasure.prototype.getRealValue=function(){return this.measure},NumberMeasure.prototype.toString=function(){return this.measure.toString()},NumberMeasure.prototype.firstSpacingLocationAtOrAfter=function(value,alignment){var f,n,m,a=alignment.value,v=value.value,s=Math.abs(this.measure);return f=(v-a)/s,m=(n=Math.floor(f))+1,f-n<epsilon||m-f<epsilon?new NumberValue(v):new NumberValue(a+s*m)},NumberMeasure.prototype.lastSpacingLocationAtOrBefore=function(value,alignment){return new NumberValue((s=this.measure,v=value.value,a=alignment.value,0<=(v-=a)?(f=v/s)-(n=Math.floor(f))<epsilon?v:a+n*s:(f=-v/s,(n=Math.ceil(f))-f<epsilon?v:a-n*s)));var s,v,a,n,f},NumberMeasure.parse=function(s){return new NumberMeasure(parseFloat(s))},module.exports=NumberMeasure},{"../../lib/jermaine/src/jermaine.js":9,"./number_value.js":51}],51:[function(require,module,exports){require("../../lib/jermaine/src/jermaine.js");DataValue=require("./data_value.js");var NumberValue=function(value){this.value=value};NumberValue.prototype.getRealValue=function(){return this.value},NumberValue.prototype.toString=function(){return this.value.toString()},NumberValue.prototype.compareTo=function(x){return this.value<x.value?-1:this.value>x.value?1:0},NumberValue.prototype.addRealValue=function(realValueIncr){return new NumberValue(this.value+realValueIncr)},NumberValue.prototype.add=function(measure){return new NumberValue(this.value+measure.measure)},NumberValue.prototype.type=DataValue.NUMBER,NumberValue.prototype.clone=function(){return new NumberValue(this.value)},NumberValue.parse=function(s){return new NumberValue(parseFloat(s))},DataValue.mixinComparators(NumberValue.prototype),module.exports=NumberValue},{"../../lib/jermaine/src/jermaine.js":9,"./data_value.js":30}],52:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js");DataValue=require("./data_value.js");var utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.horizontalaxis.pan),Pan=new jermaine.Model("Pan",function(){this.hasA("allowed").which.isA("boolean"),this.hasA("min").which.validatesWith(DataValue.isInstanceOrNull),this.hasA("max").which.validatesWith(DataValue.isInstanceOrNull),utilityFunctions.insertDefaults(this,defaultValues.horizontalaxis.pan,attributes)});module.exports=Pan},{"../../lib/jermaine/src/jermaine.js":9,"../util/utilityFunctions.js":157,"./data_value.js":30}],53:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),ArrayData=require("./array_data.js"),DataMeasure=require("./data_measure.js"),DataValue=require("./data_value.js"),PeriodicArrayData=new jermaine.Model(function(){var PeriodicArrayData=this,emptyIterator={next:function(){},hasNext:function(){return!1}};this.isA(ArrayData),this.hasA("period").which.validatesWith(DataMeasure.isInstance),this.isBuiltWith("columns","stringArray","period",function(){this.init(),this.addListener("listenerAdded",function(event){var data=this.array();"dataReady"===event.targetType&&event.listener(data[0][0],data[data.length-1][0])})}),this.respondsTo("getIterator",function(columnIds,min,max,buffer){return PeriodicArrayData.getArrayDataIterator(this,columnIds,min,max,buffer)}),PeriodicArrayData.getArrayDataIterator=function(periodicArrayData,columnIds,min,max,buffer){var i,j,currentIndex,columnIndices,array=periodicArrayData.array();if(buffer=buffer||0,"[object Array]"!==Object.prototype.toString.apply(columnIds))throw new Error("ArrayData: getIterator method requires that the first parameter be an array of strings");for(i=0;i<columnIds.length;++i)if("string"!=typeof columnIds[i])throw new Error("ArrayData: getIterator method requires that the first parameter be an array of strings");if(!DataValue.isInstance(min)||!DataValue.isInstance(max))throw new Error("ArrayData: getIterator method requires the second and third argument to be number values");if("number"!=typeof buffer)throw new Error("ArrayData: getIterator method requires last argument to be an integer");if(0===array.length)return emptyIterator;var baseValue=array[0][0],b=periodicArrayData.period().lastSpacingLocationAtOrBefore(min,baseValue),offsetRealValue=b.getRealValue()-baseValue.getRealValue(),baseMin=DataValue.create(min.type,min.getRealValue()-offsetRealValue);for(currentIndex=0;currentIndex<array.length&&!array[currentIndex][0].ge(baseMin);++currentIndex);currentIndex===array.length&&(currentIndex=0);var currentValue=DataValue.create(array[currentIndex][0].type,array[currentIndex][0].getRealValue()+offsetRealValue);for(columnIndices=[],j=0;j<columnIds.length;++j){var k=periodicArrayData.columnIdToColumnNumber(columnIds[j]);columnIndices.push(k)}return{next:function(){var i,projection=[];if(currentIndex<0)return null;for(i=0;i<columnIndices.length;++i)0===columnIndices[i]?projection.push(currentValue):projection.push(array[currentIndex][columnIndices[i]]);return++currentIndex>=array.length&&(currentIndex=0,b=b.add(periodicArrayData.period()),offsetRealValue=b.getRealValue()-baseValue.getRealValue()),(currentValue=DataValue.create(array[currentIndex][0].type,array[currentIndex][0].getRealValue()+offsetRealValue)).gt(max)&&(currentIndex=-1),projection},hasNext:function(){return 0<=currentIndex}}}});module.exports=PeriodicArrayData},{"../../lib/jermaine/src/jermaine.js":9,"./array_data.js":17,"./data_measure.js":28,"./data_value.js":30}],54:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),PlotLegend=require("./plot_legend.js"),Axis=require("./axis.js"),Renderer=require("./renderer.js"),Plot=new jermaine.Model("Plot",function(){this.hasA("legend").which.validatesWith(function(legend){return legend instanceof PlotLegend}),this.hasA("horizontalaxis").which.validatesWith(function(axis){return axis instanceof Axis}),this.hasA("verticalaxis").which.validatesWith(function(axis){return axis instanceof Axis}),this.hasA("renderer").which.validatesWith(function(renderer){return renderer instanceof Renderer}),this.hasA("visible").which.isA("boolean").and.defaultsTo(!0),this.respondsTo("normalize",function(graph){var rendererType,numberOfVariables,findNextVariableAtOrAfter,i,graphAxes=graph.axes(),DataPlot=require("../core/data_plot.js");if(findNextVariableAtOrAfter=function(plot,data,index){for(var variableInPlotFlag,j,variable,overlapFlag=!1,i=index;;){if(i===index&&!0===overlapFlag)throw new Error("Plot Normalizer: There does not exist an unused variable");for(i===data.columns().size()&&(overlapFlag=!(i=0)),variableInPlotFlag=!1,variable=data.columns().at(i),j=0;j<plot.variable().size();j++)if(plot.variable().at(j)===variable){variableInPlotFlag=!0;break}if(!1===variableInPlotFlag)return variable;i++}},void 0===this.horizontalaxis())for(i=0;i<graphAxes.size();i++)if(graphAxes.at(i).orientation()===Axis.HORIZONTAL){this.horizontalaxis(graphAxes.at(i));break}if(void 0===this.verticalaxis())for(i=0;i<graphAxes.size();i++)if(graphAxes.at(i).orientation()===Axis.VERTICAL){this.verticalaxis(graphAxes.at(i));break}if(void 0===this.renderer()&&(require("./renderers/all_renderers.js"),rendererType=Renderer.Type.parse("line"),this.renderer(Renderer.create(rendererType)),this.renderer().plot(this)),numberOfVariables=this.renderer().numberOfVariables(),this instanceof DataPlot){var plotData=this.data,plotVariables=this.variable();for(void 0===plotData()&&plotData(graph.data().at(0)),0===plotVariables.size()&&plotVariables.add(findNextVariableAtOrAfter(this,plotData(),0)),null===plotVariables.at(0)&&plotVariables.replace(0,findNextVariableAtOrAfter(this,plotData(),0));plotVariables.size()<numberOfVariables;)plotVariables.add(findNextVariableAtOrAfter(this,plotData(),1));this.datatips()&&this.datatips().normalize(this)}})});module.exports=Plot},{"../../lib/jermaine/src/jermaine.js":9,"../core/data_plot.js":29,"./axis.js":18,"./plot_legend.js":55,"./renderer.js":57,"./renderers/all_renderers.js":58}],55:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),Text=require("./text.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.plot.legend),PlotLegend=new jermaine.Model("PlotLegend",function(){this.hasA("visible").which.isA("boolean"),this.hasA("label").which.validatesWith(function(label){return label instanceof Text}),utilityFunctions.insertDefaults(this,defaultValues.plot.legend,attributes)});module.exports=PlotLegend},{"../../lib/jermaine/src/jermaine.js":9,"../util/utilityFunctions.js":157,"./text.js":64}],56:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),RGBColor=require("../math/rgb_color.js"),Insets=require("../math/insets.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.plotarea),Plotarea=new jermaine.Model("Plotarea",function(){this.hasA("margin").which.validatesWith(function(margin){return margin instanceof Insets}),this.hasA("border").which.isA("integer"),this.hasA("color").which.validatesWith(function(color){return null===color||color instanceof RGBColor}),this.hasA("bordercolor").which.validatesWith(function(bordercolor){return bordercolor instanceof RGBColor}),utilityFunctions.insertDefaults(this,defaultValues.plotarea,attributes)});module.exports=Plotarea},{"../../lib/jermaine/src/jermaine.js":9,"../math/insets.js":103,"../math/rgb_color.js":105,"../util/utilityFunctions.js":157}],57:[function(require,module,exports){var rendererList,jermaine=require("../../lib/jermaine/src/jermaine.js"),Warning=require("./warning.js"),Enum=require("../math/enum.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.plot.renderer),Type=new Enum("RendererType"),RGBColor=require("../math/rgb_color.js"),Renderer=new jermaine.Model("Renderer",function(){this.hasA("type").which.validatesWith(Type.isInstance),this.hasA("plot").which.validatesWith(function(plot){return plot instanceof require("./plot.js")}),this.hasA("numberOfVariables").which.isA("number"),this.hasA("filter").which.validatesWith(function(filter){return void 0===filter||"function"==typeof filter.reset&&"function"==typeof filter.filter}),this.respondsTo("setUpMissing",function(){var data,plot=this.plot();plot?plot instanceof require("./constant_plot.js")?this.isMissing=function(p){return!1}:plot.data()?(data=plot.data(),this.isMissing=function(p){var i;for(i=1;i<p.length;++i)if(data.isMissing(p[i],i))return!0;return!1}):console.log("Warning: renderer.setUpMissing() called for renderer whose plot has no data ref"):console.log("Warning: renderer.setUpMissing() called for renderer that has no plot ref")}),this.isBuiltWith("type"),utilityFunctions.insertDefaults(this,defaultValues.plot.renderer,attributes),this.respondsTo("transformPoint",function(input){var i,output=[],haxis=this.plot().horizontalaxis(),vaxis=this.plot().verticalaxis();for(output[0]=haxis.dataValueToAxisValue(input[0]),i=1;i<input.length;++i)output[i]=vaxis.dataValueToAxisValue(input[i]);return output});var equalOrUndefined=function(a,b){return a===b||void 0===a&&void 0===b};this.respondsTo("setOption",function(name,value,min,max){var rendererOpt,rendererOpts,i;if(!this.optionsMetadata[name])throw new Error("attempt to set unknown renderer option '"+name+"'");for(rendererOpts=this.options()[name](),i=0;i<rendererOpts.size();++i)if(equalOrUndefined(rendererOpts.at(i).min(),min)&&equalOrUndefined(rendererOpts.at(i).max(),max))return void rendererOpts.at(i).value(value);(rendererOpt=new this.optionsMetadata[name].type).value(value),rendererOpt.min(min),rendererOpt.max(max),rendererOpts.add(rendererOpt)}),this.respondsTo("setOptionFromString",function(name,stringValue,stringMin,stringMax){var rendererOpt,plot=this.plot(),type=this.type(),DataValue=require("./data_value.js"),warning=void 0;if("dotsize"===name?(name="pointsize",warning=new Warning('deprecated "dotsize" option used for "'+type+'" renderer; use "pointsize" instead')):"dotcolor"===name&&(name="pointcolor",warning=new Warning('deprecated "dotcolor" option used for "'+type+'" renderer; use "pointcolor" instead')),!this.optionsMetadata[name])throw new Warning('"'+type+'" renderer has no option named "'+name+'"');if((rendererOpt=new this.optionsMetadata[name].type).parseValue(stringValue,this),plot&&plot.verticalaxis()&&(void 0!==stringMin&&rendererOpt.min(DataValue.parse(plot.verticalaxis().type(),stringMin)),void 0!==stringMax&&rendererOpt.max(DataValue.parse(plot.verticalaxis().type(),stringMax))),this.setOption(name,rendererOpt.value(),rendererOpt.min(),rendererOpt.max()),warning)throw warning}),this.respondsTo("getOptionValue",function(optionName,value){var i,options,optionList;if("function"!=typeof(options=this.options())[optionName])throw new Error('unknown option "'+optionName+'"');if(!(optionList=options[optionName]()))throw new Error('unknown option "'+optionName+'"');for(i=optionList.size()-1;0<=i;--i){var option=optionList.at(i);if((void 0===option.min()||void 0===value||option.min().le(value))&&(void 0===option.max()||void 0===value||option.max().gt(value)))return option.value()}}),this.respondsTo("begin",function(){}),this.respondsTo("dataPoint",function(point){}),this.respondsTo("end",function(){})});rendererList=[],Renderer.addType=function(rendererObj){rendererList.push(rendererObj)},Renderer.create=function(type){var i,renderer;for(i=0;i<rendererList.length;++i)if(rendererList[i].type===type)return(renderer=new rendererList[i].model).type(type),renderer;throw new Error("Renderer.create: '"+type+"' is not a known renderer type")},Renderer.declareOptions=function(renderer,OptionsModelName,options){var i,OptionsModel,optionsMetadata,declareOption=function(optionName,optionType){OptionsModel.hasMany(optionName).eachOfWhich.validateWith(function(v){return v instanceof optionType})};for(OptionsModel=new jermaine.Model(OptionsModelName,function(){}),optionsMetadata={},i=0;i<options.length;++i)declareOption(options[i].name,options[i].type),optionsMetadata[options[i].name]={type:options[i].type,default:options[i].default};renderer.hasA("options").isImmutable().defaultsTo(function(){return new OptionsModel}),renderer.prototype.optionsMetadata=optionsMetadata,renderer.isBuiltWith(function(){var opt,ropt,optionsMetadata=this.optionsMetadata;for(opt in optionsMetadata)optionsMetadata.hasOwnProperty(opt)&&(ropt=new optionsMetadata[opt].type(optionsMetadata[opt].default),this.options()[opt]().add(ropt))})},Renderer.Option=new jermaine.Model("Renderer.Option",function(){var DataValue=require("./data_value.js");this.hasA("min").which.validatesWith(DataValue.isInstance),this.hasA("max").which.validatesWith(DataValue.isInstance)}),Renderer.RGBColorOption=new jermaine.Model("Renderer.RGBColorOption",function(){this.isA(Renderer.Option),this.hasA("value").which.validatesWith(function(v){return v instanceof RGBColor||null===v}),this.isBuiltWith("value"),this.respondsTo("serializeValue",function(){return this.value().getHexString()}),this.respondsTo("parseValue",function(string){this.value(RGBColor.parse(string))}),this.respondsTo("valueEq",function(value){return this.value().eq(value)})}),Renderer.NumberOption=new jermaine.Model("Renderer.NumberOption",function(){this.isA(Renderer.Option),this.hasA("value").which.isA("number"),this.isBuiltWith("value"),this.respondsTo("serializeValue",function(){return this.value().toString()}),this.respondsTo("parseValue",function(string){this.value(parseFloat(string))}),this.respondsTo("valueEq",function(value){return this.value()===value})}),Renderer.DataValueOption=new jermaine.Model("Renderer.DataValueOption",function(){this.isA(Renderer.Option),this.hasA("value").which.validatesWith(function(value){return require("./data_value.js").isInstance(value)||null===value}),this.isBuiltWith("value"),this.respondsTo("serializeValue",function(){return this.value()}),this.respondsTo("valueEq",function(value){return this.value().eq(value)})}),Renderer.VerticalDataValueOption=new jermaine.Model("Renderer.DataValueOption",function(){this.isA(Renderer.DataValueOption),this.isBuiltWith("value"),this.respondsTo("parseValue",function(string,renderer){var DataValue=require("./data_value.js");this.value(DataValue.parse(renderer.plot().verticalaxis().type(),string))})}),Renderer.HorizontalDataValueOption=new jermaine.Model("Renderer.DataValueOption",function(){this.isA(Renderer.DataValueOption),this.isBuiltWith("value"),this.respondsTo("parseValue",function(string,renderer){var DataValue=require("./data_value.js");this.value(DataValue.parse(renderer.plot().horizontalaxis().type(),string))})}),Renderer.DataMeasureOption=new jermaine.Model("Renderer.DataMeasureOption",function(){this.isA(Renderer.Option),this.hasA("value").which.validatesWith(function(value){return require("./data_measure.js").isInstance(value)||null===value}),this.isBuiltWith("value"),this.respondsTo("serializeValue",function(){return this.value()}),this.respondsTo("valueEq",function(value){return this.value().eq(value)})}),Renderer.VerticalDataMeasureOption=new jermaine.Model("Renderer.DataMeasureOption",function(){this.isA(Renderer.DataMeasureOption),this.respondsTo("parseValue",function(string,renderer){var DataMeasure=require("./data_measure.js");this.value(DataMeasure.parse(renderer.plot().verticalaxis().type(),string))})}),Renderer.HorizontalDataMeasureOption=new jermaine.Model("Renderer.DataMeasureOption",function(){this.isA(Renderer.DataMeasureOption),this.isBuiltWith("value"),this.respondsTo("parseValue",function(string,renderer){var DataMeasure=require("./data_measure.js");this.value(DataMeasure.parse(renderer.plot().horizontalaxis().type(),string))})}),Renderer.Type=Type,module.exports=Renderer},{"../../lib/jermaine/src/jermaine.js":9,"../math/enum.js":102,"../math/rgb_color.js":105,"../util/utilityFunctions.js":157,"./constant_plot.js":24,"./data_measure.js":28,"./data_value.js":30,"./plot.js":54,"./warning.js":66}],58:[function(require,module,exports){require("./band_renderer.js"),require("./bar_renderer.js"),require("./fill_renderer.js"),require("./pointline_renderer.js"),require("./rangebar_renderer.js")},{"./band_renderer.js":59,"./bar_renderer.js":60,"./fill_renderer.js":61,"./pointline_renderer.js":62,"./rangebar_renderer.js":63}],59:[function(require,module,exports){var jermaine=require("../../../lib/jermaine/src/jermaine.js"),Renderer=require("../renderer.js"),RGBColor=require("../../math/rgb_color.js"),BandRenderer=new jermaine.Model("BandRenderer",function(){this.isA(Renderer),this.hasA("numberOfVariables").which.defaultsTo(3)});BandRenderer.GRAY=parseInt("80",16)/255,Renderer.declareOptions(BandRenderer,"BandRendererOptions",[{name:"linecolor",type:Renderer.RGBColorOption,default:new RGBColor(0,0,0)},{name:"linewidth",type:Renderer.NumberOption,default:1},{name:"line1color",type:Renderer.RGBColorOption,default:null},{name:"line1width",type:Renderer.NumberOption,default:-1},{name:"line2color",type:Renderer.RGBColorOption,default:null},{name:"line2width",type:Renderer.NumberOption,default:-1},{name:"fillcolor",type:Renderer.RGBColorOption,default:new RGBColor(BandRenderer.GRAY,BandRenderer.GRAY,BandRenderer.GRAY)},{name:"fillopacity",type:Renderer.NumberOption,default:1}]),Renderer.BAND=new Renderer.Type("band"),Renderer.addType({type:Renderer.Type.parse("band"),model:BandRenderer}),module.exports=BandRenderer},{"../../../lib/jermaine/src/jermaine.js":9,"../../math/rgb_color.js":105,"../renderer.js":57}],60:[function(require,module,exports){var jermaine=require("../../../lib/jermaine/src/jermaine.js"),Renderer=require("../renderer.js"),RGBColor=require("../../math/rgb_color.js"),DataMeasure=require("../data_measure.js"),utilityFunctions=require("../../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),BarRenderer=(utilityFunctions.getKeys(defaultValues.plot.renderer),new jermaine.Model("BarRenderer",function(){this.isA(Renderer),this.hasA("numberOfVariables").which.defaultsTo(2)}));Renderer.declareOptions(BarRenderer,"BarRendererOptions",[{name:"barwidth",type:Renderer.HorizontalDataMeasureOption,default:new DataMeasure.parse("number",0)},{name:"baroffset",type:Renderer.NumberOption,default:0},{name:"barbase",type:Renderer.VerticalDataValueOption,default:null},{name:"fillcolor",type:Renderer.RGBColorOption,default:new RGBColor(0,0,0)},{name:"fillopacity",type:Renderer.NumberOption,default:1},{name:"linecolor",type:Renderer.RGBColorOption,default:new RGBColor(0,0,0)},{name:"hidelines",type:Renderer.NumberOption,default:2}]),Renderer.BAR=new Renderer.Type("bar"),Renderer.addType({type:Renderer.Type.parse("bar"),model:BarRenderer}),module.exports=BarRenderer},{"../../../lib/jermaine/src/jermaine.js":9,"../../math/rgb_color.js":105,"../../util/utilityFunctions.js":157,"../data_measure.js":28,"../renderer.js":57}],61:[function(require,module,exports){var jermaine=require("../../../lib/jermaine/src/jermaine.js"),Renderer=require("../renderer.js"),RGBColor=require("../../math/rgb_color.js"),utilityFunctions=require("../../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),FillRenderer=(utilityFunctions.getKeys(defaultValues.plot.renderer),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),utilityFunctions.getKeys(defaultValues.plot.renderer),new jermaine.Model("FillRenderer",function(){this.isA(Renderer),this.hasA("numberOfVariables").which.defaultsTo(2)}));FillRenderer.GRAY=parseInt("80",16)/255,Renderer.declareOptions(FillRenderer,"FillRendererOptions",[{name:"linecolor",type:Renderer.RGBColorOption,default:new RGBColor(0,0,0)},{name:"linewidth",type:Renderer.NumberOption,default:1},{name:"fillcolor",type:Renderer.RGBColorOption,default:new RGBColor(FillRenderer.GRAY,FillRenderer.GRAY,FillRenderer.GRAY)},{name:"downfillcolor",type:Renderer.RGBColorOption,default:null},{name:"fillopacity",type:Renderer.NumberOption,default:1},{name:"fillbase",type:Renderer.VerticalDataValueOption,default:null}]),Renderer.FILL=new Renderer.Type("fill"),Renderer.addType({type:Renderer.Type.parse("fill"),model:FillRenderer}),module.exports=FillRenderer},{"../../../lib/jermaine/src/jermaine.js":9,"../../math/rgb_color.js":105,"../../util/utilityFunctions.js":157,"../renderer.js":57}],62:[function(require,module,exports){var jermaine=require("../../../lib/jermaine/src/jermaine.js"),Renderer=require("../renderer.js"),RGBColor=require("../../math/rgb_color.js"),utilityFunctions=require("../../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),PointlineRenderer=(utilityFunctions.getKeys(defaultValues.plot.renderer),new jermaine.Model("PointlineRenderer",function(){this.isA(Renderer),this.hasA("numberOfVariables").which.defaultsTo(2)}));PointlineRenderer.CIRCLE="circle",PointlineRenderer.SQUARE="square",PointlineRenderer.TRIANGLE="triangle",PointlineRenderer.DIAMOND="diamond",PointlineRenderer.STAR="star",PointlineRenderer.PLUS="plus",PointlineRenderer.X="x",PointlineRenderer.shapes=[PointlineRenderer.CIRCLE,PointlineRenderer.SQUARE,PointlineRenderer.TRIANGLE,PointlineRenderer.DIAMOND,PointlineRenderer.STAR,PointlineRenderer.PLUS,PointlineRenderer.X],PointlineRenderer.isShape=function(shape){var i;for(i=0;i<PointlineRenderer.shapes.length;++i)if(PointlineRenderer.shapes[i]===shape)return!0;return!1},PointlineRenderer.parseShape=function(string){if(string.toLowerCase()===PointlineRenderer.CIRCLE)return PointlineRenderer.CIRCLE;if(string.toLowerCase()===PointlineRenderer.SQUARE)return PointlineRenderer.SQUARE;if(string.toLowerCase()===PointlineRenderer.TRIANGLE)return PointlineRenderer.TRIANGLE;if(string.toLowerCase()===PointlineRenderer.DIAMOND)return PointlineRenderer.DIAMOND;if(string.toLowerCase()===PointlineRenderer.STAR)return PointlineRenderer.STAR;if(string.toLowerCase()===PointlineRenderer.PLUS)return PointlineRenderer.PLUS;if(string.toLowerCase()===PointlineRenderer.X)return PointlineRenderer.X;throw new Error("unknown point shape: "+string)},PointlineRenderer.serializeShape=function(shape){return shape},PointlineRenderer.ShapeOption=new jermaine.Model("PointlineRenderer.ShapeOption",function(){this.isA(Renderer.Option),this.hasA("value").which.validatesWith(PointlineRenderer.isShape),this.isBuiltWith("value"),this.respondsTo("serializeValue",function(){return PointlineRenderer.serializeShape(this.value())}),this.respondsTo("parseValue",function(string){this.value(PointlineRenderer.parseShape(string))}),this.respondsTo("valueEq",function(value){return this.value()===value})}),PointlineRenderer.SOLID="solid",PointlineRenderer.DASHED="dashed",PointlineRenderer.strokes=[PointlineRenderer.SOLID,PointlineRenderer.DASHED],PointlineRenderer.isStroke=function(stroke){var i;for(i=0;i<PointlineRenderer.strokes.length;++i)if(PointlineRenderer.strokes[i]===stroke)return!0;return!1},PointlineRenderer.parseStroke=function(string){if(string.toLowerCase()===PointlineRenderer.SOLID)return PointlineRenderer.SOLID;if(string.toLowerCase()===PointlineRenderer.DASHED)return PointlineRenderer.DASHED;throw new Error("unknown line stroke: "+string)},PointlineRenderer.serializeStroke=function(stroke){return stroke},PointlineRenderer.StrokeOption=new jermaine.Model("PointlineRenderer.StrokeOption",function(){this.isA(Renderer.Option),this.hasA("value").which.validatesWith(PointlineRenderer.isStroke),this.isBuiltWith("value"),this.respondsTo("serializeValue",function(){return PointlineRenderer.serializeStroke(this.value())}),this.respondsTo("parseValue",function(string){this.value(PointlineRenderer.parseStroke(string))}),this.respondsTo("valueEq",function(value){return this.value()===value})}),Renderer.declareOptions(PointlineRenderer,"PointlineRendererOptions",[{name:"linecolor",type:Renderer.RGBColorOption,default:new RGBColor(0,0,0)},{name:"linewidth",type:Renderer.NumberOption,default:1},{name:"pointshape",type:PointlineRenderer.ShapeOption,default:PointlineRenderer.CIRCLE},{name:"linestroke",type:PointlineRenderer.StrokeOption,default:PointlineRenderer.SOLID},{name:"pointsize",type:Renderer.NumberOption,default:0},{name:"pointcolor",type:Renderer.RGBColorOption,default:new RGBColor(0,0,0)},{name:"pointopacity",type:Renderer.NumberOption,default:1},{name:"pointoutlinewidth",type:Renderer.NumberOption,default:0},{name:"pointoutlinecolor",type:Renderer.RGBColorOption,default:new RGBColor(0,0,0)}]),Renderer.POINTLINE=new Renderer.Type("pointline"),Renderer.POINT=new Renderer.Type("point"),Renderer.LINE=new Renderer.Type("line"),Renderer.addType({type:Renderer.Type.parse("pointline"),model:PointlineRenderer}),Renderer.addType({type:Renderer.Type.parse("line"),model:PointlineRenderer}),Renderer.addType({type:Renderer.Type.parse("point"),model:PointlineRenderer}),module.exports=PointlineRenderer},{"../../../lib/jermaine/src/jermaine.js":9,"../../math/rgb_color.js":105,"../../util/utilityFunctions.js":157,"../renderer.js":57}],63:[function(require,module,exports){var jermaine=require("../../../lib/jermaine/src/jermaine.js"),Renderer=require("../renderer.js"),RGBColor=require("../../math/rgb_color.js"),DataMeasure=require("../data_measure.js"),utilityFunctions=require("../../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),RangeBarRenderer=(utilityFunctions.getKeys(defaultValues.plot.renderer),new jermaine.Model("RangeBarRenderer",function(){this.isA(Renderer),this.hasA("numberOfVariables").which.defaultsTo(3)}));Renderer.declareOptions(RangeBarRenderer,"RangeBarRendererOptions",[{name:"barwidth",type:Renderer.HorizontalDataMeasureOption,default:new DataMeasure.parse("number",0)},{name:"baroffset",type:Renderer.NumberOption,default:0},{name:"fillcolor",type:Renderer.RGBColorOption,default:RGBColor.parse("0x808080")},{name:"fillopacity",type:Renderer.NumberOption,default:1},{name:"linecolor",type:Renderer.RGBColorOption,default:new RGBColor(0,0,0)},{name:"linewidth",type:Renderer.NumberOption,default:1},{name:"hidelines",type:Renderer.NumberOption,default:2}]),Renderer.RANGEBAR=new Renderer.Type("rangebar"),Renderer.addType({type:Renderer.Type.parse("rangebar"),model:RangeBarRenderer}),module.exports=RangeBarRenderer},{"../../../lib/jermaine/src/jermaine.js":9,"../../math/rgb_color.js":105,"../../util/utilityFunctions.js":157,"../data_measure.js":28,"../renderer.js":57}],64:[function(require,module,exports){var Text=new(require("../../lib/jermaine/src/jermaine.js").Model)("Text",function(){this.isBuiltWith("string"),this.hasA("string").which.isA("string"),this.hasA("origWidth").which.isA("number"),this.hasA("origHeight").which.isA("number"),this.hasA("rotatedWidth").which.isA("number"),this.hasA("rotatedHeight").which.isA("number"),this.hasA("font").which.isA("string").and.which.defaultsTo(""),this.respondsTo("initializeGeometry",function(graphicsContext){var origWidth,origHeight,rotatedWidth,rotatedHeight;if(rotatedWidth=origWidth=this.measureStringWidth(graphicsContext),rotatedHeight=origHeight=this.measureStringHeight(graphicsContext),graphicsContext&&void 0!==graphicsContext.angle){var angle=graphicsContext.angle/180*Math.PI;rotatedWidth=Math.abs(Math.cos(angle))*origWidth+Math.abs(Math.sin(angle))*origHeight,rotatedHeight=Math.abs(Math.sin(angle))*origWidth+Math.abs(Math.cos(angle))*origHeight}return this.origWidth(origWidth),this.origHeight(origHeight),this.rotatedWidth(rotatedWidth),this.rotatedHeight(rotatedHeight),this}),this.respondsTo("measureStringWidth",function(graphicsContext){var lines,testLength,i,maxLength=1;if(void 0===this.string())throw new Error("measureStringWidth requires the string attr to be set.");for(lines=this.string().split(/\n/),i=0;i<lines.length;i++)maxLength<(testLength=lines[i].length)&&(maxLength=testLength);return 15*maxLength}),this.respondsTo("measureStringHeight",function(graphicsContext){if(void 0===this.string())throw new Error("measureStringHeight requires the string attr to be set.");var newlineCount=this.string().match(/\n/g);return 12*(null!==newlineCount?newlineCount.length+1:1)})});module.exports=Text},{"../../lib/jermaine/src/jermaine.js":9}],65:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),Text=require("./text.js"),RGBColor=require("../math/rgb_color.js"),Point=require("../math/point.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.title),Title=new jermaine.Model("GraphTitle",function(){this.hasA("graph").which.validatesWith(function(graph){return graph instanceof require("./graph.js")}),this.hasA("text").which.validatesWith(function(text){return text instanceof Text}),this.hasA("frame").which.isA("string"),this.hasA("border").which.isAn("integer"),this.hasA("color").which.validatesWith(function(color){return color instanceof RGBColor}),this.hasA("bordercolor").which.validatesWith(function(bordercolor){return bordercolor instanceof RGBColor}),this.hasA("opacity").which.isA("number"),this.hasA("padding").which.isAn("integer"),this.hasA("cornerradius").which.isAn("integer"),this.hasA("anchor").which.validatesWith(function(anchor){return anchor instanceof Point}),this.hasA("base").which.validatesWith(function(base){return base instanceof Point}),this.hasA("position").which.validatesWith(function(position){return position instanceof Point}),this.hasA("fontSize").which.isA("string").and.defaultsTo("18px"),this.respondsTo("initializeGeometry",function(graphicsContext){return graphicsContext.fontSize=this.fontSize(),this.text().initializeGeometry(graphicsContext),this}),this.respondsTo("render",function(){}),this.isBuiltWith("text","graph"),utilityFunctions.insertDefaults(this,defaultValues.title,attributes)});module.exports=Title},{"../../lib/jermaine/src/jermaine.js":9,"../math/point.js":104,"../math/rgb_color.js":105,"../util/utilityFunctions.js":157,"./graph.js":41,"./text.js":64}],66:[function(require,module,exports){require("../../lib/jermaine/src/jermaine.js");var Warning=function(message){this.message=message};Warning.prototype=new Error,module.exports=Warning},{"../../lib/jermaine/src/jermaine.js":9}],67:[function(require,module,exports){var WebServiceData;module.exports=function($){if(void 0!==WebServiceData)return WebServiceData;var jermaine=require("../../lib/jermaine/src/jermaine.js"),Data=require("./data.js"),DataValue=require("./data_value.js"),DataFormatter=require("./data_formatter.js"),ArrayData=require("./array_data.js"),WebServiceDataCacheNode=require("./web_service_data_cache_node.js"),WebServiceDataIterator=require("./web_service_data_iterator.js");return WebServiceData=new jermaine.Model(function(){this.isA(Data),this.hasA("serviceaddress").which.isA("string"),this.hasA("serviceaddresspattern").which.isA("string"),this.hasA("format").which.isA("string"),this.hasA("formatter").which.validatesWith(DataFormatter.isInstance),this.hasA("messageHandler"),this.hasA("ajaxthrottle"),this.isBuiltWith("columns","serviceaddress","%messageHandler","%ajaxthrottle",function(){if(this.init(),0<this.columns().size()){var column0Type=this.columns().at(0).type();void 0===this.format()&&this.format(column0Type===DataValue.NUMBER?"%f":"%Y%M%D%H%i%s"),this.formatter(DataFormatter.create(column0Type,this.format()))}void 0===this.ajaxthrottle()&&this.ajaxthrottle($)}),this.respondsTo("_displayError",function(e){if(!this.messageHandler())throw e;this.messageHandler().error(e)}),this.respondsTo("getBounds",function(columnNumber){return[0,10]}),this.hasA("arraydata").which.defaultsTo(null).and.validatesWith(function(arraydata){return arraydata instanceof ArrayData||null===arraydata}),this.hasA("cacheHead").which.defaultsTo(null).and.validatesWith(function(x){return null===x||x instanceof WebServiceDataCacheNode}),this.hasA("cacheTail").which.defaultsTo(null).and.validatesWith(function(x){return null===x||x instanceof WebServiceDataCacheNode}),this.respondsTo("dataHead",function(){var head=this.cacheHead();return null===head?null:head.hasData()?head:head.dataNext()}),this.respondsTo("dataTail",function(){var tail=this.cacheTail();return null===tail?null:tail.hasData()?tail:tail.dataPrev()}),this.respondsTo("insertCacheNode",function(node){var head=this.cacheHead(),tail=this.cacheTail();null===head?(this.cacheHead(node),this.cacheTail(node)):node.coveredMin().lt(head.coveredMin())?(node.next(head),head.prev(node),this.cacheHead(node)):(node.prev(tail),tail.next(node),this.cacheTail(node))}),this.respondsTo("constructRequestURL",function(min,max){var serviceaddress=this.serviceaddress(),formatter=this.formatter();if(void 0===serviceaddress)throw new Error("WebServiceData.constructRequestURL: undefined service address");if(void 0===formatter)throw new Error("WebServiceData.constructRequestURL: undefined formatter for column 0");return void 0===this.serviceaddresspattern()&&(serviceaddress.indexOf("$min")<0&&serviceaddress.indexOf("$max")<0?this.serviceaddresspattern(serviceaddress+"$min,$max"):this.serviceaddresspattern(serviceaddress)),this.serviceaddresspattern().replace("$min",formatter.format(min)).replace("$max",formatter.format(max))}),this.hasA("coveredMin").which.defaultsTo(null).and.validatesWith(function(x){return null===x||DataValue.isInstance(x)}),this.hasA("coveredMax").which.defaultsTo(null).and.validatesWith(function(x){return null===x||DataValue.isInstance(x)}),this.respondsTo("insureCoveredRange",function(){var head=this.cacheHead(),tail=this.cacheTail(),coveredMin=this.coveredMin(),coveredMax=this.coveredMax();null!==coveredMin&&null!==coveredMax&&(null===head||null===tail?this.requestSingleRange(coveredMin,coveredMax):(coveredMin.lt(head.coveredMin())&&this.requestSingleRange(coveredMin,head.coveredMin()),coveredMax.gt(tail.coveredMax())&&this.requestSingleRange(tail.coveredMax(),coveredMax)))}),this.respondsTo("requestSingleRange",function(min,max){var node,requestURL,that=this,JQueryXMLParser=require("../parser/xml/jquery_xml_parser.js")($);node=new WebServiceDataCacheNode(min,max),this.insertCacheNode(node),requestURL=this.constructRequestURL(min,max),this.emit({type:"ajaxEvent",action:"start"}),this.ajaxthrottle().ajax({url:requestURL,dataType:"text",success:function(data,textStatus,jqXHR){0<data.indexOf("<values>")&&(data=JQueryXMLParser.stringToJQueryXMLObj(data).find("values").text()),node.parseData(that.getColumns(),data),that.emit({type:"ajaxEvent",action:"success"}),that.emit({type:"dataReady"})},error:function(jqXHR,textStatus,errorThrown){var message=errorThrown;404===jqXHR.statusCode().status?message="URL not found: '"+requestURL+'"':textStatus&&(message=textStatus+": "+message),that._displayError(new Error(message))},complete:function(jqXHR,textStatus){that.emit({type:"ajaxEvent",action:"complete"})}})}),this.respondsTo("getIterator",function(columnIds,min,max,buffer){var initialNode,initialIndex,n,b,i,tmp,finalNode,finalIndex,columnIndices;if(min.gt(max)&&(tmp=min,min=max,max=tmp),(null===this.coveredMin()||min.lt(this.coveredMin()))&&this.coveredMin(min.clone()),(null===this.coveredMax()||max.gt(this.coveredMax()))&&this.coveredMax(max.clone()),this.paused()||this.insureCoveredRange(),null===this.dataHead())return{next:function(){},hasNext:function(){return!1}};for(columnIndices=[],i=0;i<columnIds.length;++i)columnIndices.push(this.columnIdToColumnNumber(columnIds[i]));for(initialNode=this.dataHead();null!==initialNode&&null!==initialNode.dataNext()&&min.gt(initialNode.dataMax());)initialNode=initialNode.dataNext();if(null!==initialNode&&initialNode.hasData()){for(initialIndex=0;initialIndex<initialNode.data().length-1&&initialNode.data()[initialIndex][columnIndices[0]].lt(min);)++initialIndex;for(n=0;n<buffer;){if(--initialIndex<0){if(null===(b=initialNode.dataPrev())){initialIndex=0;break}initialIndex=(initialNode=b).data().length-1}++n}for(finalNode=initialNode;max.gt(finalNode.dataMax())&&null!==finalNode.dataNext();)finalNode=finalNode.dataNext();for(finalIndex=0,finalNode===initialNode&&(finalIndex=initialIndex);finalIndex<finalNode.data().length-1&&finalNode.data()[finalIndex][columnIndices[0]].lt(max);)++finalIndex;for(n=0;n<buffer;){if(++finalIndex>=finalNode.data().length){if(null===(b=finalNode.dataNext())){finalIndex=finalNode.data().length-1;break}finalNode=b,finalIndex=0}++n}}else initialIndex=-1;return new WebServiceDataIterator(columnIndices,initialNode,initialIndex,finalNode,finalIndex)}),this.hasA("paused").which.isA("boolean").and.defaultsTo(!1),this.respondsTo("pause",function(){this.paused(!0)}),this.respondsTo("resume",function(){this.paused(!1),this.emit({type:"dataReady",min:this.coveredMin(),max:this.coveredMax()})})})}},{"../../lib/jermaine/src/jermaine.js":9,"../parser/xml/jquery_xml_parser.js":144,"./array_data.js":17,"./data.js":26,"./data_formatter.js":27,"./data_value.js":30,"./web_service_data_cache_node.js":68,"./web_service_data_iterator.js":69}],68:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),DataValue=require("./data_value.js"),ArrayData=require("./array_data.js"),WebServiceDataCacheNode=new jermaine.Model(function(){this.hasA("data").which.defaultsTo(null).and.validatesWith(function(data){var validationFunctions=require("../util/validationFunctions.js");if(null===data)return!0;if("array"!==validationFunctions.typeOf(data))return this.message="WebServiceDataCacheNode's data attribute is not an Array",!1;if(0<data.length){var i,firstRow=data[0];if("array"!==validationFunctions.typeOf(firstRow))return this.message="WebServiceDataCacheNode's data attribute is not an Array of Arrays",!1;for(i=0;i<firstRow.length;++i)if(!DataValue.isInstance(firstRow[i]))return this.message="WebServiceDataCacheNode's data attribute is not an Array of Arrays of DataValues (bad value in position "+i+" of first row",!1}return!0}),this.hasA("next").which.defaultsTo(null).and.validatesWith(function(x){return null===x||x instanceof WebServiceDataCacheNode}),this.hasA("prev").which.defaultsTo(null).and.validatesWith(function(x){return null===x||x instanceof WebServiceDataCacheNode}),this.hasA("coveredMin").which.validatesWith(DataValue.isInstance),this.hasA("coveredMax").which.validatesWith(DataValue.isInstance),this.respondsTo("dataNext",function(){for(var node=this.next();null!==node&&!node.hasData();)node=node.next();return node}),this.respondsTo("dataPrev",function(){for(var node=this.prev();null!==node&&!node.hasData();)node=node.prev();return node}),this.respondsTo("dataMin",function(){var data=this.data();return null===data?null:0===data.length?null:null===data[0]?null:0===data[0].length?null:data[0][0]}),this.respondsTo("dataMax",function(){var data=this.data();return null===data?null:0===data.length?null:null===data[data.length-1]?null:0===data[data.length-1].length?null:data[data.length-1][0]}),this.respondsTo("hasData",function(){return null!==this.data()}),this.isBuiltWith("coveredMin","coveredMax"),this.respondsTo("parseData",function(columns,dataText){var i,b,arrayDataArray,data,row,maxPrevValue=null,minNextValue=null;for(null!==(b=this.dataPrev())&&(maxPrevValue=b.dataMax()),null!==(b=this.dataNext())&&(minNextValue=b.dataMin()),arrayDataArray=ArrayData.textToDataValuesArray(columns,dataText),data=[],i=0;i<arrayDataArray.length;++i)row=arrayDataArray[i],null!==maxPrevValue&&!row[0].gt(maxPrevValue)||null!==minNextValue&&!row[0].lt(minNextValue)||data.push(row);0!==data.length&&(data[0][0].lt(this.coveredMin())&&this.coveredMin(data[0][0]),data[data.length-1][0].gt(this.coveredMax())&&this.coveredMax(data[data.length-1][0]),this.data(data))})});module.exports=WebServiceDataCacheNode},{"../../lib/jermaine/src/jermaine.js":9,"../util/validationFunctions.js":158,"./array_data.js":17,"./data_value.js":30}],69:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),WebServiceDataCacheNode=require("./web_service_data_cache_node.js"),ValidationFunctions=require("../util/validationFunctions.js"),WebServiceDataIterator=new jermaine.Model(function(){this.hasA("currentNode").which.validatesWith(function(x){return x instanceof WebServiceDataCacheNode}),this.hasA("currentIndex").which.isA("integer"),this.hasA("columnIndices").which.validatesWith(function(x){return"array"===ValidationFunctions.typeOf(x)}),this.hasA("initialNode").which.validatesWith(function(x){return x instanceof WebServiceDataCacheNode}),this.hasA("finalNode").which.validatesWith(function(x){return x instanceof WebServiceDataCacheNode}),this.hasA("initialIndex").which.isA("integer"),this.hasA("finalIndex").which.isA("integer"),this.isBuiltWith("columnIndices","initialNode","initialIndex","finalNode","finalIndex",function(){this.currentNode(this.initialNode()),this.currentIndex(this.initialIndex())}),this.respondsTo("hasNext",function(){return!(null===this.currentNode()||this.currentIndex()<0)&&(this.currentNode()!==this.finalNode()||this.currentIndex()<=this.finalIndex())}),this.respondsTo("next",function(){var i,vals=[],columnIndices=this.columnIndices(),currentIndex=this.currentIndex(),finalIndex=this.finalIndex(),currentNode=this.currentNode();if(currentNode===this.finalNode()){if(finalIndex<currentIndex)return null;for(i=0;i<columnIndices.length;++i)vals.push(currentNode.data()[currentIndex][columnIndices[i]]);return this.currentIndex(++currentIndex),vals}for(i=0;i<columnIndices.length;++i)vals.push(currentNode.data()[currentIndex][columnIndices[i]]);return this.currentIndex(++currentIndex),currentIndex>=currentNode.data().length&&(this.currentNode(currentNode.dataNext()),this.currentIndex(0)),vals})});module.exports=WebServiceDataIterator},{"../../lib/jermaine/src/jermaine.js":9,"../util/validationFunctions.js":158,"./web_service_data_cache_node.js":68}],70:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),Insets=require("../math/insets.js"),RGBColor=require("../math/rgb_color.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.window),Window=new jermaine.Model("Window",function(){this.hasA("width").which.isA("integer"),this.hasA("height").which.isA("integer"),this.hasA("border").which.isA("integer"),this.hasA("margin").which.validatesWith(function(margin){return margin instanceof Insets}),this.hasA("padding").which.validatesWith(function(padding){return padding instanceof Insets}),this.hasA("bordercolor").which.validatesWith(function(bordercolor){return bordercolor instanceof RGBColor}),utilityFunctions.insertDefaults(this,defaultValues.window,attributes)});module.exports=Window},{"../../lib/jermaine/src/jermaine.js":9,"../math/insets.js":103,"../math/rgb_color.js":105,"../util/utilityFunctions.js":157}],71:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),DataMeasure=require("./data_measure.js"),DataValue=require("./data_value.js"),utilityFunctions=require("../util/utilityFunctions.js"),defaultValues=utilityFunctions.getDefaultValuesFromXSD(),attributes=utilityFunctions.getKeys(defaultValues.horizontalaxis.zoom),Zoom=new jermaine.Model("Zoom",function(){this.hasA("allowed").which.isA("boolean"),this.hasA("min").which.validatesWith(function(min){return DataMeasure.isInstance(min)}),this.hasA("max").which.validatesWith(function(max){return DataMeasure.isInstance(max)}),this.hasA("anchor").which.validatesWith(function(anchor){return DataValue.isInstance(anchor)||null===anchor}),utilityFunctions.insertDefaults(this,defaultValues.horizontalaxis.zoom,attributes)});module.exports=Zoom},{"../../lib/jermaine/src/jermaine.js":9,"../util/utilityFunctions.js":157,"./data_measure.js":28,"./data_value.js":30}],72:[function(require,module,exports){var _INCLUDED=!1;module.exports=function($,window,errorHandler){_INCLUDED||(require("./draggable/graph.js")($,window,errorHandler),require("./touch/graph.js")($,window,errorHandler),require("./touch/multigraph.js")($,window,errorHandler),require("./mouse/graph.js")($,window,errorHandler),require("./mouse/multigraph.js")($,window,errorHandler),require("./multigraph.js")($,window,errorHandler),require("./resize/multigraph.js")($,window,errorHandler),_INCLUDED=!0)}},{"./draggable/graph.js":73,"./mouse/graph.js":74,"./mouse/multigraph.js":75,"./multigraph.js":76,"./resize/multigraph.js":77,"./touch/graph.js":78,"./touch/multigraph.js":79}],73:[function(require,module,exports){module.exports=function($,window,errorHandler){var Graph=require("../../core/graph.js"),Axis=require("../../core/axis.js");return"function"==typeof Graph.dragStarted||(Graph.hasA("dragStarted").which.isA("boolean"),Graph.hasA("dragOrientation").which.validatesWith(Axis.Orientation.isInstance),Graph.hasA("dragAxis").which.validatesWith(function(a){return a instanceof Axis}),Graph.respondsTo("doDragReset",function(){this.dragStarted(!1),this.pauseAllData()}),Graph.respondsTo("doDragDone",function(){this.resumeAllData()}),Graph.respondsTo("doDrag",function(multigraph,bx,by,dx,dy,shiftKey){var dragAxis=this.dragAxis,dragOrientation=this.dragOrientation,HORIZONTAL=Axis.HORIZONTAL,VERTICAL=Axis.VERTICAL;try{this.dragStarted()||(Math.abs(dx)>Math.abs(dy)?dragOrientation(HORIZONTAL):dragOrientation(VERTICAL),dragAxis(this.findNearestAxis(bx,by,dragOrientation())),null===dragAxis()&&(dragOrientation(dragOrientation()===HORIZONTAL?VERTICAL:HORIZONTAL),dragAxis(this.findNearestAxis(bx,by,dragOrientation()))),this.dragStarted(!0)),shiftKey?dragOrientation()===HORIZONTAL?dragAxis().doZoom(bx,dx):dragAxis().doZoom(by,dy):dragOrientation()===HORIZONTAL?dragAxis().doPan(bx,dx):dragAxis().doPan(by,dy),multigraph.redraw()}catch(e){errorHandler(e)}})),Graph}},{"../../core/axis.js":18,"../../core/graph.js":41}],74:[function(require,module,exports){module.exports=function($,window,errorHandler){var Graph=require("../../core/graph.js"),ConstantPlot=require("../../core/constant_plot.js"),Axis=require("../../core/axis.js");if("function"==typeof Graph.mouseWheelTimer)return Graph;Graph.hasA("mouseWheelTimer").which.defaultsTo(null),Graph.respondsTo("doWheelZoom",function(multigraph,x,y,delta){var that=this;try{this.pauseAllData();var axis=this.findNearestAxis(x,y);axis.orientation()===Axis.HORIZONTAL?axis.doZoom(x,4*delta):axis.doZoom(y,4*delta),multigraph.redraw();var mouseWheelTimer=this.mouseWheelTimer;null!==mouseWheelTimer()&&(window.clearTimeout(mouseWheelTimer()),mouseWheelTimer(null)),mouseWheelTimer(window.setTimeout(function(){that.resumeAllData()},500))}catch(e){errorHandler(e)}}),Graph.hasA("existingDatatips").which.defaultsTo(function(){return[]}),Graph.respondsTo("handleDatatips",function(loc,width,height,$target,div){var plot,datatipsData,datatipIndex,i,existingDatatips=this.existingDatatips(),plots=this.plots(),temp=$("<span></span>").css({display:"hidden",margin:"0px","padding-left":"5px","padding-right":"5px","padding-top":"1px","padding-bottom":"1px"}).appendTo(div);for(i=0;i<plots.size();i++)if(!((plot=plots.at(i))instanceof ConstantPlot)&&void 0!==(datatipsData=plot.getDatatipsData(loc,width,height,this,temp))){datatipIndex=i;break}if(temp.remove(),void 0!==datatipsData){for(i=0;i<existingDatatips.length;i++)existingDatatips[i].flag=!0;if(checkDatatipExistence(datatipsData,existingDatatips),this.removeFlaggedDatatips(),!1!==datatipsData.flag){datatipsData.arrow=10;var datatip=plots.at(datatipIndex).createDatatip(datatipsData);datatip.appendTo(div),datatip.mousedown(function(event){$target.trigger("mousedown",event)}),datatipsData.elem=datatip,existingDatatips.push(datatipsData)}}else this.removeDatatips()});var checkDatatipExistence=function(datatipData,existingData){var i,l;for(i=0,l=existingData.length;i<l;i++)if(datatipData.content===existingData[i].content&&datatipData.type===existingData[i].type&&datatipData.pixelp[0]===existingData[i].pixelp[0]&&datatipData.pixelp[1]===existingData[i].pixelp[1])return existingData[i].flag=!1,void(datatipData.flag=!1);datatipData.flag=!0};return Graph.respondsTo("removeDatatips",function(){var i,existingDatatips=this.existingDatatips();if(0<existingDatatips.length){for(i=0;i<existingDatatips.length;i++)existingDatatips[i].elem.remove();existingDatatips=[]}}),Graph.respondsTo("removeFlaggedDatatips",function(){var i,existingDatatips=this.existingDatatips();if(0<existingDatatips.length)for(i=0;i<existingDatatips.length;i++)!0===existingDatatips[i].flag&&(existingDatatips[i].elem.remove(),existingDatatips.splice(i,1))}),Graph}},{"../../core/axis.js":18,"../../core/constant_plot.js":24,"../../core/graph.js":41}],75:[function(require,module,exports){module.exports=function($,window,errorHandler){var Multigraph=require("../../core/multigraph.js")($),Point=require("../../math/point.js");return"function"==typeof Multigraph.registerMouseEvents||Multigraph.respondsTo("registerMouseEvents",function(target,options){var base,mouseLast,mouseIsDown=!1,dragStarted=!1,multigraph=this,$target=$(target),eventLocationToGraphCoords=function(event){return new Point(event.pageX-$target.offset().left-multigraph.graphs().at(0).x0(),$target.height()-(event.pageY-$target.offset().top)-multigraph.graphs().at(0).y0())};$target.mousedown(function(event,datatipsEvent){var i;for(datatipsEvent&&(event=datatipsEvent),event.preventDefault(),i=0;i<multigraph.graphs().size();i++)multigraph.graphs().at(i).removeDatatips();mouseLast=base=eventLocationToGraphCoords(event),mouseIsDown=!0,dragStarted=!1}),$target.mouseup(function(event){mouseIsDown=!1,multigraph.graphs().at(0).doDragDone()}),$target.mousemove(function(event){var eventLoc=eventLocationToGraphCoords(event),graphs=multigraph.graphs();if(mouseIsDown){var dx=eventLoc.x()-mouseLast.x(),dy=eventLoc.y()-mouseLast.y();0<multigraph.graphs().size()&&(dragStarted||graphs.at(0).doDragReset(),graphs.at(0).doDrag(multigraph,base.x(),base.y(),dx,dy,event.shiftKey)),dragStarted=!0}else{var i;for(i=0;i<graphs.size();i++)graphs.at(i).handleDatatips(eventLoc,multigraph.width(),multigraph.height(),$target,multigraph.div())}mouseLast=eventLoc}),options.noscroll||$target.mousewheel(function(event,delta){var eventLoc=eventLocationToGraphCoords(event);0<multigraph.graphs().size()&&multigraph.graphs().at(0).doWheelZoom(multigraph,eventLoc.x(),eventLoc.y(),delta),event.preventDefault()}),$target.mouseleave(function(event){mouseIsDown=!1,multigraph.graphs().at(0).doDragDone()}),$(multigraph.div()).mouseleave(function(event){var i,graphs=multigraph.graphs();for(i=0;i<graphs.size();i++)graphs.at(i).removeDatatips()})}),Multigraph}},{"../../core/multigraph.js":48,"../../math/point.js":104}],76:[function(require,module,exports){var _INCLUDED=!1;module.exports=function($,window,errorHandler){if(!_INCLUDED){_INCLUDED=!0;var Multigraph=require("../core/multigraph.js")($),methods={multigraph:function(){return this.data("multigraph").multigraph},done:function(func){return this.each(function(){return $(this).data("multigraph").multigraph.done(func)})},destroy:function(){return this.each(function(){var $this=$(this);$this.data("multigraph").multigraph.done(function(m){m.destroy()}),$this.removeData("multigraph")})},init:function(options){return this.each(function(){var $this=$(this),data=$this.data("multigraph");return"mugl"in options||"muglString"in options||(options={muglString:options}),options.div=this,data||$this.data("multigraph",{multigraph:Multigraph.createGraph(options)}),this})}};$.fn.multigraph=function(method){return methods[method]?methods[method].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof method&&method?($.error("Method "+method+" does not exist on jQuery.multigraph"),null):methods.init.apply(this,arguments)},$(document).ready(function(){$("div.multigraph").each(function(){var options,width=$(this).attr("data-width"),height=$(this).attr("data-height"),src=$(this).attr("data-src"),driver=$(this).attr("data-driver");void 0!==width&&$(this).css("width",width+"px"),void 0!==height&&$(this).css("height",height+"px"),options={div:this,mugl:src,driver:driver},$(this).multigraph(options),$(this).lightbox({scale:!0,postopen:function(){var lightboxData=this.data("lightbox");(lightboxData.originalDiv=this).data("multigraph").multigraph.done(function(m){m.div(lightboxData.contents),m.initializeSurface(),m.resizeSurface(lightboxData.contentWidth,lightboxData.contentHeight),m.width(lightboxData.contentWidth).height(lightboxData.contentHeight),m.busySpinner().remove(),m.busySpinner($('<div style="position: absolute; left:5px; top:5px;"></div>').appendTo($(m.div())).busy_spinner()),m.render()});var timeout=window.setTimeout(function(){lightboxData.contents.lightbox("resize"),window.clearTimeout(timeout)},50)},postclose:function(){var lightboxData=this.data("lightbox");this.data("multigraph").multigraph.done(function(m){m.div(lightboxData.originalDiv).width($(m.div()).width()).height($(m.div()).height()).busySpinner($('<div style="position: absolute; left:5px; top:5px;"></div>').appendTo($(m.div())).busy_spinner()),m.initializeSurface(),m.render()})},postresize:function(){var lightboxData=this.data("lightbox");this.data("multigraph").multigraph.done(function(m){m.resizeSurface(lightboxData.contentWidth,lightboxData.contentHeight),m.width(lightboxData.contentWidth).height(lightboxData.contentHeight),m.render()})}})})})}}},{"../core/multigraph.js":48}],77:[function(require,module,exports){module.exports=function($,window,errorHandler){var Multigraph=require("../../core/multigraph.js")($);require("../../math/point.js");return"function"==typeof Multigraph.registerResizeEvents||Multigraph.respondsTo("registerResizeEvents",function(target){var multigraph=this,container=$(this.div()),c=$(target);$(window).resize(function(){c.attr("width",container.width()*window.devicePixelRatio),c.attr("height",container.height()*window.devicePixelRatio),c.css("width",container.width()),c.css("height",container.height()),multigraph.init()})}),Multigraph}},{"../../core/multigraph.js":48,"../../math/point.js":104}],78:[function(require,module,exports){module.exports=function($,window,errorHandler){var Graph=require("../../core/graph.js"),Axis=require("../../core/axis.js");return"function"==typeof Graph.doFirstPinchZoom||Graph.respondsTo("doFirstPinchZoom",function(multigraph,bx,by,dx,dy,totalx,totaly){var dragAxis=this.dragAxis,dragOrientation=this.dragOrientation,HORIZONTAL=Axis.HORIZONTAL,VERTICAL=Axis.VERTICAL;try{this.dragStarted()||(dragOrientation(totaly<totalx?HORIZONTAL:VERTICAL),dragAxis(this.findNearestAxis(bx,by,dragOrientation())),null===dragAxis()&&(dragOrientation(dragOrientation()===HORIZONTAL?VERTICAL:HORIZONTAL),dragAxis(this.findNearestAxis(bx,by,dragOrientation()))),this.dragStarted(!0)),dragOrientation()===HORIZONTAL?dragAxis().doZoom(bx,dx):dragAxis().doZoom(by,dy),multigraph.redraw()}catch(e){errorHandler(e)}}),Graph}},{"../../core/axis.js":18,"../../core/graph.js":41}],79:[function(require,module,exports){module.exports=function($,window,errorHandler){var Multigraph=require("../../core/multigraph.js")($),Point=require("../../math/point.js");return"function"==typeof Multigraph.registerTouchEvents||Multigraph.respondsTo("registerTouchEvents",function(target){var pinchZoomDeterminedTimeout,previoustoucha,previoustouchb,base,touchStarted=!1,dragStarted=!1,pinchZoomStarted=!1,pinchZoomDetermined=!1,pinchZoomInitialDeltas={},multigraph=this,$target=$(target),touchLocationToGraphCoords=function(touch){return new Point(touch.pageX-$target.offset().left-multigraph.graphs().at(0).x0(),$target.height()-(touch.pageY-$target.offset().top)-multigraph.graphs().at(0).y0())},handleDrag=function(e){var touchLoc=touchLocationToGraphCoords(e.touches[0]),dx=touchLoc.x()-previoustoucha.x(),dy=touchLoc.y()-previoustoucha.y();0<multigraph.graphs().size()&&(touchStarted||multigraph.graphs().at(0).doDragReset(),multigraph.graphs().at(0).doDrag(multigraph,base.x(),base.y(),dx,dy,!1)),touchStarted=!0,previoustoucha=touchLoc},handlePinchZoom=function(e){var a=touchLocationToGraphCoords(e.touches[0]),b=touchLocationToGraphCoords(e.touches[1]),basex=(a.x()+b.x())/2,basey=(a.y()+b.y())/2,dx=calculateAbsoluteDistance(a.x(),b.x())-calculateAbsoluteDistance(previoustoucha.x(),previoustouchb.x()),dy=calculateAbsoluteDistance(a.y(),b.y())-calculateAbsoluteDistance(previoustoucha.y(),previoustouchb.y());0<multigraph.graphs().size()&&(touchStarted||multigraph.graphs().at(0).doDragReset(),!0===pinchZoomDetermined&&multigraph.graphs().at(0).doDrag(multigraph,basex,basey,dx,dy,!0)),touchStarted=!0;var cx=(a.x()-previoustoucha.x()+(b.x()-previoustouchb.x()))/2,cy=(a.y()-previoustoucha.y()+(b.y()-previoustouchb.y()))/2;!0===pinchZoomDetermined&&multigraph.graphs().at(0).doDrag(multigraph,basex,basey,cx,cy,!1),!1===pinchZoomDetermined&&(void 0===pinchZoomInitialDeltas.base&&(pinchZoomInitialDeltas.base={},pinchZoomInitialDeltas.base.x=basex,pinchZoomInitialDeltas.base.y=basey),void 0===pinchZoomInitialDeltas.zoomDeltas&&(pinchZoomInitialDeltas.zoomDeltas={dx:0,dy:0,totalx:0,totaly:0}),void 0===pinchZoomInitialDeltas.panDeltas&&(pinchZoomInitialDeltas.panDeltas={dx:0,dy:0}),pinchZoomInitialDeltas.zoomDeltas.dx+=dx,pinchZoomInitialDeltas.zoomDeltas.dy+=dy,pinchZoomInitialDeltas.panDeltas.dx+=cx,pinchZoomInitialDeltas.panDeltas.dy+=cy,pinchZoomInitialDeltas.zoomDeltas.totalx+=Math.abs(dx),pinchZoomInitialDeltas.zoomDeltas.totaly+=Math.abs(dy),void 0===pinchZoomDeterminedTimeout&&(pinchZoomDeterminedTimeout=setTimeout(function(){var basex=pinchZoomInitialDeltas.base.x,basey=pinchZoomInitialDeltas.base.y,dx=pinchZoomInitialDeltas.zoomDeltas.dx,dy=pinchZoomInitialDeltas.zoomDeltas.dy,cx=pinchZoomInitialDeltas.panDeltas.dx,cy=pinchZoomInitialDeltas.panDeltas.dy;multigraph.graphs().at(0).doDragReset(),multigraph.graphs().at(0).doFirstPinchZoom(multigraph,basex,basey,dx,dy,pinchZoomInitialDeltas.zoomDeltas.totalx,pinchZoomInitialDeltas.zoomDeltas.totaly),multigraph.graphs().at(0).doDrag(multigraph,basex,basey,cx,cy,!1),pinchZoomInitialDeltas={},pinchZoomDetermined=!0,clearTimeout(pinchZoomDeterminedTimeout),pinchZoomDeterminedTimeout=void 0},60))),previoustoucha=a,previoustouchb=b},calculateAbsoluteDistance=function(a,b){return Math.abs(a-b)};$target.on("touchstart",function(jqueryEvent){var e=jqueryEvent.originalEvent;e.preventDefault(),1===e.touches.length&&(base=touchLocationToGraphCoords(e.touches[0])),previoustoucha=touchLocationToGraphCoords(e.touches[0]),dragStarted=1===e.touches.length,2===e.touches.length?(pinchZoomStarted=!0,pinchZoomDetermined=!1,previoustouchb=touchLocationToGraphCoords(e.touches[1])):pinchZoomDetermined=pinchZoomStarted=!1,touchStarted=!1,multigraph.graphs().at(0).doDragDone()}),$target.on("touchmove",function(jqueryEvent){var e=jqueryEvent.originalEvent;e.preventDefault(),1===e.touches.length&&!0===dragStarted&&handleDrag(e),2===e.touches.length&&!0===pinchZoomStarted&&handlePinchZoom(e)}),$target.on("touchend",function(jqueryEvent){var e=jqueryEvent.originalEvent;e.preventDefault(),dragStarted=1===e.touches.length,2===e.touches.length?(pinchZoomStarted=!0,pinchZoomDetermined=!1):pinchZoomDetermined=pinchZoomStarted=!1,touchStarted=!1,multigraph.graphs().at(0).doDragDone()}),$target.on("touchleave",function(jqueryEvent){jqueryEvent.originalEvent.preventDefault(),touchStarted=pinchZoomDetermined=pinchZoomStarted=dragStarted=!1,multigraph.graphs().at(0).doDragDone()})}),Multigraph}},{"../../core/multigraph.js":48,"../../math/point.js":104}],80:[function(require,module,exports){var _INCLUDED=!1;module.exports=function($,window){_INCLUDED||(_INCLUDED=!0,require("./multigraph.js")($,window),require("./axis.js")(),require("./axis_title.js")(),require("./background.js")(),require("./graph.js")(),require("./graph_title.js")(),require("./icon.js")(),require("./img.js")(),require("./labeler.js")(),require("./legend.js")(),require("./plotarea.js")(),require("./renderers/band_renderer.js")(),require("./renderers/bar_renderer.js")(),require("./renderers/fill_renderer.js")(),require("./renderers/pointline_renderer.js")(),require("./renderers/rangebar_renderer.js")(),require("./text.js")(),require("./window.js")())}},{"./axis.js":81,"./axis_title.js":82,"./background.js":83,"./graph.js":84,"./graph_title.js":85,"./icon.js":86,"./img.js":87,"./labeler.js":88,"./legend.js":89,"./multigraph.js":90,"./plotarea.js":91,"./renderers/band_renderer.js":92,"./renderers/bar_renderer.js":93,"./renderers/fill_renderer.js":94,"./renderers/pointline_renderer.js":95,"./renderers/rangebar_renderer.js":96,"./text.js":97,"./window.js":98}],81:[function(require,module,exports){module.exports=function(){var Axis=require("../../core/axis.js");return"function"==typeof Axis.renderGrid||(Axis.respondsTo("renderGrid",function(graph,context){if(this.visible()&&(this.prepareRender(context),this.hasDataMin()&&this.hasDataMax()&&this.grid().visible()&&0<this.labelers().size()&&this.currentLabelDensity()<=1.5)){var currentLabeler=this.currentLabeler(),perpOffset=this.perpOffset(),plotBox=graph.plotBox();for(currentLabeler.prepare(this.dataMin(),this.dataMax()),context.beginPath();currentLabeler.hasNext();){var v=currentLabeler.next(),a=this.dataValueToAxisValue(v);this.orientation()===Axis.HORIZONTAL?(context.moveTo(a,perpOffset),context.lineTo(a,plotBox.height()-perpOffset)):(context.moveTo(perpOffset,a),context.lineTo(plotBox.width()-perpOffset,a))}context.strokeStyle=this.grid().color().getHexString("#"),context.stroke()}}),Axis.respondsTo("render",function(graph,context){if(this.visible()){var parallelOffset=this.parallelOffset(),perpOffset=this.perpOffset(),pixelLength=this.pixelLength(),currentLabeler=this.currentLabeler(),axisIsHorizontal=this.orientation()===Axis.HORIZONTAL;if(0<this.linewidth()&&(context.beginPath(),axisIsHorizontal?(context.moveTo(parallelOffset,perpOffset),context.lineTo(parallelOffset+pixelLength,perpOffset)):(context.moveTo(perpOffset,parallelOffset),context.lineTo(perpOffset,parallelOffset+pixelLength)),context.strokeStyle=this.color().getHexString("#"),context.stroke()),this.hasDataMin()&&this.hasDataMax()&¤tLabeler&¤tLabeler.visible()){var tickwidth=this.tickwidth(),tickmin=this.tickmin(),tickmax=this.tickmax(),tickcolor=this.tickcolor();for(context.beginPath(),context.fillStyle="#000000",currentLabeler.prepare(this.dataMin(),this.dataMax());currentLabeler.hasNext();){var v=currentLabeler.next(),a=this.dataValueToAxisValue(v);0<tickwidth&&(null!=tickcolor&&(context.strokeStyle=tickcolor.getHexString("#")),axisIsHorizontal?(context.moveTo(a,perpOffset+tickmax),context.lineTo(a,perpOffset+tickmin)):(context.moveTo(perpOffset+tickmin,a),context.lineTo(perpOffset+tickmax,a)),null!=tickcolor&&context.restore()),currentLabeler.renderLabel(context,v)}context.stroke()}this.title()&&this.title().render(context)}})),Axis}},{"../../core/axis.js":18}],82:[function(require,module,exports){module.exports=function(){var AxisTitle=require("../../core/axis_title.js"),Axis=require("../../core/axis.js"),Point=require("../../math/point.js");return"function"==typeof AxisTitle.render||AxisTitle.respondsTo("render",function(context){var pixelBase,axis=this.axis(),title=this.content(),anchor=this.anchor(),perpOffset=axis.perpOffset(),h=title.origHeight(),w=title.origWidth(),pixelAnchor=new Point(.5*w*(anchor.x()+1),.5*h*(anchor.y()+1)),storedBase=(this.base()+1)*(axis.pixelLength()/2)+axis.minoffset()+axis.parallelOffset();pixelBase=axis.orientation()===Axis.HORIZONTAL?new Point(storedBase,perpOffset):new Point(perpOffset,storedBase),context.save(),context.fillStyle="rgba(0, 0, 0, 1)",title.font(this.font()),title.drawText(context,pixelAnchor,pixelBase,this.position(),this.angle()),context.restore()}),AxisTitle}},{"../../core/axis.js":18,"../../core/axis_title.js":20,"../../math/point.js":104}],83:[function(require,module,exports){module.exports=function(){var Background=require("../../core/background.js");return"function"==typeof Background.render||Background.respondsTo("render",function(graph,context,width,height){var mb=graph.window().margin().left()+graph.window().border(),img=this.img();context.save(),context.fillStyle=this.color().getHexString("#"),context.fillRect(mb,mb,width-2*mb,height-2*mb),context.restore(),img&&void 0!==img.src()&&img.render(graph,context,width,height)}),Background}},{"../../core/background.js":21}],84:[function(require,module,exports){module.exports=function(){var Graph=require("../../core/graph.js");return"function"==typeof Graph.render||Graph.respondsTo("render",function(context,width,height){var i;for(this.window().render(context,width,height),this.background().render(this,context,width,height),context.transform(1,0,0,1,this.x0(),this.y0()),this.plotarea().render(this,context),i=0;i<this.axes().size();++i)this.axes().at(i).renderGrid(this,context);for(context.save(),context.rect(0,0,this.plotBox().width(),this.plotBox().height()),context.clip(),i=0;i<this.plots().size();++i)this.plots().at(i).render(this,context);for(context.restore(),i=0;i<this.axes().size();++i)this.axes().at(i).render(this,context);this.legend().render(context),this.title()&&this.title().render(context)}),Graph}},{"../../core/graph.js":41}],85:[function(require,module,exports){module.exports=function(){var Title=require("../../core/title.js"),Point=require("../../math/point.js");return"function"==typeof Title.render||Title.respondsTo("render",function(context){var pixelBase,graph=this.graph(),border=this.border(),padding=this.padding(),storedAnchor=this.anchor(),storedBase=this.base(),position=this.position(),title=this.text(),backgroundColor=this.color().toRGBA(this.opacity()),paddingBox=graph.paddingBox(),plotBox=graph.plotBox(),plotareaMargin=graph.plotarea().margin(),h=title.origHeight(),w=title.origWidth(),pixelAnchor=new Point((.5*w+padding+border)*(storedAnchor.x()+1),(.5*h+padding+border)*(storedAnchor.y()+1));pixelBase="padding"===this.frame()?new Point((storedBase.x()+1)*(paddingBox.width()/2)-plotareaMargin.left(),(storedBase.y()+1)*(paddingBox.height()/2)-plotareaMargin.bottom()):new Point((storedBase.x()+1)*(plotBox.width()/2),(storedBase.y()+1)*(plotBox.height()/2)),context.save(),title.setTransform(context,pixelAnchor,pixelBase,position,0),context.transform(1,0,0,-1,0,0),0<border&&(context.strokeStyle=this.bordercolor().toRGBA(),context.lineWidth=border,context.strokeRect(border/2,border/2,w+2*padding+border,h+2*padding+border)),context.fillStyle=backgroundColor,context.fillRect(border,border,w+2*padding,h+2*padding),context.restore(),context.save();var textPosition=new Point(position.x()+border+padding,position.y()+border+padding);context.font=this.fontSize()+" sans-serif",context.fillStyle="rgba(0, 0, 0, 1)",title.drawText(context,pixelAnchor,pixelBase,textPosition,0),context.restore()}),Title}},{"../../core/title.js":65,"../../math/point.js":104}],86:[function(require,module,exports){module.exports=function(){var Icon=require("../../core/icon.js");require("../../math/point.js");return"function"==typeof Icon.renderBorder||Icon.respondsTo("renderBorder",function(context,x,y){context.save(),context.strokeStyle="rgba(0, 0, 0, 1)",context.strokeRect(x,y,this.width(),this.height()),context.restore()}),Icon}},{"../../core/icon.js":43,"../../math/point.js":104}],87:[function(require,module,exports){module.exports=function(){var Img=require("../../core/img.js"),Util=require("../../math/util.js");return"function"==typeof Img.render||(Img.hasA("image").which.defaultsTo(function(){return new Image}),Img.hasA("fetched").which.defaultsTo(!1),Img.respondsTo("render",function(graph,context,width,height){if(this.fetched()){var bx,by,x,y,interp=Util.interp,image=this.image(),graphWindow=graph.window(),plotarea=graph.plotarea(),base=this.base(),ax=interp(this.anchor().x(),-1,1,0,image.width),ay=interp(this.anchor().y(),1,-1,0,image.height),paddingLeft=graphWindow.margin().left()+graphWindow.border(),paddingTop=graphWindow.margin().top()+graphWindow.border(),plotLeft=paddingLeft+graphWindow.padding().left()+plotarea.margin().left()+plotarea.border(),plotTop=paddingTop+graphWindow.padding().top()+plotarea.margin().top()+plotarea.border();this.frame()===Img.PLOT?(bx=plotLeft+interp(base.x(),-1,1,0,graph.plotBox().width()),by=plotTop+interp(base.y(),1,-1,0,graph.plotBox().height())):(bx=paddingLeft+interp(base.x(),-1,1,0,graph.paddingBox().width()),by=paddingTop+interp(base.y(),1,-1,0,graph.paddingBox().height())),x=bx+this.position().x()-ax,y=by+this.position().y()-ay,context.save(),context.transform(1,0,0,-1,0,height),context.drawImage(image,x,y,image.width,image.height),context.restore()}else{var that=this;this.image().onload=function(){that.fetched(!0),context.save(),context.setTransform(1,0,0,-1,0,height),graph.render(context,width,height),context.restore()},this.image().src=this.src()}})),Img}},{"../../core/img.js":44,"../../math/util.js":106}],88:[function(require,module,exports){module.exports=function(){var Labeler=require("../../core/labeler.js"),Text=require("../../core/text.js"),Axis=require("../../core/axis.js"),Point=require("../../math/point.js");return"function"==typeof Labeler.renderLabel||(Labeler.respondsTo("measureStringWidth",function(context,string){var t=new Text(string);return t.font(this.font()),t.initializeGeometry({context:context,angle:this.angle()}).rotatedWidth()}),Labeler.respondsTo("measureStringHeight",function(context,string){var t=new Text(string);return t.font(this.font()),t.initializeGeometry({context:context,angle:this.angle()}).rotatedHeight()}),Labeler.respondsTo("renderLabel",function(context,value){var pixelAnchor,base,axis=this.axis(),storedAnchor=this.anchor(),angle=this.angle(),perpOffset=axis.perpOffset(),a=axis.dataValueToAxisValue(value),formattedString=new Text(this.formatter().format(value));formattedString.font(this.font()),formattedString.initializeGeometry({context:context,angle:angle}),pixelAnchor=new Point(.5*formattedString.origWidth()*(storedAnchor.x()+1),.5*formattedString.origHeight()*(storedAnchor.y()+1)),base=axis.orientation()===Axis.HORIZONTAL?new Point(a,perpOffset):new Point(perpOffset,a),context.save(),context.fillStyle=this.color().getHexString("#"),formattedString.drawText(context,pixelAnchor,base,this.position(),angle),context.restore()})),Labeler}},{"../../core/axis.js":18,"../../core/labeler.js":45,"../../core/text.js":64,"../../math/point.js":104}],89:[function(require,module,exports){module.exports=function(){var Legend=require("../../core/legend.js");require("../../math/point.js");return"function"==typeof Legend.renderLegend||(Legend.respondsTo("begin",function(context){context.save(),context.transform(1,0,0,1,this.x(),this.y())}),Legend.respondsTo("end",function(context){context.restore()}),Legend.respondsTo("renderLegend",function(context){var border=this.border();context.save(),0<border&&(context.strokeStyle=this.bordercolor().toRGBA(),context.strokeRect(border/2,border/2,this.width()-border/2,this.height()-border/2)),context.fillStyle=this.color().toRGBA(this.opacity()),context.fillRect(border,border,this.width()-2*border,this.height()-2*border),context.restore()}),Legend.respondsTo("renderLabel",function(label,context,x,y){context.save(),context.fillStyle="rgba(0, 0, 0, 1)",context.transform(1,0,0,-1,0,y+this.maxLabelHeight()/2-label.origHeight()/2),context.fillText(label.string(),x,0),context.restore()})),Legend}},{"../../core/legend.js":46,"../../math/point.js":104}],90:[function(require,module,exports){module.exports=function($,window){var Multigraph=require("../../core/multigraph.js")($),vF=(require("../../math/point.js"),require("../../util/validationFunctions.js"));if("function"==typeof Multigraph.render)return Multigraph;Multigraph.hasA("canvas"),Multigraph.hasA("context"),Multigraph.hasA("width").which.isA("number"),Multigraph.hasA("height").which.isA("number"),Multigraph.respondsTo("redraw",function(){var that=this;window.requestAnimationFrame(function(){that.render()})}),Multigraph.respondsTo("popout",function(popdiv){var origDiv=this.div();$(popdiv).empty(),this.div($('<div style="width: 100%; height: 100%;"></div>').appendTo($(popdiv))),this.init(),this.registerEvents();var that=this;return function(){$(that.div()).remove(),that.div(origDiv),that.width($(that.div()).width()),that.height($(that.div()).height()),that.initializeSurface(),that.render()}}),Multigraph.respondsTo("resize",function(){var $div=$(this.div());this.width($div.width()),this.height($div.height()),this.resizeSurface(this.width()*window.devicePixelRatio,this.height()*window.devicePixelRatio),$div.find("canvas").css({width:this.width()+"px",height:this.height()+"px"}),this.render()}),Multigraph.respondsTo("init",function(){var $div=$(this.div());this.width($div.width()),this.height($div.height()),0<this.width()&&0<this.height()&&($('<canvas width="'+this.width()*window.devicePixelRatio+'" height="'+this.height()*window.devicePixelRatio+'" style="width:'+this.width()+"px; height:"+this.height()+'px;"/>').appendTo($div),this.initializeSurface(),this.busySpinner($('<div style="position:absolute;top:50%;left:50%;margin-top:-16px;margin-left:-16px"></div>').appendTo($div).busy_spinner())),this.render()}),Multigraph.respondsTo("render",function(){var i,context=this.context(),width=this.width(),height=this.height();for(context.setTransform(1,0,0,1,0,0),context.scale(window.devicePixelRatio,window.devicePixelRatio),context.transform(1,0,0,-1,0,height),context.clearRect(0,0,width,height),this.initializeGeometry(width,height,{context:context}),i=0;i<this.graphs().size();++i)this.graphs().at(i).render(context,width,height)}),Multigraph.respondsTo("registerEvents",function(options){var canvas=this.canvas();this.registerMouseEvents(canvas,options),options.noscroll||this.registerTouchEvents(canvas,options)}),Multigraph.respondsTo("resizeSurface",function(width,height){var canvas=this.context().canvas;canvas.width=width,canvas.height=height}),Multigraph.respondsTo("initializeSurface",function(){this.canvas($(this.div()).children("canvas")[0]),this.context(this.canvas().getContext("2d"))});var generateInitialGraph=function(mugl,options){var multigraph,JQueryXMLParser=require("../../parser/xml/jquery_xml_parser.js")($);if(require("../../parser/json/json_parser.js")($),"string"===vF.typeOf(mugl))if(/^\s*[{\[]/.test(mugl)){var obj=JSON&&JSON.parse(mugl)||$.parseJSON(mugl);multigraph=Multigraph.parseJSON(obj,options.mugl,options.messageHandler)}else{var xmlObj=JQueryXMLParser.stringToJQueryXMLObj(mugl);multigraph=Multigraph.parseXML(xmlObj,options.mugl,options.messageHandler)}else multigraph=Multigraph.parseJSON(mugl,options.mugl,options.messageHandler);return multigraph.normalize(),multigraph.div(options.div),$(options.div).css("cursor","pointer"),multigraph.init(),multigraph.registerEvents(options),multigraph.registerCommonDataCallback(function(event){multigraph.redraw()}),multigraph};return Multigraph.createCanvasGraph=function(options){var muglPromise,deferred;try{require("../../events/all.js")($,window,options.messageHandler.error),muglPromise=$.ajax({url:options.mugl,dataType:"text"}),deferred=$.Deferred()}catch(e){throw e}return muglPromise.done(function(data){try{var multigraph=generateInitialGraph(data,options);deferred.resolve(multigraph)}catch(e){throw e}}),deferred.promise()},Multigraph.createCanvasGraphFromString=function(options){var deferred;try{require("../../events/all.js")($,window,options.messageHandler.error),deferred=$.Deferred();var multigraph=generateInitialGraph(options.muglString,options);deferred.resolve(multigraph)}catch(e){throw e}return deferred.promise()},Multigraph}},{"../../core/multigraph.js":48,"../../events/all.js":72,"../../math/point.js":104,"../../parser/json/json_parser.js":119,"../../parser/xml/jquery_xml_parser.js":144,"../../util/validationFunctions.js":158}],91:[function(require,module,exports){module.exports=function(){var Plotarea=require("../../core/plotarea.js");return"function"==typeof Plotarea.render||Plotarea.respondsTo("render",function(graph,context){var plotBox=graph.plotBox(),border=this.border();null!==this.color()&&(context.save(),context.fillStyle=this.color().getHexString("#"),context.fillRect(0,0,plotBox.width(),plotBox.height()),context.restore()),0<border&&(context.save(),context.lineWidth=border,context.strokeStyle=this.bordercolor().getHexString("#"),context.strokeRect(-border/2,-border/2,plotBox.width()+border,plotBox.height()+border),context.restore())}),Plotarea}},{"../../core/plotarea.js":56}],92:[function(require,module,exports){var _INCLUDED=!1;module.exports=function(){var BandRenderer=require("../../../core/renderers/band_renderer.js");if(_INCLUDED)return BandRenderer;_INCLUDED=!0,BandRenderer.hasA("state"),BandRenderer.respondsTo("begin",function(context){var state={context:context,run:[],linecolor:this.getOptionValue("linecolor"),line1color:this.getOptionValue("line1color"),line2color:this.getOptionValue("line2color"),linewidth:this.getOptionValue("linewidth"),line1width:this.getOptionValue("line1width"),line2width:this.getOptionValue("line2width"),fillcolor:this.getOptionValue("fillcolor"),fillopacity:this.getOptionValue("fillopacity")};this.state(state)}),BandRenderer.respondsTo("dataPoint",function(datap){var state=this.state();if(this.isMissing(datap))0<state.run.length&&(this.renderRun(),state.run=[]);else{var p=this.transformPoint(datap);state.run.push(p)}}),BandRenderer.respondsTo("end",function(){0<this.state().run.length&&this.renderRun()});var strokeRunLine=function(context,run,whichLine,color,defaultColor,width,defaultWidth){var i;if(0<(width=0<=width?width:defaultWidth)){for(color=null!==color?color:defaultColor,context.save(),context.strokeStyle=color.getHexString("#"),context.lineWidth=width,context.beginPath(),context.moveTo(run[0][0],run[0][whichLine]),i=1;i<run.length;++i)context.lineTo(run[i][0],run[i][whichLine]);context.stroke(),context.restore()}};return BandRenderer.respondsTo("renderRun",function(){var i,state=this.state(),context=state.context,run=state.run;for(context.save(),context.globalAlpha=state.fillopacity,context.fillStyle=state.fillcolor.getHexString("#"),context.beginPath(),context.moveTo(run[0][0],run[0][1]),i=1;i<run.length;++i)context.lineTo(run[i][0],run[i][1]);for(context.lineTo(run[run.length-1][0],run[run.length-1][2]),i=run.length-1;0<=i;--i)context.lineTo(run[i][0],run[i][2]);context.fill(),context.restore(),strokeRunLine(context,run,1,state.line1color,state.linecolor,state.line1width,state.linewidth),strokeRunLine(context,run,2,state.line2color,state.linecolor,state.line2width,state.linewidth)}),BandRenderer.respondsTo("renderLegendIcon",function(context,x,y,icon){var state=this.state(),iconWidth=icon.width(),iconHeight=icon.height();context.save(),context.transform(1,0,0,1,x,y),context.save(),context.fillStyle=iconWidth<10||iconHeight<10?state.fillcolor.toRGBA():"#FFFFFF",context.fillRect(0,0,iconWidth,iconHeight),context.restore(),context.strokeStyle=null!==state.line2color?state.line2color:state.linecolor,context.lineWidth=0<=state.line2width?state.line2width:state.linewidth,context.fillStyle=state.fillcolor.toRGBA(state.fillopacity),context.beginPath(),context.moveTo(0,2*iconHeight/8),context.lineTo(0,6*iconHeight/8),context.lineTo(iconWidth,7*iconHeight/8),context.lineTo(iconWidth,3*iconHeight/8),context.lineTo(0,2*iconHeight/8),context.fill(),context.stroke(),context.restore()}),BandRenderer}},{"../../../core/renderers/band_renderer.js":59}],93:[function(require,module,exports){var _INCLUDED=!1;module.exports=function(){var BarRenderer=require("../../../core/renderers/bar_renderer.js");return _INCLUDED||(_INCLUDED=!0,BarRenderer.hasA("settings"),BarRenderer.respondsTo("begin",function(context){var settings={context:context,barpixelwidth:this.getOptionValue("barwidth").getRealValue()*this.plot().horizontalaxis().axisToDataRatio(),baroffset:this.getOptionValue("baroffset"),barpixelbase:null!==this.getOptionValue("barbase")?this.plot().verticalaxis().dataValueToAxisValue(this.getOptionValue("barbase")):0,fillcolor:this.getOptionValue("fillcolor"),linecolor:this.getOptionValue("linecolor"),hidelines:this.getOptionValue("hidelines"),barGroups:[],currentBarGroup:null,prevCorner:null,pixelEdgeTolerance:1};this.settings(settings)}),BarRenderer.respondsTo("dataPoint",function(datap){if(!this.isMissing(datap)){var settings=this.settings(),context=settings.context,p=this.transformPoint(datap),x0=p[0]+settings.baroffset,x1=p[0]+settings.baroffset+settings.barpixelwidth;context.save(),context.fillStyle=this.getOptionValue("fillcolor",datap[1]).getHexString("#"),context.fillRect(x0,settings.barpixelbase,settings.barpixelwidth,p[1]-settings.barpixelbase),context.restore(),settings.barpixelwidth>settings.hidelines&&(null===settings.prevCorner?settings.currentBarGroup=[[x0,p[1]]]:Math.abs(x0-settings.prevCorner[0])<=settings.pixelEdgeTolerance?settings.currentBarGroup.push([x0,p[1]]):(settings.currentBarGroup.push(settings.prevCorner),settings.barGroups.push(settings.currentBarGroup),settings.currentBarGroup=[[x0,p[1]]]),settings.prevCorner=[x1,p[1]])}}),BarRenderer.respondsTo("end",function(){var barGroup,i,j,n,settings=this.settings(),context=settings.context,barpixelbase=settings.barpixelbase,max=Math.max,min=Math.min;for(null!==settings.prevCorner&&null!==settings.currentBarGroup&&(settings.currentBarGroup.push(settings.prevCorner),settings.barGroups.push(settings.currentBarGroup)),context.save(),context.strokeStyle=settings.linecolor.getHexString("#"),context.beginPath(),i=0;i<settings.barGroups.length;i++){if((n=(barGroup=settings.barGroups[i]).length)<2)return;for(context.moveTo(barGroup[1][0],barGroup[0][1]),context.lineTo(barGroup[0][0],barGroup[0][1]),context.lineTo(barGroup[0][0],barpixelbase),context.lineTo(barGroup[1][0],barpixelbase),j=1;j<n-1;++j)context.moveTo(barGroup[j][0],min(barGroup[j-1][1],barGroup[j][1],barpixelbase)),context.lineTo(barGroup[j][0],max(barGroup[j-1][1],barGroup[j][1],barpixelbase)),context.moveTo(barGroup[j][0],barGroup[j][1]),context.lineTo(barGroup[j+1][0],barGroup[j][1]),context.moveTo(barGroup[j][0],barpixelbase),context.lineTo(barGroup[j+1][0],barpixelbase);context.moveTo(barGroup[n-1][0],barGroup[n-1][1]),context.lineTo(barGroup[n-1][0],barpixelbase)}context.stroke(),context.restore()}),BarRenderer.respondsTo("renderLegendIcon",function(context,x,y,icon){var settings=this.settings(),rendererFillColor=this.getOptionValue("fillcolor",0).toRGBA(this.getOptionValue("fillopacity",0));context.save(),context.transform(1,0,0,1,x,y),context.fillStyle="rgba(255, 255, 255, 1)",context.fillRect(0,0,icon.width(),icon.height()),context.lineWidth=1,context.fillStyle=rendererFillColor,settings.barpixelwidth<settings.hidelines?context.strokeStyle=rendererFillColor:context.strokeStyle=this.getOptionValue("linecolor",0).toRGBA();var barwidth,iconWidth=icon.width(),iconHeight=icon.height();barwidth=20<iconWidth||20<iconHeight?iconWidth/6:iconWidth/4,20<iconWidth&&20<iconHeight&&(context.fillRect(iconWidth/4-barwidth/2,0,barwidth,iconHeight/2),context.strokeRect(iconWidth/4-barwidth/2,0,barwidth,iconHeight/2),context.fillRect(iconWidth-iconWidth/4-barwidth/2,0,barwidth,iconHeight/3),context.strokeRect(iconWidth-iconWidth/4-barwidth/2,0,barwidth,iconHeight/3)),context.fillRect(iconWidth/2-barwidth/2,0,barwidth,iconHeight-iconHeight/4),context.strokeRect(iconWidth/2-barwidth/2,0,barwidth,iconHeight-iconHeight/4),context.restore()})),BarRenderer}},{"../../../core/renderers/bar_renderer.js":60}],94:[function(require,module,exports){var _INCLUDED=!1;module.exports=function(){var FillRenderer=require("../../../core/renderers/fill_renderer.js"),mathUtil=require("../../../math/util.js");return _INCLUDED||(_INCLUDED=!0,FillRenderer.hasA("state"),FillRenderer.respondsTo("begin",function(context){var state={context:context,run:[],previouspoint:null,linecolor:this.getOptionValue("linecolor"),linewidth:this.getOptionValue("linewidth"),fillcolor:this.getOptionValue("fillcolor"),downfillcolor:this.getOptionValue("downfillcolor"),fillopacity:this.getOptionValue("fillopacity"),fillbase:this.getOptionValue("fillbase"),currentfillcolor:null};null===state.downfillcolor&&(state.downfillcolor=state.fillcolor),null!==state.fillbase?state.fillpixelbase=this.plot().verticalaxis().dataValueToAxisValue(state.fillbase):state.fillpixelbase=0,this.state(state),context.save(),context.fillStyle=state.fillcolor.getHexString("#")}),FillRenderer.respondsTo("dataPoint",function(datap){var fillcolor,p,state=this.state(),fillpixelbase=state.fillpixelbase;if(this.isMissing(datap))null!==state.previouspoint&&(state.run.push([state.previouspoint[0],fillpixelbase]),this.renderRun(),state.run=[],state.previouspoint=null);else{if(fillcolor=(p=this.transformPoint(datap))[1]>=fillpixelbase?state.fillcolor:state.downfillcolor,0===state.run.length)state.run.push([p[0],fillpixelbase]);else if(!fillcolor.eq(state.currentfillcolor)){var x=mathUtil.safe_interp(fillpixelbase,state.previouspoint[1],p[1],state.previouspoint[0],p[0]);state.run.push([x,fillpixelbase]),state.run.push([x,fillpixelbase]),this.renderRun(),state.run=[],state.run.push([x,fillpixelbase]),state.run.push([x,fillpixelbase])}state.run.push(p),state.previouspoint=p,state.currentfillcolor=fillcolor}}),FillRenderer.respondsTo("end",function(){var state=this.state(),context=state.context;0<state.run.length&&(state.run.push([state.run[state.run.length-1][0],state.fillpixelbase]),this.renderRun()),context.restore()}),FillRenderer.respondsTo("renderRun",function(){var i,state=this.state(),context=state.context;for(context.save(),context.globalAlpha=state.fillopacity,context.fillStyle=state.currentfillcolor.getHexString("#"),context.beginPath(),context.moveTo(state.run[0][0],state.run[0][1]),i=1;i<state.run.length;++i)context.lineTo(state.run[i][0],state.run[i][1]);for(context.fill(),context.restore(),context.save(),context.strokeStyle=state.linecolor.getHexString("#"),context.lineWidth=state.linewidth,context.beginPath(),context.moveTo(state.run[1][0],state.run[1][1]),i=2;i<state.run.length-1;++i)context.lineTo(state.run[i][0],state.run[i][1]);context.stroke(),context.restore()}),FillRenderer.respondsTo("renderLegendIcon",function(context,x,y,icon){var state=this.state(),iconWidth=icon.width(),iconHeight=icon.height();context.save(),context.transform(1,0,0,1,x,y),context.save(),context.fillStyle=iconWidth<10||iconHeight<10?state.fillcolor.toRGBA():"rgba(255, 255, 255, 1)",context.fillRect(0,0,iconWidth,iconHeight),context.restore(),context.strokeStyle=state.linecolor.toRGBA(),context.lineWidth=state.linewidth,context.fillStyle=state.fillcolor.toRGBA(state.fillopacity),context.beginPath(),context.moveTo(0,0),(10<iconWidth||10<iconHeight)&&((20<iconWidth||20<iconHeight)&&(context.lineTo(iconWidth/6,iconHeight/2),context.lineTo(iconWidth/3,iconHeight/4)),context.lineTo(iconWidth/2,iconHeight-iconHeight/4),(20<iconWidth||20<iconHeight)&&(context.lineTo(iconWidth-iconWidth/3,iconHeight/4),context.lineTo(iconWidth-iconWidth/6,iconHeight/2))),context.lineTo(iconWidth,0),context.stroke(),context.fill(),context.restore()})),FillRenderer}},{"../../../core/renderers/fill_renderer.js":61,"../../../math/util.js":106}],95:[function(require,module,exports){var _INCLUDED=!1;module.exports=function(){var PointlineRenderer=require("../../../core/renderers/pointline_renderer.js"),Renderer=require("../../../core/renderer.js");return _INCLUDED||(_INCLUDED=!0,PointlineRenderer.hasA("settings"),PointlineRenderer.respondsTo("begin",function(context){var settings={context:context,points:[],first:!0,pointshape:this.getOptionValue("pointshape"),pointcolor:this.getOptionValue("pointcolor"),pointopacity:this.getOptionValue("pointopacity"),pointsize:this.getOptionValue("pointsize"),pointoutlinewidth:this.getOptionValue("pointoutlinewidth"),pointoutlinecolor:this.getOptionValue("pointoutlinecolor"),linestroke:this.getOptionValue("linestroke"),linecolor:this.getOptionValue("linecolor"),linewidth:this.getOptionValue("linewidth")};this.type()===Renderer.LINE&&(settings.pointsize=0),this.type()===Renderer.POINT&&(settings.linewidth=0),this.settings(settings),0<settings.linewidth&&(context.save(),context.beginPath(),settings.linestroke===PointlineRenderer.DASHED&&context.setLineDash([5,5]),context.lineWidth=settings.linewidth,context.strokeStyle=settings.linecolor.getHexString("#")),this.filter()&&this.filter().reset()}),PointlineRenderer.respondsTo("dataPoint",function(datap){var p,settings=this.settings(),context=settings.context;this.isMissing(datap)?settings.first=!0:(p=this.transformPoint(datap),this.filter()&&this.filter().filter(datap,p)||(0<settings.linewidth&&(settings.first?(context.moveTo(p[0],p[1]),settings.first=!1):context.lineTo(p[0],p[1])),0<settings.pointsize&&settings.points.push(p)))}),PointlineRenderer.respondsTo("end",function(){var settings=this.settings(),context=settings.context;0<settings.linewidth&&(context.stroke(),context.restore()),0<settings.pointsize&&this.drawPoints()}),PointlineRenderer.respondsTo("drawPoints",function(p){var i,settings=this.settings(),context=settings.context,points=settings.points,pointshape=settings.pointshape;for(context.save(),context.beginPath(),pointshape===PointlineRenderer.PLUS||pointshape===PointlineRenderer.X?context.strokeStyle=settings.pointcolor.getHexString("#"):(context.fillStyle=settings.pointcolor.toRGBA(settings.pointopacity),context.strokeStyle=settings.pointoutlinecolor.getHexString("#")),context.lineWidth=settings.pointoutlinewidth,i=0;i<points.length;++i)this.drawPoint(context,settings,points[i]);pointshape!==PointlineRenderer.PLUS&&pointshape!==PointlineRenderer.X&&context.fill(),context.stroke(),context.restore()}),PointlineRenderer.respondsTo("drawPoint",function(context,settings,p){var a,b,d,pointsize=settings.pointsize,p0=p[0],p1=p[1];switch(settings.pointshape){case PointlineRenderer.PLUS:return context.moveTo(p0,p1-pointsize),context.lineTo(p0,p1+pointsize),context.moveTo(p0-pointsize,p1),void context.lineTo(p0+pointsize,p1);case PointlineRenderer.X:return d=.7071*pointsize,context.moveTo(p0-d,p1-d),context.lineTo(p0+d,p1+d),context.moveTo(p0-d,p1+d),void context.lineTo(p0+d,p1-d);case PointlineRenderer.SQUARE:return context.moveTo(p0-pointsize,p1-pointsize),context.lineTo(p0+pointsize,p1-pointsize),context.lineTo(p0+pointsize,p1+pointsize),void context.lineTo(p0-pointsize,p1+pointsize);case PointlineRenderer.TRIANGLE:return a=.866025*(d=1.5*pointsize),b=.5*d,context.moveTo(p0,p1+d),context.lineTo(p0+a,p1-b),void context.lineTo(p0-a,p1-b);case PointlineRenderer.DIAMOND:return d=1.5*pointsize,context.moveTo(p0-pointsize,p1),context.lineTo(p0,p1+d),context.lineTo(p0+pointsize,p1),void context.lineTo(p0,p1-d);case PointlineRenderer.STAR:return d=1.5*pointsize,context.moveTo(p0-0*d,p1+1*d),context.lineTo(p0+.3536*d,p1+.3536*d),context.lineTo(p0+.9511*d,p1+.309*d),context.lineTo(p0+.4455*d,p1-.227*d),context.lineTo(p0+.5878*d,p1-.809*d),context.lineTo(p0-.0782*d,p1-.4938*d),context.lineTo(p0-.5878*d,p1-.809*d),context.lineTo(p0-.4938*d,p1-.0782*d),context.lineTo(p0-.9511*d,p1+.309*d),void context.lineTo(p0-.227*d,p1+.4455*d);case PointlineRenderer.CIRCLE:return context.moveTo(p0+pointsize,p1),void context.arc(p0,p1,pointsize,0,2*Math.PI,!1)}}),PointlineRenderer.respondsTo("renderLegendIcon",function(context,x,y,icon){var settings=this.settings(),pointshape=settings.pointshape,iconWidth=icon.width(),iconHeight=icon.height();context.save(),context.fillStyle="rgba(255, 255, 255, 1)",context.fillRect(x,y,iconWidth,iconHeight),0<settings.linewidth&&(context.strokeStyle=settings.linecolor.toRGBA(),context.lineWidth=settings.linewidth,context.beginPath(),context.moveTo(x,y+iconHeight/2),context.lineTo(x+iconWidth,y+iconHeight/2),context.stroke()),0<settings.pointsize&&(context.beginPath(),pointshape===PointlineRenderer.PLUS||pointshape===PointlineRenderer.X?context.strokeStyle=settings.pointcolor.toRGBA():(context.fillStyle=settings.pointcolor.toRGBA(settings.pointopacity),context.strokeStyle=settings.pointoutlinecolor.toRGBA()),context.lineWidth=settings.pointoutlinewidth,this.drawPoint(context,settings,[x+iconWidth/2,y+iconHeight/2]),pointshape!==PointlineRenderer.PLUS&&pointshape!==PointlineRenderer.X&&context.fill(),context.stroke()),context.restore()})),PointlineRenderer}},{"../../../core/renderer.js":57,"../../../core/renderers/pointline_renderer.js":62}],96:[function(require,module,exports){var _INCLUDED=!1;module.exports=function(){var RangeBarRenderer=require("../../../core/renderers/rangebar_renderer.js");return _INCLUDED||(_INCLUDED=!0,RangeBarRenderer.hasA("state"),RangeBarRenderer.respondsTo("begin",function(context){var state={context:context,run:[],barpixelwidth:this.getOptionValue("barwidth").getRealValue()*this.plot().horizontalaxis().axisToDataRatio(),barpixeloffset:0,baroffset:this.getOptionValue("baroffset"),fillcolor:this.getOptionValue("fillcolor"),fillopacity:this.getOptionValue("fillopacity"),linecolor:this.getOptionValue("linecolor"),linewidth:this.getOptionValue("linewidth"),hidelines:this.getOptionValue("hidelines")};state.barpixeloffset=state.barpixelwidth*state.baroffset,this.state(state),context.save(),context.beginPath()}),RangeBarRenderer.respondsTo("dataPoint",function(datap){if(!this.isMissing(datap)){var state=this.state(),context=state.context,p=this.transformPoint(datap),x0=p[0]-state.barpixeloffset,x1=x0+state.barpixelwidth;context.moveTo(x0,p[1]),context.lineTo(x0,p[2]),context.lineTo(x1,p[2]),context.lineTo(x1,p[1]),context.lineTo(x0,p[1])}}),RangeBarRenderer.respondsTo("end",function(){var state=this.state(),context=state.context;context.globalAlpha=state.fillopacity,context.fillStyle=state.fillcolor.getHexString("#"),context.fill(),0<state.linewidth&&state.barpixelwidth>state.hidelines&&(context.strokeStyle=state.linecolor.getHexString("#"),context.lineWidth=state.linewidth,context.stroke()),context.restore()}),RangeBarRenderer.respondsTo("renderLegendIcon",function(context,x,y,icon){var barwidth,state=this.state(),iconWidth=icon.width(),iconHeight=icon.height();context.save(),context.transform(1,0,0,1,x,y),context.save(),context.strokeStyle="#FFFFFF",context.fillStyle="#FFFFFF",context.fillRect(0,0,iconWidth,iconHeight),context.restore(),context.fillStyle=state.fillcolor.toRGBA(state.fillopacity),context.lineWidth=state.linewidth,state.barpixelwidth<10?context.strokeStyle=state.fillcolor.toRGBA(state.fillopacity):context.strokeStyle=state.linecolor.getHexString("#"),barwidth=20<iconWidth||20<iconHeight?iconWidth/6:iconWidth/4,20<iconWidth&&20<iconHeight&&(context.fillRect(iconWidth/4-barwidth/2,iconHeight/8,barwidth,iconHeight/2),context.strokeRect(iconWidth/4-barwidth/2,iconHeight/8,barwidth,iconHeight/2),context.fillRect(iconWidth-iconWidth/4-barwidth/2,iconHeight/4,barwidth,iconHeight/3),context.strokeRect(iconWidth-iconWidth/4-barwidth/2,iconHeight/4,barwidth,iconHeight/3)),context.fillRect(iconWidth/2-barwidth/2,0,barwidth,iconHeight-iconHeight/4),context.strokeRect(iconWidth/2-barwidth/2,0,barwidth,iconHeight-iconHeight/4),context.restore()})),RangeBarRenderer}},{"../../../core/renderers/rangebar_renderer.js":63}],97:[function(require,module,exports){module.exports=function(){var Text=require("../../core/text.js");return"function"==typeof Text.drawText||(Text.respondsTo("initializeGeometry",function(graphicsContext){var origWidth,origHeight,rotatedWidth,rotatedHeight;if(graphicsContext.context.save(),""!==this.font()?graphicsContext.context.font=this.font():void 0!==graphicsContext.fontSize&&(graphicsContext.context.font=graphicsContext.fontSize+" sans-serif"),origWidth=this.measureStringWidth(graphicsContext.context),origHeight=this.measureStringHeight(graphicsContext.context),graphicsContext.context.restore(),void 0!==graphicsContext.angle){var angle=graphicsContext.angle/180*Math.PI;rotatedWidth=Math.abs(Math.cos(angle))*origWidth+Math.abs(Math.sin(angle))*origHeight,rotatedHeight=Math.abs(Math.sin(angle))*origWidth+Math.abs(Math.cos(angle))*origHeight}else rotatedWidth=origWidth,rotatedHeight=origHeight;return this.origWidth(origWidth),this.origHeight(origHeight),this.rotatedWidth(rotatedWidth),this.rotatedHeight(rotatedHeight),this}),Text.respondsTo("measureStringWidth",function(context){if(void 0===this.string())throw new Error("measureStringWidth requires the string attr to be set.");return context.measureText(this.string()).width}),Text.respondsTo("measureStringHeight",function(context){if(void 0===this.string())throw new Error("measureStringHeight requires the string attr to be set.");var metrics=context.measureText("M"),newlineCount=this.string().match(/\n/g);return(null!==newlineCount?newlineCount.length+1:1)*metrics.width}),Text.respondsTo("setTransform",function(context,anchor,base,position,angle){context.transform(1,0,0,-1,0,2*base.y()),context.transform(1,0,0,1,base.x(),base.y()),context.transform(1,0,0,1,position.x(),-position.y()),context.rotate(-angle*Math.PI/180),context.transform(1,0,0,1,-anchor.x(),anchor.y())}),Text.respondsTo("drawText",function(context,anchor,base,position,angle){context.save(),this.setTransform(context,anchor,base,position,angle),""!==this.font()&&(context.font=this.font()),context.fillText(this.string(),0,0),context.restore()})),Text}},{"../../core/text.js":64}],98:[function(require,module,exports){module.exports=function(){var Window=require("../../core/window.js");return"function"==typeof Window.render||Window.respondsTo("render",function(context,width,height){var m=this.margin().left();context.save(),context.fillStyle=this.bordercolor().getHexString("#"),context.fillRect(m,m,width-2*m,height-2*m),context.restore()}),Window}},{"../../core/window.js":70}],99:[function(require,module,exports){require("../lib/ajaxthrottle/src/ajaxthrottle.js"),require("../lib/lightbox/lightbox.js"),require("../lib/jquery/jquery.mousewheel.js"),require("../lib/busy-spinner/busy_spinner.js"),require("../lib/error-display/build/errorDisplay.js"),require("../lib/requestanimationframe/requestanimationframe.js"),require("./parser/xml/jquery_xml_parser.js")($),require("./parser/json/json_parser.js")($),require("./graphics/canvas/all.js")($,window),require("./events/multigraph.js")($,window,void 0);var Multigraph=require("./core/multigraph.js")($),utilityFunctions=require("./util/utilityFunctions.js"),parsingFunctions=require("./util/parsingFunctions.js"),validationFunctions=require("./util/validationFunctions.js");window.multigraph={core:{Multigraph:Multigraph,CSVData:require("./core/csv_data.js")($),WebServiceData:require("./core/web_service_data.js")($),ArrayData:require("./core/array_data.js"),Axis:require("./core/axis.js"),AxisBinding:require("./core/axis_binding.js"),AxisTitle:require("./core/axis_title.js"),Background:require("./core/background.js"),ConstantPlot:require("./core/constant_plot.js"),Data:require("./core/data.js"),DataFormatter:require("./core/data_formatter.js"),DataMeasure:require("./core/data_measure.js"),DataPlot:require("./core/data_plot.js"),DataValue:require("./core/data_value.js"),DataVariable:require("./core/data_variable.js"),Datatips:require("./core/datatips.js"),DatatipsVariable:require("./core/datatips_variable.js"),DatetimeFormatter:require("./core/datetime_formatter.js"),DatetimeMeasure:require("./core/datetime_measure.js"),DatetimeValue:require("./core/datetime_value.js"),EventEmitter:require("./core/event_emitter.js"),FilterOption:require("./core/filter_option.js"),Filter:require("./core/filter.js"),Graph:require("./core/graph.js"),Grid:require("./core/grid.js"),Icon:require("./core/icon.js"),Img:require("./core/img.js"),Labeler:require("./core/labeler.js"),Legend:require("./core/legend.js"),Mixin:require("./core/mixin.js"),NumberFormatter:require("./core/number_formatter.js"),NumberMeasure:require("./core/number_measure.js"),NumberValue:require("./core/number_value.js"),Pan:require("./core/pan.js"),PeriodicArrayData:require("./core/periodic_array_data.js"),Plot:require("./core/plot.js"),PlotLegend:require("./core/plot_legend.js"),Plotarea:require("./core/plotarea.js"),Renderer:require("./core/renderer.js"),BandRenderer:require("./core/renderers/band_renderer.js"),BarRenderer:require("./core/renderers/bar_renderer.js"),FillRenderer:require("./core/renderers/fill_renderer.js"),PointlineRenderer:require("./core/renderers/pointline_renderer.js"),RangeBarRenderer:require("./core/renderers/rangebar_renderer.js"),Text:require("./core/text.js"),Title:require("./core/title.js"),Warning:require("./core/warning.js"),WebServiceDataCacheNode:require("./core/web_service_data_cache_node.js"),WebServiceDataIterator:require("./core/web_service_data_iterator.js"),Window:require("./core/window.js"),Zoom:require("./core/zoom.js"),browserHasCanvasSupport:Multigraph.browserHasCanvasSupport,browserHasSVGSupport:Multigraph.browserHasSVGSupport},create:Multigraph.create,math:{Box:require("./math/box.js"),Displacement:require("./math/displacement.js"),Enum:require("./math/enum.js"),Insets:require("./math/insets.js"),Point:require("./math/point.js"),RGBColor:require("./math/rgb_color.js"),util:require("./math/util.js")},parser:{jquery:{stringToJQueryXMLObj:require("./parser/xml/jquery_xml_parser.js")($).stringToJQueryXMLObj}},utilityFunctions:{getKeys:utilityFunctions.getKeys,insertDefaults:utilityFunctions.insertDefaults,getDefaultValuesFromXSD:utilityFunctions.getDefaultValuesFromXSD,parseAttribute:parsingFunctions.parseAttribute,parseInteger:parsingFunctions.parseInteger,parseBoolean:parsingFunctions.parseBoolean,getXMLAttr:parsingFunctions.getXMLAttr,validateNumberRange:validationFunctions.validateNumberRange,typeOf:validationFunctions.typeOf},jermaine:require("../lib/jermaine/src/jermaine.js"),jQuery:$},window.sprintf=require("sprintf")},{"../lib/ajaxthrottle/src/ajaxthrottle.js":1,"../lib/busy-spinner/busy_spinner.js":2,"../lib/error-display/build/errorDisplay.js":3,"../lib/jermaine/src/jermaine.js":9,"../lib/jquery/jquery.mousewheel.js":13,"../lib/lightbox/lightbox.js":14,"../lib/requestanimationframe/requestanimationframe.js":15,"./core/array_data.js":17,"./core/axis.js":18,"./core/axis_binding.js":19,"./core/axis_title.js":20,"./core/background.js":21,"./core/constant_plot.js":24,"./core/csv_data.js":25,"./core/data.js":26,"./core/data_formatter.js":27,"./core/data_measure.js":28,"./core/data_plot.js":29,"./core/data_value.js":30,"./core/data_variable.js":31,"./core/datatips.js":32,"./core/datatips_variable.js":33,"./core/datetime_formatter.js":34,"./core/datetime_measure.js":35,"./core/datetime_value.js":37,"./core/event_emitter.js":38,"./core/filter.js":39,"./core/filter_option.js":40,"./core/graph.js":41,"./core/grid.js":42,"./core/icon.js":43,"./core/img.js":44,"./core/labeler.js":45,"./core/legend.js":46,"./core/mixin.js":47,"./core/multigraph.js":48,"./core/number_formatter.js":49,"./core/number_measure.js":50,"./core/number_value.js":51,"./core/pan.js":52,"./core/periodic_array_data.js":53,"./core/plot.js":54,"./core/plot_legend.js":55,"./core/plotarea.js":56,"./core/renderer.js":57,"./core/renderers/band_renderer.js":59,"./core/renderers/bar_renderer.js":60,"./core/renderers/fill_renderer.js":61,"./core/renderers/pointline_renderer.js":62,"./core/renderers/rangebar_renderer.js":63,"./core/text.js":64,"./core/title.js":65,"./core/warning.js":66,"./core/web_service_data.js":67,"./core/web_service_data_cache_node.js":68,"./core/web_service_data_iterator.js":69,"./core/window.js":70,"./core/zoom.js":71,"./events/multigraph.js":76,"./graphics/canvas/all.js":80,"./math/box.js":100,"./math/displacement.js":101,"./math/enum.js":102,"./math/insets.js":103,"./math/point.js":104,"./math/rgb_color.js":105,"./math/util.js":106,"./parser/json/json_parser.js":119,"./parser/xml/jquery_xml_parser.js":144,"./util/parsingFunctions.js":156,"./util/utilityFunctions.js":157,"./util/validationFunctions.js":158,sprintf:16}],100:[function(require,module,exports){var Box=new(require("../../lib/jermaine/src/jermaine.js").Model)("Box",function(){this.hasA("width").which.isA("number"),this.hasA("height").which.isA("number"),this.isBuiltWith("width","height")});module.exports=Box},{"../../lib/jermaine/src/jermaine.js":9}],101:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),validationFunctions=require("../util/validationFunctions.js"),Displacement={};(Displacement=new jermaine.Model("Displacement",function(){this.hasA("a").which.validatesWith(function(a){return validationFunctions.validateNumberRange(a,-1,1)}),this.hasA("b").which.isA("integer").and.defaultsTo(0),this.isBuiltWith("a","%b"),this.respondsTo("calculateLength",function(totalLength){return this.a()*totalLength+this.b()}),this.respondsTo("calculateCoordinate",function(totalLength){return(this.a()+1)*totalLength/2+this.b()})})).regExp=/^([\+\-]?[0-9\.]+)([+\-])([0-9\.+\-]+)$/,Displacement.parse=function(string){"string"!=typeof string&&(string=String(string));var d,a,b,sign,ar=Displacement.regExp.exec(string);if(void 0===string)d=new Displacement(1);else if(null!==ar){switch(a=parseFloat(ar[1]),b=parseFloat(ar[3]),ar[2]){case"+":sign=1;break;case"-":sign=-1;break;default:sign=0}d=new Displacement(a,sign*b)}else a=parseFloat(string),d=new Displacement(a);return d},module.exports=Displacement},{"../../lib/jermaine/src/jermaine.js":9,"../util/validationFunctions.js":158}],102:[function(require,module,exports){module.exports=function(name){var instances={},Enum=function(key){if(void 0!==instances[key])throw new Error("attempt to redefine "+name+" Enum with key '"+key+"'");this.enumType=name,this.key=key,instances[key]=this};return Enum.parse=function(key){return instances[key]},Enum.prototype.toString=function(){return this.key},Enum.isInstance=function(obj){return null!=obj&&obj.enumType===name},Enum}},{}],103:[function(require,module,exports){var Insets=new(require("../../lib/jermaine/src/jermaine.js").Model)("Insets",function(){this.hasA("top").which.isA("number"),this.hasA("left").which.isA("number"),this.hasA("bottom").which.isA("number"),this.hasA("right").which.isA("number"),this.respondsTo("set",function(top,left,bottom,right){this.top(top),this.left(left),this.bottom(bottom),this.right(right)}),this.isBuiltWith("top","left","bottom","right")});module.exports=Insets},{"../../lib/jermaine/src/jermaine.js":9}],104:[function(require,module,exports){var Point=new(require("../../lib/jermaine/src/jermaine.js").Model)("Point",function(){this.hasA("x").which.isA("number"),this.hasA("y").which.isA("number"),this.isBuiltWith("x","y"),this.respondsTo("eq",function(p){return this.x()===p.x()&&this.y()===p.y()})}),regExp=/^\s*([0-9\-\+\.eE]+)(,|\s+|\s*,\s+|\s+,\s*)([0-9\-\+\.eE]+)\s*$/;Point.parse=function(string){var ar=regExp.exec(string);if(!ar||4!==ar.length)throw new Error("cannot parse string '"+string+"' as a Point");return new Point(parseFloat(ar[1]),parseFloat(ar[3]))},module.exports=Point},{"../../lib/jermaine/src/jermaine.js":9}],105:[function(require,module,exports){var jermaine=require("../../lib/jermaine/src/jermaine.js"),validationFunctions=require("../util/validationFunctions.js"),RGBColor=new jermaine.Model("RGBColor",function(){this.hasA("r").which.validatesWith(function(r){return validationFunctions.validateNumberRange(r,0,1)}),this.hasA("g").which.validatesWith(function(g){return validationFunctions.validateNumberRange(g,0,1)}),this.hasA("b").which.validatesWith(function(b){return validationFunctions.validateNumberRange(b,0,1)});var numberToHex=function(number){return 1===(number=parseInt(255*number,10).toString(16)).length&&(number="0"+number),number};this.respondsTo("getHexString",function(prefix){return prefix||(prefix="0x"),prefix+numberToHex(this.r())+numberToHex(this.g())+numberToHex(this.b())}),this.respondsTo("toRGBA",function(alpha){if(void 0===alpha&&(alpha=1),"number"!=typeof alpha)throw new Error("RGBColor.toRGBA: The argument, if present, must be a number");return"rgba("+255*this.r()+", "+255*this.g()+", "+255*this.b()+", "+alpha+")"}),this.respondsTo("eq",function(color){return this.r()===color.r()&&this.g()===color.g()&&this.b()===color.b()}),this.isBuiltWith("r","g","b")});RGBColor.colorNameIsDeprecated=function(colorName){switch(colorName){case"grey":return"0xeeeeee";case"skyblue":return"0x87ceeb";case"khaki":return"0xf0e68c";case"orange":return"0xffa500";case"salmon":return"0xfa8072";case"olive":return"0x9acd32";case"sienna":return"0xa0522d";case"pink":return"0xffb5c5";case"violet":return"0xee82ee"}return!1},RGBColor.parse=function(input){var red,green,blue,parsedInput;if(void 0!==input){if("string"==typeof input){switch(parsedInput=input.toLowerCase()){case"black":blue=green=red=0;break;case"red":red=1,blue=green=0;break;case"green":green=1,blue=red=0;break;case"blue":green=red=0,blue=1;break;case"yellow":green=red=1,blue=0;break;case"magenta":green=0,blue=red=1;break;case"cyan":red=0,blue=green=1;break;case"white":blue=green=red=1;break;case"grey":blue=green=red=parseInt("ee",16)/255;break;case"skyblue":red=parseInt("87",16)/255,green=parseInt("ce",16)/255,blue=parseInt("eb",16)/255;break;case"khaki":red=parseInt("f0",16)/255,green=parseInt("e6",16)/255,blue=parseInt("8c",16)/255;break;case"orange":red=parseInt("ff",16)/255,green=parseInt("a5",16)/255,blue=parseInt("00",16)/255;break;case"salmon":red=parseInt("fa",16)/255,green=parseInt("80",16)/255,blue=parseInt("72",16)/255;break;case"olive":red=parseInt("9a",16)/255,green=parseInt("cd",16)/255,blue=parseInt("32",16)/255;break;case"sienna":red=parseInt("a0",16)/255,green=parseInt("52",16)/255,blue=parseInt("2d",16)/255;break;case"pink":red=parseInt("ff",16)/255,green=parseInt("b5",16)/255,blue=parseInt("c5",16)/255;break;case"violet":red=parseInt("ee",16)/255,green=parseInt("82",16)/255,blue=parseInt("ee",16)/255;break;default:if(-1!==(parsedInput=parsedInput.replace(/(0(x|X)|#)/,"")).search(new RegExp(/([^0-9a-f])/)))throw new Error("'"+input+"' is not a valid color");if(6===parsedInput.length)red=parseInt(parsedInput.substring(0,2),16)/255,green=parseInt(parsedInput.substring(2,4),16)/255,blue=parseInt(parsedInput.substring(4,6),16)/255;else{if(3!==parsedInput.length)throw new Error("'"+input+"' is not a valid color");red=parseInt(parsedInput.charAt(0),16)/15,green=parseInt(parsedInput.charAt(1),16)/15,blue=parseInt(parsedInput.charAt(2),16)/15}}return new RGBColor(red,green,blue)}throw new Error("'"+input+"' is not a valid color")}},module.exports=RGBColor},{"../../lib/jermaine/src/jermaine.js":9,"../util/validationFunctions.js":158}],106:[function(require,module,exports){Util={},Util.interp=function(x,x0,x1,y0,y1){return y0+(y1-y0)*(x-x0)/(x1-x0)},Util.safe_interp=function(x,x0,x1,y0,y1){return x0===x1?(y0+y1)/2:Util.interp(x,x0,x1,y0,y1)},Util.l2dist=function(x1,y1,x2,y2){var dx=x1-x2,dy=y1-y2;return Math.sqrt(dx*dx+dy*dy)},module.exports=Util},{}],107:[function(require,module,exports){require("./labeler.js"),require("./axis_title.js"),require("./grid.js"),require("./pan.js"),require("./zoom.js");var Axis=require("../../core/axis.js"),pF=require("../../util/parsingFunctions.js"),vF=require("../../util/validationFunctions.js"),uF=require("../../util/utilityFunctions.js");Axis.parseJSON=function(json,orientation,messageHandler,multigraph){var attr,positionbase,DataValue=require("../../core/data_value.js"),Point=require("../../math/point.js"),RGBColor=require("../../math/rgb_color.js"),Displacement=require("../../math/displacement.js"),AxisTitle=require("../../core/axis_title.js"),Grid=require("../../core/grid.js"),Pan=require("../../core/pan.js"),Zoom=require("../../core/zoom.js"),AxisBinding=require("../../core/axis_binding.js"),axis=new Axis(orientation),parseAttribute=pF.parseAttribute,parseDisplacement=Displacement.parse,parseJSONPoint=function(p){return new Point(p[0],p[1])},parseRGBColor=RGBColor.parse;if(json){if(parseAttribute(json.id,axis.id),parseAttribute(json.type,axis.type,DataValue.parseType),parseAttribute(json.length,axis.length,parseDisplacement),(positionbase=json.positionbase)&&(messageHandler.warning('Use of deprecated axis attribute "positionbase"; use "base" attribute instead'),"left"===positionbase||"bottom"===positionbase?axis.base(new Point(-1,-1)):"right"===positionbase?axis.base(new Point(1,-1)):"top"===positionbase&&axis.base(new Point(-1,1))),void 0!==(attr=json.position))if("array"===vF.typeOf(attr))axis.position(parseJSONPoint(attr));else{if(!vF.isNumberNotNaN(attr))throw new Error("axis position '"+attr+"' is of the wrong type; it should be a number or a point");orientation===Axis.HORIZONTAL?axis.position(new Point(0,attr)):axis.position(new Point(attr,0))}if("min"in json&&axis.min(uF.coerceToString(json.min)),"auto"!==axis.min()&&axis.dataMin(DataValue.parse(axis.type(),axis.min())),"max"in json&&axis.max(uF.coerceToString(json.max)),"auto"!==axis.max()&&axis.dataMax(DataValue.parse(axis.type(),axis.max())),parseAttribute(json.pregap,axis.pregap),parseAttribute(json.postgap,axis.postgap),parseAttribute(json.anchor,axis.anchor),parseAttribute(json.base,axis.base,parseJSONPoint),parseAttribute(json.minposition,axis.minposition,parseDisplacement),parseAttribute(json.maxposition,axis.maxposition,parseDisplacement),parseAttribute(json.minoffset,axis.minoffset),parseAttribute(json.maxoffset,axis.maxoffset),parseAttribute(json.color,axis.color,parseRGBColor),parseAttribute(json.tickcolor,axis.tickcolor,parseRGBColor),parseAttribute(json.tickwidth,axis.tickwidth),parseAttribute(json.tickmin,axis.tickmin),parseAttribute(json.tickmax,axis.tickmax),parseAttribute(json.highlightstyle,axis.highlightstyle),parseAttribute(json.linewidth,axis.linewidth),"title"in json?"boolean"==typeof json.title?json.title?axis.title(new AxisTitle(axis)):axis.title(AxisTitle.parseJSON({},axis)):axis.title(AxisTitle.parseJSON(json.title,axis)):axis.title(new AxisTitle(axis)),json.grid&&axis.grid(Grid.parseJSON(json.grid)),void 0!==json.visible&&axis.visible(json.visible),"pan"in json&&axis.pan(Pan.parseJSON(json.pan,axis.type())),"zoom"in json&&axis.zoom(Zoom.parseJSON(json.zoom,axis.type())),json.labels&&function(json,axis){var spacings,i,labelers=axis.labelers(),Labeler=require("../../core/labeler.js"),DataValue=require("../../core/data_value.js");if(spacings=[],void 0!==json&&void 0!==json.spacing&&(spacings="array"===vF.typeOf(json.spacing)?json.spacing:[json.spacing]),0<spacings.length)for(i=0;i<spacings.length;++i)labelers.add(Labeler.parseJSON(json,axis,void 0,spacings[i]));else if(void 0!==json&&void 0!==json.label&&0<json.label.length){var defaults=Labeler.parseJSON(json,axis,void 0,null);json.label.forEach(function(e){var spacing=[];void 0!==e.spacing&&(spacing="array"===vF.typeOf(e.spacing)?e.spacing:[e.spacing]),spacing.forEach(function(s){labelers.add(Labeler.parseJSON(e,axis,defaults,s))})})}else{var defaultValues=uF.getDefaultValuesFromXSD().horizontalaxis.labels,defaultSpacings=axis.type()===DataValue.NUMBER?defaultValues.defaultNumberSpacing:defaultValues.defaultDatetimeSpacing;for(i=0;i<defaultSpacings.length;++i)labelers.add(Labeler.parseJSON(json,axis,void 0,defaultSpacings[i]))}}(json.labels,axis),json.binding){var bindingMinDataValue=DataValue.parse(axis.type(),json.binding.min),bindingMaxDataValue=DataValue.parse(axis.type(),json.binding.max);if("string"!=typeof json.binding.id)throw new Error("invalid axis binding id: '"+json.binding.id+"'");if(!DataValue.isInstance(bindingMinDataValue))throw new Error("invalid axis binding min: '"+json.binding.min+"'");if(!DataValue.isInstance(bindingMaxDataValue))throw new Error("invalid axis binding max: '"+json.binding.max+"'");AxisBinding.findByIdOrCreateNew(json.binding.id).addAxis(axis,bindingMinDataValue,bindingMaxDataValue,multigraph)}}return axis},module.exports=Axis},{"../../core/axis.js":18,"../../core/axis_binding.js":19,"../../core/axis_title.js":20,"../../core/data_value.js":30,"../../core/grid.js":42,"../../core/labeler.js":45,"../../core/pan.js":52,"../../core/zoom.js":71,"../../math/displacement.js":101,"../../math/point.js":104,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156,"../../util/utilityFunctions.js":157,"../../util/validationFunctions.js":158,"./axis_title.js":108,"./grid.js":116,"./labeler.js":120,"./pan.js":123,"./zoom.js":130}],108:[function(require,module,exports){var AxisTitle=require("../../core/axis_title.js");AxisTitle.parseJSON=function(json,axis){var text,title=new AxisTitle(axis),Text=require("../../core/text.js"),Point=require("../../math/point.js"),parseAttribute=require("../../util/parsingFunctions.js").parseAttribute,nonEmptyTitle=!1,parseJSONPoint=function(p){return new Point(p[0],p[1])};if(json&&(""!==(text=json.text)&&void 0!==text&&(title.content(new Text(text)),nonEmptyTitle=!0),parseAttribute(json.anchor,title.anchor,parseJSONPoint),parseAttribute(json.base,title.base),parseAttribute(json.position,title.position,parseJSONPoint),parseAttribute(json.angle,title.angle),parseAttribute(json.font,title.font)),!0===nonEmptyTitle)return title},module.exports=AxisTitle},{"../../core/axis_title.js":20,"../../core/text.js":64,"../../math/point.js":104,"../../util/parsingFunctions.js":156}],109:[function(require,module,exports){var Background=require("../../core/background.js");Background.parseJSON=function(json,multigraph){var background=new Background,parseAttribute=require("../../util/parsingFunctions.js").parseAttribute,RGBColor=require("../../math/rgb_color.js"),Img=require("../../core/img.js");return json&&(parseAttribute(json.color,background.color,RGBColor.parse),json.img&&background.img(Img.parseJSON(json.img,multigraph))),background},module.exports=Background},{"../../core/background.js":21,"../../core/img.js":44,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156}],110:[function(require,module,exports){module.exports=function($){var Data=require("../../core/data.js");return"function"==typeof Data.parseJSON||(Data.parseJSON=function(json,multigraph,messageHandler){var defaultMissingvalueString,defaultMissingopString,data,adap,ArrayData=require("../../core/array_data.js"),DataVariable=require("../../core/data_variable.js"),DataMeasure=require("../../core/data_measure.js"),PeriodicArrayData=require("../../core/periodic_array_data.js"),CSVData=require("../../core/csv_data.js")($),WebServiceData=require("../../core/web_service_data.js")($),Multigraph=require("../../core/multigraph.js")($),vF=(require("../../util/parsingFunctions.js"),require("../../util/validationFunctions.js")),uF=require("../../util/utilityFunctions.js"),dataVariables=[],adapter=ArrayData;if(require("./data_variable.js"),json){if(void 0!==(adap=json.adapter)&&""!==adap&&void 0===(adapter=Multigraph.getDataAdapter(adap)))throw new Error("Missing data adapater: "+adap);json.missingvalue&&(defaultMissingvalueString=uF.coerceToString(json.missingvalue)),defaultMissingopString=json.missingop,json.variables&&json.variables.forEach(function(variable){dataVariables.push(DataVariable.parseJSON(variable))});var period,haveRepeat=!1;if("repeat"in json){var periodProp="object"===vF.typeOf(json.repeat)?json.repeat.period:json.repeat;void 0===periodProp||""===periodProp?messageHandler.warning("repeat requires a period; data treated as non-repeating"):(period=DataMeasure.parse(dataVariables[0].type(),periodProp),haveRepeat=!0)}if(json.values){var stringValues=json.values;data=haveRepeat?new PeriodicArrayData(dataVariables,stringValues,period):new ArrayData(dataVariables,stringValues)}if(json.csv){var filename="object"===vF.typeOf(json.csv)?json.csv.location:json.csv;data=new CSVData(dataVariables,multigraph?multigraph.rebaseUrl(filename):filename,messageHandler,multigraph?multigraph.getAjaxThrottle(filename):void 0)}if(json.service){var location="object"===vF.typeOf(json.service)?json.service.location:json.service;data=new WebServiceData(dataVariables,multigraph?multigraph.rebaseUrl(location):location,messageHandler,multigraph?multigraph.getAjaxThrottle(location):void 0),"object"===vF.typeOf(json.service)&&"format"in json.service&&data.format(json.service.format)}"id"in json&&data.id(json.id)}return data&&(void 0!==defaultMissingvalueString&&data.defaultMissingvalue(defaultMissingvalueString),void 0!==defaultMissingopString&&data.defaultMissingop(defaultMissingopString),data.adapter(adapter)),data}),Data}},{"../../core/array_data.js":17,"../../core/csv_data.js":25,"../../core/data.js":26,"../../core/data_measure.js":28,"../../core/data_variable.js":31,"../../core/multigraph.js":48,"../../core/periodic_array_data.js":53,"../../core/web_service_data.js":67,"../../util/parsingFunctions.js":156,"../../util/utilityFunctions.js":157,"../../util/validationFunctions.js":158,"./data_variable.js":111}],111:[function(require,module,exports){var DataVariable=require("../../core/data_variable.js");DataVariable.parseJSON=function(json,data){var variable,parseAttribute=require("../../util/parsingFunctions.js").parseAttribute,DataValue=require("../../core/data_value.js");return json&&json.id&&(variable=new DataVariable(json.id),parseAttribute(json.column,variable.column),parseAttribute(json.type,variable.type,DataValue.parseType),parseAttribute(json.missingvalue,variable.missingvalue,function(v){return DataValue.parse(variable.type(),v)}),parseAttribute(json.missingop,variable.missingop,DataValue.parseComparator)),variable},module.exports=DataVariable},{"../../core/data_value.js":30,"../../core/data_variable.js":31,"../../util/parsingFunctions.js":156}],112:[function(require,module,exports){var Datatips=require("../../core/datatips.js");Datatips.parseJSON=function(json){var datatips=new Datatips,RGBColor=require("../../math/rgb_color.js"),DatatipsVariable=require("../../core/datatips_variable.js"),pF=require("../../util/parsingFunctions.js"),parseRGBColor=(require("../../util/utilityFunctions.js"),RGBColor.parse),parseAttribute=pF.parseAttribute;pF.parseInteger;return json&&(json["variable-formats"]&&json["variable-formats"].forEach(function(fmt){var dtv=new DatatipsVariable;dtv.formatString(fmt),datatips.variables().add(dtv)}),parseAttribute(json.format,datatips.formatString),parseAttribute(json.bgcolor,datatips.bgcolor,parseRGBColor),parseAttribute(json.bgalpha,datatips.bgalpha),parseAttribute(json.border,datatips.border),parseAttribute(json.bordercolor,datatips.bordercolor,parseRGBColor),parseAttribute(json.pad,datatips.pad)),datatips},module.exports=Datatips},{"../../core/datatips.js":32,"../../core/datatips_variable.js":33,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156,"../../util/utilityFunctions.js":157}],113:[function(require,module,exports){var Filter=require("../../core/filter.js");Filter.parseJSON=function(json){var o,filter=new Filter,FilterOption=require("../../core/filter_option.js"),pF=require("../../util/parsingFunctions.js"),uF=require("../../util/utilityFunctions.js");if(require("./filter_option.js"),json){if(json.options)for(opt in json.options)json.options.hasOwnProperty(opt)&&((o=new FilterOption).name(opt),o.value(uF.coerceToString(json.options[opt])),filter.options().add(o));return pF.parseAttribute(json.type,filter.type),filter}return Filter},module.exports=Filter},{"../../core/filter.js":39,"../../core/filter_option.js":40,"../../util/parsingFunctions.js":156,"../../util/utilityFunctions.js":157,"./filter_option.js":114}],114:[function(require,module,exports){var FilterOption=require("../../core/filter_option.js");FilterOption.parseJSON=function(json){require("../../util/parsingFunctions.js");var uF=require("../../util/utilityFunctions.js"),option=new FilterOption;return json&&(option.name(json.name),"value"in json&&""!==json.value&&option.value(uF.coerceToString(json.value))),option},module.exports=FilterOption},{"../../core/filter_option.js":40,"../../util/parsingFunctions.js":156,"../../util/utilityFunctions.js":157}],115:[function(require,module,exports){module.exports=function($){var Graph=require("../../core/graph.js");require("../../util/parsingFunctions.js");return"function"==typeof Graph.parseJSON||(Graph.parseJSON=function(json,multigraph,messageHandler){var graph=new Graph,Axis=require("../../core/axis.js"),Window=require("../../core/window.js"),Legend=require("../../core/legend.js"),Background=require("../../core/background.js"),Plotarea=require("../../core/plotarea.js"),ConsecutiveDistanceFilter=require("../../core/consecutive_distance_filter.js"),Title=require("../../core/title.js"),Data=require("../../core/data.js"),Plot=require("../../core/plot.js"),uF=require("../../util/utilityFunctions.js"),vF=require("../../util/validationFunctions.js"),defaults=uF.getDefaultValuesFromXSD();if(require("./window.js"),require("./legend.js"),require("./background.js"),require("./plotarea.js"),require("./title.js"),require("./axis.js"),require("./data.js")($),require("./plot.js"),graph.multigraph(multigraph),json){if(json.window&&graph.window(Window.parseJSON(json.window)),"legend"in json?graph.legend(Legend.parseJSON(json.legend)):graph.legend(Legend.parseJSON()),json.background&&graph.background(Background.parseJSON(json.background,graph.multigraph())),json.plotarea&&graph.plotarea(Plotarea.parseJSON(json.plotarea)),json.title&&graph.title(Title.parseJSON(json.title,graph)),"filter"in json)if("object"===vF.typeOf(json.filter)){if(void 0!==json.filter.type&&"consecutivedistance"!==json.filter.type)throw new Error("unknown filter type: "+json.filter.type);graph.filter(new ConsecutiveDistanceFilter(json.filter))}else{if("boolean"!==vF.typeOf(json.filter))throw new Error("invalid filter property: "+json.filter);json.filter&&graph.filter(new ConsecutiveDistanceFilter({}))}var haxes=json.horizontalaxis?json.horizontalaxis:json.horizontalaxes;if(json.horizontalaxis&&json.horizontalaxes)throw new Error("graph may not have both 'horizontalaxis' and 'horizontalaxes'");haxes&&("array"===vF.typeOf(haxes)?haxes.forEach(function(axis){graph.axes().add(Axis.parseJSON(axis,Axis.HORIZONTAL,messageHandler,graph.multigraph()))}):graph.axes().add(Axis.parseJSON(haxes,Axis.HORIZONTAL,messageHandler,graph.multigraph())));var vaxes=json.verticalaxis?json.verticalaxis:json.verticalaxes;if(json.verticalaxis&&json.verticalaxes)throw new Error("graph may not have both 'verticalaxis' and 'verticalaxes'");function addAjaxThrottle(t){var pattern=t.pattern?t.pattern:defaults.throttle.pattern,requests=t.requests?t.requests:defaults.throttle.requests,period=t.period?t.period:defaults.throttle.period,concurrent=t.concurrent?t.concurrent:defaults.throttle.concurrent;multigraph.addAjaxThrottle(pattern,requests,period,concurrent)}vaxes&&("array"===vF.typeOf(vaxes)?vaxes.forEach(function(axis){graph.axes().add(Axis.parseJSON(axis,Axis.VERTICAL,messageHandler,graph.multigraph()))}):graph.axes().add(Axis.parseJSON(vaxes,Axis.VERTICAL,messageHandler,graph.multigraph())));var throttles=json.throttle?json.throttle:json.throttles;if(json.throttle&&json.throttles)throw new Error("graph may not have both 'throttle' and 'throttles'");throttles&&("array"===vF.typeOf(throttles)?throttles.forEach(addAjaxThrottle):addAjaxThrottle(throttles)),json.data&&("array"===vF.typeOf(json.data)?json.data.forEach(function(data){graph.data().add(Data.parseJSON(data,graph.multigraph(),messageHandler))}):graph.data().add(Data.parseJSON(json.data,graph.multigraph(),messageHandler)));var plots=json.plot?json.plot:json.plots;if(json.plot&&json.plots)throw new Error("graph may not have both 'plot' and 'plots'");plots&&("array"===vF.typeOf(plots)?plots.forEach(function(plot){graph.plots().add(Plot.parseJSON(plot,graph,messageHandler))}):graph.plots().add(Plot.parseJSON(plots,graph,messageHandler))),graph.postParse()}return graph}),Graph}},{"../../core/axis.js":18,"../../core/background.js":21,"../../core/consecutive_distance_filter.js":23,"../../core/data.js":26,"../../core/graph.js":41,"../../core/legend.js":46,"../../core/plot.js":54,"../../core/plotarea.js":56,"../../core/title.js":65,"../../core/window.js":70,"../../util/parsingFunctions.js":156,"../../util/utilityFunctions.js":157,"../../util/validationFunctions.js":158,"./axis.js":107,"./background.js":109,"./data.js":110,"./legend.js":121,"./plot.js":124,"./plotarea.js":126,"./title.js":128,"./window.js":129}],116:[function(require,module,exports){var Grid=require("../../core/grid.js");Grid.parseJSON=function(json){var attr,grid=new Grid,RGBColor=require("../../math/rgb_color.js"),parseAttribute=require("../../util/parsingFunctions.js").parseAttribute;return json&&(parseAttribute(json.color,grid.color,RGBColor.parse),void 0!==(attr=json.visible)?grid.visible(attr):grid.visible(!0)),grid},module.exports=Grid},{"../../core/grid.js":42,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156}],117:[function(require,module,exports){var Icon=require("../../core/icon.js");Icon.parseJSON=function(json){var icon=new Icon,parseAttribute=require("../../util/parsingFunctions.js").parseAttribute;return json&&(parseAttribute(json.height,icon.height),parseAttribute(json.width,icon.width),parseAttribute(json.border,icon.border)),icon},module.exports=Icon},{"../../core/icon.js":43,"../../util/parsingFunctions.js":156}],118:[function(require,module,exports){var Img=require("../../core/img.js");Img.parseJSON=function(json,multigraph){var img,parseAttribute=require("../../util/parsingFunctions.js").parseAttribute,Point=require("../../math/point.js"),parseJSONPoint=function(p){return new Point(p[0],p[1])};if(json&&void 0!==json.src){var src=json.src;if(!src)throw new Error('img requires a "src" property');multigraph&&(src=multigraph.rebaseUrl(src)),img=new Img(src),parseAttribute(json.anchor,img.anchor,parseJSONPoint),parseAttribute(json.base,img.base,parseJSONPoint),parseAttribute(json.position,img.position,parseJSONPoint),parseAttribute(json.frame,img.frame,function(value){return value.toLowerCase()})}return img},module.exports=Img},{"../../core/img.js":44,"../../math/point.js":104,"../../util/parsingFunctions.js":156}],119:[function(require,module,exports){var included=!1;module.exports=function($){included||(included=!0,require("./data.js")($),require("./graph.js")($),require("./multigraph.js")($),require("./axis.js"),require("./axis_title.js"),require("./background.js"),require("./datatips.js"),require("./data_variable.js"),require("./filter.js"),require("./filter_option.js"),require("./grid.js"),require("./icon.js"),require("./img.js"),require("./json_parser.js"),require("./labeler.js"),require("./legend.js"),require("./pan.js"),require("./plotarea.js"),require("./plot.js"),require("./plot_legend.js"),require("./renderer.js"),require("./title.js"),require("./window.js"),require("./zoom.js"))}},{"./axis.js":107,"./axis_title.js":108,"./background.js":109,"./data.js":110,"./data_variable.js":111,"./datatips.js":112,"./filter.js":113,"./filter_option.js":114,"./graph.js":115,"./grid.js":116,"./icon.js":117,"./img.js":118,"./json_parser.js":119,"./labeler.js":120,"./legend.js":121,"./multigraph.js":122,"./pan.js":123,"./plot.js":124,"./plot_legend.js":125,"./plotarea.js":126,"./renderer.js":127,"./title.js":128,"./window.js":129,"./zoom.js":130}],120:[function(require,module,exports){var Labeler=require("../../core/labeler.js");Labeler.parseJSON=function(json,axis,defaults,spacing){var labeler,type,Point=require("../../math/point.js"),RGBColor=require("../../math/rgb_color.js"),DataMeasure=require("../../core/data_measure.js"),DataValue=require("../../core/data_value.js"),DataFormatter=require("../../core/data_formatter.js"),CategoryFormatter=require("../../core/category_formatter.js"),pF=require("../../util/parsingFunctions.js"),vF=require("../../util/validationFunctions.js"),parseJSONPoint=function(p){return new Point(p[0],p[1])},parseLabelerAttribute=function(value,attribute,preprocessor,defaultName){pF.parseAttribute(value,attribute,preprocessor)||void 0===defaults||attribute(defaults[defaultName]())};return json&&(labeler=new Labeler(axis),null!==spacing&&(void 0===spacing&&(spacing=json.spacing),parseLabelerAttribute(spacing,labeler.spacing,function(v){return DataMeasure.parse(axis.type(),v)},"spacing")),"array"===vF.typeOf(json.format)?parseLabelerAttribute(json.format,labeler.formatter,function(format){return new CategoryFormatter(json.format)},void 0):parseLabelerAttribute(json.format,labeler.formatter,(type=axis.type(),function(value){return DataFormatter.create(type,value)}),"formatter"),parseLabelerAttribute(json.start,labeler.start,function(type){return function(value){return DataValue.parse(type,value)}}(axis.type()),"start"),parseLabelerAttribute(json.angle,labeler.angle,void 0,"angle"),parseLabelerAttribute(json.position,labeler.position,parseJSONPoint,"position"),parseLabelerAttribute(json.anchor,labeler.anchor,parseJSONPoint,"anchor"),parseLabelerAttribute(json.densityfactor,labeler.densityfactor,void 0,"densityfactor"),parseLabelerAttribute(json.color,labeler.color,RGBColor.parse,"color"),parseLabelerAttribute(json.font,labeler.font,void 0,"font"),parseLabelerAttribute(json.visible,labeler.visible,pF.parseBoolean,"visible")),labeler},module.exports=Labeler},{"../../core/category_formatter.js":22,"../../core/data_formatter.js":27,"../../core/data_measure.js":28,"../../core/data_value.js":30,"../../core/labeler.js":45,"../../math/point.js":104,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156,"../../util/validationFunctions.js":158}],121:[function(require,module,exports){var Legend=require("../../core/legend.js");Legend.parseJSON=function(json){var legend=new Legend,pF=require("../../util/parsingFunctions.js"),Point=require("../../math/point.js"),RGBColor=require("../../math/rgb_color.js"),Icon=(Point=require("../../math/point.js"),require("../../core/icon.js")),parseAttribute=pF.parseAttribute,parseJSONPoint=function(p){return new Point(p[0],p[1])};return require("./icon.js"),"boolean"==typeof json?parseAttribute(json,legend.visible):json&&(parseAttribute(json.visible,legend.visible,pF.parseBoolean),parseAttribute(json.base,legend.base,parseJSONPoint),parseAttribute(json.anchor,legend.anchor,parseJSONPoint),parseAttribute(json.position,legend.position,parseJSONPoint),parseAttribute(json.frame,legend.frame),parseAttribute(json.color,legend.color,RGBColor.parse),parseAttribute(json.bordercolor,legend.bordercolor,RGBColor.parse),parseAttribute(json.opacity,legend.opacity),parseAttribute(json.border,legend.border),parseAttribute(json.rows,legend.rows),parseAttribute(json.columns,legend.columns),parseAttribute(json.cornerradius,legend.cornerradius),parseAttribute(json.padding,legend.padding),json.icon&&legend.icon(Icon.parseJSON(json.icon))),legend},module.exports=Legend},{"../../core/icon.js":43,"../../core/legend.js":46,"../../math/point.js":104,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156,"./icon.js":117}],122:[function(require,module,exports){module.exports=function($){var Multigraph=require("../../core/multigraph.js")($);return"function"==typeof Multigraph.parseJSON||(Multigraph.parseJSON=function(json,mugl,messageHandler){var multigraph=new Multigraph,graphs=multigraph.graphs(),Graph=require("../../core/graph.js"),vF=require("../../util/validationFunctions.js");return require("./graph.js")($),multigraph.mugl(mugl),json&&("array"===vF.typeOf(json)?json.forEach(function(graph){graphs.add(Graph.parseJSON(graph,multigraph,messageHandler))}):graphs.add(Graph.parseJSON(json,multigraph,messageHandler))),multigraph}),Multigraph}},{"../../core/graph.js":41,"../../core/multigraph.js":48,"../../util/validationFunctions.js":158,"./graph.js":115}],123:[function(require,module,exports){var Pan=require("../../core/pan.js");Pan.parseJSON=function(json,type){var pan=new Pan,pF=require("../../util/parsingFunctions.js"),vF=require("../../util/validationFunctions.js"),parseAttribute=pF.parseAttribute,parseBoolean=pF.parseBoolean,DataValue=require("../../core/data_value.js"),parseDataValue=function(v){return DataValue.parse(type,v)};return"boolean"===vF.typeOf(json)?parseAttribute(json,pan.allowed,parseBoolean):json&&(parseAttribute(json.allowed,pan.allowed,parseBoolean),parseAttribute(json.min,pan.min,parseDataValue),parseAttribute(json.max,pan.max,parseDataValue)),pan},module.exports=Pan},{"../../core/data_value.js":30,"../../core/pan.js":52,"../../util/parsingFunctions.js":156,"../../util/validationFunctions.js":158}],124:[function(require,module,exports){var Plot=require("../../core/plot.js");Plot.parseJSON=function(json,graph,messageHandler){var plot,haxis,vaxis,variable,DataPlot=require("../../core/data_plot.js"),PlotLegend=require("../../core/plot_legend.js"),ConstantPlot=require("../../core/constant_plot.js"),DataValue=require("../../core/data_value.js"),Renderer=(require("../../core/datetime_value.js"),require("../../core/renderer.js")),ConsecutiveDistanceFilter=(require("../../core/filter.js"),require("../../core/consecutive_distance_filter.js")),Datatips=require("../../core/datatips.js"),vF=(require("../../util/parsingFunctions.js"),require("../../util/validationFunctions.js"));function key(obj){return Object.keys(obj)[0]}function keyCount(obj){return Object.keys(obj).length}function looks_like_data_value(v){if("number"===vF.typeOf(v))return!0;if("string"===vF.typeOf(v)){if(isNaN(v)){try{DatetimeValue.parse(v)}catch(e){return!1}return!0}return!0}return!1}if(require("./plot_legend.js"),require("./renderer.js"),require("./filter.js"),require("./datatips.js"),json){var vars={horizontal:[],vertical:[]},axisid={horizontal:void 0,vertical:void 0},constant_value=void 0;if(json.verticalaxis)if("array"===vF.typeOf(json.verticalaxis))vars.vertical=json.verticalaxis;else if("number"===vF.typeOf(json.verticalaxis))constant_value=DataValue.parse(DataValue.NUMBER,json.verticalaxis);else if("string"===vF.typeOf(json.verticalaxis)){if(looks_like_data_value(json.verticalaxis))constant_value=DataValue.parse(DataValue.DATETIME,json.verticalaxis);else if(axisid.vertical=json.verticalaxis,void 0===(vaxis=graph.axisById(axisid.vertical)))throw new Error("plot refers to unknown vertical axis id: "+axisid.vertical)}else if("object"===vF.typeOf(json.verticalaxis)){if(1!==keyCount(json.verticalaxis))throw new Error("plot.verticalaxis object must contain exactly one key/value pair");if(axisid.vertical=key(json.verticalaxis),void 0===(vaxis=graph.axisById(axisid.vertical)))throw new Error("plot refers to unknown vertical axis id: "+axisid.vertical);if("undefined"!==vF.typeOf(json.verticalaxis[axisid.vertical]))if("array"===vF.typeOf(json.verticalaxis[axisid.vertical]))vars.vertical=json.verticalaxis[axisid.vertical];else if("number"===vF.typeOf(json.verticalaxis[axisid.vertical])){if(vaxis.type()!==DataValue.NUMBER)throw new Error("constant value of '"+json.verticalaxis[axisid.vertical]+"' not appropriate for axis of type '"+vaxis.type()+"'");constant_value=DataValue.parse(DataValue.NUMBER,json.verticalaxis[axisid.vertical])}else{if("string"!==vF.typeOf(json.verticalaxis[axisid.vertical]))throw new Error("value for key '"+axisid.vertical+"' for verticalaxis is of wrong type");looks_like_data_value(json.verticalaxis[axisid.vertical])?constant_value=DataValue.parse(vaxis.type(),json.verticalaxis[axisid.vertical]):vars.vertical=[json.verticalaxis[axisid.vertical]]}}if((plot=void 0!==constant_value?new ConstantPlot(constant_value):new DataPlot).verticalaxis(vaxis),json.horizontalaxis)if("array"===vF.typeOf(json.horizontalaxis))vars.horizontal=json.horizontalaxis;else if("string"===vF.typeOf(json.horizontalaxis)){if(axisid.horizontal=json.horizontalaxis,void 0===(haxis=graph.axisById(axisid.horizontal)))throw new Error("Plot Horizontal Axis Error: The graph does not contain an axis with an id of '"+axisid.horizontal+"'");plot.horizontalaxis(haxis)}else if("object"===vF.typeOf(json.horizontalaxis)){if(1!==keyCount(json.horizontalaxis))throw new Error("plot.horizontalaxis object must contain exactly one key/value pair");if(axisid.horizontal=key(json.horizontalaxis),void 0===(haxis=graph.axisById(axisid.horizontal)))throw new Error("Plot Horizontal Axis Error: The graph does not contain an axis with an id of '"+axisid.horizontal+"'");if(plot.horizontalaxis(haxis),"undefined"!==vF.typeOf(json.horizontalaxis[axisid.horizontal]))if("array"===vF.typeOf(json.horizontalaxis[axisid.horizontal]))vars.horizontal=json.horizontalaxis[axisid.horizontal];else{if("string"!==vF.typeOf(json.horizontalaxis[axisid.horizontal]))throw new Error("value for key '"+axisid.horizontal+"' for horizontalaxis is of wrong type");vars.horizontal=[json.horizontalaxis[axisid.horizontal]]}}if(plot instanceof DataPlot)if(0==vars.horizontal.length&&plot.variable().add(null),graph)[].concat(vars.horizontal,vars.vertical).forEach(function(vid){if(void 0===(variable=graph.variableById(vid)))throw new Error("Plot Variable Error: No Data tag contains a variable with an id of '"+vid+"'");plot.data(variable.data()),plot.variable().add(variable)});if("legend"in json?plot.legend(PlotLegend.parseJSON(json.legend,plot)):plot.legend(PlotLegend.parseJSON(void 0,plot)),"renderer"in json&&("style"in json||"options"in json))throw new Error("plot may not contain both 'renderer' and 'style', or 'renderer' and 'options'");if(void 0!==json.visible&&plot.visible(json.visible),"renderer"in json?plot.renderer(Renderer.parseJSON(json.renderer,plot,messageHandler)):"style"in json?plot.renderer(Renderer.parseJSON({type:json.style,options:json.options},plot,messageHandler)):"options"in json&&plot.renderer(Renderer.parseJSON({type:"line",options:json.options},plot,messageHandler)),"filter"in json)if("object"===vF.typeOf(json.filter)){if(void 0!==json.filter.type&&"consecutivedistance"!==json.filter.type)throw new Error("unknown filter type: "+json.filter.type);plot.renderer().filter(new ConsecutiveDistanceFilter(json.filter))}else{if("boolean"!==vF.typeOf(json.filter))throw new Error("invalid filter property: "+json.filter);json.filter&&(graph&&graph.filter()?plot.renderer().filter(graph.filter()):plot.renderer().filter(new ConsecutiveDistanceFilter({})))}else graph&&graph.filter()&&plot.renderer().filter(graph.filter());"datatips"in json&&plot.datatips(Datatips.parseJSON(json.datatips))}return plot},module.exports=Plot},{"../../core/consecutive_distance_filter.js":23,"../../core/constant_plot.js":24,"../../core/data_plot.js":29,"../../core/data_value.js":30,"../../core/datatips.js":32,"../../core/datetime_value.js":37,"../../core/filter.js":39,"../../core/plot.js":54,"../../core/plot_legend.js":55,"../../core/renderer.js":57,"../../util/parsingFunctions.js":156,"../../util/validationFunctions.js":158,"./datatips.js":112,"./filter.js":113,"./plot_legend.js":125,"./renderer.js":127}],125:[function(require,module,exports){var PlotLegend=require("../../core/plot_legend.js");PlotLegend.parseJSON=function(json,plot){var legend=new PlotLegend,pF=require("../../util/parsingFunctions.js"),Text=require("../../core/text.js"),parseAttribute=pF.parseAttribute;return"boolean"==typeof json?legend.visible(json):json&&(parseAttribute(json.visible,legend.visible,pF.parseBoolean),parseAttribute(json.label,legend.label,function(value){return new Text(value)})),void 0===legend.label()&&("function"==typeof plot.variable&&2<=plot.variable().size()?legend.label(new Text(plot.variable().at(1).id())):legend.label(new Text("plot"))),legend},module.exports=PlotLegend},{"../../core/plot_legend.js":55,"../../core/text.js":64,"../../util/parsingFunctions.js":156}],126:[function(require,module,exports){var Plotarea=require("../../core/plotarea.js");Plotarea.parseJSON=function(json){var plotarea=new Plotarea,margin=plotarea.margin(),pF=require("../../util/parsingFunctions.js"),parseRGBColor=require("../../math/rgb_color.js").parse,parseAttribute=pF.parseAttribute;pF.parseInteger;return json&&(parseAttribute(json.marginbottom,margin.bottom),parseAttribute(json.marginleft,margin.left),parseAttribute(json.margintop,margin.top),parseAttribute(json.marginright,margin.right),parseAttribute(json.border,plotarea.border),parseAttribute(json.color,plotarea.color,parseRGBColor),parseAttribute(json.bordercolor,plotarea.bordercolor,parseRGBColor)),plotarea},module.exports=Plotarea},{"../../core/plotarea.js":56,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156}],127:[function(require,module,exports){var Renderer=require("../../core/renderer.js");Renderer.parseJSON=function(json,plot,messageHandler){require("../../core/data_value.js"),require("../../core/number_value.js");var rendererType,renderer,opt,Warning=require("../../core/warning.js"),vF=(require("../../util/parsingFunctions.js"),require("../../util/validationFunctions.js"));function setOption(name,value,min,max){try{renderer.setOptionFromString(name,value,min,max)}catch(e){if(!(e instanceof Warning))throw e;messageHandler.warning(e)}}if(require("../../core/renderers/all_renderers.js"),json&&void 0!==json.type){if(rendererType=Renderer.Type.parse(json.type),!Renderer.Type.isInstance(rendererType))throw new Error("unknown renderer type '"+json.type+"'");if((renderer=Renderer.create(rendererType)).plot(plot),json.options)for(opt in json.options)json.options.hasOwnProperty(opt)&&("array"===vF.typeOf(json.options[opt])?json.options[opt].forEach(function(subopt){setOption(opt,subopt.value,subopt.min,subopt.max)}):setOption(opt,json.options[opt]))}return renderer},module.exports=Renderer},{"../../core/data_value.js":30,"../../core/number_value.js":51,"../../core/renderer.js":57,"../../core/renderers/all_renderers.js":58,"../../core/warning.js":66,"../../util/parsingFunctions.js":156,"../../util/validationFunctions.js":158}],128:[function(require,module,exports){var Title=require("../../core/title.js");Title.parseJSON=function(json,graph){var title,Point=require("../../math/point.js"),RGBColor=require("../../math/rgb_color.js"),Text=require("../../core/text.js"),pF=require("../../util/parsingFunctions.js"),parseJSONPoint=function(p){return new Point(p[0],p[1])},parseRGBColor=RGBColor.parse,parseAttribute=pF.parseAttribute;if(json){var text=json.text;if(""===text)return;title=new Title(new Text(text),graph),parseAttribute(json.frame,title.frame,function(value){return value.toLowerCase()}),parseAttribute(json.border,title.border),parseAttribute(json.color,title.color,parseRGBColor),parseAttribute(json.bordercolor,title.bordercolor,parseRGBColor),parseAttribute(json.opacity,title.opacity),parseAttribute(json.padding,title.padding),parseAttribute(json.cornerradius,title.cornerradius),parseAttribute(json.anchor,title.anchor,parseJSONPoint),parseAttribute(json.base,title.base,parseJSONPoint),parseAttribute(json.position,title.position,parseJSONPoint)}return title},module.exports=Title},{"../../core/text.js":64,"../../core/title.js":65,"../../math/point.js":104,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156}],129:[function(require,module,exports){var Window=require("../../core/window.js");Window.parseJSON=function(json){var attr,w=new Window,RGBColor=require("../../math/rgb_color.js"),pF=require("../../util/parsingFunctions.js"),parseAttribute=pF.parseAttribute;pF.parseInteger;return json&&(parseAttribute(json.width,w.width),parseAttribute(json.height,w.height),parseAttribute(json.border,w.border),void 0!==(attr=json.margin)&&w.margin().set(attr,attr,attr,attr),void 0!==(attr=json.padding)&&w.padding().set(attr,attr,attr,attr),parseAttribute(json.bordercolor,w.bordercolor,RGBColor.parse)),w},module.exports=Window},{"../../core/window.js":70,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156}],130:[function(require,module,exports){var Zoom=require("../../core/zoom.js");Zoom.parseJSON=function(json,type){var attr,zoom=new Zoom,DataValue=require("../../core/data_value.js"),DataMeasure=require("../../core/data_measure.js"),pF=require("../../util/parsingFunctions.js"),vF=require("../../util/validationFunctions.js"),parseAttribute=pF.parseAttribute,parseBoolean=pF.parseBoolean,parseDataMeasure=function(v){return DataMeasure.parse(type,v)};return"boolean"===vF.typeOf(json)?parseAttribute(json,zoom.allowed,parseBoolean):json&&(parseAttribute(json.allowed,zoom.allowed,parseBoolean),parseAttribute(json.min,zoom.min,parseDataMeasure),parseAttribute(json.max,zoom.max,parseDataMeasure),void 0!==(attr=json.anchor)&&("string"==typeof attr&&"none"===attr.toLowerCase()?zoom.anchor(null):zoom.anchor(DataValue.parse(type,attr)))),zoom},module.exports=Zoom},{"../../core/data_measure.js":28,"../../core/data_value.js":30,"../../core/zoom.js":71,"../../util/parsingFunctions.js":156,"../../util/validationFunctions.js":158}],131:[function(require,module,exports){module.exports=function($){var Axis=require("../../core/axis.js"),pF=require("../../util/parsingFunctions.js");if("function"==typeof Axis.parseXML)return Axis;return Axis.parseXML=function(xml,orientation,messageHandler,multigraph){var attr,child,value,positionbase,DataValue=require("../../core/data_value.js"),Point=require("../../math/point.js"),RGBColor=require("../../math/rgb_color.js"),Displacement=require("../../math/displacement.js"),AxisTitle=require("../../core/axis_title.js"),Grid=require("../../core/grid.js"),Pan=require("../../core/pan.js"),Zoom=require("../../core/zoom.js"),AxisBinding=require("../../core/axis_binding.js"),axis=new Axis(orientation),parseAttribute=pF.parseAttribute,parseInteger=pF.parseInteger,parseDisplacement=Displacement.parse,parsePoint=Point.parse,parseRGBColor=RGBColor.parse;if(xml){if(parseAttribute(pF.getXMLAttr(xml,"id"),axis.id),parseAttribute(pF.getXMLAttr(xml,"type"),axis.type,DataValue.parseType),parseAttribute(pF.getXMLAttr(xml,"length"),axis.length,parseDisplacement),(positionbase=pF.getXMLAttr(xml,"positionbase"))&&(messageHandler.warning('Use of deprecated axis attribute "positionbase"; use "base" attribute instead'),"left"===positionbase||"bottom"===positionbase?axis.base(parsePoint("-1 -1")):"right"===positionbase?axis.base(parsePoint("1 -1")):"top"===positionbase&&axis.base(parsePoint("-1 1"))),void 0!==(attr=pF.getXMLAttr(xml,"position")))try{axis.position(parsePoint(attr))}catch(e){if((value=parseInt(attr,10))!=value)throw e;orientation===Axis.HORIZONTAL?axis.position(new Point(0,value)):axis.position(new Point(value,0))}if(axis.min(pF.getXMLAttr(xml,"min")),"auto"!==axis.min()&&axis.dataMin(DataValue.parse(axis.type(),axis.min())),axis.max(pF.getXMLAttr(xml,"max")),"auto"!==axis.max()&&axis.dataMax(DataValue.parse(axis.type(),axis.max())),parseAttribute(pF.getXMLAttr(xml,"pregap"),axis.pregap,parseFloat),parseAttribute(pF.getXMLAttr(xml,"postgap"),axis.postgap,parseFloat),parseAttribute(pF.getXMLAttr(xml,"anchor"),axis.anchor,parseFloat),parseAttribute(pF.getXMLAttr(xml,"base"),axis.base,parsePoint),parseAttribute(pF.getXMLAttr(xml,"minposition"),axis.minposition,parseDisplacement),parseAttribute(pF.getXMLAttr(xml,"maxposition"),axis.maxposition,parseDisplacement),parseAttribute(pF.getXMLAttr(xml,"minoffset"),axis.minoffset,parseFloat),parseAttribute(pF.getXMLAttr(xml,"maxoffset"),axis.maxoffset,parseFloat),parseAttribute(pF.getXMLAttr(xml,"color"),axis.color,parseRGBColor),parseAttribute(pF.getXMLAttr(xml,"tickcolor"),axis.tickcolor,parseRGBColor),parseAttribute(pF.getXMLAttr(xml,"tickwidth"),axis.tickwidth,parseInteger),parseAttribute(pF.getXMLAttr(xml,"tickmin"),axis.tickmin,parseInteger),parseAttribute(pF.getXMLAttr(xml,"tickmax"),axis.tickmax,parseInteger),parseAttribute(pF.getXMLAttr(xml,"highlightstyle"),axis.highlightstyle),parseAttribute(pF.getXMLAttr(xml,"linewidth"),axis.linewidth,parseInteger),0<(child=xml.find("title")).length?axis.title(AxisTitle.parseXML(child,axis)):axis.title(new AxisTitle(axis)),0<(child=xml.find("grid")).length&&axis.grid(Grid.parseXML(child)),0<(child=xml.find("pan")).length&&axis.pan(Pan.parseXML(child,axis.type())),0<(child=xml.find("zoom")).length&&axis.zoom(Zoom.parseXML(child,axis.type())),0<xml.find("labels").length&&function(xml,axis){var spacingString,i,spacingStrings=[],labelsTag=xml.find("labels"),labelTags=xml.find("label"),labelers=axis.labelers(),Labeler=require("../../core/labeler.js"),DataValue=require("../../core/data_value.js"),utilityFunctions=require("../../util/utilityFunctions.js");if(""!==(spacingString=$.trim(pF.getXMLAttr(labelsTag,"spacing")))&&(spacingStrings=spacingString.split(/\s+/)),0<spacingStrings.length)for(i=0;i<spacingStrings.length;++i)labelers.add(Labeler.parseXML(labelsTag,axis,void 0,spacingStrings[i]));else if(0<labelTags.length){var defaults=Labeler.parseXML(labelsTag,axis,void 0,null);$.each(labelTags,function(j,e){for(spacingString=$.trim(pF.getXMLAttr($(e),"spacing")),spacingStrings=[],""!==spacingString&&(spacingStrings=spacingString.split(/\s+/)),i=0;i<spacingStrings.length;++i)labelers.add(Labeler.parseXML($(e),axis,defaults,spacingStrings[i]))})}else{var defaultValues=utilityFunctions.getDefaultValuesFromXSD().horizontalaxis.labels,defaultSpacings=axis.type()===DataValue.NUMBER?defaultValues.defaultNumberSpacing:defaultValues.defaultDatetimeSpacing;for(i=0;i<defaultSpacings.length;++i)labelers.add(Labeler.parseXML(labelsTag,axis,void 0,defaultSpacings[i]))}}(xml,axis),0<(child=xml.find("binding")).length){var bindingIdAttr=pF.getXMLAttr(child,"id"),bindingMinAttr=pF.getXMLAttr(child,"min"),bindingMaxAttr=pF.getXMLAttr(child,"max"),bindingMinDataValue=DataValue.parse(axis.type(),bindingMinAttr),bindingMaxDataValue=DataValue.parse(axis.type(),bindingMaxAttr);if("string"!=typeof bindingIdAttr||bindingIdAttr.length<=0)throw new Error("invalid axis binding id: '"+bindingIdAttr+"'");if(!DataValue.isInstance(bindingMinDataValue))throw new Error("invalid axis binding min: '"+bindingMinAttr+"'");if(!DataValue.isInstance(bindingMaxDataValue))throw new Error("invalid axis binding max: '"+bindingMaxAttr+"'");AxisBinding.findByIdOrCreateNew(bindingIdAttr).addAxis(axis,bindingMinDataValue,bindingMaxDataValue,multigraph)}}return axis},Axis}},{"../../core/axis.js":18,"../../core/axis_binding.js":19,"../../core/axis_title.js":20,"../../core/data_value.js":30,"../../core/grid.js":42,"../../core/labeler.js":45,"../../core/pan.js":52,"../../core/zoom.js":71,"../../math/displacement.js":101,"../../math/point.js":104,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156,"../../util/utilityFunctions.js":157}],132:[function(require,module,exports){var AxisTitle=require("../../core/axis_title.js");AxisTitle.parseXML=function(xml,axis){var text,title=new AxisTitle(axis),Text=require("../../core/text.js"),Point=require("../../math/point.js"),pF=require("../../util/parsingFunctions.js"),nonEmptyTitle=!1,parsePoint=Point.parse,parseTitleAttribute=function(value,attribute,preprocessor){pF.parseAttribute(value,attribute,preprocessor)};if(xml&&(""!==(text=xml.text())&&(title.content(new Text(text)),nonEmptyTitle=!0),parseTitleAttribute(pF.getXMLAttr(xml,"anchor"),title.anchor,parsePoint),parseTitleAttribute(pF.getXMLAttr(xml,"base"),title.base,parseFloat),parseTitleAttribute(pF.getXMLAttr(xml,"position"),title.position,parsePoint),parseTitleAttribute(pF.getXMLAttr(xml,"angle"),title.angle,parseFloat)),!0===nonEmptyTitle)return title},module.exports=AxisTitle},{"../../core/axis_title.js":20,"../../core/text.js":64,"../../math/point.js":104,"../../util/parsingFunctions.js":156}],133:[function(require,module,exports){var Background=require("../../core/background.js");Background.parseXML=function(xml,multigraph){var child,background=new Background,pF=require("../../util/parsingFunctions.js"),RGBColor=require("../../math/rgb_color.js"),Img=require("../../core/img.js");return xml&&(pF.parseAttribute(pF.getXMLAttr(xml,"color"),background.color,RGBColor.parse),0<(child=xml.find("img")).length&&background.img(Img.parseXML(child,multigraph))),background},module.exports=Background},{"../../core/background.js":21,"../../core/img.js":44,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156}],134:[function(require,module,exports){module.exports=function($){var Data=require("../../core/data.js");return"function"==typeof Data.parseXML||(Data.parseXML=function(xml,multigraph,messageHandler){var variables_xml,defaultMissingvalueString,defaultMissingopString,data,adap,ArrayData=require("../../core/array_data.js"),DataVariable=require("../../core/data_variable.js"),DataMeasure=require("../../core/data_measure.js"),PeriodicArrayData=require("../../core/periodic_array_data.js"),CSVData=require("../../core/csv_data.js")($),WebServiceData=require("../../core/web_service_data.js")($),Multigraph=require("../../core/multigraph.js")($),pF=require("../../util/parsingFunctions.js"),dataVariables=[],adapter=ArrayData;if(xml){if(void 0!==(adap=pF.getXMLAttr($(xml),"adapter"))&&""!==adap&&void 0===(adapter=Multigraph.getDataAdapter(adap)))throw new Error("Missing data adapater: "+adap);variables_xml=xml.find("variables"),defaultMissingvalueString=pF.getXMLAttr(variables_xml,"missingvalue"),defaultMissingopString=pF.getXMLAttr(variables_xml,"missingop");var variables=variables_xml.find(">variable");0<variables.length&&$.each(variables,function(i,e){dataVariables.push(DataVariable.parseXML($(e)))});var period,haveRepeat=!1,repeat_xml=$(xml.find(">repeat"));if(0<repeat_xml.length){var periodString=pF.getXMLAttr($(repeat_xml),"period");void 0===periodString||""===periodString?messageHandler.warning("<repeat> tag requires a 'period' attribute; data treated as non-repeating"):(period=DataMeasure.parse(dataVariables[0].type(),periodString),haveRepeat=!0)}var values_xml=$(xml.find(">values"));if(0<values_xml.length){values_xml=values_xml[0];var stringValues=adapter.textToStringArray(dataVariables,$(values_xml).text());data=haveRepeat?new PeriodicArrayData(dataVariables,stringValues,period):new ArrayData(dataVariables,stringValues)}var csv_xml=$(xml.find(">csv"));if(0<csv_xml.length){csv_xml=csv_xml[0];var filename=pF.getXMLAttr($(csv_xml),"location");data=new CSVData(dataVariables,multigraph?multigraph.rebaseUrl(filename):filename,messageHandler,multigraph?multigraph.getAjaxThrottle(filename):void 0)}var service_xml=$(xml.find(">service"));if(0<service_xml.length){service_xml=$(service_xml[0]);var location=pF.getXMLAttr(service_xml,"location");data=new WebServiceData(dataVariables,multigraph?multigraph.rebaseUrl(location):location,messageHandler,multigraph?multigraph.getAjaxThrottle(location):void 0);var format=pF.getXMLAttr(service_xml,"format");format&&data.format(format)}}return data&&(void 0!==defaultMissingvalueString&&data.defaultMissingvalue(defaultMissingvalueString),void 0!==defaultMissingopString&&data.defaultMissingop(defaultMissingopString),data.adapter(adapter)),data}),Data}},{"../../core/array_data.js":17,"../../core/csv_data.js":25,"../../core/data.js":26,"../../core/data_measure.js":28,"../../core/data_variable.js":31,"../../core/multigraph.js":48,"../../core/periodic_array_data.js":53,"../../core/web_service_data.js":67,"../../util/parsingFunctions.js":156}],135:[function(require,module,exports){var DataVariable=require("../../core/data_variable.js");DataVariable.parseXML=function(xml,data){var variable,pF=require("../../util/parsingFunctions.js"),parseAttribute=pF.parseAttribute,DataValue=require("../../core/data_value.js");return xml&&pF.getXMLAttr(xml,"id")&&(variable=new DataVariable(pF.getXMLAttr(xml,"id")),parseAttribute(pF.getXMLAttr(xml,"column"),variable.column,pF.parseInteger),parseAttribute(pF.getXMLAttr(xml,"type"),variable.type,DataValue.parseType),parseAttribute(pF.getXMLAttr(xml,"missingvalue"),variable.missingvalue,function(v){return DataValue.parse(variable.type(),v)}),parseAttribute(pF.getXMLAttr(xml,"missingop"),variable.missingop,DataValue.parseComparator)),variable},module.exports=DataVariable},{"../../core/data_value.js":30,"../../core/data_variable.js":31,"../../util/parsingFunctions.js":156}],136:[function(require,module,exports){module.exports=function($){var Datatips=require("../../core/datatips.js");return"function"==typeof Datatips.parseXML||(Datatips.parseXML=function(xml){var child,datatips=new Datatips,RGBColor=require("../../math/rgb_color.js"),DatatipsVariable=require("../../core/datatips_variable.js"),pF=require("../../util/parsingFunctions.js"),parseRGBColor=RGBColor.parse,parseAttribute=pF.parseAttribute,parseInteger=pF.parseInteger;return xml&&(0<(child=xml.find("variable")).length&&$.each(child,function(i,e){datatips.variables().add(DatatipsVariable.parseXML($(e)))}),parseAttribute(pF.getXMLAttr(xml,"format"),datatips.formatString),parseAttribute(pF.getXMLAttr(xml,"bgcolor"),datatips.bgcolor,parseRGBColor),parseAttribute(pF.getXMLAttr(xml,"bgalpha"),datatips.bgalpha,parseFloat),parseAttribute(pF.getXMLAttr(xml,"border"),datatips.border,parseInteger),parseAttribute(pF.getXMLAttr(xml,"bordercolor"),datatips.bordercolor,parseRGBColor),parseAttribute(pF.getXMLAttr(xml,"pad"),datatips.pad,parseInteger)),datatips}),Datatips}},{"../../core/datatips.js":32,"../../core/datatips_variable.js":33,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156}],137:[function(require,module,exports){var DatatipsVariable=require("../../core/datatips_variable.js");DatatipsVariable.parseXML=function(xml){var variable=new DatatipsVariable,pF=require("../../util/parsingFunctions.js");return xml&&pF.parseAttribute(pF.getXMLAttr(xml,"format"),variable.formatString),variable},module.exports=DatatipsVariable},{"../../core/datatips_variable.js":33,"../../util/parsingFunctions.js":156}],138:[function(require,module,exports){module.exports=function($){var Filter=require("../../core/filter.js");return"function"==typeof Filter.parseXML||(Filter.parseXML=function(xml){var child,filter=new Filter,FilterOption=require("../../core/filter_option.js"),pF=require("../../util/parsingFunctions.js");return xml&&(0<(child=xml.find("option")).length&&$.each(child,function(i,e){filter.options().add(FilterOption.parseXML($(e)))}),pF.parseAttribute(pF.getXMLAttr(xml,"type"),filter.type)),filter}),Filter}},{"../../core/filter.js":39,"../../core/filter_option.js":40,"../../util/parsingFunctions.js":156}],139:[function(require,module,exports){var FilterOption=require("../../core/filter_option.js");FilterOption.parseXML=function(xml){var pF=require("../../util/parsingFunctions.js"),option=new FilterOption;return xml&&(option.name(pF.getXMLAttr(xml,"name")),option.value(""===pF.getXMLAttr(xml,"value")?void 0:pF.getXMLAttr(xml,"value"))),option},module.exports=FilterOption},{"../../core/filter_option.js":40,"../../util/parsingFunctions.js":156}],140:[function(require,module,exports){module.exports=function($){var Graph=require("../../core/graph.js"),pF=require("../../util/parsingFunctions.js");if("function"==typeof Graph.parseXML)return Graph;var checkDeprecatedColorNames=function(xml,messageHandler){var dep,RGBColor=require("../../math/rgb_color.js"),$xml=$(xml),attributes=$xml[0].attributes,children=$xml.children(),colorNameIsDeprecated=RGBColor.colorNameIsDeprecated;"option"===xml.nodeName&&/color/.test(pF.getXMLAttr($xml,"name"))&&(dep=colorNameIsDeprecated(pF.getXMLAttr($xml,"value")))&&messageHandler.warning('Warning: color string "'+pF.getXMLAttr($xml,"value")+'" is deprecated; use "'+dep+'" instead'),attributes&&$.each(attributes,function(){/color/.test(this.name)&&(dep=colorNameIsDeprecated(this.value))&&messageHandler.warning('Warning: color string "'+this.value+'" is deprecated; use "'+dep+'" instead')}),children&&children.each(function(){checkDeprecatedColorNames(this,messageHandler)})};return Graph.parseXML=function(xml,multigraph,messageHandler){var child,graph=new Graph,Axis=require("../../core/axis.js"),Window=require("../../core/window.js"),Legend=require("../../core/legend.js"),Background=require("../../core/background.js"),Plotarea=require("../../core/plotarea.js"),Title=require("../../core/title.js"),Data=require("../../core/data.js"),Plot=require("../../core/plot.js"),defaults=require("../../util/utilityFunctions.js").getDefaultValuesFromXSD();if(graph.multigraph(multigraph),xml){try{checkDeprecatedColorNames(xml,messageHandler)}catch(e){}0<(child=xml.find(">window")).length&&graph.window(Window.parseXML(child)),0<(child=xml.find(">legend")).length?graph.legend(Legend.parseXML(child)):graph.legend(Legend.parseXML()),0<(child=xml.find(">background")).length&&graph.background(Background.parseXML(child,graph.multigraph())),0<(child=xml.find(">plotarea")).length&&graph.plotarea(Plotarea.parseXML(child)),0<(child=xml.find(">title")).length&&graph.title(Title.parseXML(child,graph)),$.each(xml.find(">horizontalaxis"),function(i,e){graph.axes().add(Axis.parseXML($(e),Axis.HORIZONTAL,messageHandler,graph.multigraph()))}),$.each(xml.find(">verticalaxis"),function(i,e){graph.axes().add(Axis.parseXML($(e),Axis.VERTICAL,messageHandler,graph.multigraph()))}),$.each(xml.find(">throttle"),function(i,e){var pattern=pF.getXMLAttr($(e),"pattern")?pF.getXMLAttr($(e),"pattern"):defaults.throttle.pattern,requests=pF.getXMLAttr($(e),"requests")?pF.getXMLAttr($(e),"requests"):defaults.throttle.requests,period=pF.getXMLAttr($(e),"period")?pF.getXMLAttr($(e),"period"):defaults.throttle.period,concurrent=pF.getXMLAttr($(e),"concurrent")?pF.getXMLAttr($(e),"concurrent"):defaults.throttle.concurrent;multigraph.addAjaxThrottle(pattern,requests,period,concurrent)}),$.each(xml.find(">data"),function(i,e){graph.data().add(Data.parseXML($(e),graph.multigraph(),messageHandler))}),$.each(xml.find(">plot"),function(i,e){graph.plots().add(Plot.parseXML($(e),graph,messageHandler))}),graph.postParse()}return graph},Graph}},{"../../core/axis.js":18,"../../core/background.js":21,"../../core/data.js":26,"../../core/graph.js":41,"../../core/legend.js":46,"../../core/plot.js":54,"../../core/plotarea.js":56,"../../core/title.js":65,"../../core/window.js":70,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156,"../../util/utilityFunctions.js":157}],141:[function(require,module,exports){var Grid=require("../../core/grid.js");Grid.parseXML=function(xml){var attr,grid=new Grid,RGBColor=require("../../math/rgb_color.js"),pF=require("../../util/parsingFunctions.js"),parseAttribute=pF.parseAttribute;return xml&&(parseAttribute(pF.getXMLAttr(xml,"color"),grid.color,RGBColor.parse),void 0!==(attr=pF.getXMLAttr(xml,"visible"))?grid.visible(pF.parseBoolean(attr)):grid.visible(!0)),grid},module.exports=Grid},{"../../core/grid.js":42,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156}],142:[function(require,module,exports){var Icon=require("../../core/icon.js");Icon.parseXML=function(xml){var icon=new Icon,pF=require("../../util/parsingFunctions.js"),parseAttribute=pF.parseAttribute,parseInteger=pF.parseInteger;return xml&&(parseAttribute(pF.getXMLAttr(xml,"height"),icon.height,parseInteger),parseAttribute(pF.getXMLAttr(xml,"width"),icon.width,parseInteger),parseAttribute(pF.getXMLAttr(xml,"border"),icon.border,parseInteger)),icon},module.exports=Icon},{"../../core/icon.js":43,"../../util/parsingFunctions.js":156}],143:[function(require,module,exports){var Img=require("../../core/img.js");Img.parseXML=function(xml,multigraph){var img,pF=require("../../util/parsingFunctions.js"),Point=require("../../math/point.js"),parseAttribute=pF.parseAttribute,parsePoint=Point.parse;if(xml&&void 0!==pF.getXMLAttr(xml,"src")){var src=pF.getXMLAttr(xml,"src");if(!src)throw new Error('img elment requires a "src" attribute value');multigraph&&(src=multigraph.rebaseUrl(src)),img=new Img(src),parseAttribute(pF.getXMLAttr(xml,"anchor"),img.anchor,parsePoint),parseAttribute(pF.getXMLAttr(xml,"base"),img.base,parsePoint),parseAttribute(pF.getXMLAttr(xml,"position"),img.position,parsePoint),parseAttribute(pF.getXMLAttr(xml,"frame"),img.frame,function(value){return value.toLowerCase()})}return img},module.exports=Img},{"../../core/img.js":44,"../../math/point.js":104,"../../util/parsingFunctions.js":156}],144:[function(require,module,exports){var JQueryXMLParser;module.exports=function($){return void 0!==JQueryXMLParser||(JQueryXMLParser={},require("./axis.js")($),require("./data.js")($),require("./datatips.js")($),require("./filter.js")($),require("./graph.js")($),require("./multigraph.js")($),require("./plot.js")($),require("./renderer.js")($),require("./axis_title.js"),require("./background.js"),require("./datatips_variable.js"),require("./data_variable.js"),require("./filter_option.js"),require("./grid.js"),require("./icon.js"),require("./img.js"),require("./labeler.js"),require("./legend.js"),require("./pan.js"),require("./plotarea.js"),require("./plot_legend.js"),require("./title.js"),require("./window.js"),require("./zoom.js"),JQueryXMLParser.stringToJQueryXMLObj=function(thingy){if("string"!=typeof thingy)return $(thingy);var xml=$.parseXML(thingy);return $($(xml).children()[0])}),JQueryXMLParser}},{"./axis.js":131,"./axis_title.js":132,"./background.js":133,"./data.js":134,"./data_variable.js":135,"./datatips.js":136,"./datatips_variable.js":137,"./filter.js":138,"./filter_option.js":139,"./graph.js":140,"./grid.js":141,"./icon.js":142,"./img.js":143,"./labeler.js":145,"./legend.js":146,"./multigraph.js":147,"./pan.js":148,"./plot.js":149,"./plot_legend.js":150,"./plotarea.js":151,"./renderer.js":152,"./title.js":153,"./window.js":154,"./zoom.js":155}],145:[function(require,module,exports){var Labeler=require("../../core/labeler.js");Labeler.parseXML=function(xml,axis,defaults,spacing){var labeler,type,Point=require("../../math/point.js"),RGBColor=require("../../math/rgb_color.js"),DataMeasure=require("../../core/data_measure.js"),DataValue=require("../../core/data_value.js"),DataFormatter=require("../../core/data_formatter.js"),pF=require("../../util/parsingFunctions.js"),parsePoint=Point.parse,parseLabelerAttribute=function(value,attribute,preprocessor,defaultName){pF.parseAttribute(value,attribute,preprocessor)||void 0===defaults||attribute(defaults[defaultName]())};return xml&&(labeler=new Labeler(axis),null!==spacing&&(void 0===spacing&&(spacing=pF.getXMLAttr(xml,"spacing")),parseLabelerAttribute(spacing,labeler.spacing,function(v){return DataMeasure.parse(axis.type(),v)},"spacing")),parseLabelerAttribute(pF.getXMLAttr(xml,"format"),labeler.formatter,(type=axis.type(),function(value){return DataFormatter.create(type,value)}),"formatter"),parseLabelerAttribute(pF.getXMLAttr(xml,"start"),labeler.start,function(type){return function(value){return DataValue.parse(type,value)}}(axis.type()),"start"),parseLabelerAttribute(pF.getXMLAttr(xml,"angle"),labeler.angle,parseFloat,"angle"),parseLabelerAttribute(pF.getXMLAttr(xml,"position"),labeler.position,parsePoint,"position"),parseLabelerAttribute(pF.getXMLAttr(xml,"anchor"),labeler.anchor,parsePoint,"anchor"),parseLabelerAttribute(pF.getXMLAttr(xml,"densityfactor"),labeler.densityfactor,parseFloat,"densityfactor"),parseLabelerAttribute(pF.getXMLAttr(xml,"color"),labeler.color,RGBColor.parse,"color"),parseLabelerAttribute(pF.getXMLAttr(xml,"visible"),labeler.visible,pF.parseBoolean,"visible")),labeler},module.exports=Labeler},{"../../core/data_formatter.js":27,"../../core/data_measure.js":28,"../../core/data_value.js":30,"../../core/labeler.js":45,"../../math/point.js":104,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156}],146:[function(require,module,exports){var Legend=require("../../core/legend.js");Legend.parseXML=function(xml){var child,legend=new Legend,pF=require("../../util/parsingFunctions.js"),Point=require("../../math/point.js"),RGBColor=require("../../math/rgb_color.js"),Icon=require("../../core/icon.js"),parseAttribute=pF.parseAttribute,parseInteger=pF.parseInteger,parsePoint=Point.parse,parseRGBColor=RGBColor.parse;return xml&&(parseAttribute(pF.getXMLAttr(xml,"visible"),legend.visible,pF.parseBoolean),parseAttribute(pF.getXMLAttr(xml,"base"),legend.base,parsePoint),parseAttribute(pF.getXMLAttr(xml,"anchor"),legend.anchor,parsePoint),parseAttribute(pF.getXMLAttr(xml,"position"),legend.position,parsePoint),parseAttribute(pF.getXMLAttr(xml,"frame"),legend.frame),parseAttribute(pF.getXMLAttr(xml,"color"),legend.color,parseRGBColor),parseAttribute(pF.getXMLAttr(xml,"bordercolor"),legend.bordercolor,parseRGBColor),parseAttribute(pF.getXMLAttr(xml,"opacity"),legend.opacity,parseFloat),parseAttribute(pF.getXMLAttr(xml,"border"),legend.border,parseInteger),parseAttribute(pF.getXMLAttr(xml,"rows"),legend.rows,parseInteger),parseAttribute(pF.getXMLAttr(xml,"columns"),legend.columns,parseInteger),parseAttribute(pF.getXMLAttr(xml,"cornerradius"),legend.cornerradius,parseInteger),parseAttribute(pF.getXMLAttr(xml,"padding"),legend.padding,parseInteger),0<(child=xml.find("icon")).length&&legend.icon(Icon.parseXML(child))),legend},module.exports=Legend},{"../../core/icon.js":43,"../../core/legend.js":46,"../../math/point.js":104,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156}],147:[function(require,module,exports){module.exports=function($){var Multigraph=require("../../core/multigraph.js")($);return"function"==typeof Multigraph.parseXML||(Multigraph.parseXML=function(xml,mugl,messageHandler){var child,multigraph=new Multigraph,graphs=multigraph.graphs(),Graph=require("../../core/graph.js");return multigraph.mugl(mugl),xml&&(0<(child=xml.find(">graph")).length?$.each(child,function(i,e){graphs.add(Graph.parseXML($(e),multigraph,messageHandler))}):0===child.length&&0<xml.children().length&&graphs.add(Graph.parseXML(xml,multigraph,messageHandler))),multigraph}),Multigraph}},{"../../core/graph.js":41,"../../core/multigraph.js":48}],148:[function(require,module,exports){var Pan=require("../../core/pan.js");Pan.parseXML=function(xml,type){var pan=new Pan,pF=require("../../util/parsingFunctions.js"),DataValue=require("../../core/data_value.js"),parseAttribute=pF.parseAttribute,parseDataValue=function(v){return DataValue.parse(type,v)};return xml&&(parseAttribute(pF.getXMLAttr(xml,"allowed"),pan.allowed,pF.parseBoolean),parseAttribute(pF.getXMLAttr(xml,"min"),pan.min,parseDataValue),parseAttribute(pF.getXMLAttr(xml,"max"),pan.max,parseDataValue)),pan},module.exports=Pan},{"../../core/data_value.js":30,"../../core/pan.js":52,"../../util/parsingFunctions.js":156}],149:[function(require,module,exports){module.exports=function($){var Plot=require("../../core/plot.js");return"function"==typeof Plot.parseXML||(Plot.parseXML=function(xml,graph,messageHandler){var plot,haxis,vaxis,variable,attr,child,DataPlot=require("../../core/data_plot.js"),PlotLegend=require("../../core/plot_legend.js"),ConstantPlot=require("../../core/constant_plot.js"),DataValue=require("../../core/data_value.js"),Renderer=require("../../core/renderer.js"),Filter=require("../../core/filter.js"),Datatips=require("../../core/datatips.js"),pF=require("../../util/parsingFunctions.js");if(xml){if(1===(child=xml.find(">verticalaxis")).length&&void 0!==pF.getXMLAttr(child,"ref")&&graph&&void 0===(vaxis=graph.axisById(pF.getXMLAttr(child,"ref"))))throw new Error("Plot Vertical Axis Error: The graph does not contain an axis with an id of '"+pF.getXMLAttr(child,"ref")+"'");if(0<(child=xml.find("verticalaxis constant")).length){var constantValueString=pF.getXMLAttr(child,"value");if(void 0===constantValueString)throw new Error("Constant Plot Error: A 'value' attribute is needed to define a Constant Plot");plot=new ConstantPlot(DataValue.parse(vaxis.type(),constantValueString))}else plot=new DataPlot;if(plot.verticalaxis(vaxis),1===(child=xml.find(">horizontalaxis")).length&&void 0!==pF.getXMLAttr(child,"ref")&&graph){if(void 0===(haxis=graph.axisById(pF.getXMLAttr(child,"ref"))))throw new Error("Plot Horizontal Axis Error: The graph does not contain an axis with an id of '"+pF.getXMLAttr(child,"ref")+"'");plot.horizontalaxis(haxis)}plot instanceof DataPlot&&(0===xml.find("horizontalaxis variable").length&&plot.variable().add(null),0<(child=xml.find("horizontalaxis variable, verticalaxis variable")).length&&graph&&$.each(child,function(i,e){if(attr=pF.getXMLAttr($(e),"ref"),void 0===(variable=graph.variableById(attr)))throw new Error("Plot Variable Error: No Data tag contains a variable with an id of '"+attr+"'");plot.data(variable.data()),plot.variable().add(variable)})),0<(child=xml.find("legend")).length?plot.legend(PlotLegend.parseXML(child,plot)):plot.legend(PlotLegend.parseXML(void 0,plot)),0<(child=xml.find("renderer")).length&&plot.renderer(Renderer.parseXML(child,plot,messageHandler)),0<(child=xml.find("filter")).length&&plot.filter(Filter.parseXML(child)),0<(child=xml.find("datatips")).length&&plot.datatips(Datatips.parseXML(child))}return plot}),Plot}},{"../../core/constant_plot.js":24,"../../core/data_plot.js":29,"../../core/data_value.js":30,"../../core/datatips.js":32,"../../core/filter.js":39,"../../core/plot.js":54,"../../core/plot_legend.js":55,"../../core/renderer.js":57,"../../util/parsingFunctions.js":156}],150:[function(require,module,exports){var PlotLegend=require("../../core/plot_legend.js");PlotLegend.parseXML=function(xml,plot){var legend=new PlotLegend,pF=require("../../util/parsingFunctions.js"),Text=require("../../core/text.js"),parseAttribute=pF.parseAttribute;return xml&&(parseAttribute(pF.getXMLAttr(xml,"visible"),legend.visible,pF.parseBoolean),parseAttribute(pF.getXMLAttr(xml,"label"),legend.label,function(value){return new Text(value)})),void 0===legend.label()&&("function"==typeof plot.variable&&2<=plot.variable().size()?legend.label(new Text(plot.variable().at(1).id())):legend.label(new Text("plot"))),legend},module.exports=PlotLegend},{"../../core/plot_legend.js":55,"../../core/text.js":64,"../../util/parsingFunctions.js":156}],151:[function(require,module,exports){var Plotarea=require("../../core/plotarea.js");Plotarea.parseXML=function(xml){var plotarea=new Plotarea,margin=plotarea.margin(),pF=require("../../util/parsingFunctions.js"),parseRGBColor=require("../../math/rgb_color.js").parse,parseAttribute=pF.parseAttribute,parseInteger=pF.parseInteger;return xml&&(parseAttribute(pF.getXMLAttr(xml,"marginbottom"),margin.bottom,parseInteger),parseAttribute(pF.getXMLAttr(xml,"marginleft"),margin.left,parseInteger),parseAttribute(pF.getXMLAttr(xml,"margintop"),margin.top,parseInteger),parseAttribute(pF.getXMLAttr(xml,"marginright"),margin.right,parseInteger),parseAttribute(pF.getXMLAttr(xml,"border"),plotarea.border,parseInteger),parseAttribute(pF.getXMLAttr(xml,"color"),plotarea.color,parseRGBColor),parseAttribute(pF.getXMLAttr(xml,"bordercolor"),plotarea.bordercolor,parseRGBColor)),plotarea},module.exports=Plotarea},{"../../core/plotarea.js":56,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156}],152:[function(require,module,exports){module.exports=function($){var Renderer=require("../../core/renderer.js");return"function"==typeof Renderer.parseXML||(Renderer.parseXML=function(xml,plot,messageHandler){var rendererType,renderer,DataValue=require("../../core/data_value.js"),NumberValue=require("../../core/number_value.js"),Warning=require("../../core/warning.js"),pF=require("../../util/parsingFunctions.js");if(require("../../core/renderers/all_renderers.js"),xml&&void 0!==pF.getXMLAttr(xml,"type")){if(rendererType=Renderer.Type.parse(pF.getXMLAttr(xml,"type")),!Renderer.Type.isInstance(rendererType))throw new Error("unknown renderer type '"+pF.getXMLAttr(xml,"type")+"'");(renderer=Renderer.create(rendererType)).plot(plot),0<xml.find("option").length&&(!function(renderer,xml,plot,messageHandler){var i,missingValueOption=xml.find("option[name=missingvalue]"),missingOpOption=xml.find("option[name=missingop]");if(0<missingValueOption.length||0<missingOpOption.length){var column,columns=plot.data().columns();for(i=0;i<columns.size();++i)(column=columns.at(i)).type()===DataValue.NUMBER&&(0<missingValueOption.length&&void 0===column.missingvalue()&&column.missingvalue(NumberValue.parse(pF.getXMLAttr(missingValueOption,"value"))),0<missingOpOption.length&&void 0===column.missingop()&&column.missingop(DataValue.parseComparator(pF.getXMLAttr(missingOpOption,"value"))))}0<missingValueOption.length&&(messageHandler.warning("Renderer option 'missingvalue' is deprecated; use 'missingvalue' attribute of 'data'/'variable'; instead"),missingValueOption.remove()),0<missingOpOption.length&&(messageHandler.warning("Renderer option 'missingop' is deprecated; use 'missingvalue' attribute of 'data'/'variable'; instead"),missingOpOption.remove())}(0,xml,plot,messageHandler),$.each(xml.find(">option"),function(i,e){try{renderer.setOptionFromString(pF.getXMLAttr($(e),"name"),pF.getXMLAttr($(e),"value"),pF.getXMLAttr($(e),"min"),pF.getXMLAttr($(e),"max"))}catch(e){if(!(e instanceof Warning))throw e;messageHandler.warning(e)}}))}return renderer}),Renderer}},{"../../core/data_value.js":30,"../../core/number_value.js":51,"../../core/renderer.js":57,"../../core/renderers/all_renderers.js":58,"../../core/warning.js":66,"../../util/parsingFunctions.js":156}],153:[function(require,module,exports){var Title=require("../../core/title.js");Title.parseXML=function(xml,graph){var title,Point=require("../../math/point.js"),RGBColor=require("../../math/rgb_color.js"),Text=require("../../core/text.js"),pF=require("../../util/parsingFunctions.js"),parsePoint=Point.parse,parseRGBColor=RGBColor.parse,parseAttribute=pF.parseAttribute,parseInteger=pF.parseInteger;if(xml){var text=xml.text();if(""===text)return;title=new Title(new Text(text),graph),parseAttribute(pF.getXMLAttr(xml,"frame"),title.frame,function(value){return value.toLowerCase()}),parseAttribute(pF.getXMLAttr(xml,"border"),title.border,parseInteger),parseAttribute(pF.getXMLAttr(xml,"color"),title.color,parseRGBColor),parseAttribute(pF.getXMLAttr(xml,"bordercolor"),title.bordercolor,parseRGBColor),parseAttribute(pF.getXMLAttr(xml,"opacity"),title.opacity,parseFloat),parseAttribute(pF.getXMLAttr(xml,"padding"),title.padding,parseInteger),parseAttribute(pF.getXMLAttr(xml,"cornerradius"),title.cornerradius,parseInteger),parseAttribute(pF.getXMLAttr(xml,"anchor"),title.anchor,parsePoint),parseAttribute(pF.getXMLAttr(xml,"base"),title.base,parsePoint),parseAttribute(pF.getXMLAttr(xml,"position"),title.position,parsePoint)}return title},module.exports=Title},{"../../core/text.js":64,"../../core/title.js":65,"../../math/point.js":104,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156}],154:[function(require,module,exports){var Window=require("../../core/window.js");Window.parseXML=function(xml){var attr,m,w=new Window,RGBColor=require("../../math/rgb_color.js"),pF=require("../../util/parsingFunctions.js"),parseAttribute=pF.parseAttribute,parseInteger=pF.parseInteger;return xml&&(parseAttribute(pF.getXMLAttr(xml,"width"),w.width,parseInteger),parseAttribute(pF.getXMLAttr(xml,"height"),w.height,parseInteger),parseAttribute(pF.getXMLAttr(xml,"border"),w.border,parseInteger),void 0!==(attr=pF.getXMLAttr(xml,"margin"))&&(m=parseInt(attr,10),w.margin().set(m,m,m,m)),void 0!==(attr=pF.getXMLAttr(xml,"padding"))&&function(m){w.padding().set(m,m,m,m)}(parseInt(attr,10)),parseAttribute(pF.getXMLAttr(xml,"bordercolor"),w.bordercolor,RGBColor.parse)),w},module.exports=Window},{"../../core/window.js":70,"../../math/rgb_color.js":105,"../../util/parsingFunctions.js":156}],155:[function(require,module,exports){var Zoom=require("../../core/zoom.js");Zoom.parseXML=function(xml,type){var attr,zoom=new Zoom,DataValue=require("../../core/data_value.js"),DataMeasure=require("../../core/data_measure.js"),pF=require("../../util/parsingFunctions.js"),parseAttribute=pF.parseAttribute,parseDataMeasure=function(v){return DataMeasure.parse(type,v)};return xml&&(parseAttribute(pF.getXMLAttr(xml,"allowed"),zoom.allowed,pF.parseBoolean),parseAttribute(pF.getXMLAttr(xml,"min"),zoom.min,parseDataMeasure),parseAttribute(pF.getXMLAttr(xml,"max"),zoom.max,parseDataMeasure),void 0!==(attr=pF.getXMLAttr(xml,"anchor"))&&("none"===attr.toLowerCase()?zoom.anchor(null):zoom.anchor(DataValue.parse(type,attr)))),zoom},module.exports=Zoom},{"../../core/data_measure.js":28,"../../core/data_value.js":30,"../../core/zoom.js":71,"../../util/parsingFunctions.js":156}],156:[function(require,module,exports){var ParsingFunctions={parseAttribute:function(value,attribute,preprocessor){return void 0!==value&&(attribute(void 0!==preprocessor?preprocessor(value):value),!0)},parseInteger:function(value){return parseInt(value,10)},parseBoolean:function(param){if("string"!=typeof param)return param;switch(param.toLowerCase()){case"true":case"yes":return!0;case"false":case"no":return!1;default:return param}},getXMLAttr:function(node,attrname){if(1<=node.length&&node[0].hasAttribute(attrname))return node.attr(attrname)}};module.exports=ParsingFunctions},{}],157:[function(require,module,exports){utilityFunctions={},utilityFunctions.getKeys=function(obj){var key,keys=[];for(key in obj)obj.hasOwnProperty(key)&&keys.push(key);return keys},utilityFunctions.coerceToString=function(s){return void 0!==s?String(s):s},utilityFunctions.insertDefaults=function(elem,defaults,attributes){var i;for(i=0;i<attributes.length;i++)void 0===defaults[attributes[i]]||"object"==typeof defaults[attributes[i]]&&null!==defaults[attributes[i]]||-1<elem.attributes().indexOf(attributes[i])&&elem.attribute(attributes[i]).defaultsTo(defaults[attributes[i]]);return elem},utilityFunctions.getDefaultValuesFromXSD=function(){var DatetimeValue=require("../core/datetime_value.js"),NumberValue=require("../core/number_value.js"),Displacement=require("../math/displacement.js"),Insets=require("../math/insets.js"),Point=require("../math/point.js"),RGBColor=require("../math/rgb_color.js");return{window:{border:2,margin:function(){return new Insets(2,2,2,2)},padding:function(){return new Insets(5,5,5,5)},bordercolor:function(){return new RGBColor.parse("0x000000")}},legend:{icon:{height:30,width:40,border:1},visible:null,base:function(){return new Point(1,1)},anchor:function(){return new Point(1,1)},position:function(){return new Point(0,0)},frame:"plot",color:function(){return new RGBColor.parse("0xffffff")},bordercolor:function(){return new RGBColor.parse("0x000000")},opacity:1,border:1,rows:void 0,columns:void 0,cornerradius:0,padding:0},background:{img:{src:void 0,anchor:function(){return new Point(-1,-1)},base:function(){return new Point(-1,-1)},position:function(){return new Point(0,0)},frame:"padding"},color:"0xffffff"},plotarea:{margin:function(){return new Insets(10,38,35,35)},border:0,color:null,bordercolor:function(){return new RGBColor.parse("0xeeeeee")}},title:{text:void 0,frame:"padding",border:0,color:function(){return new RGBColor.parse("0xffffff")},bordercolor:function(){return new RGBColor.parse("0x000000")},opacity:1,padding:0,cornerradius:15,anchor:function(){return new Point(0,1)},base:function(){return new Point(0,1)},position:function(){return new Point(0,0)}},horizontalaxis:{title:{content:void 0,anchor:void 0,base:0,position:void 0,"position-horizontal-top":function(){return new Point(0,15)},"position-horizontal-bottom":function(){return new Point(0,-18)},"position-vertical-right":function(){return new Point(33,0)},"position-vertical-left":function(){return new Point(-25,0)},"anchor-horizontal-top":function(){return new Point(0,-1)},"anchor-horizontal-bottom":function(){return new Point(0,1)},"anchor-vertical-right":function(){return new Point(-1,0)},"anchor-vertical-left":function(){return new Point(1,0)},angle:0},labels:{label:{format:void 0,position:void 0,anchor:void 0,"position-horizontal-top":function(){return new Point(0,5)},"position-horizontal-bottom":function(){return new Point(0,-5)},"position-vertical-right":function(){return new Point(5,0)},"position-vertical-left":function(){return new Point(-8,0)},"anchor-horizontal-top":function(){return new Point(0,-1)},"anchor-horizontal-bottom":function(){return new Point(0,1)},"anchor-vertical-right":function(){return new Point(-1,0)},"anchor-vertical-left":function(){return new Point(1,0)},angle:0,spacing:void 0,densityfactor:1,color:function(){return new RGBColor.parse("0x000000")},visible:!0},"start-number":function(){return new NumberValue(0)},"start-datetime":function(){return new DatetimeValue(0)},angle:0,position:function(){return new Point(0,0)},anchor:function(){return new Point(0,0)},color:function(){return new RGBColor.parse("0x000000")},visible:!0,defaultNumberSpacing:[1e4,5e3,2e3,1e3,500,200,100,50,20,10,5,2,1,.1,.01,.001],defaultDatetimeSpacing:["1000Y","500Y","200Y","100Y","50Y","20Y","10Y","5Y","2Y","1Y","6M","3M","2M","1M","7D","3D","2D","1D","12H","6H","3H","2H","1H"],function:void 0,densityfactor:void 0},grid:{color:function(){return new RGBColor.parse("0xeeeeee")},visible:!1},pan:{allowed:!0,min:null,max:null},zoom:{allowed:!0,min:void 0,max:void 0,anchor:null},binding:{id:void 0,min:void 0,max:void 0},id:void 0,type:"number",length:function(){return new Displacement(1,0)},position:function(){return new Point(0,0)},pregap:0,postgap:0,anchor:-1,base:function(){return new Point(-1,-1)},min:"auto",minoffset:0,minposition:function(){return new Displacement(-1,0)},max:"auto",maxoffset:0,maxposition:function(){return new Displacement(1,0)},positionbase:void 0,color:function(){return new RGBColor(0,0,0)},tickmin:-3,tickmax:3,tickcolor:null,highlightstyle:"axis",linewidth:1,orientation:void 0},verticalaxis:{title:{content:void 0,anchor:function(){return new Point(0,-20)},position:function(){return new Point(0,1)},angle:"0"},labels:{label:{format:void 0,start:void 0,angle:void 0,position:void 0,anchor:void 0,spacing:void 0,densityfactor:void 0},format:"%1d",visible:"true",start:"0",angle:"0.0",position:"0 0",anchor:"0 0",function:void 0,densityfactor:void 0},grid:{visible:"false"},pan:{allowed:"yes",min:void 0,max:void 0},zoom:{allowed:"yes",min:void 0,max:void 0,anchor:"none"},binding:{id:void 0,min:void 0,max:void 0},id:void 0,type:"number",position:"0 0",pregap:"0",postgap:"0",anchor:"-1",base:"-1 1",min:"auto",minoffset:"0",minposition:"-1",max:"auto",maxoffset:"0",maxposition:"1",positionbase:void 0,tickmin:"-3",tickmax:"3",highlightstyle:"axis",linewidth:"1",orientation:void 0},plot:{legend:{visible:!0,label:void 0},horizontalaxis:{variable:{ref:void 0,factor:void 0},constant:{value:void 0},ref:void 0},verticalaxis:{variable:{ref:void 0,factor:void 0},constant:{value:void 0},ref:void 0},filter:{option:{name:void 0,value:void 0},type:void 0},renderer:{option:{name:void 0,value:void 0,min:void 0,max:void 0},type:function(){return require("../core/renderer.js").Type.parse("line")}},datatips:{variable:{"formatString-number":"%.2f","formatString-datetime":"%d %n %Y"},formatString:"{0}: {1}",bgcolor:function(){return RGBColor.parse("0xeeeeee")},bgalpha:1,border:1,bordercolor:function(){return RGBColor.parse("0x000000")},pad:2}},throttle:{pattern:"",requests:0,period:0,concurrent:0},data:{variables:{variable:{id:void 0,column:void 0,type:"number",missingvalue:void 0,missingop:void 0},missingvalue:"-9000",missingop:"eq"},values:{content:void 0},csv:{location:void 0},service:{location:void 0}}}},module.exports=utilityFunctions},{"../core/datetime_value.js":37,"../core/number_value.js":51,"../core/renderer.js":57,"../math/displacement.js":101,"../math/insets.js":103,"../math/point.js":104,"../math/rgb_color.js":105}],158:[function(require,module,exports){var ValidationFunctions={validateNumberRange:function(number,lowerBound,upperBound){return"number"==typeof number&&lowerBound<=number&&number<=upperBound},typeOf:function(value){var s=typeof value;return"object"===s&&(value?"[object Array]"===Object.prototype.toString.call(value)&&(s="array"):s="null"),s},isNumberNotNaN:function(x){return"number"==typeof x&&x==x}};module.exports=ValidationFunctions},{}]},{},[99]),function($){function fahrenheit_to_celsius(f){return 5/9*(f-32)}function fdd_to_cdd(fdd){return fdd/9*5}function no_conversion(x){return x}String.prototype.endsWith||(String.prototype.endsWith=function(searchString,position){var subjectString=this.toString();("number"!=typeof position||!isFinite(position)||Math.floor(position)!==position||position>subjectString.length)&&(position=subjectString.length),position-=searchString.length;var lastIndex=subjectString.indexOf(searchString,position);return-1!==lastIndex&&lastIndex===position});var defaultUnitSystem="english";function get_region_reduction(obj){return obj.options.bbox?{area_reduce:"bbox_mean"}:obj.options.state?{area_reduce:"state_mean"}:void 0}function get_region_value(obj){return obj.options.bbox?obj.options.bbox:obj.options.state?obj.options.state:void 0}function get_region_parameters(obj){if(obj.options.bbox)return{bbox:obj.options.bbox}}var variables=[{id:"tmax",title:{english:"Average Daily Max Temp",metric:"Average Daily Max Temp"},acis_elements:{annual:{name:"maxt",units:"degreeF",interval:"yly",duration:"yly",reduce:"mean"},monthly:{name:"maxt",units:"degreeF",interval:"mly",duration:"mly",reduce:"mean"}},dataconverters:{metric:fahrenheit_to_celsius,english:no_conversion},ytitles:{annual:{absolute:{english:"Average Daily Max Temp (°F)",metric:"Average Daily Max Temp (°C)"},anomaly:{english:"Average Daily Max Temp departure (°F)",metric:"Average Daily Max Temp departure (°C)"}},monthly:{english:"Average Daily Max Temp (°F)",metric:"Average Daily Max Temp (°C)"},seasonal:{english:"Average Daily Max Temp (°F)",metric:"Average Daily Max Temp (°C)"}}},{id:"tmin",title:{english:"Average Daily Min Temp",metric:"Average Daily Min Temp"},acis_elements:{annual:{name:"mint",units:"degreeF",interval:"yly",duration:"yly",reduce:"mean"},monthly:{name:"mint",units:"degreeF",interval:"mly",duration:"mly",reduce:"mean"}},dataconverters:{metric:fahrenheit_to_celsius,english:no_conversion},ytitles:{annual:{absolute:{english:"Average Daily Min Temp (°F)",metric:"Average Daily Min Temp (°C)"},anomaly:{english:"Average Daily Min Temp departure (°F)",metric:"Average Daily Min Temp departure (°C)"}},monthly:{english:"Average Daily Min Temp (°F)",metric:"Average Daily Min Temp (°C)"},seasonal:{english:"Average Daily Min Temp (°F)",metric:"Average Daily Min Temp (°C)"}}},{id:"days_tmax_gt_90f",title:{english:" Days per year with max above 90°F",metric:" Days per year with max above 90°F"},acis_elements:{annual:{name:"maxt",interval:"yly",duration:"yly",reduce:"cnt_gt_90"}},dataconverters:{metric:no_conversion,english:no_conversion},ytitles:{annual:{absolute:{english:" Days per year with max above 90°F",metric:" Days per year with max above 90°F"},anomaly:{english:" Days per year with max above 90°F",metric:" Days per year with max above 90°F"}}}},{id:"days_tmax_gt_95f",title:{english:"Days per year with max above 95°F",metric:"Days per year with max above 35°C"},acis_elements:{annual:{name:"maxt",interval:"yly",duration:"yly",reduce:"cnt_gt_95"}},dataconverters:{metric:no_conversion,english:no_conversion},ytitles:{annual:{absolute:{english:"Days per year with max above 95°F",metric:"Days per year with max above 95°C"},anomaly:{english:"Days per year with max above 95°F departure",metric:"Days per year with max above 95°C departure"}}}},{id:"days_tmax_gt_100f",title:{english:"Days per year with max above 100°F",metric:"Days per year with max above 100°F"},acis_elements:{annual:{name:"maxt",interval:"yly",duration:"yly",reduce:"cnt_gt_100"}},dataconverters:{metric:no_conversion,english:no_conversion},ytitles:{annual:{absolute:{english:"Days per year with max above 100°F",metric:"Days per year with max above 100°F"},anomaly:{english:" Days per year with max above 100°F",metric:" Days per year with max above 100°F"}}}},{id:"days_tmax_gt_105f",title:{english:"Days per year with max above 105°F",metric:"Days per year with max above 105°F"},acis_elements:{annual:{name:"maxt",interval:"yly",duration:"yly",reduce:"cnt_gt_105"}},dataconverters:{metric:no_conversion,english:no_conversion},ytitles:{annual:{absolute:{english:"Days per year with max above 105°F",metric:"Days per year with max above 105°F"},anomaly:{english:"Days per year with max above 105°F departure",metric:"Days per year with max above 105°F departure"}}}},{id:"days_tmax_lt_32f",title:{english:"Days per year with max below 32°F (Icing days)",metric:"Days per year with max below 0°C (Icing days)"},acis_elements:{annual:{name:"maxt",interval:"yly",duration:"yly",reduce:"cnt_lt_32"}},dataconverters:{metric:no_conversion,english:no_conversion},ytitles:{annual:{absolute:{english:"Days per year with max below 32°F (Icing days)",metric:"Days per year with max below 0°C (Icing days)"},anomaly:{english:"Days per year with max below 32°F departure",metric:"Days per year with max below 0°C departure"}}}},{id:"days_tmin_lt_32f",title:{english:"Days per year with min below 32°F (frost days)",metric:"Days per year with min below 0°C (frost days)"},acis_elements:{annual:{name:"mint",interval:"yly",duration:"yly",reduce:"cnt_lt_32"}},dataconverters:{metric:no_conversion,english:no_conversion},ytitles:{annual:{absolute:{english:"Days per year with min below 32°F (frost days)",metric:"Days per year with min below 0°C (frost days)"},anomaly:{english:"Days per year with min below 32°F (frost days)",metric:"Days per year with min below 0°C (frost days)"}}}},{id:"days_tmin_gt_80f",title:{english:"Days per year with min above 80°F",metric:"Days per year with min above 80°F"},acis_elements:{annual:{name:"mint",interval:"yly",duration:"yly",reduce:"cnt_gt_80"},monthly:{name:"mint",interval:"mly",duration:"mly",reduce:"cnt_gt_80"}},dataconverters:{metric:no_conversion,english:no_conversion},ytitles:{annual:{absolute:{english:"Days per year with min above 80°F",metric:"Days per year with min above 80°F"},anomaly:{english:"Days per year with min above 80°F departure",metric:"Days per year with min above 80°F departure"}}}},{id:"days_tmin_gt_90f",title:{english:"Days per year with min above 90°F",metric:"Days per year with min above 90°F"},acis_elements:{annual:{name:"mint",interval:"yly",duration:"yly",reduce:"cnt_gt_90"},monthly:{name:"mint",interval:"mly",duration:"mly",reduce:"cnt_gt_90"}},dataconverters:{metric:no_conversion,english:no_conversion},ytitles:{annual:{absolute:{english:"Days per year with min above 90°F",metric:"Days per year with min above 90°F"},anomaly:{english:"Days per year with min above 90°F departure",metric:"Days per year with min above 90°F departure"}}}},{id:"hdd_65f",title:{english:"Heating Degree Days",metric:"Heating Degree Days"},acis_elements:{annual:{name:"hdd",interval:"yly",duration:"yly",reduce:"sum"}},dataconverters:{metric:fdd_to_cdd,english:no_conversion},ytitles:{annual:{absolute:{english:"Heating Degree Days (°F-days)",metric:"Heating Degree Days (°C-days)"},anomaly:{english:"Heating Degree Days departure (°F-days)",metric:"Heating Degree Days departure (°C-days)"}}}},{id:"cdd_65f",title:{english:"Cooling Degree Days",metric:"Cooling Degree Days"},acis_elements:{annual:{name:"cdd",interval:"yly",duration:"yly",reduce:"sum"}},dataconverters:{metric:fdd_to_cdd,english:no_conversion},ytitles:{annual:{absolute:{english:"Cooling Degree Days (°F-days)",metric:"Cooling Degree Days (°C-days)"},anomaly:{english:"Cooling Degree Days departure (°F-days)",metric:"Cooling Degree Days departure (°C-days)"}}}},{id:"gdd",title:{english:"Growing Degree Days",metric:"Growing Degree Days"},acis_elements:{annual:{name:"gdd",interval:"yly",duration:"yly",reduce:"sum"}},dataconverters:{metric:no_conversion,english:no_conversion},ytitles:{annual:{absolute:{english:"Growing Degree Days (°F-days)",metric:"Growing Degree Days (°C-days)"},anomaly:{english:"Growing Degree Days departure (°F-days)",metric:"Growing Degree Days departure (°C-days)"}}}},{id:"gddmod",title:{english:"Modified Growing Degree Days",metric:"Modified Growing Degree Days"},acis_elements:{annual:{name:"gdd",duration:"yly",limit:[86,50],interval:"yly",reduce:"sum"}},dataconverters:{metric:no_conversion,english:no_conversion},ytitles:{annual:{absolute:{english:"Modified Growing Degree Days (°F-days)",metric:"Modified Growing Degree Days (°C-days)"},anomaly:{english:"Modified Growing Degree Days departure (°F-days)",metric:"Modified Growing Degree Days departure (°C-days)"}}}},{id:"pcpn",title:{english:"Total Precipitation",metric:"Total Precipitation"},acis_elements:{annual:{name:"pcpn",interval:"yly",duration:"yly",reduce:"sum",units:"inch"},monthly:{name:"pcpn",interval:"mly",duration:"mly",reduce:"sum",units:"inch"}},dataconverters:{metric:function(inches){return 25.4*inches},english:no_conversion},ytitles:{annual:{absolute:{english:"Total Precipitation",metric:"Total Precipitation"},anomaly:{english:"Total Precipitation departure (%)",metric:"Total Precipitation departure (%)"}},monthly:{english:"Total Precipitation",metric:"Total Precipitation"},seasonal:{english:"Total Precipitation",metric:"Total Precipitation"}}},{id:"days_pcpn_lt_0.01in",title:{english:"Dry Days",metric:"Dry Days"},acis_elements:{annual:{name:"pcpn",interval:"yly",duration:"yly",reduce:"cnt_lt_0.01"},monthly:{name:"pcpn",interval:"mly",duration:"mly",reduce:"cnt_lt_0.01"}},dataconverters:{metric:no_conversion,english:no_conversion},ytitles:{annual:{absolute:{english:"Dry Days (days/period)",metric:"Dry Days (days/period)"},anomaly:{english:"Dry Days (days/period)",metric:"Dry Days (days/period)"}},seasonal:{english:"Dry Days (days/period)",metric:"Dry Days (days/period)"}}},{id:"days_pcpn_gt_1in",title:{english:"Days per year with more than 1in precip",metric:"Days per year with more than 25.3mm precip"},acis_elements:{annual:{name:"pcpn",interval:"yly",duration:"yly",reduce:"cnt_gt_1"}},dataconverters:{metric:no_conversion,english:no_conversion},ytitles:{annual:{absolute:{english:"Days per year with more than 1in precip",metric:"Days per year with more than 25.3mm precip"},anomaly:{english:"Days per year with more than 1in precip departure",metric:"Days per year with more than 25.3mm precip departure"}}}},{id:"days_pcpn_gt_2in",title:{english:"Days per year with more than 2in precip",metric:"Days per year with more than 50.8mm precip"},acis_elements:{annual:{name:"pcpn",interval:"yly",duration:"yly",reduce:"cnt_gt_2"}},dataconverters:{metric:no_conversion,english:no_conversion},ytitles:{annual:{absolute:{english:"Days per year with more than 2in precip",metric:"Days of Precipitation Above 50.8mm"},anomaly:{english:"Days per year with more than 2in precip departure",metric:"Days of Precipitation Above 50.8mm departure"}}}},{id:"days_pcpn_gt_3in",title:{english:"Days per year with more than 3in precip",metric:"Days per year with more than 76.2mm precip"},acis_elements:{annual:{name:"pcpn",interval:"yly",duration:"yly",reduce:"cnt_gt_3"}},dataconverters:{metric:no_conversion,english:no_conversion},ytitles:{annual:{absolute:{english:"Days per year with more than 3in precip",metric:"Days per year with more than 76.2mm precip"},anomaly:{english:"Days per year with more than 3in precip departure",metric:"Days per year with more than 76.2mm precip departure"}}}},{id:"days_pcpn_gt_4in",title:{english:"Days per year with more than 4in precip",metric:"Days per year with more than 101.6mm precip"},acis_elements:{annual:{name:"pcpn",interval:"yly",duration:"yly",reduce:"cnt_gt_4"}},dataconverters:{metric:no_conversion,english:no_conversion},ytitles:{annual:{absolute:{english:"Days per year with more than 4in precip",metric:"Days per year with more than 101.6mm precip"},anomaly:{english:"Days per year with more than 4in precip departure",metric:"Days per year with more than 101.6mm precip departure"}}}}];function variable_config(id){var i;for(i=0;i<variables.length;++i)if(variables[i].id===id)return variables[i]}function transform_data(data,f){var i,j;for(i=0;i<data.length;++i)for(j=1;j<data[i].length;++j)data[i][j]=f(data[i][j]);return data}function datas_range(datas){var min=datas[0][0][1],max=datas[0][0][1];return datas.forEach(function(data){data.forEach(function(row){row.slice(1).forEach(function(value){null!==value&&(value<min&&(min=value),max<value&&(max=value))})})}),{min:min,max:max}}function scale_range(range,factor){var r=(range.max-range.min)/2,c=(range.max+range.min)/2;return{min:c-r*factor,max:c+r*factor}}var _i=0,starti=function(v){return _i=v||0},nexti=function(){return++_i};function attr_list_array(attr_list){var i,a=[];for(i=0;i<attr_list.size();++i)a.push(attr_list.at(i));return a}function each_plot(obj,f){Object.keys(obj).forEach(function(key){obj[key]instanceof window.multigraph.core.Plot?f(obj[key]):"object"==typeof obj[key]&&each_plot(obj[key],f)})}var KeyObjProto={set_in:function(keys,value){var p=this;keys.slice(0,-1).forEach(function(key){if(key in p){if(!(p=p[key]).set_in)throw new Error("set_in: cannot drill into non-KeyObj object")}else p[key]=new KeyObj,p=p[key]}),p[keys[keys.length-1]]=value},get_in:function(keys){for(var i=0,obj=this;obj.get_in&&i<keys.length&&void 0!==keys[i]&&keys[i]in obj;)obj=obj[keys[i]],++i;return obj},each_keys:function(levels,f,k){if(void 0!==k){if(0!==levels.length){var level=levels[0],that=this;Object.keys(this).forEach(function(keyValue){if(that.hasOwnProperty(keyValue)){var d={};d[level]=keyValue,k=$.extend({},k,d),that[keyValue].each_keys&&1!==levels.length?that[keyValue].each_keys(levels.slice(1),f,k):f(k)}})}}else this.each_keys(levels,f,{})}};function KeyObj(){this.__proto__=KeyObjProto}function get_historical_observed_data(obj){var freq="annual"===obj.options.frequency?"annual":"monthly",elems=[$.extend(variable_config(obj.options.variable).acis_elements[freq],get_region_reduction(obj))];return $.ajax({url:obj.options.data_api_endpoint,type:"POST",contentType:"application/json; charset=utf-8",dataType:"json",timeout:6e4,data:JSON.stringify($.extend({sdate:"1950-01-01",edate:"2013-12-31",grid:"livneh",elems:elems},get_region_parameters(obj)))}).then(function(response){var data;if("annual"===obj.options.frequency)return data=flatten_and_average(response.data),obj.dataurls.hist_obs="data:text/csv;base64,"+window.btoa("year,"+variable_config(obj.options.variable).id+"\n"+data.join("\n")),data;if("monthly"===obj.options.frequency||"seasonal"===obj.options.frequency){if(data={"01":[],"02":[],"03":[],"04":[],"05":[],"06":[],"07":[],"08":[],"09":[],10:[],11:[],12:[]},flatten_and_average(response.data).forEach(function(record){data[record[0].slice(-2)].push(parseFloat(record[1]))}),"seasonal"===obj.options.frequency){var seasons={"01":["12","01","02"],"04":["03","04","05"],"07":["06","07","08"],10:["09","10","11"]};data=Object.keys(seasons).reduce(function(acc,season){return acc[season]=[].concat(data[seasons[season][0]],data[seasons[season][1]],data[seasons[season][2]]),acc},{})}var mean=Object.keys(data).reduce(function(acc,key){return acc[key]=Math.round(data[key].reduce(function(a,b){return a+b})/data[key].length*10)/10,acc},{}),export_data=[];return data=Object.keys(data).reduce(function(acc,key){return acc.push([parseInt(key),null,mean[key]]),export_data.push([parseInt(key),mean[key]]),acc},[]).sort(function(a,b){return parseInt(a[0])-parseInt(b[0])}),export_data.sort(function(a,b){return parseInt(a[0])-parseInt(b[0])}),obj.dataurls.hist_obs="data:text/csv;base64,"+window.btoa("month,weighted_mean\n"+export_data.join("\n")),data}})}function flatten_and_average(records){var return_data=[];return _.forEach(records,function(record){mean=_.mean(_.filter(_.flattenDeep(record[1]),function(v){return void 0!==v&&"-999"!==String(v)&&""!==String(v)})),return_data.push([record[0],mean])}),return_data}function get_loca_data(obj,grid,sdate,edate){var freq="annual"===obj.options.frequency?"annual":"monthly",elems=[$.extend(variable_config(obj.options.variable).acis_elements[freq],get_region_reduction(obj))];return $.ajax({url:obj.options.data_api_endpoint,type:"POST",contentType:"application/json; charset=utf-8",dataType:"json",data:JSON.stringify($.extend({grid:grid,sdate:String(sdate),edate:String(edate),elems:elems},get_region_parameters(obj)))}).then(function(response){var data={};return flatten_and_average(response.data).forEach(function(record){data[record[0]]=record[1]}),data})}function get_projected_model_data(obj){var sdate;return sdate="annual"===obj.options.frequency?"2006-01-01":"2010-01-01",$.when.apply($,[get_loca_data(obj,"loca:wMean:rcp45",sdate,"2099-12-31"),get_loca_data(obj,"loca:allMin:rcp45",sdate,"2099-12-31"),get_loca_data(obj,"loca:allMax:rcp45",sdate,"2099-12-31"),get_loca_data(obj,"loca:wMean:rcp85",sdate,"2099-12-31"),get_loca_data(obj,"loca:allMin:rcp85",sdate,"2099-12-31"),get_loca_data(obj,"loca:allMax:rcp85",sdate,"2099-12-31")]).then(function(wMean45,min45,max45,wMean85,min85,max85){var data,seasons={"01":"01","02":"01","03":"04","04":"04","05":"04","06":"07","07":"07","08":"07","09":"10",10:"10",11:"10",12:"01"};if("annual"===obj.options.frequency){data=[],export_data=[];for(var key=2006;key<2100;key++){var values={};values.wMean45=wMean45.hasOwnProperty(key)?Math.round(10*wMean45[key])/10:null,values.min45=min45.hasOwnProperty(key)?Math.round(10*min45[key])/10:null,values.max45=max45.hasOwnProperty(key)?Math.round(10*max45[key])/10:null,values.wMean85=wMean85.hasOwnProperty(key)?Math.round(10*wMean85[key])/10:null,values.min85=min85.hasOwnProperty(key)?Math.round(10*min85[key])/10:null,values.max85=max85.hasOwnProperty(key)?Math.round(10*max85[key])/10:null,data.push([String(key),values.wMean45,values.min45,values.max45,null,null,values.wMean85,values.min85,values.max85,null,null]),export_data.push([String(key),values.wMean45,values.min45,values.max45,values.wMean85,values.min85,values.max85])}return data.sort(function(a,b){return(a[0]>b[0])-(a[0]<b[0])}),export_data.sort(function(a,b){return parseInt(a[0])-parseInt(b[0])}),obj.dataurls.proj_mod="data:text/csv;base64,"+window.btoa("year,rcp45_weighted_mean,rcp45_min,rcp45_max,rcp85_weighted mean,rcp85_min,rcp85_max\n"+export_data.join("\n")),export_data=[],data}if("monthly"===obj.options.frequency||"seasonal"===obj.options.frequency){data={},[2025,2050,2075].forEach(function(yearRange){data[yearRange]={},["01","02","03","04","05","06","07","08","09","10","11","12"].forEach(function(month){var season_month=month;"seasonal"===obj.options.frequency&&(season_month=seasons[month]),void 0===data[yearRange][season_month]&&(data[yearRange][season_month]={});var datasets={wMean45:wMean45,wMean85:wMean85,min45:min45,max45:max45,min85:min85,max85:max85};Object.keys(datasets).forEach(function(dataset){void 0===data[yearRange][season_month][dataset]&&(data[yearRange][season_month][dataset]=[]);for(var year=yearRange-15;year<yearRange+15;year++){var year_month=String(year)+"-"+String(month);datasets[dataset].hasOwnProperty(year_month)&&data[yearRange][season_month][dataset].push(datasets[dataset][year_month])}})})}),Object.keys(data).forEach(function(yearRange){Object.keys(data[yearRange]).forEach(function(month){["wMean45","wMean85","min45","min85","max45","max85"].forEach(function(valueName){var length=data[yearRange][month][valueName].length,sum=data[yearRange][month][valueName].reduce(function(acc,value){return acc+value},0);data[yearRange][month][valueName]=sum/length})})});var dataByMonth={},months=["01","02","03","04","05","06","07","08","09","10","11","12"];"seasonal"===obj.options.frequency&&(months=["01","04","07","10"]),months.forEach(function(month){dataByMonth[month]={},[2025,2050,2075].forEach(function(yearRange){["45","85"].forEach(function(scenario){["max","wMean","min"].forEach(function(valueName){dataByMonth[month][String(yearRange)+"rcp"+String(scenario)+"_"+String(valueName)]=data[yearRange][month][String(valueName)+String(scenario)]})})})});var export_data=[],result=[];return Object.keys(dataByMonth).forEach(function(month){result.push([month,dataByMonth[month]["2025rcp45_max"],dataByMonth[month]["2025rcp45_wMean"],dataByMonth[month]["2025rcp45_min"],null,null,dataByMonth[month]["2025rcp85_max"],dataByMonth[month]["2025rcp85_wMean"],dataByMonth[month]["2025rcp85_min"],null,null,dataByMonth[month]["2050rcp45_max"],dataByMonth[month]["2050rcp45_wMean"],dataByMonth[month]["2050rcp45_min"],null,null,dataByMonth[month]["2050rcp85_max"],dataByMonth[month]["2050rcp85_wMean"],dataByMonth[month]["2050rcp85_min"],null,null,dataByMonth[month]["2075rcp45_max"],dataByMonth[month]["2075rcp45_wMean"],dataByMonth[month]["2075rcp45_min"],null,null,dataByMonth[month]["2075rcp85_max"],dataByMonth[month]["2075rcp85_wMean"],dataByMonth[month]["2075rcp85_min"],null,null]),export_data.push([month,Math.round(10*dataByMonth[month]["2025rcp45_max"])/10,Math.round(10*dataByMonth[month]["2025rcp45_wMean"])/10,Math.round(10*dataByMonth[month]["2025rcp45_min"])/10,Math.round(10*dataByMonth[month]["2025rcp85_max"])/10,Math.round(10*dataByMonth[month]["2025rcp85_wMean"])/10,Math.round(10*dataByMonth[month]["2025rcp85_min"])/10,Math.round(10*dataByMonth[month]["2050rcp45_max"])/10,Math.round(10*dataByMonth[month]["2050rcp45_wMean"])/10,Math.round(10*dataByMonth[month]["2050rcp45_min"])/10,Math.round(10*dataByMonth[month]["2050rcp85_max"])/10,Math.round(10*dataByMonth[month]["2050rcp85_wMean"])/10,Math.round(10*dataByMonth[month]["2050rcp85_min"])/10,Math.round(10*dataByMonth[month]["2075rcp45_max"])/10,Math.round(10*dataByMonth[month]["2075rcp45_wMean"])/10,Math.round(10*dataByMonth[month]["2075rcp45_min"])/10,Math.round(10*dataByMonth[month]["2075rcp85_max"])/10,Math.round(10*dataByMonth[month]["2075rcp85_wMean"])/10,Math.round(10*dataByMonth[month]["2075rcp85_min"])/10])}),result.sort(function(a,b){return(a[0]>b[0])-(a[0]<b[0])}),export_data.sort(function(a,b){return parseInt(a[0])-parseInt(b[0])}),obj.dataurls.proj_mod="data:text/csv;base64,"+window.btoa("month,2025_rcp45_max,2025_rcp45_weighted_mean,2025_rcp45_min,2025_rcp85_max,2025_rcp85_weighted_mean,2025_rcp85_min,2050_rcp45_max,2050_rcp45_weighted_mean,2050_rcp45_min,2050_rcp85_max,2050_rcp85_weighted_mean,2050_rcp85_min,2075_rcp45_max,2075_rcp45_weighted_mean,2075_rcp45_min,2075_rcp85_max,2075_rcp85_weighted_mean,2075_rcp85_min\n"+export_data.join("\n")),result}})}function anomalies(data,ref){return data.map(function(row){var i,arow=[row[0]];for(i=1;i<row.length;++i)arow[i]=row[i]-ref;return arow})}function percent_anomalies(data,ref){return data.map(function(row){var i,arow=[row[0]];for(i=1;i<row.length;++i)null!==row[i]?arow[i]=100*row[i]/ref:arow[i]=row[i];return arow})}function band_plot(x_axis,x,y_axis,y0,y1,fill_color,fill_opacity){var obj={visible:!1,horizontalaxis:{},verticalaxis:{},style:"band",options:{fillcolor:fill_color,fillopacity:fill_opacity,linewidth:0}};return obj.horizontalaxis[x_axis]=x,obj.verticalaxis[y_axis]=[y0,y1],obj}function line_plot(x_axis,x,y_axis,y,line_color,dashed){var obj={visible:!1,horizontalaxis:{},verticalaxis:{},style:"line",options:{linecolor:line_color,linestroke:dashed?"dashed":"solid",linewidth:2}};return obj.horizontalaxis[x_axis]=x,obj.verticalaxis[y_axis]=y,obj}function range_bar_plot(x_axis,x,y_axis,y0,y1,bar_color,line_color,baroffset,fillopacity){var obj={horizontalaxis:{},verticalaxis:{},style:"rangebar",options:{fillcolor:bar_color,fillopacity:fillopacity,barwidth:.5,baroffset:baroffset,linecolor:line_color}};return obj.horizontalaxis[x_axis]=x,obj.verticalaxis[y_axis]=[y0,y1],obj}var x_axis,x,y_axis,y,ref,obj,colors_reds={line:"#f5442d",innerBand:"#f65642",outerBand:"#f76956"},colors_blues={line:"#0058cf",innerBand:"#1968d3",outerBand:"#3279d8"},colors_grays={innerBand:"#aaaaaa",outerBand:"#bbbbbb"},colors_opacities={ann_hist_1090:.6,ann_hist_minmax:.6,ann_proj_1090:.5,ann_proj_minmax:.5,mon_proj_1090:.5,mon_proj_minmax:.5},mugl={legend:!1,window:{border:0,padding:0,margin:0},plotarea:{marginleft:55,marginright:0},horizontalaxis:[{id:"x_annual",min:1949.5,max:2099.5,title:!1,visible:!0,labels:{label:[{format:"%1d",spacing:[100,50,20,10,5,2,1]}]},pan:{min:1949.5,max:2099.5},zoom:{min:"10Y",max:"151Y"},grid:!0},{id:"x_monthly",min:-2,max:12,title:!1,visible:!1,labels:{label:[{format:["Dec","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov"],spacing:[1]}]},pan:{allowed:"no"},zoom:{allowed:"no"},grid:!0},{id:"x_seasonal",min:-.5,max:3.5,title:!1,visible:!1,labels:{label:[{format:["Winter","Spring","Summer","Fall"],spacing:[1]}]},pan:{allowed:"no"},zoom:{allowed:"no"}}],verticalaxis:{id:"y",min:0,max:2e3,grid:!0,title:{text:" ",angle:90,anchor:[0,-1],position:[-40,0]},visible:!0,labels:{label:[{format:"%1d",spacing:[1e4,5e3,2e3,1e3,500,200,100,50,20,10,5,2,1]},{format:"%.1f",spacing:[.5,.2,.1]},{format:"%.2f",spacing:[.05,.02,.01]}]},pan:{allowed:"yes",min:-7500.5,max:10000.5},zoom:{allowed:"yes",min:.05,max:1e4}},plots:[band_plot("x_annual","annual_hist_mod_x","y","annual_hist_mod_min","annual_hist_mod_max",colors_grays.outerBand,colors_opacities.ann_hist_minmax),band_plot("x_annual","annual_hist_mod_x","y","annual_hist_mod_p10","annual_hist_mod_p90",colors_grays.innerBand,colors_opacities.ann_hist_1090),band_plot("x_annual","annual_proj_mod_x","y","annual_proj_mod_min_rcp45","annual_proj_mod_max_rcp45",colors_blues.outerBand,colors_opacities.ann_proj_minmax),band_plot("x_annual","annual_proj_mod_x","y","annual_proj_mod_p10_rcp45","annual_proj_mod_p90_rcp45",colors_blues.innerBand,colors_opacities.ann_proj_1090),band_plot("x_annual","annual_proj_mod_x","y","annual_proj_mod_min_rcp85","annual_proj_mod_max_rcp85",colors_reds.outerBand,colors_opacities.ann_proj_minmax),band_plot("x_annual","annual_proj_mod_x","y","annual_proj_mod_p10_rcp85","annual_proj_mod_p90_rcp85",colors_reds.innerBand,colors_opacities.ann_proj_1090),(x_axis="x_annual",x="annual_hist_obs_x",y_axis="y",y="annual_hist_obs_y",ref=0,obj={visible:!1,horizontalaxis:{},verticalaxis:{},style:"bar",options:{barbase:ref,fillcolor:[{value:"0x777777",min:ref},{value:"0x777777",max:ref}],barwidth:1,baroffset:.5,linecolor:"#000000",hidelines:999}},obj.horizontalaxis[x_axis]=x,obj.verticalaxis[y_axis]=y,obj),line_plot("x_annual","annual_hist_mod_x","y","annual_hist_mod_med","#000000"),line_plot("x_annual","annual_proj_mod_x","y","annual_proj_mod_med_rcp45",colors_blues.line),line_plot("x_annual","annual_proj_mod_x","y","annual_proj_mod_med_rcp85",colors_reds.line),line_plot("x_monthly","monthly_hist_obs_x","y","monthly_hist_obs_med","#000000"),band_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_min_rcp45_2025","monthly_proj_mod_max_rcp45_2025",colors_blues.innerBand,colors_opacities.mon_proj_minmax),band_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_min_rcp85_2025","monthly_proj_mod_max_rcp85_2025",colors_reds.innerBand,colors_opacities.mon_proj_minmax),band_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_p10_rcp45_2025","monthly_proj_mod_p90_rcp45_2025",colors_blues.innerBand,colors_opacities.mon_proj_1090),band_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_p10_rcp85_2025","monthly_proj_mod_p90_rcp85_2025",colors_reds.innerBand,colors_opacities.mon_proj_1090),line_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_med_rcp45_2025",colors_blues.outerBand),line_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_med_rcp85_2025",colors_reds.line),band_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_min_rcp45_2050","monthly_proj_mod_max_rcp45_2050",colors_blues.innerBand,colors_opacities.mon_proj_minmax),band_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_min_rcp85_2050","monthly_proj_mod_max_rcp85_2050",colors_reds.innerBand,colors_opacities.mon_proj_minmax),band_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_p10_rcp45_2050","monthly_proj_mod_p90_rcp45_2050",colors_blues.innerBand,colors_opacities.mon_proj_1090),band_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_p10_rcp85_2050","monthly_proj_mod_p90_rcp85_2050",colors_reds.innerBand,colors_opacities.mon_proj_1090),line_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_med_rcp45_2050",colors_blues.outerBand),line_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_med_rcp85_2050",colors_reds.line),band_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_min_rcp45_2075","monthly_proj_mod_max_rcp45_2075",colors_blues.innerBand,colors_opacities.mon_proj_minmax),band_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_min_rcp85_2075","monthly_proj_mod_max_rcp85_2075",colors_reds.innerBand,colors_opacities.mon_proj_minmax),band_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_p10_rcp45_2075","monthly_proj_mod_p90_rcp45_2075",colors_blues.innerBand,colors_opacities.mon_proj_1090),band_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_p10_rcp85_2075","monthly_proj_mod_p90_rcp85_2075",colors_reds.innerBand,colors_opacities.mon_proj_1090),line_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_med_rcp45_2075",colors_blues.outerBand),line_plot("x_monthly","monthly_proj_mod_x","y","monthly_proj_mod_med_rcp85_2075",colors_reds.line),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_min_rcp45_2025","seasonal_proj_mod_max_rcp45_2025",colors_blues.innerBand,colors_blues.innerBand,.25,.4),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_min_rcp85_2025","seasonal_proj_mod_max_rcp85_2025",colors_reds.innerBand,colors_reds.innerBand,0,.4),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_p10_rcp45_2025","seasonal_proj_mod_p90_rcp45_2025",colors_blues.innerBand,colors_blues.innerBand,.25,.4),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_p10_rcp85_2025","seasonal_proj_mod_p90_rcp85_2025",colors_reds.innerBand,colors_reds.innerBand,0,.4),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_min_rcp45_2050","seasonal_proj_mod_max_rcp45_2050",colors_blues.innerBand,colors_blues.innerBand,.25,.4),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_min_rcp85_2050","seasonal_proj_mod_max_rcp85_2050",colors_reds.innerBand,colors_reds.innerBand,0,.4),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_p10_rcp45_2050","seasonal_proj_mod_p90_rcp45_2050",colors_blues.innerBand,colors_blues.innerBand,.25,.4),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_p10_rcp85_2050","seasonal_proj_mod_p90_rcp85_2050",colors_reds.innerBand,colors_reds.innerBand,0,.4),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_min_rcp45_2075","seasonal_proj_mod_max_rcp45_2075",colors_blues.innerBand,colors_blues.innerBand,.25,.4),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_min_rcp85_2075","seasonal_proj_mod_max_rcp85_2075",colors_reds.innerBand,colors_reds.innerBand,0,.4),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_p10_rcp45_2075","seasonal_proj_mod_p90_rcp45_2075",colors_blues.innerBand,colors_blues.innerBand,.25,.4),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_p10_rcp85_2075","seasonal_proj_mod_p90_rcp85_2075",colors_reds.innerBand,colors_reds.innerBand,0,.4),range_bar_plot("x_seasonal","seasonal_hist_obs_x","y","seasonal_hist_obs_med","seasonal_hist_obs_med","#000000","#000000",.5,1),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_med_rcp45_2025","seasonal_proj_mod_med_rcp45_2025","#0000ff","#0000ff",.25,1),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_med_rcp85_2025","seasonal_proj_mod_med_rcp85_2025",colors_reds.line,colors_reds.line,0,1),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_med_rcp45_2050","seasonal_proj_mod_med_rcp45_2050","#0000ff","#0000ff",.25,1),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_med_rcp85_2050","seasonal_proj_mod_med_rcp85_2050",colors_reds.line,colors_reds.line,0,1),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_med_rcp45_2075","seasonal_proj_mod_med_rcp45_2075","#0000ff","#0000ff",.25,1),range_bar_plot("x_seasonal","seasonal_proj_mod_x","y","seasonal_proj_mod_med_rcp85_2075","seasonal_proj_mod_med_rcp85_2075",colors_reds.line,colors_reds.line,0,1)],data:[{variables:[{id:"annual_hist_obs_x"},{id:"annual_hist_obs_y"}],values:[[-9999,0]]},{variables:[{id:"annual_hist_mod_x"},{id:"annual_hist_mod_med"},{id:"annual_hist_mod_min"},{id:"annual_hist_mod_max"},{id:"annual_hist_mod_p10"},{id:"annual_hist_mod_p90"}],values:[[-9999,0,0,0,0,0,0]]},{variables:[{id:"annual_proj_mod_x"},{id:"annual_proj_mod_med_rcp45"},{id:"annual_proj_mod_min_rcp45"},{id:"annual_proj_mod_max_rcp45"},{id:"annual_proj_mod_p10_rcp45"},{id:"annual_proj_mod_p90_rcp45"},{id:"annual_proj_mod_med_rcp85"},{id:"annual_proj_mod_min_rcp85"},{id:"annual_proj_mod_max_rcp85"},{id:"annual_proj_mod_p10_rcp85"},{id:"annual_proj_mod_p90_rcp85"}],values:[[-9999,0,0,0,0,0,0,0,0,0,0]]},{variables:[{id:"monthly_hist_obs_x"},{id:"monthly_hist_obs_mean30"},{id:"monthly_hist_obs_med"}],values:[[-9999,0,0]],repeat:{period:12}},{variables:[{id:"monthly_proj_mod_x"},{id:"monthly_proj_mod_max_rcp45_2025"},{id:"monthly_proj_mod_med_rcp45_2025"},{id:"monthly_proj_mod_min_rcp45_2025"},{id:"monthly_proj_mod_p10_rcp45_2025"},{id:"monthly_proj_mod_p90_rcp45_2025"},{id:"monthly_proj_mod_max_rcp85_2025"},{id:"monthly_proj_mod_med_rcp85_2025"},{id:"monthly_proj_mod_min_rcp85_2025"},{id:"monthly_proj_mod_p10_rcp85_2025"},{id:"monthly_proj_mod_p90_rcp85_2025"},{id:"monthly_proj_mod_max_rcp45_2050"},{id:"monthly_proj_mod_med_rcp45_2050"},{id:"monthly_proj_mod_min_rcp45_2050"},{id:"monthly_proj_mod_p10_rcp45_2050"},{id:"monthly_proj_mod_p90_rcp45_2050"},{id:"monthly_proj_mod_max_rcp85_2050"},{id:"monthly_proj_mod_med_rcp85_2050"},{id:"monthly_proj_mod_min_rcp85_2050"},{id:"monthly_proj_mod_p10_rcp85_2050"},{id:"monthly_proj_mod_p90_rcp85_2050"},{id:"monthly_proj_mod_max_rcp45_2075"},{id:"monthly_proj_mod_med_rcp45_2075"},{id:"monthly_proj_mod_min_rcp45_2075"},{id:"monthly_proj_mod_p10_rcp45_2075"},{id:"monthly_proj_mod_p90_rcp45_2075"},{id:"monthly_proj_mod_max_rcp85_2075"},{id:"monthly_proj_mod_med_rcp85_2075"},{id:"monthly_proj_mod_min_rcp85_2075"},{id:"monthly_proj_mod_p10_rcp85_2075"},{id:"monthly_proj_mod_p90_rcp85_2075"}],values:[[-9999,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],repeat:{period:12}},{variables:[{id:"seasonal_hist_obs_x"},{id:"seasonal_hist_obs_mean30"},{id:"seasonal_hist_obs_med"}],values:[[-9999,0,0]],repeat:{period:4}},{variables:[{id:"seasonal_proj_mod_x"},{id:"seasonal_proj_mod_max_rcp45_2025"},{id:"seasonal_proj_mod_med_rcp45_2025"},{id:"seasonal_proj_mod_min_rcp45_2025"},{id:"seasonal_proj_mod_p10_rcp45_2025"},{id:"seasonal_proj_mod_p90_rcp45_2025"},{id:"seasonal_proj_mod_max_rcp85_2025"},{id:"seasonal_proj_mod_med_rcp85_2025"},{id:"seasonal_proj_mod_min_rcp85_2025"},{id:"seasonal_proj_mod_p10_rcp85_2025"},{id:"seasonal_proj_mod_p90_rcp85_2025"},{id:"seasonal_proj_mod_max_rcp45_2050"},{id:"seasonal_proj_mod_med_rcp45_2050"},{id:"seasonal_proj_mod_min_rcp45_2050"},{id:"seasonal_proj_mod_p10_rcp45_2050"},{id:"seasonal_proj_mod_p90_rcp45_2050"},{id:"seasonal_proj_mod_max_rcp85_2050"},{id:"seasonal_proj_mod_med_rcp85_2050"},{id:"seasonal_proj_mod_min_rcp85_2050"},{id:"seasonal_proj_mod_p10_rcp85_2050"},{id:"seasonal_proj_mod_p90_rcp85_2050"},{id:"seasonal_proj_mod_max_rcp45_2075"},{id:"seasonal_proj_mod_med_rcp45_2075"},{id:"seasonal_proj_mod_min_rcp45_2075"},{id:"seasonal_proj_mod_p10_rcp45_2075"},{id:"seasonal_proj_mod_p90_rcp45_2075"},{id:"seasonal_proj_mod_max_rcp85_2075"},{id:"seasonal_proj_mod_med_rcp85_2075"},{id:"seasonal_proj_mod_min_rcp85_2075"},{id:"seasonal_proj_mod_p10_rcp85_2075"},{id:"seasonal_proj_mod_p90_rcp85_2075"}],values:[[-9999,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],repeat:{period:4}}]};function show_spinner($div){hide_spinner($div);$("<div class='cwg-spinner-wrapper'><div class='cwg-spinner'></div></div>").css({position:"absolute",width:"100%",height:"100%",left:0,top:0,zIndex:1e6}).append("<style>.cwg-spinner { margin-top: -2.5rem; border-radius: 100%;border-style: solid;border-width: 0.25rem;height: 5rem;width: 5rem;animation: basic 1s infinite linear; border-color: rgba(0, 0, 0, 0.2);border-top-color: rgba(0, 0, 0, 1); }@keyframes basic {0% { transform: rotate(0); }100% { transform: rotate(359.9deg); }} .cwg-spinner-wrapper {display:flex; align-items: center; justify-content: center; }</style>").appendTo($div.css("position","relative"))}function hide_spinner($div){$div.children(".cwg-spinner-wrapper").remove()}function set_plot_visibilities(obj){var opts=obj.options;obj.plots.each_keys(["frequency","regime","stat","scenario","timeperiod"],function(k){obj.plots.get_in([k.frequency,k.regime,k.stat,k.scenario,k.timeperiod]).visible(function(opts,frequency,regime,stat,scenario,timeperiod){return opts.frequency===frequency&&("annual"===frequency?"hist_obs"===regime?opts.histobs:"hist_mod"===regime?"med"===stat?opts.histmod&&opts.hmedian:(opts.hrange===stat||"both"===opts.hrange)&&opts.histmod:(opts.scenario===scenario||"both"===opts.scenario)&&("med"===stat?opts.pmedian:opts.prange===stat||"both"===opts.prange):"hist_obs"===regime?opts.histobs:"hist_mod"!==regime&&opts.timeperiod===timeperiod&&(opts.scenario===scenario||"both"===opts.scenario)&&("med"===stat?opts.pmedian:opts.prange===stat||"both"===opts.prange))}(opts,k.frequency,k.regime,k.stat,k.scenario,k.timeperiod))})}window.climate_widget={graph:function(orig_options){var convertArray=window.multigraph.core.ArrayData.stringArrayToDataValuesArray,obj={orig_options:$.extend({},orig_options),options:{unitsystem:defaultUnitSystem,variable:"tmax",frequency:"annual",scenario:"both",timeperiod:"2025",presentation:"absolute",hrange:"minmax",prange:"minmax",pmedian:!1,hmedian:!1,histobs:!0,histmod:!0,yzoom:!0,ypan:!0,data_api_endpoint:"https://grid2.rcc-acis.org/GridData"},$div:$(orig_options.div)};if(!obj.orig_options.dataprefix)throw new Error("climate_widget_graph: property 'dataprefix' is missing");return obj.orig_options.dataprefix.endsWith("/")&&(obj.orig_options.dataprefix=obj.orig_options.dataprefix.replace(/\/$/,"")),obj.$div.empty(),$(".errorDisplayDetails").remove(),obj.$div.append("<div class='graph' style='width: 100%; height: 100%;'></div>"),obj.$graphdiv=obj.$div.find("div.graph"),obj.$graphdiv.multigraph({muglString:mugl,noscroll:!0}),obj.update=function(delta){"string"==typeof delta.pmedian&&(delta.pmedian="true"===delta.pmedian.toLowerCase()),"string"==typeof delta.hmedian&&(delta.hmedian="true"===delta.hmedian.toLowerCase()),"string"==typeof delta.histobs&&(delta.histobs="true"===delta.histobs.toLowerCase()),"string"==typeof delta.histmod&&(delta.histmod="true"===delta.histmod.toLowerCase()),"string"==typeof delta.yzoom&&(delta.yzoom="true"===delta.yzoom.toLowerCase()),"string"==typeof delta.ypan&&(delta.ypan="true"===delta.ypan.toLowerCase());var i,j,old_options=$.extend({},obj.options);if(obj.options=$.extend({},obj.options,delta||{}),set_plot_visibilities(obj),obj.options.yzoom!==old_options.yzoom&&obj.axes.y.zoom().allowed(obj.options.yzoom),obj.options.ypan!==old_options.ypan&&obj.axes.y.pan().allowed(obj.options.ypan),obj.options.font!==old_options.font)for(i=0;i<obj.m.graphs().at(0).axes().size();++i){var axis=obj.m.graphs().at(0).axes().at(i);for(axis.title()&&axis.title().font("14px "+obj.options.font),j=0;j<axis.labelers().size();++j)axis.labelers().at(j).font("12px "+obj.options.font)}if(obj.options.frequency!==old_options.frequency||obj.options.state!==old_options.state||obj.options.bbox!==old_options.bbox||obj.options.presentation!==old_options.presentation||obj.options.variable!==old_options.variable){if("annual"===obj.options.frequency)return obj.axes.x_annual.visible(!0),obj.axes.x_monthly.visible(!1),obj.axes.x_seasonal.visible(!1),each_plot(obj.plots,function(plot){plot.visible(!1)}),obj.dataurls={hist_obs:"",hist_mod:"",proj_mod:""},show_spinner(obj.$div),$.when.apply($,[get_historical_observed_data(obj),function(obj){var edate="2006-12-31";return $.when.apply($,[get_loca_data(obj,"loca:wMean:rcp85","1950-01-01",edate),get_loca_data(obj,"loca:allMin:rcp85","1950-01-01",edate),get_loca_data(obj,"loca:allMax:rcp85","1950-01-01",edate)]).then(function(wMean,min,max){for(var data=[],export_data=[],key=1950;key<=2006;key++){var values={};values.wMean=wMean.hasOwnProperty(key)?Math.round(10*wMean[key])/10:null,values.min=min.hasOwnProperty(key)?Math.round(10*min[key])/10:null,values.max=max.hasOwnProperty(key)?Math.round(10*max[key])/10:null,data.push([String(key),values.wMean,values.min,values.max,null,null]),export_data.push([String(key),values.wMean,values.min,values.max])}return data.sort(function(a,b){return(a[0]>b[0])-(a[0]<b[0])}),export_data.sort(function(a,b){return parseInt(a[0])-parseInt(b[0])}),obj.dataurls.hist_mod="data:text/csv;base64,"+window.btoa("year,weighted_mean,min,max\n"+export_data.join("\n")),export_data=[],data})}(obj),get_projected_model_data(obj)]).then(function(hist_obs_data,hist_mod_data,proj_mod_data){hide_spinner(obj.$div);var convfunc=variable_config(obj.options.variable).dataconverters[obj.options.unitsystem];hist_obs_data=transform_data(hist_obs_data,convfunc),hist_mod_data=transform_data(hist_mod_data,convfunc),proj_mod_data=transform_data(proj_mod_data,convfunc);var first_year,last_year,sum,n,avg=(first_year=1961,last_year=1990,n=sum=0,hist_obs_data.forEach(function(row){row[0]>=first_year&&row[0]<=last_year&&(sum+=row[1],++n)}),sum/n);"anomaly"===obj.options.presentation&&("pcpn"===obj.options.variable?(hist_obs_data=percent_anomalies(hist_obs_data,avg),hist_mod_data=percent_anomalies(hist_mod_data,avg),proj_mod_data=percent_anomalies(proj_mod_data,avg)):(hist_obs_data=anomalies(hist_obs_data,avg),hist_mod_data=anomalies(hist_mod_data,avg),proj_mod_data=anomalies(proj_mod_data,avg)));var range=scale_range(datas_range([hist_obs_data,hist_mod_data,proj_mod_data]),1);obj.axes.y.setDataRange(range.min,range.max),obj.axes.y.title().content().string(variable_config(obj.options.variable).ytitles.annual[obj.options.presentation][obj.options.unitsystem]),obj.data.annual_hist_obs.array(convertArray(attr_list_array(obj.data.annual_hist_obs.columns()),hist_obs_data)),obj.data.annual_hist_mod.array(convertArray(attr_list_array(obj.data.annual_hist_mod.columns()),hist_mod_data)),obj.data.annual_proj_mod.array(convertArray(attr_list_array(obj.data.annual_proj_mod.columns()),proj_mod_data)),set_plot_visibilities(obj);var ref=avg;"anomaly"===obj.options.presentation&&(ref="pcpn"===obj.options.variable?100:0);var j,number_val=new window.multigraph.core.NumberValue(ref);for(obj.plots.annual.hist_obs.renderer().options().barbase().at(0).value(number_val),j=1;j<obj.plots.annual.hist_obs.renderer().options().fillcolor().size();++j)obj.plots.annual.hist_obs.renderer().options().fillcolor().at(j).min()&&obj.plots.annual.hist_obs.renderer().options().fillcolor().at(j).min(number_val),obj.plots.annual.hist_obs.renderer().options().fillcolor().at(j).max()&&obj.plots.annual.hist_obs.renderer().options().fillcolor().at(j).max(number_val);obj.m.render()});if("monthly"===obj.options.frequency)return obj.axes.x_annual.visible(!1),obj.axes.x_monthly.visible(!0),obj.axes.x_seasonal.visible(!1),each_plot(obj.plots,function(plot){plot.visible(!1)}),obj.dataurls={},show_spinner(obj.$div),$.when.apply($,[get_historical_observed_data(obj),get_projected_model_data(obj)]).then(function(hist_obs_data,proj_mod_data){hide_spinner(obj.$div);var convfunc=variable_config(obj.options.variable).dataconverters[obj.options.unitsystem],range=scale_range(datas_range([hist_obs_data=transform_data(hist_obs_data,convfunc),proj_mod_data=transform_data(proj_mod_data,convfunc)]),1);obj.axes.y.setDataRange(range.min,range.max),obj.axes.y.title().content().string(variable_config(obj.options.variable).ytitles.monthly[obj.options.unitsystem]),obj.data.monthly_hist_obs.array(convertArray(attr_list_array(obj.data.monthly_hist_obs.columns()),hist_obs_data)),obj.data.monthly_proj_mod.array(convertArray(attr_list_array(obj.data.monthly_proj_mod.columns()),proj_mod_data)),set_plot_visibilities(obj),obj.m.render()});"seasonal"===obj.options.frequency&&(obj.axes.x_annual.visible(!1),obj.axes.x_monthly.visible(!1),obj.axes.x_seasonal.visible(!0),each_plot(obj.plots,function(plot){plot.visible(!1)}),obj.dataurls={},show_spinner(obj.$div),$.when.apply($,[get_historical_observed_data(obj),get_projected_model_data(obj)]).then(function(hist_obs_data,proj_mod_data){hide_spinner(obj.$div),hist_obs_data.forEach(function(v){v[0]=Math.floor(v[0]/3)}),proj_mod_data.forEach(function(v){v[0]=Math.floor(v[0]/3)});var convfunc=variable_config(obj.options.variable).dataconverters[obj.options.unitsystem],range=scale_range(datas_range([hist_obs_data=transform_data(hist_obs_data,convfunc),proj_mod_data=transform_data(proj_mod_data,convfunc)]),1);obj.axes.y.setDataRange(range.min,range.max),obj.axes.y.title().content().string(variable_config(obj.options.variable).ytitles.seasonal[obj.options.unitsystem]),obj.data.seasonal_hist_obs.array(convertArray(attr_list_array(obj.data.seasonal_hist_obs.columns()),hist_obs_data)),obj.data.seasonal_proj_mod.array(convertArray(attr_list_array(obj.data.seasonal_proj_mod.columns()),proj_mod_data)),set_plot_visibilities(obj),obj.m.render()}))}obj.m.render()},obj.download_image=function(link){link.href=obj.$graphdiv.find("canvas")[0].toDataURL("image/png"),link.download=[get_region_value(obj),obj.options.frequency,obj.options.variable,"graph"].join("-").replace(/ /g,"_")+".png"},obj.download_hist_obs_data=function(link){link.href=obj.dataurls.hist_obs,link.download=[get_region_value(obj),obj.options.frequency,"hist_obs",obj.options.variable].join("-").replace(/ /g,"_")+".csv"},obj.download_hist_mod_data=function(link){link.href=obj.dataurls.hist_mod,link.download=[get_region_value(obj),obj.options.frequency,"hist_mod",obj.options.variable].join("-").replace(/ /g,"_")+".csv"},obj.download_proj_mod_data=function(link){link.href=obj.dataurls.proj_mod,link.download=[get_region_value(obj),obj.options.frequency,"proj_mod",obj.options.variable].join("-").replace(/ /g,"_")+".csv"},obj.setXRange=function(min,max){return function(axis,min,max){var pan=axis.pan(),panMin=pan?pan.min().getRealValue():null,panMax=pan?pan.max().getRealValue():null,zoom=axis.zoom(),zoomMin=zoom?zoom.min().getRealValue():null,zoomMax=zoom?zoom.max().getRealValue():null;return!(null!==panMax&&panMax<max||null!==panMin&&min<panMin||null!==zoomMax&&zoomMax<max-min||null!==zoomMin&&max-min<zoomMin||(axis.setDataRange(min-.5,max+.5),obj.m.render(),0))}(obj.axes.x_annual,min,max)},obj.resize=function(){obj.m&&obj.m.resize()},obj.$graphdiv.multigraph("done",function(m){obj.m=m,obj.axes={x_annual:m.graphs().at(0).axes().at(starti()),x_monthly:m.graphs().at(0).axes().at(nexti()),x_seasonal:m.graphs().at(0).axes().at(nexti()),y:m.graphs().at(0).axes().at(nexti())},obj.axes.x_annual.addListener("dataRangeSet",function(e){if(obj.options.xrangefunc){var min=Math.ceil(e.min.getRealValue()),max=Math.floor(e.max.getRealValue());obj.options.xrangefunc(min,max)}}),obj.plots=new KeyObj,obj.plots.set_in(["annual","hist_mod","minmax"],m.graphs().at(0).plots().at(starti())),obj.plots.set_in(["annual","hist_mod","p1090"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["annual","proj_mod","minmax","rcp45"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["annual","proj_mod","p1090","rcp45"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["annual","proj_mod","minmax","rcp85"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["annual","proj_mod","p1090","rcp85"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["annual","hist_obs"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["annual","hist_mod","med"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["annual","proj_mod","med","rcp45"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["annual","proj_mod","med","rcp85"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","hist_obs","med"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","minmax","rcp45","2025"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","minmax","rcp85","2025"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","p1090","rcp45","2025"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","p1090","rcp85","2025"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","med","rcp45","2025"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","med","rcp85","2025"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","minmax","rcp45","2050"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","minmax","rcp85","2050"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","p1090","rcp45","2050"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","p1090","rcp85","2050"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","med","rcp45","2050"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","med","rcp85","2050"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","minmax","rcp45","2075"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","minmax","rcp85","2075"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","p1090","rcp45","2075"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","p1090","rcp85","2075"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","med","rcp45","2075"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["monthly","proj_mod","med","rcp85","2075"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","minmax","rcp45","2025"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","minmax","rcp85","2025"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","p1090","rcp45","2025"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","p1090","rcp85","2025"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","minmax","rcp45","2050"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","minmax","rcp85","2050"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","p1090","rcp45","2050"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","p1090","rcp85","2050"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","minmax","rcp45","2075"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","minmax","rcp85","2075"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","p1090","rcp45","2075"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","p1090","rcp85","2075"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","hist_obs","med"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","med","rcp45","2025"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","med","rcp85","2025"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","med","rcp45","2050"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","med","rcp85","2050"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","med","rcp45","2075"],m.graphs().at(0).plots().at(nexti())),obj.plots.set_in(["seasonal","proj_mod","med","rcp85","2075"],m.graphs().at(0).plots().at(nexti())),obj.data={annual_hist_obs:m.graphs().at(0).data().at(starti()),annual_hist_mod:m.graphs().at(0).data().at(nexti()),annual_proj_mod:m.graphs().at(0).data().at(nexti()),monthly_hist_obs:m.graphs().at(0).data().at(nexti()),monthly_proj_mod:m.graphs().at(0).data().at(nexti()),seasonal_hist_obs:m.graphs().at(0).data().at(nexti()),seasonal_proj_mod:m.graphs().at(0).data().at(nexti())},obj.update(obj.orig_options)}),obj},variables:function(frequency,unitsystem){return unitsystem=unitsystem||defaultUnitSystem,variables.filter(function(v){return frequency in v.ytitles}).map(function(v){return{id:v.id,title:v.title[unitsystem]}})}}}(jQuery);