load_component() now accepts an array, and most JS components are loaded all in one request now. Totally modular baby. And failsafe too.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="face-oops.svg"
sodipodi:docbase="/home/dan/emotes"
inkscape:version="0.45"
sodipodi:version="0.32"
id="svg4376"
height="48px"
width="48px"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
sodipodi:modified="true">
<defs
id="defs3">
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2120"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.159815,18.5,-2.815047)"
x1="14.000000"
y1="21.062500"
x2="14.500000"
y2="33.431156" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2116"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.171895,2.5,-3.141166)"
x1="14.000000"
y1="21.062500"
x2="13.500000"
y2="33.426670" />
<linearGradient
id="linearGradient2102">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop2104" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop2106" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2112"
gradientUnits="userSpaceOnUse"
x1="14.000000"
y1="21.062500"
x2="14"
y2="34.305527"
gradientTransform="matrix(1,0,0,1.404523,10.5,-7.966331)" />
<linearGradient
id="linearGradient3068">
<stop
style="stop-color:#cccccc;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3070" />
<stop
id="stop3076"
offset="0.34579438"
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.72486681"
id="stop3078" />
<stop
style="stop-color:#cecece;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3072" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3068"
id="linearGradient2132"
x1="9.7892637"
y1="29.629091"
x2="38.390732"
y2="29.629091"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.048897,0,0,1,-1.267931,0)" />
<linearGradient
id="linearGradient8156">
<stop
style="stop-color:#ac0000;stop-opacity:0.62127662;"
offset="0"
id="stop8158" />
<stop
style="stop-color:#ac0000;stop-opacity:0;"
offset="1"
id="stop8160" />
</linearGradient>
<linearGradient
id="linearGradient3290">
<stop
id="stop3292"
offset="0.0000000"
style="stop-color:#fffcde;stop-opacity:1.0000000;" />
<stop
style="stop-color:#f6e76a;stop-opacity:1.0000000;"
offset="0.64485979"
id="stop3294" />
<stop
id="stop3296"
offset="1.0000000"
style="stop-color:#ffb738;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
r="8.9020796"
fy="15.755712"
fx="29.158466"
cy="15.720984"
cx="29.288071"
gradientUnits="userSpaceOnUse"
id="radialGradient2714"
xlink:href="#linearGradient3290"
inkscape:collect="always" />
<linearGradient
id="linearGradient2509">
<stop
style="stop-color:#fffbd5;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2511" />
<stop
style="stop-color:#edd400;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2513" />
</linearGradient>
<radialGradient
gradientTransform="matrix(1.25,0,0,1.2206272,-6.479446,-11.617797)"
id="aigrd2"
cx="25.0527"
cy="39.5928"
r="15.7572"
fx="25.0527"
fy="39.5928"
gradientUnits="userSpaceOnUse">
<stop
offset="0.0000000"
style="stop-color:#777777;stop-opacity:1.0000000;"
id="stop8602" />
<stop
offset="1"
style="stop-color:#000000"
id="stop8604" />
</radialGradient>
<linearGradient
id="linearGradient4565"
inkscape:collect="always">
<stop
id="stop4567"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop4569"
offset="1"
style="stop-color:#000000;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient3824">
<stop
id="stop3826"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
id="stop3828"
offset="1.0000000"
style="stop-color:#c9c9c9;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient3800">
<stop
id="stop3802"
offset="0.0000000"
style="stop-color:#ffeed6;stop-opacity:1.0000000;" />
<stop
style="stop-color:#e49c2f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop8664" />
<stop
id="stop3804"
offset="1.0000000"
style="stop-color:#ffc66c;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.000000,0.000000,0.000000,0.333333,0.000000,25.71429)"
r="19.714285"
fy="38.571430"
fx="24.714285"
cy="38.571430"
cx="24.714285"
id="radialGradient4571"
xlink:href="#linearGradient4565"
inkscape:collect="always" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient8156"
id="radialGradient8164"
cx="15.153078"
cy="28.062902"
fx="15.153078"
fy="28.062902"
r="5.0579581"
gradientTransform="matrix(1,0,0,1.3196488,0,-8.9702732)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient8156"
id="radialGradient8170"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.3196488,0,-8.9702732)"
cx="15.153078"
cy="28.062902"
fx="15.153078"
fy="28.062902"
r="5.0579581" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2226"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.609351,0,0,0.34239,20.743344,20.335896)"
x1="14.000000"
y1="21.062500"
x2="14.500000"
y2="33.431156" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2229"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.609351,0,0,0.3526107,10.993725,20.017144)"
x1="14.000000"
y1="21.062500"
x2="13.500000"
y2="33.426670" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2232"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.609351,0,0,0.4226059,15.868535,18.565304)"
x1="14.000000"
y1="21.062500"
x2="14"
y2="34.305527" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3068"
id="linearGradient2235"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.6446665,0,0,0.2104377,8.5621255,24.461994)"
x1="9.7892637"
y1="29.629091"
x2="38.390732"
y2="29.629091" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3068"
id="linearGradient2252"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.6446665,0,0,0.2104377,8.5621255,24.461994)"
x1="9.7892637"
y1="29.629091"
x2="38.390732"
y2="29.629091" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2254"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.609351,0,0,0.4226059,15.868535,18.565304)"
x1="14.000000"
y1="21.062500"
x2="14"
y2="34.305527" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2256"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.609351,0,0,0.3526107,10.993725,20.017144)"
x1="14.000000"
y1="21.062500"
x2="13.500000"
y2="33.426670" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2258"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.609351,0,0,0.34239,20.743344,20.335896)"
x1="14.000000"
y1="21.062500"
x2="14.500000"
y2="33.431156" />
</defs>
<sodipodi:namedview
inkscape:window-y="0"
inkscape:window-x="50"
inkscape:window-height="735"
inkscape:window-width="822"
inkscape:showpageshadow="false"
inkscape:document-units="px"
inkscape:grid-bbox="true"
showgrid="false"
inkscape:current-layer="layer1"
inkscape:cy="25.694057"
inkscape:cx="25.411306"
inkscape:zoom="11.313708"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="0.19607843"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
fill="#edd400" />
<metadata
id="metadata4">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Face - Happy</dc:title>
<dc:subject>
<rdf:Bag>
<rdf:li>emoticon</rdf:li>
<rdf:li>emote</rdf:li>
<rdf:li>smiley</rdf:li>
<rdf:li>happy</rdf:li>
<rdf:li>:)</rdf:li>
<rdf:li>:-)</rdf:li>
</rdf:Bag>
</dc:subject>
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
<dc:creator>
<cc:Agent>
<dc:title>Jakub Steiner</dc:title>
</cc:Agent>
</dc:creator>
<dc:source>http://jimmac.musichall.cz</dc:source>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
<cc:permits
rdf:resource="http://web.resource.org/cc/Reproduction" />
<cc:permits
rdf:resource="http://web.resource.org/cc/Distribution" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Notice" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Attribution" />
<cc:permits
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
<cc:requires
rdf:resource="http://web.resource.org/cc/ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
inkscape:label="Layer 1"
id="layer1">
<path
d="M 44.428570 38.571430 A 19.714285 6.5714288 0 1 1 5.0000000,38.571430 A 19.714285 6.5714288 0 1 1 44.428570 38.571430 z"
sodipodi:ry="6.5714288"
sodipodi:rx="19.714285"
sodipodi:cy="38.571430"
sodipodi:cx="24.714285"
id="path4563"
style="opacity:0.53164557;color:#000000;fill:url(#radialGradient4571);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:0.40487173;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
sodipodi:type="arc" />
<path
transform="matrix(2.083142,0.000000,0.000000,2.083142,-40.54715,-16.49224)"
d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
sodipodi:ry="8.6620579"
sodipodi:rx="8.6620579"
sodipodi:cy="19.008621"
sodipodi:cx="31.112698"
id="path4320"
style="overflow:visible;display:inline;visibility:visible;stroke-opacity:1.0000000;stroke-dashoffset:0.0000000;stroke-dasharray:none;stroke-miterlimit:4.0000000;marker-end:none;marker-mid:none;marker-start:none;marker:none;stroke-linejoin:round;stroke-linecap:round;stroke-width:0.48004404;stroke:#9c8c0a;fill-rule:evenodd;fill-opacity:1.0000000;fill:url(#radialGradient2714);color:#000000;opacity:1.0000000"
sodipodi:type="arc" />
<path
sodipodi:type="arc"
style="fill:url(#radialGradient8164);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path7181"
sodipodi:cx="15.153078"
sodipodi:cy="28.062902"
sodipodi:rx="4.8079581"
sodipodi:ry="6.4247284"
d="M 19.961036 28.062902 A 4.8079581 6.4247284 0 1 1 10.34512,28.062902 A 4.8079581 6.4247284 0 1 1 19.961036 28.062902 z"
transform="translate(-0.6518641,-3.2816311)" />
<path
transform="matrix(1.979782,0.000000,0.000000,1.979782,-37.33128,-14.52746)"
sodipodi:type="arc"
style="opacity:0.67721519;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50510627;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
id="path4322"
sodipodi:cx="31.112698"
sodipodi:cy="19.008621"
sodipodi:rx="8.6620579"
sodipodi:ry="8.6620579"
d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
<g
transform="matrix(1,0,0,0.7991174,0.353553,4.4409911)"
id="g8666">
<path
style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
d="M 21.398158,15.321428 C 21.398158,17.821428 20.273158,19.821428 18.898158,19.821428 C 17.523158,19.821428 16.273158,17.821428 16.273158,15.321428 C 16.273158,12.821428 17.398158,10.821428 18.773158,10.821428 C 20.148158,10.821428 21.273158,12.821428 21.273158,15.321428 L 21.398158,15.321428 z "
id="path8610" />
<path
style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
d="M 30.688512,15.321428 C 30.688512,17.821428 29.563512,19.821428 28.188512,19.821428 C 26.813512,19.821428 25.688512,17.821428 25.688512,15.321428 C 25.688512,12.821428 26.813512,10.821428 28.188512,10.821428 C 29.563512,10.821428 30.688512,12.821428 30.688512,15.321428 z "
id="path8612" />
<path
style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
d="M 21.398158,14.696428 C 21.398158,17.196428 20.273158,19.196428 18.898158,19.196428 C 17.523158,19.196428 16.398158,17.196428 16.398158,14.696428 C 16.398158,12.196428 17.523158,10.196428 18.898158,10.196428 C 20.273158,10.196428 21.398158,12.196428 21.398158,14.696428 z "
id="path8614" />
<path
style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
d="M 30.688512,14.696428 C 30.688512,17.196428 29.563512,19.196428 28.188512,19.196428 C 26.813512,19.196428 25.688512,17.196428 25.688512,14.696428 C 25.688512,12.196428 26.813512,10.196428 28.188512,10.196428 C 29.563512,10.196428 30.688512,12.196428 30.688512,14.696428 z "
id="path8616" />
</g>
<path
sodipodi:type="arc"
style="fill:url(#radialGradient8170);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path8168"
sodipodi:cx="15.153078"
sodipodi:cy="28.062902"
sodipodi:rx="4.8079581"
sodipodi:ry="6.4247284"
d="M 19.961036 28.062902 A 4.8079581 6.4247284 0 1 1 10.34512,28.062902 A 4.8079581 6.4247284 0 1 1 19.961036 28.062902 z"
transform="translate(17.957913,-3.2761064)" />
<g
id="g2237"
transform="translate(0,2)">
<path
style="color:#000000;fill:url(#linearGradient2252);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
d="M 14.988198,28.890608 C 15.179727,31.617118 17.87199,32.503303 24.115922,32.503303 C 30.414173,32.503303 33.174136,31.055189 33.16306,28.90376 C 33.151844,26.725175 14.796672,26.164096 14.988198,28.890608 z "
id="path2096"
sodipodi:nodetypes="czzz" />
<path
style="opacity:0.18181817;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient2254);stroke-width:0.42819062px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
d="M 24.39945,27.440031 L 24.39945,32.511304"
id="path2110" />
<path
id="path2114"
d="M 19.524642,27.421971 L 19.524642,31.653301"
style="opacity:0.18181817;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient2256);stroke-width:0.42819077px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="opacity:0.18181817;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient2258);stroke-width:0.42413118px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
d="M 29.274259,27.526098 L 29.274259,31.634785"
id="path2118" />
<path
sodipodi:nodetypes="czzz"
id="path2756"
d="M 15.143945,28.80035 C 15.223926,31.330376 18.314745,32.606706 24.245798,32.606706 C 30.394114,32.606706 33.063062,30.724409 33.078757,28.787198 C 33.094451,26.849987 15.063964,26.270323 15.143945,28.80035 z "
style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#8f5902;stroke-width:0.35963577;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
</g>
</g>
</svg>