PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` // Provides support for asynchronous validation (fetching schemas) using jQuery // Callback is optional third argument to tv4.validate() - if not present, synchronous operation // callback(result, error); if (typeof (tv4.asyncValidate) === 'undefined') { tv4.syncValidate = tv4.validate; tv4.validate = function (data, schema, callback, checkRecursive, banUnknownProperties) { if (typeof (callback) === 'undefined') { return this.syncValidate(data, schema, checkRecursive, banUnknownProperties); } else { return this.asyncValidate(data, schema, callback, checkRecursive, banUnknownProperties); } }; tv4.asyncValidate = function (data, schema, callback, checkRecursive, banUnknownProperties) { var $ = jQuery; var result = tv4.validate(data, schema, checkRecursive, banUnknownProperties); if (!tv4.missing.length) { callback(result, tv4.error); } else { // Make a request for each missing schema var missingSchemas = $.map(tv4.missing, function (schemaUri) { return $.getJSON(schemaUri).success(function (fetchedSchema) { tv4.addSchema(schemaUri, fetchedSchema); }).error(function () { // If there's an error, just use an empty schema tv4.addSchema(schemaUri, {}); }); }); // When all requests done, try again $.when.apply($, missingSchemas).done(function () { var result = tv4.asyncValidate(data, schema, callback, checkRecursive, banUnknownProperties); }); } }; }