saveDoc: function(doc, options) { options = options || {}; var db = this; var beforeSend = fullCommit(options); if (doc._id === undefined) { var method = "POST"; var uri = this.uri; } else { var method = "PUT"; var uri = this.uri + encodeDocId(doc._id); } var versioned = maybeApplyVersion(doc); $.ajax({ type: method, url: uri + encodeOptions(options), contentType: "application/json", dataType: "json", data: toJSON(doc), beforeSend : beforeSend, complete: function(req) { var resp = $.parseJSON(req.responseText); if (req.status == 200 || req.status == 201 || req.status == 202) { doc._id = resp.id; doc._rev = resp.rev; if (versioned) { db.openDoc(doc._id, { attachPrevRev : true, success : function(d) { doc._attachments = d._attachments; if (options.success) options.success(resp); } }); } else { if (options.success) options.success(resp); } } else if (options.error) { options.error(req.status, resp.error, resp.reason); } else { throw "The document could not be saved: " + resp.reason; } } }); },