RELS.CS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet";
var CS_XML_ROOT = writextag('chartsheet', null, { 'xmlns': XMLNS.main[0], 'xmlns:r': XMLNS.r});
function parse_cs_xml(data, opts, idx, rels, wb) { if(!data) return data; if(!rels) rels = {'!id':{}}; var s = ({'!type':"chart", '!drawel':null, '!rel':""}); var m;
var sheetPr = data.match(sheetprregex); if(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);
if((m = data.match(/drawing r:id="(.*?)"/))) s['!rel'] = m[1];
if(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']]; return s;}function write_cs_xml(idx, opts, wb, rels) { var o = [XML_HEADER, CS_XML_ROOT]; o[o.length] = writextag("drawing", null, {"r:id": "rId1"}); add_rels(rels, -1, "../drawings/drawing" + (idx+1) + ".xml", RELS.DRAW); if(o.length>2) { o[o.length] = ('</chartsheet>'); o[1]=o[1].replace("/>",">"); } return o.join("");}
function parse_BrtCsProp(data, length) { data.l += 10; var name = parse_XLWideString(data, length - 10); return { name: name };}
function parse_cs_bin(data, opts, idx, rels, wb) { if(!data) return data; if(!rels) rels = {'!id':{}}; var s = {'!type':"chart", '!drawel':null, '!rel':""}; var state = []; var pass = false; recordhopper(data, function cs_parse(val, R_n, RT) { switch(RT) {
case 0x0226: s['!rel'] = val; break;
case 0x028B: if(!wb.Sheets[idx]) wb.Sheets[idx] = {}; if(val.name) wb.Sheets[idx].CodeName = val.name; break;
case 0x0232: case 0x028C: case 0x029D: case 0x02A7: case 0x0227: case 0x0228: case 0x01DC: case 0x0C00: break;
case 0x0023: pass = true; break; case 0x0024: pass = false; break; case 0x0025: state.push(R_n); break; case 0x0026: state.pop(); break;
default: if((R_n||"").indexOf("Begin") > 0) state.push(R_n); else if((R_n||"").indexOf("End") > 0) state.pop(); else if(!pass || opts.WTF) throw new Error("Unexpected record " + RT + " " + R_n); } }, opts);
if(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']]; return s;}function write_cs_bin() { var ba = buf_array(); write_record(ba, "BrtBeginSheet"); write_record(ba, "BrtEndSheet"); return ba.end();}